anv,iris: Set 3DSTATE_SF::DerefBlockSize to per-poly on Gen12+
According to the BSpec, this should prevent hangs when using shaders with large URB entries. A more precise fix can be done but it requires re-arranging URB setup. Cc: mesa-stable@lists.freedesktop.org Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3454>
This commit is contained in:
@@ -1706,6 +1706,10 @@ iris_create_rasterizer_state(struct pipe_context *ctx,
|
||||
sf.PointWidthSource = state->point_size_per_vertex ? Vertex : State;
|
||||
sf.PointWidth = state->point_size;
|
||||
|
||||
#if GEN_GEN >= 12
|
||||
sf.DerefBlockSize = PerPolyDerefMode;
|
||||
#endif
|
||||
|
||||
if (state->flatshade_first) {
|
||||
sf.TriangleFanProvokingVertexSelect = 1;
|
||||
} else {
|
||||
|
||||
@@ -671,7 +671,11 @@ blorp_emit_sf_config(struct blorp_batch *batch,
|
||||
|
||||
#if GEN_GEN >= 8
|
||||
|
||||
blorp_emit(batch, GENX(3DSTATE_SF), sf);
|
||||
blorp_emit(batch, GENX(3DSTATE_SF), sf) {
|
||||
#if GEN_GEN >= 12
|
||||
sf.DerefBlockSize = PerPolyDerefMode;
|
||||
#endif
|
||||
}
|
||||
|
||||
blorp_emit(batch, GENX(3DSTATE_RASTER), raster) {
|
||||
raster.CullMode = CULLMODE_NONE;
|
||||
|
||||
@@ -591,6 +591,10 @@ emit_rs_state(struct anv_pipeline *pipeline,
|
||||
sf.LineStippleEnable = line_info && line_info->stippledLineEnable;
|
||||
#endif
|
||||
|
||||
#if GEN_GEN >= 12
|
||||
sf.DerefBlockSize = PerPolyDerefMode;
|
||||
#endif
|
||||
|
||||
const struct brw_vue_prog_data *last_vue_prog_data =
|
||||
anv_pipeline_get_last_vue_prog_data(pipeline);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user