[Mesa-dev] [PATCH 01/12] i965/rbc: Allow integer formats as advertised in isl_format.c

Pohjolainen, Topi topi.pohjolainen at gmail.com
Fri Sep 2 15:55:12 UTC 2016


On Fri, Sep 02, 2016 at 07:59:15AM -0700, Jason Ekstrand wrote:
>    On Sep 2, 2016 3:07 AM, "Pohjolainen, Topi"
>    <[1]topi.pohjolainen at gmail.com> wrote:
>    >
>    > On Fri, Sep 02, 2016 at 08:34:27AM +0300, Pohjolainen, Topi wrote:
>    > > On Thu, Sep 01, 2016 at 02:33:48PM -0700, Jason Ekstrand wrote:
>    > > >    On Wed, Aug 31, 2016 at 8:17 AM, Topi Pohjolainen
>    > > >    <[1][2]topi.pohjolainen at intel.com> wrote:
>    > > >
>    > > >      From: Topi Pohjolainen <[2][3]topi.pohjolainen at gmail.com>
>    > > >      Blorp consults brw_is_color_fast_clear_compatible() to see
>    if any
>    > > >      restrictions apply for fast clear in addition to the
>    capablities
>    > > >      advertised in isl_format.c::format_info[]. On Gen8+ integer
>    formats
>    > > >      are backlisted for plain old fast clear but there is no
>    reason why
>    > > >      lossless compression shouldn't be supported. In fact,
>    lossless
>    > > >      compression of integer formats is already supported for
>    normal
>    > > >      render paths.
>    > > >      This patch prepares for dropping the delayed allocating of
>    the mcs
>    > > >      buffer for lossless compression. Until now the skip of fast
>    clear
>    > > >      also prevented the mcs being allocated and hence the
>    lossless
>    > > >      compression being effectively turned off for integer
>    formats.
>    > > >      Once the mcs buffer is allocated beforehand, the assertion
>    addressed
>    > > >      here would start triggering.
>    > > >      Signed-off-by: Topi Pohjolainen
>    <[3][4]topi.pohjolainen at intel.com>
>    > > >      ---
>    > > >       src/mesa/drivers/dri/i965/brw_blorp.c | 6 +++++-
>    > > >       1 file changed, 5 insertions(+), 1 deletion(-)
>    > > >      diff --git a/src/mesa/drivers/dri/i965/brw_blorp.c
>    > > >      b/src/mesa/drivers/dri/i965/brw_blorp.c
>    > > >      index c902f2e..7e257e9 100644
>    > > >      --- a/src/mesa/drivers/dri/i965/brw_blorp.c
>    > > >      +++ b/src/mesa/drivers/dri/i965/brw_blorp.c
>    > > >      @@ -761,8 +761,12 @@ do_single_blorp_clear(struct
>    brw_context *brw,
>    > > >      struct gl_framebuffer *fb,
>    > > >                /* Compressed buffers can be cleared also using
>    normal
>    > > >      rep-clear. In
>    > > >                 * such case they bahave such as if they were
>    drawn using
>    > > >      normal 3D
>    > > >                 * render pipeline, and we simply mark the mcs as
>    dirty.
>    > > >      +          *
>    > > >      +          * Fast clear of integer formats is not supported
>    on
>    > > >      Gen8+. See
>    > > >      +          * brw_is_color_fast_clear_compatible(). This,
>    however,
>    > > >      doesn't
>    > > >      +          * prevent lossless compression on Gen9+.
>    > > >                 */
>    > > >      -         assert(partial_clear);
>    > > >      +         assert(partial_clear ||
>    _mesa_is_format_integer_color(
>    > > >      format));
>    > > >
>    > > >    How about assert(isl_format_supports_lossless_compression())?
>    > >
>    > > Instead of _mesa_is_format_integer_color()? Sounds good to me.
>    >
>    > Well, I suppose we could just drop the assert? This is in a
>    conditional
>    > block:
> 
>    Yeah, really the code that's protected by the assert has nothing to do
>    with fast clears.  Instead, it's just "you rendered into a compressed
>    render target with compression, flag it as unresolved".  We probably
>    need similar code in brw_blorp_blit_miptrees of we don't have it
>    already.

Just in the end of brw_blorp_blit_miptrees() we have:

  if (intel_miptree_is_lossless_compressed(brw, dst_mt))
      dst_mt->fast_clear_state = INTEL_FAST_CLEAR_STATE_UNRESOLVED;


More information about the mesa-dev mailing list