mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-02 22:30:11 +01:00
crocus/gen7: add missing IVB/GT2 geom shader workaround.
Noticed this in passing.
Fixes: f3630548f1 ("crocus: initial gallium driver for Intel gfx 4-7")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12847>
This commit is contained in:
parent
be35fdae5f
commit
4149a60209
2 changed files with 19 additions and 0 deletions
|
|
@ -626,6 +626,8 @@ struct crocus_context {
|
|||
|
||||
struct crocus_shader_state shaders[MESA_SHADER_STAGES];
|
||||
|
||||
/* track if geom shader is active for IVB GT2 workaround */
|
||||
bool gs_enabled;
|
||||
/** Do vertex shader uses shader draw parameters ? */
|
||||
bool vs_uses_draw_params;
|
||||
bool vs_uses_derived_draw_params;
|
||||
|
|
|
|||
|
|
@ -6809,6 +6809,22 @@ crocus_upload_dirty_render_state(struct crocus_context *ice,
|
|||
|
||||
emit_push_constant_packets(ice, batch, MESA_SHADER_GEOMETRY, &push_bos);
|
||||
#endif
|
||||
#if GFX_VERx10 == 70
|
||||
/**
|
||||
* From Graphics BSpec: 3D-Media-GPGPU Engine > 3D Pipeline Stages >
|
||||
* Geometry > Geometry Shader > State:
|
||||
*
|
||||
* "Note: Because of corruption in IVB:GT2, software needs to flush the
|
||||
* whole fixed function pipeline when the GS enable changes value in
|
||||
* the 3DSTATE_GS."
|
||||
*
|
||||
* The hardware architects have clarified that in this context "flush the
|
||||
* whole fixed function pipeline" means to emit a PIPE_CONTROL with the "CS
|
||||
* Stall" bit set.
|
||||
*/
|
||||
if (batch->screen->devinfo.gt == 2 && ice->state.gs_enabled != active)
|
||||
gen7_emit_cs_stall_flush(batch);
|
||||
#endif
|
||||
#if GFX_VER >= 6
|
||||
crocus_emit_cmd(batch, GENX(3DSTATE_GS), gs)
|
||||
#else
|
||||
|
|
@ -6954,6 +6970,7 @@ crocus_upload_dirty_render_state(struct crocus_context *ice,
|
|||
gs.MaximumVPIndex = ice->state.num_viewports - 1;
|
||||
#endif
|
||||
}
|
||||
ice->state.gs_enabled = active;
|
||||
}
|
||||
|
||||
#if GFX_VER >= 7
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue