summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2016-06-09 14:57:33 -0700
committerJason Ekstrand <[email protected]>2016-06-22 12:26:43 -0700
commit6ba88bce64b343761aabe3a6c7ee285c6020a959 (patch)
treeee92f9dfac10d69eea81fb5bbdb9f7d07f8edea2 /src/mesa/drivers
parent0f9cd74aab021da81a7e5a2f0fbf66213471628f (diff)
i965: Drop the maximum 3D texture size to 512 on Sandy Bridge
The RenderTargetViewExtent field of RENDER_SURFACE_STATE is supposed to be set to the depth of a 3-D texture when rendering. Unfortunatley, that field is only 9 bits on Sandy Bridge and prior so we can't actually bind a 3-D texturing for rendering if it has depth > 512. On Ivy Bridge, this field was bumpped to 11 bits so we can go all the way up to 2048. On Iron Lake and prior, we don't support layered rendering and we use OffsetX/Y hacks to render to particular layers so 2048 is ok there too. Signed-off-by: Jason Ekstrand <[email protected]> Reviewed-by: Ian Romanick <[email protected]> Cc: "11.1 11.2 12.0" <[email protected]>
Diffstat (limited to 'src/mesa/drivers')
-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;