[Mesa-dev] [PATCH 09/19] radv: remove radv_layout_is_htile_compressed()

Samuel Pitoiset samuel.pitoiset at gmail.com
Mon Oct 2 09:43:09 UTC 2017



On 10/01/2017 11:49 PM, Bas Nieuwenhuizen wrote:
> I'd like to keep this because they specify different concepts:
> 
> has_htile is whether the htile metadata is valid in combination with
> the image data, i.e. we can enable htile reads if we want, and don't
> have to .
> is_htile_compressed is whether we cannot read the data without the
> htile metadata.
> 
> I'd like to extend has_htile to more layouts, but have run into a bug
> with mad max, hence why they are currently the same. But given  that
> they represent different concepts, I'd like to keep  both.

Makes sense as well. Thanks for the reviews.

> 
> On Fri, Sep 29, 2017 at 5:48 PM, Samuel Pitoiset
> <samuel.pitoiset at gmail.com> wrote:
>> Similar to radv_layout_has_htile(). Also remove an assertion
>> which was always false.
>>
>> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
>> ---
>>   src/amd/vulkan/radv_cmd_buffer.c | 12 +++++-------
>>   src/amd/vulkan/radv_image.c      | 10 ----------
>>   src/amd/vulkan/radv_meta_clear.c |  4 ++--
>>   src/amd/vulkan/radv_private.h    | 12 +++---------
>>   4 files changed, 10 insertions(+), 28 deletions(-)
>>
>> diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
>> index 4db9d7628c..f13979cc9e 100644
>> --- a/src/amd/vulkan/radv_cmd_buffer.c
>> +++ b/src/amd/vulkan/radv_cmd_buffer.c
>> @@ -1388,9 +1388,7 @@ radv_emit_framebuffer_state(struct radv_cmd_buffer *cmd_buffer)
>>                  MAYBE_UNUSED uint32_t queue_mask = radv_image_queue_family_mask(image,
>>                                                                                  cmd_buffer->queue_family_index,
>>                                                                                  cmd_buffer->queue_family_index);
>> -               /* We currently don't support writing decompressed HTILE */
>> -               assert(radv_layout_has_htile(image, layout, queue_mask) ==
>> -                      radv_layout_is_htile_compressed(image, layout, queue_mask));
>> +               /* XXX: We currently don't support writing decompressed HTILE */
>>
>>                  radv_emit_fb_ds_state(cmd_buffer, &att->ds, image, layout);
>>
>> @@ -3404,11 +3402,11 @@ static void radv_handle_depth_image_transition(struct radv_cmd_buffer *cmd_buffe
>>                     radv_layout_has_htile(image, dst_layout, dst_queue_mask)) {
>>                  /* TODO: merge with the clear if applicable */
>>                  radv_initialize_htile(cmd_buffer, image, range, 0);
>> -       } else if (!radv_layout_is_htile_compressed(image, src_layout, src_queue_mask) &&
>> -                  radv_layout_is_htile_compressed(image, dst_layout, dst_queue_mask)) {
>> +       } else if (!radv_layout_has_htile(image, src_layout, src_queue_mask) &&
>> +                  radv_layout_has_htile(image, dst_layout, dst_queue_mask)) {
>>                  radv_initialize_htile(cmd_buffer, image, range, 0xffffffff);
>> -       } else if (radv_layout_is_htile_compressed(image, src_layout, src_queue_mask) &&
>> -                  !radv_layout_is_htile_compressed(image, dst_layout, dst_queue_mask)) {
>> +       } else if (radv_layout_has_htile(image, src_layout, src_queue_mask) &&
>> +                  !radv_layout_has_htile(image, dst_layout, dst_queue_mask)) {
>>                  VkImageSubresourceRange local_range = *range;
>>                  local_range.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT;
>>                  local_range.baseMipLevel = 0;
>> diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c
>> index 9fa4d8d2f7..f104ba2cb6 100644
>> --- a/src/amd/vulkan/radv_image.c
>> +++ b/src/amd/vulkan/radv_image.c
>> @@ -1047,16 +1047,6 @@ bool radv_layout_has_htile(const struct radv_image *image,
>>                 queue_mask == (1u << RADV_QUEUE_GENERAL);
>>   }
>>
>> -bool radv_layout_is_htile_compressed(const struct radv_image *image,
>> -                                     VkImageLayout layout,
>> -                                     unsigned queue_mask)
>> -{
>> -       return image->surface.htile_size &&
>> -              (layout == VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL ||
>> -               layout == VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL) &&
>> -              queue_mask == (1u << RADV_QUEUE_GENERAL);
>> -}
>> -
>>   bool radv_layout_can_fast_clear(const struct radv_image *image,
>>                                  VkImageLayout layout,
>>                                  unsigned queue_mask)
>> diff --git a/src/amd/vulkan/radv_meta_clear.c b/src/amd/vulkan/radv_meta_clear.c
>> index 5242078a86..a354ceecba 100644
>> --- a/src/amd/vulkan/radv_meta_clear.c
>> +++ b/src/amd/vulkan/radv_meta_clear.c
>> @@ -556,7 +556,7 @@ static bool depth_view_can_fast_clear(struct radv_cmd_buffer *cmd_buffer,
>>          if (iview->image->surface.htile_size &&
>>              iview->base_mip == 0 &&
>>              iview->base_layer == 0 &&
>> -           radv_layout_is_htile_compressed(iview->image, layout, queue_mask) &&
>> +           radv_layout_has_htile(iview->image, layout, queue_mask) &&
>>              !radv_image_extent_compare(iview->image, &iview->extent))
>>                  return true;
>>          return false;
>> @@ -681,7 +681,7 @@ emit_fast_htile_clear(struct radv_cmd_buffer *cmd_buffer,
>>          if (cmd_buffer->device->debug_flags & RADV_DEBUG_NO_FAST_CLEARS)
>>                  return false;
>>
>> -       if (!radv_layout_is_htile_compressed(iview->image, image_layout, radv_image_queue_family_mask(iview->image, cmd_buffer->queue_family_index, cmd_buffer->queue_family_index)))
>> +       if (!radv_layout_has_htile(iview->image, image_layout, radv_image_queue_family_mask(iview->image, cmd_buffer->queue_family_index, cmd_buffer->queue_family_index)))
>>                  goto fail;
>>
>>          /* don't fast clear 3D */
>> diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h
>> index f292709805..0f94af9852 100644
>> --- a/src/amd/vulkan/radv_private.h
>> +++ b/src/amd/vulkan/radv_private.h
>> @@ -1229,21 +1229,15 @@ struct radv_image {
>>          uint32_t dcc_pred_offset;
>>   };
>>
>> -/* Whether the image has a htile that is known consistent with the contents of
>> - * the image. */
>> -bool radv_layout_has_htile(const struct radv_image *image,
>> -                           VkImageLayout layout,
>> -                           unsigned queue_mask);
>> -
>>   /* Whether the image has a htile  that is known consistent with the contents of
>>    * the image and is allowed to be in compressed form.
>>    *
>>    * If this is false reads that don't use the htile should be able to return
>>    * correct results.
>>    */
>> -bool radv_layout_is_htile_compressed(const struct radv_image *image,
>> -                                     VkImageLayout layout,
>> -                                     unsigned queue_mask);
>> +bool radv_layout_has_htile(const struct radv_image *image,
>> +                           VkImageLayout layout,
>> +                           unsigned queue_mask);
>>
>>   bool radv_layout_can_fast_clear(const struct radv_image *image,
>>                                  VkImageLayout layout,
>> --
>> 2.14.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