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