summaryrefslogtreecommitdiff
path: root/source/slang/slang-capabilities.capdef
diff options
context:
space:
mode:
authorDarren Wihandi <65404740+fairywreath@users.noreply.github.com>2025-01-18 02:07:16 -0500
committerGitHub <noreply@github.com>2025-01-17 23:07:16 -0800
commita85c350df03c6cdf9b433f58fc0e66affda03e9e (patch)
tree3e80ea7121b3b5bb5c17aee88599212b78abec38 /source/slang/slang-capabilities.capdef
parent87a08160289c194ddfb337d521893f576ceb9f97 (diff)
Implement Quad Control intrinsics (#5981)
Diffstat (limited to 'source/slang/slang-capabilities.capdef')
-rw-r--r--source/slang/slang-capabilities.capdef33
1 files changed, 33 insertions, 0 deletions
diff --git a/source/slang/slang-capabilities.capdef b/source/slang/slang-capabilities.capdef
index c8a66448d..4f6357779 100644
--- a/source/slang/slang-capabilities.capdef
+++ b/source/slang/slang-capabilities.capdef
@@ -466,6 +466,14 @@ def SPV_EXT_mesh_shader : _spirv_1_4;
/// [EXT]
def SPV_EXT_demote_to_helper_invocation : _spirv_1_4;
+/// Represents the SPIR-V extension for maximal reconvergence.
+/// [EXT]
+def SPV_KHR_maximal_reconvergence : _spirv_1_0;
+
+/// Represents the SPIR-V extension for quad group control.
+/// [EXT]
+def SPV_KHR_quad_control : _spirv_1_3;
+
/// Represents the SPIR-V extension for fragment shader barycentric.
/// [EXT]
def SPV_KHR_fragment_shader_barycentric : _spirv_1_0;
@@ -654,6 +662,14 @@ def spvDemoteToHelperInvocationEXT : SPV_EXT_demote_to_helper_invocation;
/// [EXT]
def spvDemoteToHelperInvocation : spvDemoteToHelperInvocationEXT;
+/// Represents the SPIR-V capability for maximal reconvergence.
+/// [EXT]
+def spvMaximalReconvergenceKHR : SPV_KHR_maximal_reconvergence;
+
+/// Represents the SPIR-V capability for quad group control.
+/// [EXT]
+def spvQuadControlKHR : SPV_KHR_quad_control;
+
// The following capabilities all pertain to how ray tracing shaders are translated
// to GLSL, where there are two different extensions that can provide the core
// functionality of `TraceRay` and the related operations.
@@ -691,6 +707,8 @@ def _GL_EXT_shader_image_load_store : _GLSL_130;
def _GL_EXT_shader_realtime_clock : glsl;
def _GL_EXT_texture_query_lod : glsl;
def _GL_EXT_texture_shadow_lod : _GLSL_130;
+def _GL_EXT_maximal_reconvergence : _GLSL_140;
+def _GL_EXT_shader_quad_control : _GLSL_140;
def _GL_ARB_derivative_control : _GLSL_400;
def _GL_ARB_fragment_shader_interlock : _GLSL_450;
@@ -746,6 +764,14 @@ alias GL_EXT_debug_printf = _GL_EXT_debug_printf | SPV_KHR_non_semantic_info;
/// [EXT]
alias GL_EXT_demote_to_helper_invocation = _GL_EXT_demote_to_helper_invocation | spvDemoteToHelperInvocationEXT;
+/// Represents the GL_EXT_maximal_reconvergence extension.
+/// [EXT]
+alias GL_EXT_maximal_reconvergence = _GL_EXT_maximal_reconvergence | spvMaximalReconvergenceKHR;
+
+/// Represents the GL_EXT_shader_quad_control extension.
+/// [EXT]
+alias GL_EXT_shader_quad_control = _GL_EXT_shader_quad_control | spvQuadControlKHR;
+
/// Represents the GL_EXT_fragment_shader_barycentric extension.
/// [EXT]
alias GL_EXT_fragment_shader_barycentric = _GL_EXT_fragment_shader_barycentric | spvFragmentBarycentricKHR;
@@ -1925,6 +1951,13 @@ alias helper_lane = _sm_6_0 + fragment
| metal + fragment
;
+/// Capabilities required to enable quad group control
+/// [Compound]
+alias quad_control = _sm_6_7
+ | GL_EXT_shader_quad_control + GL_EXT_maximal_reconvergence + GL_KHR_shader_subgroup_vote
+ | metal
+ ;
+
/// Capabilities required to enable shader breakpoints
/// [Compound]
alias breakpoint = GL_EXT_debug_printf | hlsl | _cuda_sm_8_0 | cpp;