diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_context.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index f7c787415ce..c7a66cb9991 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -467,7 +467,16 @@ brw_initialize_context_constants(struct brw_context *brw) ctx->Const.MaxImageUnits = MAX_IMAGE_UNITS; ctx->Const.MaxRenderbufferSize = 8192; ctx->Const.MaxTextureLevels = MIN2(14 /* 8192 */, MAX_TEXTURE_LEVELS); - ctx->Const.Max3DTextureLevels = 12; /* 2048 */ + + /* On Sandy Bridge and prior, the "Render Target View Extent" field of + * RENDER_SURFACE_STATE is only 9 bits so the largest 3-D texture we can do + * a layered render into has a depth of 512. On Iron Lake and earlier, we + * don't support layered rendering and we use manual offsetting to render + * into the different layers so this doesn't matter. On Sandy Bridge, + * however, we do support layered rendering so this is a problem. + */ + ctx->Const.Max3DTextureLevels = brw->gen == 6 ? 10 /* 512 */ : 12; /* 2048 */ + ctx->Const.MaxCubeTextureLevels = 14; /* 8192 */ ctx->Const.MaxArrayTextureLayers = brw->gen >= 7 ? 2048 : 512; ctx->Const.MaxTextureMbytes = 1536; |