Mesa (main): tu: Emit GRAS_LRZ_MRT_BUF_INFO_0

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Oct 22 11:52:10 UTC 2021


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

Author: Connor Abbott <cwabbott0 at gmail.com>
Date:   Tue Oct 19 17:52:22 2021 +0200

tu: Emit GRAS_LRZ_MRT_BUF_INFO_0

The blob seems to always emit this, even though it seems to only be used
when rendering to the special planar formats (which we only do in the
blit path). Based on the LRZ prefix it might used in other cases though.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6792>

---

 src/freedreno/vulkan/tu_clear_blit.c | 5 +++++
 src/freedreno/vulkan/tu_cmd_buffer.c | 9 +++++++++
 2 files changed, 14 insertions(+)

diff --git a/src/freedreno/vulkan/tu_clear_blit.c b/src/freedreno/vulkan/tu_clear_blit.c
index d1ddfa70c23..e4afb6d7d95 100644
--- a/src/freedreno/vulkan/tu_clear_blit.c
+++ b/src/freedreno/vulkan/tu_clear_blit.c
@@ -939,6 +939,11 @@ r3d_dst(struct tu_cs *cs, const struct fdl6_view *iview, uint32_t layer)
    tu_cs_emit_pkt4(cs, REG_A6XX_RB_MRT_FLAG_BUFFER(0), 3);
    tu_cs_image_flag_ref(cs, iview, layer);
 
+   /* Use color format from RB_MRT_BUF_INFO. This register is relevant for
+    * FMT6_NV12_Y.
+    */
+   tu_cs_emit_regs(cs, A6XX_GRAS_LRZ_MRT_BUF_INFO_0(.color_format = iview->RB_MRT_BUF_INFO & 0xff));
+
    tu_cs_emit_regs(cs, A6XX_RB_RENDER_CNTL(.flag_mrts = iview->ubwc_enabled));
 }
 
diff --git a/src/freedreno/vulkan/tu_cmd_buffer.c b/src/freedreno/vulkan/tu_cmd_buffer.c
index 2084ccd7b8c..70f1c6943e0 100644
--- a/src/freedreno/vulkan/tu_cmd_buffer.c
+++ b/src/freedreno/vulkan/tu_cmd_buffer.c
@@ -274,6 +274,15 @@ tu6_emit_mrt(struct tu_cmd_buffer *cmd,
       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));
+      }
+   }
+
    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