On Wed, Mar 16, 2016 at 10:01 PM, Kenneth Graunke <kenn...@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 <kenn...@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@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev