Mesa (main): tu: Always write GRAS_LRZ_MRT_BUF_INFO_0

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Oct 28 22:39:07 UTC 2021


Module: Mesa
Branch: main
Commit: 98c14485097703c497f839e671d4a2c052d45d35
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=98c14485097703c497f839e671d4a2c052d45d35

Author: Connor Abbott <cwabbott0 at gmail.com>
Date:   Thu Oct 28 18:50:33 2021 +0200

tu: Always write GRAS_LRZ_MRT_BUF_INFO_0

This fixes flakes in dEQP-VK.pipeline.stencil.nocolor.format.* when run
after ycbcr tests. Apparently LRZ needs to know if there's a media
format enabled even if there are no color attachments, so we need to
write something here. Presumably any "normal" format would work but 0
seems like a good neutral choice.

Fixes: 9c895e13 ("tu: Emit GRAS_LRZ_MRT_BUF_INFO_0")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13578>

---

 src/freedreno/vulkan/tu_cmd_buffer.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/src/freedreno/vulkan/tu_cmd_buffer.c b/src/freedreno/vulkan/tu_cmd_buffer.c
index 70f1c6943e0..a5e576314a6 100644
--- a/src/freedreno/vulkan/tu_cmd_buffer.c
+++ b/src/freedreno/vulkan/tu_cmd_buffer.c
@@ -255,6 +255,8 @@ tu6_emit_mrt(struct tu_cmd_buffer *cmd,
 {
    const struct tu_framebuffer *fb = cmd->state.framebuffer;
 
+   enum a6xx_format mrt0_format = 0;
+
    for (uint32_t i = 0; i < subpass->color_count; ++i) {
       uint32_t a = subpass->color_attachments[i].attachment;
       if (a == VK_ATTACHMENT_UNUSED)
@@ -272,17 +274,13 @@ tu6_emit_mrt(struct tu_cmd_buffer *cmd,
 
       tu_cs_emit_pkt4(cs, REG_A6XX_RB_MRT_FLAG_BUFFER_ADDR(i), 3);
       tu_cs_image_flag_ref(cs, &iview->view, 0);
-   }
 
-   if (subpass->color_count) {
-      uint32_t a = subpass->color_attachments[0].attachment;
-      if (a != VK_ATTACHMENT_UNUSED) {
-         const struct tu_image_view *iview = cmd->state.attachments[a];
-         enum a6xx_format fmt = iview->view.RB_MRT_BUF_INFO & 0xff;
-         tu_cs_emit_regs(cs, A6XX_GRAS_LRZ_MRT_BUF_INFO_0(.color_format = fmt));
-      }
+      if (i == 0)
+         mrt0_format = iview->view.SP_FS_MRT_REG & 0xff;
    }
 
+   tu_cs_emit_regs(cs, A6XX_GRAS_LRZ_MRT_BUF_INFO_0(.color_format = mrt0_format));
+
    tu_cs_emit_regs(cs,
                    A6XX_RB_SRGB_CNTL(.dword = subpass->srgb_cntl));
    tu_cs_emit_regs(cs,



More information about the mesa-commit mailing list