diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h index 4e83281ad6a..58060498fbb 100644 --- a/src/compiler/nir/nir.h +++ b/src/compiler/nir/nir.h @@ -5067,6 +5067,7 @@ typedef struct nir_lower_compute_system_values_options { bool has_base_workgroup_id:1; bool shuffle_local_ids_for_quad_derivatives:1; bool lower_local_invocation_index:1; + bool lower_cs_local_id_from_index:1; } nir_lower_compute_system_values_options; bool nir_lower_compute_system_values(nir_shader *shader, diff --git a/src/compiler/nir/nir_lower_system_values.c b/src/compiler/nir/nir_lower_system_values.c index 5a60b42fbc0..a78b5e6c954 100644 --- a/src/compiler/nir/nir_lower_system_values.c +++ b/src/compiler/nir/nir_lower_system_values.c @@ -275,7 +275,8 @@ lower_compute_system_value_instr(nir_builder *b, /* If lower_cs_local_id_from_index is true, then we derive the local * index from the local id. */ - if (b->shader->options->lower_cs_local_id_from_index) { + if (b->shader->options->lower_cs_local_id_from_index || + (options && options->lower_cs_local_id_from_index)) { /* We lower gl_LocalInvocationID from gl_LocalInvocationIndex based * on this formula: *