summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Olšák <marek.olsak@amd.com>2022-08-04 02:09:23 -0400
committerDylan Baker <dylan.c.baker@intel.com>2022-08-11 10:30:37 -0700
commitff01821f7e0c4868702467b87047074f2b66da1e (patch)
treef587aeb073c08887ec478defaa4aa4e191770ed4
parent5c847c684caa8bd9e30eb78292374babf47fecb3 (diff)
radeonsi: don't assume that TC_ACTION_ENA invalidates L1 cache on gfx9
Just got into a midnight discussion with a hw guy. TC_ACTION_ENA apparently doesn't invalidate L1, so don't clear the INV_VCACHE flag. Fixes: 4056e953fe43bd667 - radeonsi: move emit_cache_flush functions into si_gfx_cs.c Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Reviewed-by: Dave Airlie <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17902> (cherry picked from commit 279315fd73e981f0c8876811327bcee0f0ccf7a3)
-rw-r--r--.pick_status.json2
-rw-r--r--src/gallium/drivers/radeonsi/si_gfx_cs.c4
2 files changed, 3 insertions, 3 deletions
diff --git a/.pick_status.json b/.pick_status.json
index 247c0435b54..945e8476e51 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -1903,7 +1903,7 @@
"description": "radeonsi: don't assume that TC_ACTION_ENA invalidates L1 cache on gfx9",
"nominated": true,
"nomination_type": 1,
- "resolution": 0,
+ "resolution": 1,
"main_sha": null,
"because_sha": "4056e953fe43bd667e1812c1c7075285d24b42c2"
},
diff --git a/src/gallium/drivers/radeonsi/si_gfx_cs.c b/src/gallium/drivers/radeonsi/si_gfx_cs.c
index e8f5cb6302b..a928188b032 100644
--- a/src/gallium/drivers/radeonsi/si_gfx_cs.c
+++ b/src/gallium/drivers/radeonsi/si_gfx_cs.c
@@ -938,7 +938,7 @@ void si_emit_cache_flush(struct si_context *sctx, struct radeon_cmdbuf *cs)
* All operations that invalidate L2 also seem to invalidate
* metadata. Volatile (VOL) and WC flushes are not listed here.
*
- * TC | TC_WB = writeback & invalidate L2 & L1
+ * TC | TC_WB = writeback & invalidate L2
* TC | TC_WB | TC_NC = writeback & invalidate L2 for MTYPE == NC
* TC_WB | TC_NC = writeback L2 for MTYPE == NC
* TC | TC_NC = invalidate L2 for MTYPE == NC
@@ -957,7 +957,7 @@ void si_emit_cache_flush(struct si_context *sctx, struct radeon_cmdbuf *cs)
tc_flags = EVENT_TC_ACTION_ENA | EVENT_TC_WB_ACTION_ENA;
/* Clear the flags. */
- flags &= ~(SI_CONTEXT_INV_L2 | SI_CONTEXT_WB_L2 | SI_CONTEXT_INV_VCACHE);
+ flags &= ~(SI_CONTEXT_INV_L2 | SI_CONTEXT_WB_L2);
sctx->num_L2_invalidates++;
}