ac/radeonsi: move some aspects of sanity checking to ac_surface
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
00f466bad9
commit
4d6e75776d
|
@ -30,6 +30,7 @@
|
|||
#include "util/macros.h"
|
||||
#include "util/u_math.h"
|
||||
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <amdgpu.h>
|
||||
|
@ -202,6 +203,32 @@ ADDR_HANDLE amdgpu_addr_create(enum radeon_family family,
|
|||
return addrCreateOutput.hLib;
|
||||
}
|
||||
|
||||
static int surf_config_sanity(const struct ac_surf_config *config)
|
||||
{
|
||||
/* all dimension must be at least 1 ! */
|
||||
if (!config->info.width || !config->info.height || !config->info.depth ||
|
||||
!config->info.array_size || !config->info.levels)
|
||||
return -EINVAL;
|
||||
|
||||
switch (config->info.samples) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
case 4:
|
||||
case 8:
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (config->is_3d && config->info.array_size > 1)
|
||||
return -EINVAL;
|
||||
if (config->is_cube && config->info.depth > 1)
|
||||
return -EINVAL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int gfx6_compute_level(ADDR_HANDLE addrlib,
|
||||
const struct ac_surf_config *config,
|
||||
struct radeon_surf *surf, bool is_stencil,
|
||||
|
@ -1016,6 +1043,12 @@ int ac_compute_surface(ADDR_HANDLE addrlib,
|
|||
enum radeon_surf_mode mode,
|
||||
struct radeon_surf *surf)
|
||||
{
|
||||
int r;
|
||||
|
||||
r = surf_config_sanity(config);
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
if (config->chip_class >= GFX9)
|
||||
return gfx9_compute_surface(addrlib, config, mode, surf);
|
||||
else
|
||||
|
|
|
@ -34,22 +34,6 @@
|
|||
|
||||
static int amdgpu_surface_sanity(const struct pipe_resource *tex)
|
||||
{
|
||||
/* all dimension must be at least 1 ! */
|
||||
if (!tex->width0 || !tex->height0 || !tex->depth0 ||
|
||||
!tex->array_size)
|
||||
return -EINVAL;
|
||||
|
||||
switch (tex->nr_samples) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
case 4:
|
||||
case 8:
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
switch (tex->target) {
|
||||
case PIPE_TEXTURE_1D:
|
||||
if (tex->height0 > 1)
|
||||
|
|
Loading…
Reference in New Issue