diff --git a/src/gallium/drivers/iris/iris_program.c b/src/gallium/drivers/iris/iris_program.c index fe597b51913..acf4a8e3874 100644 --- a/src/gallium/drivers/iris/iris_program.c +++ b/src/gallium/drivers/iris/iris_program.c @@ -1220,29 +1220,6 @@ iris_update_compiled_vs(struct iris_context *ice) IRIS_STAGE_DIRTY_CONSTANTS_VS; shs->sysvals_need_upload = true; - const struct shader_info *info = &ish->nir->info; - const bool uses_draw_params = - BITSET_TEST(info->system_values_read, SYSTEM_VALUE_FIRST_VERTEX) || - BITSET_TEST(info->system_values_read, SYSTEM_VALUE_BASE_INSTANCE); - const bool uses_derived_draw_params = - BITSET_TEST(info->system_values_read, SYSTEM_VALUE_DRAW_ID) || - BITSET_TEST(info->system_values_read, SYSTEM_VALUE_IS_INDEXED_DRAW); - const bool needs_sgvs_element = uses_draw_params || - BITSET_TEST(info->system_values_read, SYSTEM_VALUE_INSTANCE_ID) || - BITSET_TEST(info->system_values_read, - SYSTEM_VALUE_VERTEX_ID_ZERO_BASE); - - if (ice->state.vs_uses_draw_params != uses_draw_params || - ice->state.vs_uses_derived_draw_params != uses_derived_draw_params || - ice->state.vs_needs_edge_flag != ish->needs_edge_flag) { - ice->state.dirty |= IRIS_DIRTY_VERTEX_BUFFERS | - IRIS_DIRTY_VERTEX_ELEMENTS; - } - ice->state.vs_uses_draw_params = uses_draw_params; - ice->state.vs_uses_derived_draw_params = uses_derived_draw_params; - ice->state.vs_needs_sgvs_element = needs_sgvs_element; - ice->state.vs_needs_edge_flag = ish->needs_edge_flag; - const struct brw_vue_prog_data *vue_prog_data = (void *) shader->prog_data; check_urb_size(ice, vue_prog_data->urb_entry_size, MESA_SHADER_VERTEX); @@ -2525,6 +2502,29 @@ iris_bind_vs_state(struct pipe_context *ctx, void *state) IRIS_DIRTY_RASTER | IRIS_DIRTY_CC_VIEWPORT; } + + const bool uses_draw_params = + BITSET_TEST(info->system_values_read, SYSTEM_VALUE_FIRST_VERTEX) || + BITSET_TEST(info->system_values_read, SYSTEM_VALUE_BASE_INSTANCE); + const bool uses_derived_draw_params = + BITSET_TEST(info->system_values_read, SYSTEM_VALUE_DRAW_ID) || + BITSET_TEST(info->system_values_read, SYSTEM_VALUE_IS_INDEXED_DRAW); + const bool needs_sgvs_element = uses_draw_params || + BITSET_TEST(info->system_values_read, SYSTEM_VALUE_INSTANCE_ID) || + BITSET_TEST(info->system_values_read, + SYSTEM_VALUE_VERTEX_ID_ZERO_BASE); + + if (ice->state.vs_uses_draw_params != uses_draw_params || + ice->state.vs_uses_derived_draw_params != uses_derived_draw_params || + ice->state.vs_needs_edge_flag != ish->needs_edge_flag) { + ice->state.dirty |= IRIS_DIRTY_VERTEX_BUFFERS | + IRIS_DIRTY_VERTEX_ELEMENTS; + } + + ice->state.vs_uses_draw_params = uses_draw_params; + ice->state.vs_uses_derived_draw_params = uses_derived_draw_params; + ice->state.vs_needs_sgvs_element = needs_sgvs_element; + ice->state.vs_needs_edge_flag = ish->needs_edge_flag; } bind_shader_state((void *) ctx, state, MESA_SHADER_VERTEX);