[Mesa-dev] [PATCH] i965: Momentarily pretend to support ARB_texture_stencil8 for blits.

Kenneth Graunke kenneth at whitecape.org
Tue Jun 9 23:47:14 PDT 2015


On Wednesday, June 10, 2015 08:48:21 AM Martin Peres wrote:
> On 10/06/2015 01:18, Kenneth Graunke wrote:
> > Broadwell's stencil blitting code attempts to bind a renderbuffer as a
> > texture, using dd->BindRenderbufferTexImage().
> >
> > This calls _mesa_init_teximage_fields(), which then attempts to set
> > img->_BaseFormat = _mesa_base_tex_format(ctx, internalFormat), which
> > assert fails if internalFormat is GL_STENCIL_INDEX8 but
> > ARB_texture_stencil8 is unsupported.
> >
> > To work around this, just pretend to support the extension momentarily,
> > during the blit.  Meta has already munged a variety of other things in
> > the context (including the API!), so it's not that much worse than what
> > we're already doing.
> >
> > Fixes regressions since commit f7aad9da20b13c98f77d6a690b327716f39c0a47
> > (mesa/teximage: use correct extension for accept stencil texture.).
> >
> > Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> > Cc: airlied at gmail.com
> > Cc: imirkin at alum.mit.edu
> > ---
> >   src/mesa/drivers/dri/i965/brw_meta_stencil_blit.c | 2 ++
> >   1 file changed, 2 insertions(+)
> >
> > Here's a brown paper bag fix.  I had apparently run all of Piglit with Dave's
> > patch in place, but I'd accidentally built Mesa with "--enable-debuga", so
> > no assertions.
> >
> > I think this is the best thing to do for now.  Alternatives would be:
> > 1. Delete the assertion in _mesa_init_teximage_fields() [very lame]
> > 2. Make intel_bind_renderbuffer_tex_image lie about the formats and
> >     then fix them up.  [seems like more work]
> > 3. Just enable the extension
> >     [I don't want to do this without consulting Topi, and he's on vacation]
> >     [would also need a lot of testing...]
> >
> > *shrug*.  This works.  It's easy.
> >
> > 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 fc7018d..4a33de9 100644
> > --- a/src/mesa/drivers/dri/i965/brw_meta_stencil_blit.c
> > +++ b/src/mesa/drivers/dri/i965/brw_meta_stencil_blit.c
> > @@ -414,6 +414,7 @@ brw_meta_stencil_blit(struct brw_context *brw,
> >      GLenum target;
> >   
> >      _mesa_meta_fb_tex_blit_begin(ctx, &blit);
> > +   ctx->Extensions.ARB_texture_stencil8 = true;
> >   
> >      _mesa_GenFramebuffers(1, &fbo);
> >      /* Force the surface to be configured for level zero. */
> > @@ -451,6 +452,7 @@ brw_meta_stencil_blit(struct brw_context *brw,
> >      _mesa_DrawArrays(GL_TRIANGLE_FAN, 0, 4);
> >   
> >   error:
> > +   ctx->Extensions.ARB_texture_stencil8 = false;
> >      _mesa_meta_fb_tex_blit_end(ctx, target, &blit);
> >      _mesa_meta_end(ctx);
> >   
> Please add FIXMEs around your additions to explain the hack!

Good call.  Jason requested that as well.  I've added:

+   /* XXX: Pretend to support stencil textures so _mesa_base_tex_format()
+    * returns a valid format.  When we properly support the extension, we
+    * should remove this.
+    */

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150609/5e176073/attachment-0001.sig>


More information about the mesa-dev mailing list