mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 04:48:08 +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> (cherry picked from commitc2e78f1b22) Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41402>
This commit is contained in:
parent
54e1e88970
commit
6f24da74e1
2 changed files with 7 additions and 2 deletions
|
|
@ -3234,7 +3234,7 @@
|
|||
"description": "tu: Fix CP_CCHE_INVALIDATE not being applied at the right point",
|
||||
"nominated": true,
|
||||
"nomination_type": 2,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": "fb1c3f7f5de6642fcd127724a0cea5643d39d7ee",
|
||||
"notes": null
|
||||
|
|
|
|||
|
|
@ -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