diff --git a/.pick_status.json b/.pick_status.json index 582e9f783cc..8c5059cbf9d 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -238,7 +238,7 @@ "description": "anv,iris: Set 3DSTATE_SF::DerefBlockSize to per-poly on Gen12+", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": null }, diff --git a/src/gallium/drivers/iris/iris_state.c b/src/gallium/drivers/iris/iris_state.c index 00baa4ba312..6f277f08961 100644 --- a/src/gallium/drivers/iris/iris_state.c +++ b/src/gallium/drivers/iris/iris_state.c @@ -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 { diff --git a/src/intel/blorp/blorp_genX_exec.h b/src/intel/blorp/blorp_genX_exec.h index 9db829c30f2..84b7cac7e67 100644 --- a/src/intel/blorp/blorp_genX_exec.h +++ b/src/intel/blorp/blorp_genX_exec.h @@ -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; diff --git a/src/intel/vulkan/genX_pipeline.c b/src/intel/vulkan/genX_pipeline.c index 0426acaf2b2..0a91e1d009c 100644 --- a/src/intel/vulkan/genX_pipeline.c +++ b/src/intel/vulkan/genX_pipeline.c @@ -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);