[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