[Mesa-dev] [PATCH v2] i965: Fix stencil texturing in ES 3.1.

Jason Ekstrand jason at jlekstrand.net
Fri Mar 18 04:56:38 UTC 2016


On Wed, Mar 16, 2016 at 10:01 PM, Kenneth Graunke <kenneth at whitecape.org>
wrote:

> Stencil texturing is required by ES 3.1.  Apparently we never actually
> turned it on, and we missed some necessary code.
>
> Fixes nine dEQP-GLES31.functional tests:
>
> stencil_texturing.format.stencil_index8_2d
> texture.border_clamp.formats.stencil_index8.nearest_size_pot
> texture.border_clamp.formats.stencil_index8.nearest_size_npot
> texture.border_clamp.formats.stencil_index8.gather_size_pot
> texture.border_clamp.formats.stencil_index8.gather_size_npot
> texture.border_clamp.unused_channels.stencil_index8
> state_query.internal_format.renderbuffer.stencil_index8_samples
> state_query.internal_format.texture_2d_multisample.stencil_index8_samples
>
> state_query.internal_format.texture_2d_multisample_array.stencil_index8_samples
>
> For now, leave it turned off in desktop GL.  There are still bugs with
> stencil array textures, and I suspect there are multisampling bugs too.
>
> v2: Don't trip the assert.
>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
>  src/mesa/drivers/dri/i965/brw_meta_stencil_blit.c | 5 ++---
>  src/mesa/drivers/dri/i965/brw_surface_formats.c   | 1 +
>  src/mesa/drivers/dri/i965/intel_extensions.c      | 2 ++
>  src/mesa/main/texformat.c                         | 5 +++++
>  4 files changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_meta_stencil_blit.c
> b/src/mesa/drivers/dri/i965/brw_meta_stencil_blit.c
> index 5b0c2e9..aefa7b5 100644
> --- a/src/mesa/drivers/dri/i965/brw_meta_stencil_blit.c
> +++ b/src/mesa/drivers/dri/i965/brw_meta_stencil_blit.c
> @@ -435,8 +435,7 @@ brw_meta_stencil_blit(struct brw_context *brw,
>      * returns a valid format.  When we properly support the extension, we
>      * should remove this.
>      */
> -   assert(ctx->Extensions.ARB_texture_stencil8 == false);
> -   ctx->Extensions.ARB_texture_stencil8 = true;
> +   bool save_stencil8_enable = ctx->Extensions.ARB_texture_stencil8;
>

Did you intend to drop the line where we force-enable the extension?  I
understand saving it off, but we should probably still force it on if
you're only going to enable it for ES.


>     drawFb = ctx->Driver.NewFramebuffer(ctx, 0xDEADBEEF);
>     if (drawFb == NULL) {
> @@ -479,7 +478,7 @@ brw_meta_stencil_blit(struct brw_context *brw,
>     _mesa_DrawArrays(GL_TRIANGLE_FAN, 0, 4);
>
>  error:
> -   ctx->Extensions.ARB_texture_stencil8 = false;
> +   ctx->Extensions.ARB_texture_stencil8 = save_stencil8_enable;
>     _mesa_meta_fb_tex_blit_end(ctx, target, &blit);
>     _mesa_meta_end(ctx);
>
> diff --git a/src/mesa/drivers/dri/i965/brw_surface_formats.c
> b/src/mesa/drivers/dri/i965/brw_surface_formats.c
> index 3c0b23b..a1160d9 100644
> --- a/src/mesa/drivers/dri/i965/brw_surface_formats.c
> +++ b/src/mesa/drivers/dri/i965/brw_surface_formats.c
> @@ -718,6 +718,7 @@ brw_init_surface_formats(struct brw_context *brw)
>     ctx->TextureFormatSupported[MESA_FORMAT_Z24_UNORM_X8_UINT] = true;
>     ctx->TextureFormatSupported[MESA_FORMAT_Z_FLOAT32] = true;
>     ctx->TextureFormatSupported[MESA_FORMAT_Z32_FLOAT_S8X24_UINT] = true;
> +   ctx->TextureFormatSupported[MESA_FORMAT_S_UINT8] = true;
>
>     /* Benchmarking shows that Z16 is slower than Z24, so there's no
> reason to
>      * use it unless you're under memory (not memory bandwidth) pressure.
> diff --git a/src/mesa/drivers/dri/i965/intel_extensions.c
> b/src/mesa/drivers/dri/i965/intel_extensions.c
> index 60ac124..8d9dab5 100644
> --- a/src/mesa/drivers/dri/i965/intel_extensions.c
> +++ b/src/mesa/drivers/dri/i965/intel_extensions.c
> @@ -367,6 +367,8 @@ intelInitExtensions(struct gl_context *ctx)
>
>     if (brw->gen >= 8) {
>        ctx->Extensions.ARB_stencil_texturing = true;
> +      if (ctx->API == API_OPENGLES2)
> +         ctx->Extensions.ARB_texture_stencil8 = true;
>     }
>
>     if (brw->gen >= 9) {
> diff --git a/src/mesa/main/texformat.c b/src/mesa/main/texformat.c
> index 419fd78..be2581b 100644
> --- a/src/mesa/main/texformat.c
> +++ b/src/mesa/main/texformat.c
> @@ -765,6 +765,11 @@ _mesa_choose_tex_format(struct gl_context *ctx,
> GLenum target,
>        RETURN_IF_SUPPORTED(MESA_FORMAT_B8G8R8A8_UNORM);
>        break;
>
> +   case GL_STENCIL_INDEX:
> +   case GL_STENCIL_INDEX8:
> +      RETURN_IF_SUPPORTED(MESA_FORMAT_S_UINT8);
> +      break;
> +
>

This should really go in its own patch.


>     default:
>        /* For non-generic compressed format we assert two things:
>         *
> --
> 2.7.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160317/db122f47/attachment.html>


More information about the mesa-dev mailing list