[Mesa-dev] [PATCH 01/64] i965: Drop Max3DTextureLevels to 512 on Sandy Bridge and prior

Ian Romanick idr at freedesktop.org
Thu Jun 16 18:43:47 UTC 2016


On 06/11/2016 09:02 AM, Jason Ekstrand wrote:
> The RenderTargetViewExtent field of RENDER_SURFACE_STATE is supposed to be
> set to the depth of a 3-D texture when rendering.  Unfortunatley, that
                                                     Unfortunately

> 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.
            bumped

> Cc: "11.1 11.2 12.0" <mesa-stable at lists.freedesktop.org>
> ---
>  src/mesa/drivers/dri/i965/brw_context.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
> index 7bbc128..3b11bef 100644
> --- a/src/mesa/drivers/dri/i965/brw_context.c
> +++ b/src/mesa/drivers/dri/i965/brw_context.c
> @@ -467,7 +467,10 @@ 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 */
> +   if (brw->gen >= 7)
> +      ctx->Const.Max3DTextureLevels = 12; /* 2048 */
> +   else
> +      ctx->Const.Max3DTextureLevels = 10; /* 512 */

This should use ?: like MaxArrayTextureLayers below.

This was increased from 512 to 2048 in 2014 in commit 06b047eb.  There
was some assertion in the commit message that the Windows driver was
already advertising 2048.  There is no mention, however, of which
hardware the Windows driver was checked on.  In the related bug report
(https://bugs.freedesktop.org/show_bug.cgi?id=74130), Ken says, "All
Gen4+ systems support 2048x2048 3D textures, so we could just bump the
limit."

It sounds like this may be a temporary fix, and we need a work around
for rendering to slices > 9?

>     ctx->Const.MaxCubeTextureLevels = 14; /* 8192 */
>     ctx->Const.MaxArrayTextureLayers = brw->gen >= 7 ? 2048 : 512;
>     ctx->Const.MaxTextureMbytes = 1536;
> 



More information about the mesa-dev mailing list