Mesa (master): radv: clean up radv_layout_is_htile_compressed()
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Jan 5 12:20:58 UTC 2021
Module: Mesa
Branch: master
Commit: 76e33d528bb82ead1ec869001833b233166fd4b4
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=76e33d528bb82ead1ec869001833b233166fd4b4
Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date: Thu Dec 10 14:28:11 2020 +0100
radv: clean up radv_layout_is_htile_compressed()
Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8039>
---
src/amd/vulkan/radv_image.c | 50 ++++++++++++++++++++-------------------------
1 file changed, 22 insertions(+), 28 deletions(-)
diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c
index 4203f4262eb..2d46b1d86b1 100644
--- a/src/amd/vulkan/radv_image.c
+++ b/src/amd/vulkan/radv_image.c
@@ -1749,35 +1749,29 @@ bool radv_layout_is_htile_compressed(const struct radv_image *image,
bool in_render_loop,
unsigned queue_mask)
{
- if (radv_image_is_tc_compat_htile(image)) {
- if (layout == VK_IMAGE_LAYOUT_GENERAL &&
- !in_render_loop &&
- !(image->usage & VK_IMAGE_USAGE_STORAGE_BIT)) {
- /* It should be safe to enable TC-compat HTILE with
- * VK_IMAGE_LAYOUT_GENERAL if we are not in a render
- * loop and if the image doesn't have the storage bit
- * set. This improves performance for apps that use
- * GENERAL for the main depth pass because this allows
- * compression and this reduces the number of
- * decompressions from/to GENERAL.
- */
- return true;
- }
-
- if ((layout == VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL ||
- layout == VK_IMAGE_LAYOUT_GENERAL) &&
- (queue_mask & (1u << RADV_QUEUE_COMPUTE)))
- return false;
-
- return layout != VK_IMAGE_LAYOUT_GENERAL;
+ switch (layout) {
+ case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:
+ case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR:
+ case VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR:
+ return radv_image_has_htile(image);
+ case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:
+ return radv_image_has_htile(image) && queue_mask == (1u << RADV_QUEUE_GENERAL);
+ case VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR:
+ case VK_IMAGE_LAYOUT_GENERAL:
+ /* It should be safe to enable TC-compat HTILE with
+ * VK_IMAGE_LAYOUT_GENERAL if we are not in a render loop and
+ * if the image doesn't have the storage bit set. This
+ * improves performance for apps that use GENERAL for the main
+ * depth pass because this allows compression and this reduces
+ * the number of decompressions from/to GENERAL.
+ */
+ return radv_image_is_tc_compat_htile(image) &&
+ queue_mask == (1u << RADV_QUEUE_GENERAL) &&
+ !(image->usage & VK_IMAGE_USAGE_STORAGE_BIT) &&
+ !in_render_loop;
+ default:
+ return radv_image_is_tc_compat_htile(image);
}
-
- return radv_image_has_htile(image) &&
- (layout == VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL ||
- layout == VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR ||
- layout == VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR ||
- (layout == VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL &&
- queue_mask == (1u << RADV_QUEUE_GENERAL)));
}
bool radv_layout_can_fast_clear(const struct radv_device *device,
More information about the mesa-commit
mailing list