aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mesa/drivers/dri/i965/brw_context.c11
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;