From 0cf27a7236cbad271430986ba6625b4ae5d4ee02 Mon Sep 17 00:00:00 2001 From: Mark Collins Date: Wed, 7 Feb 2024 13:49:00 +0000 Subject: [PATCH] tu: Clear `VSC_UNKNOWN_0D08` on A7XX This register is set by the proprietary driver along with other VSC state for binning, the stale value of this register set by the prop driver was being used by Turnip resulting in crashes that were exclusive to Android due to only running the prop driver alongside Turnip there. The fix is to emit this new register alongside all other VSC state inside the `update_vsc_pipe` function. Signed-off-by: Mark Collins Part-of: --- src/freedreno/registers/adreno/a6xx.xml | 2 ++ src/freedreno/vulkan/tu_cmd_buffer.cc | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/freedreno/registers/adreno/a6xx.xml b/src/freedreno/registers/adreno/a6xx.xml index 3b5dc0a4b7d..655239e4fec 100644 --- a/src/freedreno/registers/adreno/a6xx.xml +++ b/src/freedreno/registers/adreno/a6xx.xml @@ -1951,6 +1951,8 @@ to upconvert to 32b float internally? + + diff --git a/src/freedreno/vulkan/tu_cmd_buffer.cc b/src/freedreno/vulkan/tu_cmd_buffer.cc index bf4e1b4772b..ee709438044 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.cc +++ b/src/freedreno/vulkan/tu_cmd_buffer.cc @@ -1400,6 +1400,8 @@ update_vsc_pipe(struct tu_cmd_buffer *cmd, tu_cs_emit_regs(cs, A6XX_VSC_DRAW_STRM_PITCH(cmd->vsc_draw_strm_pitch), A6XX_VSC_DRAW_STRM_LIMIT(cmd->vsc_draw_strm_pitch - VSC_PAD)); + + tu_cs_emit_regs(cs, A7XX_VSC_UNKNOWN_0D08(0)); } static void