[Mesa-dev] [PATCH 26/27] i965: Remove scanout restriction from lossless compression

Ben Widawsky ben at bwidawsk.net
Sun Jan 1 23:40:59 UTC 2017


On 16-12-11 10:05:25, Pohjolainen, Topi wrote:
>On Thu, Dec 01, 2016 at 02:10:07PM -0800, Ben Widawsky wrote:
>> From: Ben Widawsky <ben at bwidawsk.net>
>>
>> Cc: Topi Pohjolainen <topi.pohjolainen at intel.com>
>> Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
>> ---
>>  src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 12 +++---------
>>  1 file changed, 3 insertions(+), 9 deletions(-)
>>
>> diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
>> index b79de08..b297f79 100644
>> --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
>> +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
>> @@ -157,7 +157,7 @@ intel_miptree_supports_non_msrt_fast_clear(struct brw_context *brw,
>>     if (mt->disable_aux_buffers)
>>        return false;
>>
>> -   if (mt->is_scanout)
>> +   if (mt->is_scanout && mt->msaa_layout != INTEL_MSAA_LAYOUT_CMS)
>
>I guess the same question I had in previous becomes more general. How do we
>know that the external consumer is prepared for compression (mt->is_scanout
>just tells that the buffer goes out from the driver, right)?
>

Preparedness should have been determined by the graphics application (perhaps
via the display server). The graphics application, using get_plane2 or some
other magic, will determine that the external consumer can handle compression,
and will then use the CCS modifiers upon buffer creation. This is the only way
is_scanout && msaa_layout == INTEL_MSAA_LAYOUT_CMS, see
create_ccs_buf_for_image().

>>        return false;
>>
>>     /* This function applies only to non-multisampled render targets. */
>> @@ -528,10 +528,6 @@ intel_miptree_create_layout(struct brw_context *brw,
>>        const UNUSED bool is_lossless_compressed_aux =
>>           brw->gen >= 9 && num_samples == 1 &&
>>           mt->format == MESA_FORMAT_R_UINT32;
>> -
>> -      /* For now, nothing else has this requirement */
>> -      assert(is_lossless_compressed_aux ||
>> -             (layout_flags & MIPTREE_LAYOUT_FORCE_HALIGN16) == 0);
>
>Why do we need to drop this? And if we do, then we can drop the entire
>else-branch, "is_lossless_compressed_aux" is only used in the assertion.
>

This might have been because of my bug for not having the layout flags set
appropriately in an earlier version of my patches. I think the assertion should
stay here, and I put it back.

Thanks.

>>     }
>>
>>     brw_miptree_layout(brw, mt, layout_flags);
>> @@ -752,11 +748,9 @@ intel_miptree_create(struct brw_context *brw,
>>         * resolves.
>>         */
>>        const bool lossless_compression_disabled = INTEL_DEBUG & DEBUG_NO_RBC;
>> -      assert(!mt->is_scanout);
>>        const bool is_lossless_compressed =
>>           unlikely(!lossless_compression_disabled) &&
>> -         brw->gen >= 9 && !mt->is_scanout &&
>> -         intel_miptree_supports_lossless_compressed(brw, mt);
>> +         brw->gen >= 9 && intel_miptree_supports_lossless_compressed(brw, mt);
>>
>>        if (is_lossless_compressed) {
>>           intel_miptree_alloc_non_msrt_mcs(brw, mt, is_lossless_compressed);
>> @@ -1043,7 +1037,7 @@ intel_miptree_release(struct intel_mipmap_tree **mt)
>>              drm_intel_bo_unreference((*mt)->hiz_buf->aux_base.bo);
>>           free((*mt)->hiz_buf);
>>        }
>> -      if ((*mt)->mcs_buf && !(*mt)->is_scanout) {
>> +      if ((*mt)->mcs_buf) {
>>           drm_intel_bo_unreference((*mt)->mcs_buf->bo);
>>           free((*mt)->mcs_buf);
>>        }
>> --
>> 2.10.2
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list