diff --git a/src/compiler/shader_info.h b/src/compiler/shader_info.h index 1bb2f8b966d..a35bd72b6ea 100644 --- a/src/compiler/shader_info.h +++ b/src/compiler/shader_info.h @@ -91,6 +91,7 @@ struct spirv_supported_capabilities { bool subgroup_basic; bool subgroup_quad; bool subgroup_shuffle; + bool subgroup_uniform_control_flow; bool subgroup_vote; bool tessellation; bool transform_feedback; diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c index 6690053ba97..c4e05878062 100644 --- a/src/compiler/spirv/spirv_to_nir.c +++ b/src/compiler/spirv/spirv_to_nir.c @@ -5033,6 +5033,12 @@ vtn_handle_execution_mode(struct vtn_builder *b, struct vtn_value *entry_point, /* Handled later by vtn_handle_execution_mode_id(). */ break; + case SpvExecutionModeSubgroupUniformControlFlowKHR: + /* There's no corresponding SPIR-V capability, so check here. */ + vtn_fail_if(!b->options->caps.subgroup_uniform_control_flow, + "SpvExecutionModeSubgroupUniformControlFlowKHR not supported."); + break; + default: vtn_fail("Unhandled execution mode: %s (%u)", spirv_executionmode_to_string(mode->exec_mode),