From 9c895e133bf2fbde0d318e68d7c201b4f66ff22d Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Tue, 19 Oct 2021 17:52:22 +0200 Subject: [PATCH] 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: --- 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,