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 <mark@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26461>
This commit is contained in:
Mark Collins 2024-02-07 13:49:00 +00:00 committed by Marge Bot
parent 71918f7cff
commit 0cf27a7236
2 changed files with 4 additions and 0 deletions

View file

@ -1951,6 +1951,8 @@ to upconvert to 32b float internally?
<reg32 offset="0x0" name="REG"/>
</array>
<reg32 offset="0x0d08" name="VSC_UNKNOWN_0D08" variants="A7XX-" usage="rp_blit"/>
<reg32 offset="0x0E10" name="UCHE_UNKNOWN_0E10" variants="A7XX-" usage="cmd"/>
<reg32 offset="0x0E11" name="UCHE_UNKNOWN_0E11" variants="A7XX-" usage="cmd"/>
<!-- always 0x03200000 ? -->

View file

@ -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