What you mean by "fast clear"?

llvmpipe depth-stencil buffers are interleaved, and AFAICT partial clears will 
be done with quads.  In other words, this will make llvmpipe slower.

In truth, this will all drivers with interleaved z/s bufferss slower.  That is, 
this is optimizing for some drivers at expense of others which might have 
interleaved depth-stencil buffer.  The very fact that it is worthwhile doing 
this change for your gpu means that it must be worthwhile for others to leave 
it as it was...

So, if this provides a significant performance difference, then I think the 
only option to have everybody happy is to have cap to choose the optimal 
behavior.

Jose

----- Original Message -----
> It will only be worse for combined Z-stencil buffers if Z and
> stencil are interleaved, and if SW rasterizers don't support any kind
> of fast clear.
> 
> Marek
> 
> On Fri, Dec 13, 2013 at 3:21 PM, Jose Fonseca <jfons...@vmware.com> wrote:
> > This is worse for SW renderers...
> >
> > Jose
> >
> > ----- Original Message -----
> >> From: Marek Olšák <marek.ol...@amd.com>
> >>
> >> ---
> >>  src/mesa/state_tracker/st_cb_clear.c | 12 +++++++-----
> >>  1 file changed, 7 insertions(+), 5 deletions(-)
> >>
> >> diff --git a/src/mesa/state_tracker/st_cb_clear.c
> >> b/src/mesa/state_tracker/st_cb_clear.c
> >> index 887e58b..46f2f8d 100644
> >> --- a/src/mesa/state_tracker/st_cb_clear.c
> >> +++ b/src/mesa/state_tracker/st_cb_clear.c
> >> @@ -476,14 +476,16 @@ st_Clear(struct gl_context *ctx, GLbitfield mask)
> >>        }
> >>     }
> >>
> >> -   /*
> >> -    * If we're going to use clear_with_quad() for any reason, use it for
> >> -    * everything possible.
> >> +   /* Only use quad-based clearing for the renderbuffers which cannot
> >> +    * use pipe->clear. We want to always use pipe->clear for the other
> >> +    * renderbuffers, because it's likely to be faster. Even if there is
> >> +    * a combined depth-stencil buffer, the depth and stencil components
> >> +    * may be stored separately internally.
> >>      */
> >>     if (quad_buffers) {
> >> -      quad_buffers |= clear_buffers;
> >>        clear_with_quad(ctx, quad_buffers);
> >> -   } else if (clear_buffers) {
> >> +   }
> >> +   if (clear_buffers) {
> >>        /* We can't translate the clear color to the colorbuffer format,
> >>         * because different colorbuffers may have different formats.
> >>         */
> >> --
> >> 1.8.3.2
> >>
> >> _______________________________________________
> >> mesa-dev mailing list
> >> mesa-dev@lists.freedesktop.org
> >> https://urldefense.proofpoint.com/v1/url?u=http://lists.freedesktop.org/mailman/listinfo/mesa-dev&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=NMr9uy2iTjWVixC0wOcYCWEIYhfo80qKwRgdodpoDzA%3D%0A&m=cvIgdPYPFAOCEZnN3p40o7cbw0cTfSQzytP%2Byju9mDI%3D%0A&s=b1c126addd7be0ac34d91039bb019dabb14c976597b451daa14f440755d95f14
> >>
> 
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to