iris: replace constant cache invalidate with hdc flush

This implements Wa_14010840176.

Cc: mesa-stable
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21364>
(cherry picked from commit 231ede4f0c)
This commit is contained in:
Tapani Pälli 2024-01-11 17:51:17 +02:00 committed by Eric Engestrom
parent b6045c5fa9
commit b0be9a58af
2 changed files with 17 additions and 2 deletions

View file

@ -14,7 +14,7 @@
"description": "iris: replace constant cache invalidate with hdc flush",
"nominated": true,
"nomination_type": 0,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": null,
"notes": null

View file

@ -9049,6 +9049,22 @@ iris_emit_raw_pipe_control(struct iris_batch *batch,
flags |= PIPE_CONTROL_DEPTH_STALL;
}
batch_mark_sync_for_pipe_control(batch, flags);
#if INTEL_NEEDS_WA_14010840176
/* "If the intention of “constant cache invalidate” is
* to invalidate the L1 cache (which can cache constants), use HDC
* pipeline flush instead of Constant Cache invalidate command."
*
* "If L3 invalidate is needed, the w/a should be to set state invalidate
* in the pipe control command, in addition to the HDC pipeline flush."
*/
if (flags & PIPE_CONTROL_CONST_CACHE_INVALIDATE) {
flags &= ~PIPE_CONTROL_CONST_CACHE_INVALIDATE;
flags |= PIPE_CONTROL_FLUSH_HDC | PIPE_CONTROL_STATE_CACHE_INVALIDATE;
}
#endif
/* Emit --------------------------------------------------------------- */
if (INTEL_DEBUG(DEBUG_PIPE_CONTROL)) {
@ -9084,7 +9100,6 @@ iris_emit_raw_pipe_control(struct iris_batch *batch,
imm, reason);
}
batch_mark_sync_for_pipe_control(batch, flags);
iris_batch_sync_region_start(batch);
const bool trace_pc =