[Mesa-dev] [Mesa-stable] [PATCH v2 01/64] i965: Drop the maximum 3D texture size to 512 on Sandy Bridge

Ian Romanick idr at freedesktop.org
Wed Jun 22 19:09:30 UTC 2016


This patch is

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

On 06/21/2016 03:45 PM, 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
> 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.
> 
> Cc: "11.1 11.2 12.0" <mesa-stable at lists.freedesktop.org>
> Cc: Ian Romanick <idr at freedesktop.org>
> 
> ---
>  src/mesa/drivers/dri/i965/brw_context.c | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
> index f7c7874..c7a66cb 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;
> 



More information about the mesa-dev mailing list