mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 04:20:08 +01:00
blorp: fix hangs with mesh enabled
Move mesh URB allocations together with the other stages.
This fixes a hang that started happening with mesh enabled after
419531c5d9 ("intel/blorp: add a new flag to communicate PSS sync need")
Bspec 45352 says:
L3 Space allocation can only be changed when the GPU pipeline is
completely flushed.
It's likely that the PIPE_CONTROL added in that commit was breaking that
assumption and the URB allocation happening afterwards at the end of the
pipeline emission would then hang. And before that, we were probably
just getting lucky.
Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25047>
This commit is contained in:
parent
079604e41e
commit
bcde58ea86
1 changed files with 8 additions and 3 deletions
|
|
@ -272,6 +272,14 @@ emit_urb_config(struct blorp_batch *batch,
|
|||
urb.VSNumberofURBEntries = entries[i];
|
||||
}
|
||||
}
|
||||
|
||||
if (batch->blorp->config.use_mesh_shading) {
|
||||
#if GFX_VERx10 >= 125
|
||||
blorp_emit(batch, GENX(3DSTATE_URB_ALLOC_MESH), zero);
|
||||
blorp_emit(batch, GENX(3DSTATE_URB_ALLOC_TASK), zero);
|
||||
#endif
|
||||
}
|
||||
|
||||
#else /* GFX_VER < 7 */
|
||||
blorp_emit_urb_config(batch, vs_entry_size, sf_entry_size);
|
||||
#endif
|
||||
|
|
@ -1430,9 +1438,6 @@ blorp_emit_pipeline(struct blorp_batch *batch,
|
|||
|
||||
if (batch->blorp->config.use_mesh_shading) {
|
||||
#if GFX_VERx10 >= 125
|
||||
blorp_emit(batch, GENX(3DSTATE_URB_ALLOC_MESH), zero);
|
||||
blorp_emit(batch, GENX(3DSTATE_URB_ALLOC_TASK), zero);
|
||||
|
||||
blorp_emit(batch, GENX(3DSTATE_MESH_CONTROL), zero);
|
||||
blorp_emit(batch, GENX(3DSTATE_TASK_CONTROL), zero);
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue