mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 15:58:05 +02:00
tu: Fix CP_CCHE_INVALIDATE not being applied at the right point
Apparently CP_CCHE_INVALIDATE is just a plain register write underneath,
so it needs WFI before it, in order to invalidate at the right point.
```
CP_CCHE_INVALIDATE:
mov $addr, 0x9881
mov $data, 0x1
waitin
mov $01, $data
```
Fixes misrendering in Doom Eternal on A750.
Fixes: fb1c3f7f5d ("tu: Implement CCHE invalidation")
Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41266>
This commit is contained in:
parent
e1745e0bd9
commit
c2e78f1b22
1 changed files with 6 additions and 1 deletions
|
|
@ -352,8 +352,13 @@ tu6_emit_flushes(struct tu_cmd_buffer *cmd_buffer,
|
|||
tu_emit_event_write<CHIP>(cmd_buffer, cs, FD_CCU_CLEAN_BLIT_CACHE);
|
||||
if (CHIP >= A7XX && (flushes & TU_CMD_FLAG_CCHE_INVALIDATE) &&
|
||||
/* Invalidating UCHE seems to also invalidate CCHE */
|
||||
!(flushes & TU_CMD_FLAG_CACHE_INVALIDATE))
|
||||
!(flushes & TU_CMD_FLAG_CACHE_INVALIDATE)) {
|
||||
/* CP_CCHE_INVALIDATE is just a plain register write underneath, so
|
||||
* it needs WFI before it, in order to invalidate at the right point.
|
||||
*/
|
||||
tu_cs_emit_wfi(cs);
|
||||
tu_cs_emit_pkt7(cs, CP_CCHE_INVALIDATE, 0);
|
||||
}
|
||||
if (CHIP == A7XX && (flushes & TU_CMD_FLAG_RTU_INVALIDATE) &&
|
||||
cmd_buffer->device->physical_device->info->props.has_rt_workaround)
|
||||
tu_emit_rt_workaround<CHIP>(cmd_buffer, cs);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue