[Mesa-dev] [PATCH] i965/gen8: Allow 16k viewport when blitting stencil

Kenneth Graunke kenneth at whitecape.org
Tue Aug 26 16:41:17 PDT 2014


On Monday, August 25, 2014 04:38:53 PM Ian Romanick wrote:
> On 08/14/2014 09:09 AM, Topi Pohjolainen wrote:
> > From: Topi Pohjolainen <topi.pohjolainen at gmail.com>
> > 
> > Fixes gles3 conformance tests:
> > 
> > framebuffer_blit_functionality_negative_height_blit
> > framebuffer_blit_functionality_negative_width_blit
> > framebuffer_blit_functionality_negative_dimensions_blit
> > framebuffer_blit_functionality_magnifying_blit
> > framebuffer_blit_functionality_multisampled_to_singlesampled_blit
> > 
> > Signed-off-by: Topi Pohjolainen <topi.pohjolainen at gmail.com>
> > ---
> >  src/mesa/drivers/dri/i965/gen8_viewport_state.c | 7 +++++++
> >  1 file changed, 7 insertions(+)
> > 
> > diff --git a/src/mesa/drivers/dri/i965/gen8_viewport_state.c b/src/mesa/drivers/dri/i965/gen8_viewport_state.c
> > index 9c89532..eda9aad 100644
> > --- a/src/mesa/drivers/dri/i965/gen8_viewport_state.c
> > +++ b/src/mesa/drivers/dri/i965/gen8_viewport_state.c
> > @@ -94,6 +94,13 @@ gen8_upload_sf_clip_viewport(struct brw_context *brw)
> >        float gbx = maximum_guardband_extent / ctx->ViewportArray[i].Width;
> >        float gby = maximum_guardband_extent / ctx->ViewportArray[i].Height;
> >  
> > +      /**
> > +       * Stencil blits require W-tiled to be treated as Y-tiled needing in
> > +       * turn width to be programmed twice the original.
> > +       */
> > +      if (brw->meta_in_progress)
> > +         gbx *= 2;
> > +
> 
> I've had this on my various trees for almost two weeks now, and it
> doesn't seem to have caused any problems.  I'm wondering if we want to
> make this check a bit more specific to the stencil blit case.
> 
> Either way, I'd like to see this or something similar land soon.

NAK.  While it does appear to fix the problem, this seems much too broad to me - there are plenty of meta operations that don't even touch W-tiled buffers. 

This also expands the guardband to be 16K x 8K, which (as I understand it), would result in TA_GB for a primitive with a screenspace bounding box wider than 8K pixels.  This could mean such primitives get trivially accepted, which violates the rule in the vertex X,Y quantization section that all primitives must have width/height <= 8K, which explicitly states that software must guarantee that via clipping.

I have an alternate patch which should fix the problem a bit differently, and likely some other issues we'll hit if/when we bump the maximum texture size to 16K:

http://mid.gmane.org/1409096395-19654-1-git-send-email-kenneth@whitecape.org

--Ken
-------------- 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/20140826/6ad6968b/attachment.sig>


More information about the mesa-dev mailing list