[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