[Mesa-dev] [v2 02/17] i965/blorp: Skip redundant re-fast clear for non-compressed
Ben Widawsky
benjamin.widawsky at intel.com
Thu Nov 24 16:42:22 UTC 2016
On 16-11-23 12:04:02, Jason Ekstrand wrote:
>On Wed, Nov 23, 2016 at 10:16 AM, Pohjolainen, Topi <
>topi.pohjolainen at gmail.com> wrote:
>
>> On Wed, Nov 23, 2016 at 09:05:39AM -0800, Jason Ekstrand wrote:
>> > On Wed, Nov 23, 2016 at 1:16 AM, Topi Pohjolainen
>> > <[1]topi.pohjolainen at gmail.com> wrote:
>> >
>> > Originally re-clears where skipped but when lossless compression
>> > was introduced the re-clears where errorneously enabled also for
>> > non-compressed fast clears.
>> > Signed-off-by: Topi Pohjolainen <[2]topi.pohjolainen at intel.com>
>> > CC: Ben Widawsky <[3]benjamin.widawsky at intel.com>
>> > CC: Kenneth Graunke <[4]kenneth at whitecape.org>
>> > CC: Harri Syrja <[5]harri.syrja at intel.com>
>> > Cc: Chad Versace <[6]chad at kiwitree.net>
>> > ---
>> > src/mesa/drivers/dri/i965/brw_blorp.c | 19 ++++++++++++++++---
>> > 1 file changed, 16 insertions(+), 3 deletions(-)
>> > diff --git a/src/mesa/drivers/dri/i965/brw_blorp.c
>> > b/src/mesa/drivers/dri/i965/brw_blorp.c
>> > index 556f2c0..9a849f5 100644
>> > --- a/src/mesa/drivers/dri/i965/brw_blorp.c
>> > +++ b/src/mesa/drivers/dri/i965/brw_blorp.c
>> > @@ -825,10 +825,23 @@ do_single_blorp_clear(struct brw_context *brw,
>> > struct gl_framebuffer *fb,
>> > brw, &irb->mt->gen9_fast_clear_
>> > color,
>> > &override_color);
>> > - /* If the buffer is already in INTEL_FAST_CLEAR_STATE_CLEAR,
>> > the clear
>> > - * is redundant and can be skipped.
>> > + /* If the buffer is already in INTEL_FAST_CLEAR_STATE_CLEAR,
>> > and the
>> > + * buffer isn't compressed, the clear is redundant and can be
>> > skipped.
>> > + *
>> > + * Without compression fast clear only operates on the mcs
>> > buffer
>> > + * recording if color values are cleared. The hardware,
>> > however,
>> > + * doesn't write the actual color value into the mcs or color
>> > + * buffer. Only by the time of render (inclucing color
>> > resolve) does the
>> > + * hardware read the _current_ color value in the surface
>> > state and
>> > + * write the actual pixel values in the color buffer
>> > accordingly.
>> > + *
>> > + * This seems to be the reason why sampler engine cannot
>> > handle
>> > + * non-compressed fast clear - it doesn't know how to read
>> > the color
>> > + * value from the surface state. With compression the color
>> > value is
>> > + * recorded in the color buffer (only not for every pixel)
>> > and therefore
>> > + * it is available without consulting the surface state.
>> >
>> > This doesn't jive with my understanding of fast clears on gen9.
>> > Everything I've seen so far indicates that the clear color in the
>> > surface state *does* matter. Otherwise, why would it be there? In
>> > particular, my understanding of the 2-bit CCS values is that 0 means
>> > resolved, 1 means compressed and 3 means clear where "clear" means "go
>> > look at the clear color". Have you done experiments that lead you to
>> > some other conclusion?
>>
>> Right, you are correct. This is actually a patch from really early days
>> when I
>> didn't know any better. We might want to drop this for now, there is the
>> 0/1
>> color thing for sampler engine that we probably need to fix first anyway.
>>
>
>Let's drop it if we can.
>
>We should already have code for Broadwell and earlier that prevents
>fast-clears with non-0/1 clear colors. We could just also do that on Sky
>Lake and deal with partial resolves later. I doubt non-0/1 fast-clear is a
>big enough deal over color compression to slow down getting this landed.
>
Numbers
>
>> What do you think?
>>
>> >
>> > */
>> > - if (!color_updated &&
>> > + if ((!color_updated || !is_lossless_compressed) &&
>> > irb->mt->fast_clear_state ==
>> > INTEL_FAST_CLEAR_STATE_CLEAR)
>> > return true;
>> > --
>> > 2.5.5
>> > _______________________________________________
>> > mesa-dev mailing list
>> > [7]mesa-dev at lists.freedesktop.org
>> > [8]https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>> >
>> > References
>> >
>> > 1. mailto:topi.pohjolainen at gmail.com
>> > 2. mailto:topi.pohjolainen at intel.com
>> > 3. mailto:benjamin.widawsky at intel.com
>> > 4. mailto:kenneth at whitecape.org
>> > 5. mailto:harri.syrja at intel.com
>> > 6. mailto:chad at kiwitree.net
>> > 7. mailto:mesa-dev at lists.freedesktop.org
>> > 8. https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>
--
Ben Widawsky, Intel Open Source Technology Center
More information about the mesa-dev
mailing list