mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-26 15:00:10 +01:00
iris: Move VS draw parameter dirty flagging to iris_bind_vs_state
Now that we're looking at shader info system values rather than vs_prog_data, there's no reason we have to do this when updating the shader variants. We can simply check it when binding a new shader from the API point of view. Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8759>
This commit is contained in:
parent
fdbb5d4dd9
commit
97fbe2d45f
1 changed files with 23 additions and 23 deletions
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue