mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 20:28:04 +02:00
anv: add depth, DC and L3 fabric flush for aux map invalidation
These should be included according to table in Bspec 43904.
Patch removes PIPE_CONTROL_STATE_CACHE_INVALIDATE based on HSDES.
Cc: mesa-stable
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Nanley Chery <nanley.g.chery@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29764>
(cherry picked from commit 78b614b333)
This commit is contained in:
parent
21781fb360
commit
8d3fc29b38
2 changed files with 22 additions and 22 deletions
|
|
@ -4,7 +4,7 @@
|
|||
"description": "anv: add depth, DC and L3 fabric flush for aux map invalidation",
|
||||
"nominated": true,
|
||||
"nomination_type": 0,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": null,
|
||||
"notes": null
|
||||
|
|
|
|||
|
|
@ -1666,37 +1666,37 @@ genX(emit_apply_pipe_flushes)(struct anv_batch *batch,
|
|||
if (bits & ANV_PIPE_FLUSH_BITS)
|
||||
bits |= ANV_PIPE_NEEDS_END_OF_PIPE_SYNC_BIT;
|
||||
|
||||
|
||||
/* HSD 1209978178: docs say that before programming the aux table:
|
||||
/* From Bspec 43904 (Register_CCSAuxiliaryTableInvalidate):
|
||||
* RCS engine idle sequence:
|
||||
*
|
||||
* "Driver must ensure that the engine is IDLE but ensure it doesn't
|
||||
* add extra flushes in the case it knows that the engine is already
|
||||
* IDLE."
|
||||
* Gfx12+:
|
||||
* PIPE_CONTROL:- DC Flush + L3 Fabric Flush + CS Stall + Render
|
||||
* Target Cache Flush + Depth Cache
|
||||
*
|
||||
* HSD 22012751911: SW Programming sequence when issuing aux invalidation:
|
||||
* Gfx125+:
|
||||
* PIPE_CONTROL:- DC Flush + L3 Fabric Flush + CS Stall + Render
|
||||
* Target Cache Flush + Depth Cache + CCS flush
|
||||
*
|
||||
* "Render target Cache Flush + L3 Fabric Flush + State Invalidation + CS Stall"
|
||||
* Compute engine idle sequence:
|
||||
*
|
||||
* Notice we don't set the L3 Fabric Flush here, because we have
|
||||
* ANV_PIPE_END_OF_PIPE_SYNC_BIT which inserts a CS stall. The
|
||||
* PIPE_CONTROL::L3 Fabric Flush documentation says :
|
||||
* Gfx12+:
|
||||
* PIPE_CONTROL:- DC Flush + L3 Fabric Flush + CS Stall
|
||||
*
|
||||
* "L3 Fabric Flush will ensure all the pending transactions in the L3
|
||||
* Fabric are flushed to global observation point. HW does implicit L3
|
||||
* Fabric Flush on all stalling flushes (both explicit and implicit)
|
||||
* and on PIPECONTROL having Post Sync Operation enabled."
|
||||
*
|
||||
* Therefore setting L3 Fabric Flush here would be redundant.
|
||||
* Gfx125+:
|
||||
* PIPE_CONTROL:- DC Flush + L3 Fabric Flush + CS Stall + CCS flush
|
||||
*/
|
||||
if (GFX_VER == 12 && (bits & ANV_PIPE_AUX_TABLE_INVALIDATE_BIT)) {
|
||||
if (current_pipeline == GPGPU) {
|
||||
bits |= (ANV_PIPE_NEEDS_END_OF_PIPE_SYNC_BIT |
|
||||
ANV_PIPE_DATA_CACHE_FLUSH_BIT |
|
||||
(GFX_VERx10 == 125 ? ANV_PIPE_CCS_CACHE_FLUSH_BIT: 0));
|
||||
bits |= (ANV_PIPE_DATA_CACHE_FLUSH_BIT |
|
||||
ANV_PIPE_L3_FABRIC_FLUSH_BIT |
|
||||
ANV_PIPE_CS_STALL_BIT |
|
||||
(GFX_VERx10 == 125 ? ANV_PIPE_CCS_CACHE_FLUSH_BIT: 0));
|
||||
} else if (current_pipeline == _3D) {
|
||||
bits |= (ANV_PIPE_NEEDS_END_OF_PIPE_SYNC_BIT |
|
||||
bits |= (ANV_PIPE_DATA_CACHE_FLUSH_BIT |
|
||||
ANV_PIPE_L3_FABRIC_FLUSH_BIT |
|
||||
ANV_PIPE_CS_STALL_BIT |
|
||||
ANV_PIPE_RENDER_TARGET_CACHE_FLUSH_BIT |
|
||||
ANV_PIPE_STATE_CACHE_INVALIDATE_BIT |
|
||||
ANV_PIPE_DEPTH_CACHE_FLUSH_BIT |
|
||||
(GFX_VERx10 == 125 ? ANV_PIPE_CCS_CACHE_FLUSH_BIT: 0));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue