mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-21 18:00:13 +01:00
anv, iris: add missing CS_STALL bit for GPGPU texture invalidation
The BSpec page "Flush Types" (46213) says the following about the Tex Invalidate bit: "Requires stall bit ([20] of DW) set for all GPGPU Workloads." For newer platforms, this is documented in the description of the texture invalidation bit in the PIPE_CONTROL page (56551): "CS Stall bit in PIPE_CONTROL command must be always set for GPGPU workloads when Texture Cache Invalidation Enable bit is set" Iris had it only for GFX_VER 9 and 11, while Anv had it missing for everything. Please notice that this patch includes a revert of397e728ef4. Fixes:397e728ef4("iris: Drop GPGPU Tex Invalidate restriction for TGL+") Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Nanley Chery <nanley.g.chery@intel.com> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28608>
This commit is contained in:
parent
955444e068
commit
cf7e1f3817
2 changed files with 16 additions and 4 deletions
|
|
@ -9764,10 +9764,12 @@ iris_emit_raw_pipe_control(struct iris_batch *batch,
|
||||||
/* "GPGPU specific workarounds" (both post-sync and flush) ------------ */
|
/* "GPGPU specific workarounds" (both post-sync and flush) ------------ */
|
||||||
|
|
||||||
if (IS_COMPUTE_PIPELINE(batch)) {
|
if (IS_COMPUTE_PIPELINE(batch)) {
|
||||||
if ((GFX_VER == 9 || GFX_VER == 11) &&
|
if (GFX_VER >= 9 && (flags & PIPE_CONTROL_TEXTURE_CACHE_INVALIDATE)) {
|
||||||
(flags & PIPE_CONTROL_TEXTURE_CACHE_INVALIDATE)) {
|
/* SKL PRMs, Volume 7: 3D-Media-GPGPU, Programming Restrictions for
|
||||||
/* Project: SKL, ICL / Argument: Tex Invalidate
|
* PIPE_CONTROL, Flush Types:
|
||||||
* "Requires stall bit ([20] of DW) set for all GPGPU Workloads."
|
* "Requires stall bit ([20] of DW) set for all GPGPU Workloads."
|
||||||
|
* For newer platforms this is documented in the PIPE_CONTROL
|
||||||
|
* instruction page.
|
||||||
*/
|
*/
|
||||||
flags |= PIPE_CONTROL_CS_STALL;
|
flags |= PIPE_CONTROL_CS_STALL;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2516,6 +2516,16 @@ genX(batch_emit_pipe_control_write)(struct anv_batch *batch,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* SKL PRMs, Volume 7: 3D-Media-GPGPU, Programming Restrictions for
|
||||||
|
* PIPE_CONTROL, Flush Types:
|
||||||
|
* "Requires stall bit ([20] of DW) set for all GPGPU Workloads."
|
||||||
|
* For newer platforms this is documented in the PIPE_CONTROL instruction
|
||||||
|
* page.
|
||||||
|
*/
|
||||||
|
if (current_pipeline == GPGPU &&
|
||||||
|
(bits & ANV_PIPE_TEXTURE_CACHE_INVALIDATE_BIT))
|
||||||
|
bits |= ANV_PIPE_CS_STALL_BIT;
|
||||||
|
|
||||||
#if INTEL_NEEDS_WA_1409600907
|
#if INTEL_NEEDS_WA_1409600907
|
||||||
/* Wa_1409600907: "PIPE_CONTROL with Depth Stall Enable bit must
|
/* Wa_1409600907: "PIPE_CONTROL with Depth Stall Enable bit must
|
||||||
* be set with any PIPE_CONTROL with Depth Flush Enable bit set.
|
* be set with any PIPE_CONTROL with Depth Flush Enable bit set.
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue