r600g,radeonsi: fix MAX_TEXTURE_3D_LEVELS and MAX_TEXTURE_ARRAY_LAYERS limits

CB_COLORi_VIEW.SLICE_MAX can be at most 2047.

This fixes the maxlayers piglit test.

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
(cherry picked from commit 4f1f32306a)

Conflicts:
	src/gallium/drivers/r600/r600_pipe.c
	src/gallium/drivers/radeonsi/si_pipe.c
This commit is contained in:
Marek Olšák 2014-03-09 20:03:57 +01:00 committed by Carl Worth
parent 9bfe1b3773
commit 8648c2b2a0
2 changed files with 11 additions and 6 deletions

View file

@ -419,15 +419,17 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
/* Texturing. */
case PIPE_CAP_MAX_TEXTURE_2D_LEVELS:
case PIPE_CAP_MAX_TEXTURE_3D_LEVELS:
case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS:
if (family >= CHIP_CEDAR)
return 15;
else
return 14;
case PIPE_CAP_MAX_TEXTURE_3D_LEVELS:
/* textures support 8192, but layered rendering supports 2048 */
return 12;
case PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS:
return rscreen->b.info.drm_minor >= 9 ?
(family >= CHIP_CEDAR ? 16384 : 8192) : 0;
/* textures support 8192, but layered rendering supports 2048 */
return rscreen->b.info.drm_minor >= 9 ? 2048 : 0;
case PIPE_CAP_MAX_COMBINED_SAMPLERS:
return 48;

View file

@ -307,11 +307,14 @@ static int si_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
/* Texturing. */
case PIPE_CAP_MAX_TEXTURE_2D_LEVELS:
case PIPE_CAP_MAX_TEXTURE_3D_LEVELS:
case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS:
return 15;
return 15; /* 16384 */
case PIPE_CAP_MAX_TEXTURE_3D_LEVELS:
/* textures support 8192, but layered rendering supports 2048 */
return 12;
case PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS:
return 16384;
/* textures support 8192, but layered rendering supports 2048 */
return 2048;
case PIPE_CAP_MAX_COMBINED_SAMPLERS:
return HAVE_LLVM >= 0x0305 ? 48 : 32;