spirv: Support SPV_KHR_subgroup_uniform_control_flow

There's no SPIR-V Capability associated, so check in the Execution
Mode.  For now, don't keep track of whether a shader uses uniform
control flow in the shader_info, we can add that when/if a driver
actually need that information.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11476>
This commit is contained in:
Caio Marcelo de Oliveira Filho
2021-06-23 15:57:31 -07:00
committed by Marge Bot
parent a219073e9b
commit 6ad88a8f08
2 changed files with 7 additions and 0 deletions

View File

@@ -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;

View File

@@ -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),