[Mesa-dev] [PATCH 3/3] Revert "i965: Drop the maximum 3D texture size to 512 on Sandy Bridge"

Kenneth Graunke kenneth at whitecape.org
Mon Sep 12 23:43:08 UTC 2016


On Monday, September 12, 2016 3:16:31 PM PDT Jason Ekstrand wrote:
> This reverts commit 6ba88bce64b343761aabe3a6c7ee285c6020a959.  The commit
> was erroneous because GL already provides a separate guard on the number of
> layers you are allowed to render into.  On Sandy Bridge, we set this guard
> correctly so creating a 3D texture bigger than 512 is fine, you just can't
> render into all of the slices at once.
> 
> Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
> ---
>  src/mesa/drivers/dri/i965/brw_context.c | 11 +----------
>  1 file changed, 1 insertion(+), 10 deletions(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
> index c28401a..3af4555 100644
> --- a/src/mesa/drivers/dri/i965/brw_context.c
> +++ b/src/mesa/drivers/dri/i965/brw_context.c
> @@ -524,16 +524,7 @@ 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);
> -
> -   /* 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.Max3DTextureLevels = 12; /* 2048 */
>     ctx->Const.MaxCubeTextureLevels = 14; /* 8192 */
>     ctx->Const.MaxArrayTextureLayers = brw->gen >= 7 ? 2048 : 512;
>     ctx->Const.MaxTextureMbytes = 1536;
> 

To clarify...that limit is GL_MAX_FRAMEBUFFER_LAYERS.

The GL 4.5 spec says:

"The framebuffer attachment point attachment is said to be framebuffer
 attachment complete if [...] all of the following conditions are true:

 [...]

 If image is a three-dimensional, one- or two-dimensional array, or cube map
 array texture and the attachment is layered, the depth or layer count of the
 texture is less than or equal to the value of the implementation-dependent
 limit MAX_FRAMEBUFFER_LAYERS."

and goes on to say that "framebuffer complete" requires all attachments
to be "framebuffer attachment complete".
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160912/2ce99183/attachment.sig>


More information about the mesa-dev mailing list