From 83cb5c34911b68b100eb24c471fc2e9157c388a2 Mon Sep 17 00:00:00 2001 From: Danylo Piliaiev Date: Fri, 14 Jul 2023 16:41:48 +0200 Subject: [PATCH] tu/a7xx: Disable LRZ Even with GMEM disabled LRZ is still interacted with in some cases. So it has to be completely disabled until it is fixed. Signed-off-by: Danylo Piliaiev Part-of: --- src/freedreno/vulkan/tu_device.cc | 2 ++ src/freedreno/vulkan/tu_device.h | 1 + src/freedreno/vulkan/tu_image.cc | 3 +-- src/freedreno/vulkan/tu_lrz.cc | 6 +++--- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/freedreno/vulkan/tu_device.cc b/src/freedreno/vulkan/tu_device.cc index c2f319f0c7d..e977824aecb 100644 --- a/src/freedreno/vulkan/tu_device.cc +++ b/src/freedreno/vulkan/tu_device.cc @@ -2291,6 +2291,8 @@ tu_CreateDevice(VkPhysicalDevice physicalDevice, device->use_z24uint_s8uint = physical_device->info->a6xx.has_z24uint_s8uint && !border_color_without_format; + device->use_lrz = + !TU_DEBUG(NOLRZ) && device->physical_device->info->chip == 6; tu_gpu_tracepoint_config_variable(); diff --git a/src/freedreno/vulkan/tu_device.h b/src/freedreno/vulkan/tu_device.h index bf119ca0120..5557f4a5959 100644 --- a/src/freedreno/vulkan/tu_device.h +++ b/src/freedreno/vulkan/tu_device.h @@ -371,6 +371,7 @@ struct tu_device #endif bool use_z24uint_s8uint; + bool use_lrz; }; VK_DEFINE_HANDLE_CASTS(tu_device, vk.base, VkDevice, VK_OBJECT_TYPE_DEVICE) diff --git a/src/freedreno/vulkan/tu_image.cc b/src/freedreno/vulkan/tu_image.cc index 4932810027e..f4d1e7f9e38 100644 --- a/src/freedreno/vulkan/tu_image.cc +++ b/src/freedreno/vulkan/tu_image.cc @@ -615,8 +615,7 @@ tu_image_init(struct tu_device *device, struct tu_image *image, } const struct util_format_description *desc = util_format_description(image->layout[0].format); - if (util_format_has_depth(desc) && !TU_DEBUG(NOLRZ)) - { + if (util_format_has_depth(desc) && device->use_lrz) { /* Depth plane is the first one */ struct fdl_layout *layout = &image->layout[0]; unsigned width = layout->width0; diff --git a/src/freedreno/vulkan/tu_lrz.cc b/src/freedreno/vulkan/tu_lrz.cc index a5f6454e28c..2744e6bfdf5 100644 --- a/src/freedreno/vulkan/tu_lrz.cc +++ b/src/freedreno/vulkan/tu_lrz.cc @@ -113,7 +113,7 @@ tu_lrz_init_state(struct tu_cmd_buffer *cmd, const struct tu_image_view *view) { if (!view->image->lrz_height) { - assert(TU_DEBUG(NOLRZ) || !vk_format_has_depth(att->format)); + assert(!cmd->device->use_lrz || !vk_format_has_depth(att->format)); return; } @@ -162,7 +162,7 @@ tu_lrz_init_secondary(struct tu_cmd_buffer *cmd, if (!has_gpu_tracking) return; - if (TU_DEBUG(NOLRZ)) + if (!cmd->device->use_lrz) return; if (!vk_format_has_depth(att->format)) @@ -574,7 +574,7 @@ tu6_calculate_lrz_state(struct tu_cmd_buffer *cmd, /* If depth test is disabled we shouldn't touch LRZ. * Same if there is no depth attachment. */ - if (a == VK_ATTACHMENT_UNUSED || !z_test_enable || TU_DEBUG(NOLRZ)) + if (a == VK_ATTACHMENT_UNUSED || !z_test_enable || !cmd->device->use_lrz) return gras_lrz_cntl; if (!cmd->state.lrz.gpu_dir_tracking && !cmd->state.attachments) {