mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 15:58:05 +02:00
radeonsi/gfx10: fix L2 cache rinse programming
Cc: 19.2 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
(cherry picked from commit 3c0938bece)
This commit is contained in:
parent
a413b55157
commit
8f95245068
1 changed files with 17 additions and 5 deletions
|
|
@ -1130,16 +1130,28 @@ void gfx10_emit_cache_flush(struct si_context *ctx)
|
|||
}
|
||||
if (flags & SI_CONTEXT_INV_VCACHE)
|
||||
gcr_cntl |= S_586_GL1_INV(1) | S_586_GLV_INV(1);
|
||||
|
||||
/* The L2 cache ops are:
|
||||
* - INV: - invalidate lines that reflect memory (were loaded from memory)
|
||||
* - don't touch lines that were overwritten (were stored by gfx clients)
|
||||
* - WB: - don't touch lines that reflect memory
|
||||
* - write back lines that were overwritten
|
||||
* - WB | INV: - invalidate lines that reflect memory
|
||||
* - write back lines that were overwritten
|
||||
*
|
||||
* GLM doesn't support WB alone. If WB is set, INV must be set too.
|
||||
*/
|
||||
if (flags & SI_CONTEXT_INV_L2) {
|
||||
/* Writeback and invalidate everything in L2. */
|
||||
gcr_cntl |= S_586_GL2_INV(1) | S_586_GLM_INV(1);
|
||||
gcr_cntl |= S_586_GL2_INV(1) | S_586_GL2_WB(1) |
|
||||
S_586_GLM_INV(1) | S_586_GLM_WB(1);
|
||||
ctx->num_L2_invalidates++;
|
||||
} else if (flags & SI_CONTEXT_WB_L2) {
|
||||
/* Writeback but do not invalidate. */
|
||||
gcr_cntl |= S_586_GL2_WB(1);
|
||||
gcr_cntl |= S_586_GL2_WB(1) |
|
||||
S_586_GLM_WB(1) | S_586_GLM_INV(1);
|
||||
} else if (flags & SI_CONTEXT_INV_L2_METADATA) {
|
||||
gcr_cntl |= S_586_GLM_INV(1) | S_586_GLM_WB(1);
|
||||
}
|
||||
if (flags & SI_CONTEXT_INV_L2_METADATA)
|
||||
gcr_cntl |= S_586_GLM_INV(1);
|
||||
|
||||
if (flags & (SI_CONTEXT_FLUSH_AND_INV_CB | SI_CONTEXT_FLUSH_AND_INV_DB)) {
|
||||
if (flags & SI_CONTEXT_FLUSH_AND_INV_CB) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue