mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-31 00:30:33 +01:00
iris: set dependency between SF_CL and CC states
Applied the fix from commit 3a54e9f6 to the Iris Gallium driver Fixes:bc42bbff4c("iris: Wa_14016820455 for GFX_VERx10 == 12.5") Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35082> (cherry picked from commitb0eb715b50)
This commit is contained in:
parent
4754594e87
commit
a85b4a7a64
4 changed files with 13 additions and 17 deletions
|
|
@ -5104,7 +5104,7 @@
|
|||
"description": "iris: set dependency between SF_CL and CC states",
|
||||
"nominated": true,
|
||||
"nomination_type": 2,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": "bc42bbff4ce8bbfe45b0ae593cfeb218bc068200",
|
||||
"notes": null
|
||||
|
|
|
|||
|
|
@ -382,14 +382,8 @@ iris_blorp_exec_render(struct blorp_batch *blorp_batch,
|
|||
IRIS_DIRTY_LINE_STIPPLE |
|
||||
IRIS_ALL_DIRTY_FOR_COMPUTE |
|
||||
IRIS_DIRTY_SCISSOR_RECT |
|
||||
IRIS_DIRTY_VF);
|
||||
/* Wa_14016820455
|
||||
* On Gfx 12.5 platforms, the SF_CL_VIEWPORT pointer can be invalidated
|
||||
* likely by a read cache invalidation when clipping is disabled, so we
|
||||
* don't skip its dirty bit here, in order to reprogram it.
|
||||
*/
|
||||
if (GFX_VERx10 != 125)
|
||||
skip_bits |= IRIS_DIRTY_SF_CL_VIEWPORT;
|
||||
IRIS_DIRTY_VF |
|
||||
IRIS_DIRTY_SF_CL_VIEWPORT);
|
||||
|
||||
uint64_t skip_stage_bits = (IRIS_ALL_STAGE_DIRTY_FOR_COMPUTE |
|
||||
IRIS_STAGE_DIRTY_UNCOMPILED_VS |
|
||||
|
|
|
|||
|
|
@ -499,14 +499,8 @@ emit_indirect_generate_draw(struct iris_batch *batch,
|
|||
IRIS_DIRTY_LINE_STIPPLE |
|
||||
IRIS_ALL_DIRTY_FOR_COMPUTE |
|
||||
IRIS_DIRTY_SCISSOR_RECT |
|
||||
IRIS_DIRTY_VF);
|
||||
/* Wa_14016820455
|
||||
* On Gfx 12.5 platforms, the SF_CL_VIEWPORT pointer can be invalidated
|
||||
* likely by a read cache invalidation when clipping is disabled, so we
|
||||
* don't skip its dirty bit here, in order to reprogram it.
|
||||
*/
|
||||
if (GFX_VERx10 != 125)
|
||||
skip_bits |= IRIS_DIRTY_SF_CL_VIEWPORT;
|
||||
IRIS_DIRTY_VF |
|
||||
IRIS_DIRTY_SF_CL_VIEWPORT);
|
||||
|
||||
uint64_t skip_stage_bits = (IRIS_ALL_STAGE_DIRTY_FOR_COMPUTE |
|
||||
IRIS_STAGE_DIRTY_UNCOMPILED_VS |
|
||||
|
|
|
|||
|
|
@ -6885,6 +6885,14 @@ iris_upload_dirty_render_state(struct iris_context *ice,
|
|||
ice->shaders.prog[MESA_SHADER_TESS_EVAL])
|
||||
ice->state.stage_dirty |= IRIS_STAGE_DIRTY_TES;
|
||||
|
||||
/* Reprogram SF_CLIP & CC_STATE together. This reproduces the windows driver programming.
|
||||
* Since blorp disables 3DSTATE_CLIP::ClipEnable and dirties CC_STATE, this takes care of
|
||||
* Wa_14016820455 which requires SF_CLIP to be reprogrammed whenever
|
||||
* 3DSTATE_CLIP::ClipEnable is enabled.
|
||||
*/
|
||||
if (ice->state.dirty & (IRIS_DIRTY_CC_VIEWPORT | IRIS_DIRTY_SF_CL_VIEWPORT))
|
||||
ice->state.dirty |= IRIS_DIRTY_CC_VIEWPORT | IRIS_DIRTY_SF_CL_VIEWPORT;
|
||||
|
||||
uint64_t dirty = ice->state.dirty;
|
||||
uint64_t stage_dirty = ice->state.stage_dirty;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue