summaryrefslogtreecommitdiff
path: root/source/slang/slang-capabilities.capdef
diff options
context:
space:
mode:
authorArielG-NV <159081215+ArielG-NV@users.noreply.github.com>2024-04-19 23:18:40 -0400
committerGitHub <noreply@github.com>2024-04-19 20:18:40 -0700
commitf9bcad35562c1f08638e6d3eb397d370d7d2f8f8 (patch)
tree4e2a993689209bd5b597263922af03cb87d07c3d /source/slang/slang-capabilities.capdef
parent2da28c50d9c3699692eccde4b86d0b8d2323e55c (diff)
Initial pass to add capability declarations to stdlib intrinsics. (#3912)
Diffstat (limited to 'source/slang/slang-capabilities.capdef')
-rw-r--r--source/slang/slang-capabilities.capdef428
1 files changed, 355 insertions, 73 deletions
diff --git a/source/slang/slang-capabilities.capdef b/source/slang/slang-capabilities.capdef
index eb546ae6b..4e31948a2 100644
--- a/source/slang/slang-capabilities.capdef
+++ b/source/slang/slang-capabilities.capdef
@@ -66,7 +66,25 @@ alias any_target = hlsl | glsl | c | cpp | cuda | spirv;
alias any_textual_target = hlsl | glsl | c | cpp | cuda;
alias any_gfx_target = hlsl | glsl | spirv;
alias any_cpp_target = cpp | cuda;
+
+alias cpp_cuda = cpp | cuda;
+alias cpp_cuda_glsl_spirv = cpp | cuda | glsl | spirv;
+alias cpp_cuda_glsl_hlsl = cpp | cuda | glsl | hlsl;
+alias cpp_cuda_glsl_hlsl_spirv = cpp | cuda | glsl | hlsl | spirv_1_0;
+alias cpp_cuda_glsl_hlsl_metal_spirv = cpp | cuda | glsl | hlsl | metal | spirv_1_0;
+alias cpp_cuda_hlsl = cpp | cuda | hlsl;
+alias cpp_glsl = cpp | glsl;
+alias cpp_glsl_hlsl_spirv = cpp | glsl | hlsl | spirv_1_0;
+alias cpp_hlsl = cpp | hlsl;
+alias cuda_glsl_hlsl = cuda | glsl | hlsl;
+alias cuda_glsl_hlsl_spirv = cuda | glsl | hlsl | spirv_1_0;
+alias cuda_glsl_spirv = cuda | glsl | spirv;
+alias cuda_hlsl = cuda | hlsl;
+alias cuda_hlsl_spirv = cuda | hlsl | spirv;
+alias glsl_hlsl_spirv = glsl | hlsl | spirv;
alias glsl_spirv = glsl | spirv;
+alias hlsl_spirv = hlsl | spirv;
+
// Capabilities that stand for target spirv version for GLSL backend.
// These are not compilation targets.
def glsl_spirv_1_0 : glsl;
@@ -80,13 +98,11 @@ def glsl_spirv_1_6 : glsl_spirv_1_5;
abstract stage;
def vertex : stage;
def fragment : stage;
-alias pixel = fragment;
def compute : stage;
def hull : stage;
def domain : stage;
def geometry : stage;
def raygen : stage;
-alias raygeneration = raygen;
def intersection : stage;
def anyhit : stage;
def closesthit: stage;
@@ -95,6 +111,40 @@ def mesh : stage;
def amplification : stage;
def callable : stage;
+// shader stage alias's
+alias pixel = fragment;
+alias raygeneration = raygen;
+alias tesscontrol = hull;
+alias tesseval = domain;
+alias raytracing_stages = raygen | intersection | anyhit | closesthit | miss | callable;
+alias raytracing_stages_intersection = intersection;
+alias raytracing_stages_raygen = raygen;
+alias raytracing_stages_anyhit_closesthit = anyhit | closesthit;
+alias raytracing_stages_raygen_closesthit_miss = raygen | closesthit | miss;
+alias raytracing_stages_anyhit_closesthit_intersection = anyhit | closesthit | intersection;
+alias raytracing_stages_anyhit_closesthit_intersection_miss = anyhit | closesthit | intersection | miss;
+alias raytracing_stages_raygen_closesthit_miss_callable = raygen | closesthit | miss | callable;
+alias shader_stages_compute_tesscontrol_tesseval = compute | tesscontrol | tesseval;
+alias shader_stages_compute_fragment = compute | fragment;
+alias shader_stages_compute_fragment_geometry_vertex = compute | fragment | geometry | vertex;
+alias shader_stages_domain_hull = domain | hull;
+alias raytracing_stages_fragment = raytracing_stages | fragment;
+alias raytracing_stages_compute = raytracing_stages | compute;
+alias raytracing_stages_compute_fragment = raytracing_stages | shader_stages_compute_fragment;
+alias raytracing_stages_compute_fragment_geometry_vertex = raytracing_stages | shader_stages_compute_fragment_geometry_vertex;
+
+def _GLSL_130 : glsl;
+def _GLSL_140 : _GLSL_130;
+def _GLSL_150 : _GLSL_140;
+def _GLSL_330 : _GLSL_150;
+def _GLSL_400 : _GLSL_330;
+def _GLSL_410 : _GLSL_400;
+def _GLSL_420 : _GLSL_410;
+def _GLSL_430 : _GLSL_420;
+def _GLSL_440 : _GLSL_430;
+def _GLSL_450 : _GLSL_440;
+def _GLSL_460 : _GLSL_450;
+
def _sm_4_0 : hlsl;
def _sm_4_1 : _sm_4_0;
def _sm_5_0 : _sm_4_1;
@@ -110,12 +160,21 @@ def _sm_6_7 : _sm_6_6;
def hlsl_nvapi : hlsl;
-// stage alias
-alias tess_control = hull;
-alias tess_eval = domain;
+def _cuda_sm_1_0 : cuda;
+def _cuda_sm_2_0 : _cuda_sm_1_0;
+def _cuda_sm_3_0 : _cuda_sm_2_0;
+def _cuda_sm_3_5 : _cuda_sm_3_0;
+def _cuda_sm_4_0 : _cuda_sm_3_5;
+def _cuda_sm_5_0 : _cuda_sm_4_0;
+def _cuda_sm_6_0 : _cuda_sm_5_0;
+def _cuda_sm_7_0 : _cuda_sm_6_0;
+def _cuda_sm_8_0 : _cuda_sm_7_0;
+def _cuda_sm_9_0 : _cuda_sm_8_0;
// SPIRV extensions.
+def SOURCE_EXT_GL_NV_compute_shader_derivatives : spirv_1_0;
+
def SPV_EXT_fragment_shader_interlock : spirv_1_0;
def SPV_KHR_fragment_shader_barycentric : spirv_1_0;
def SPV_EXT_fragment_fully_covered : spirv_1_0;
@@ -183,7 +242,13 @@ def spvShaderNonUniform : spirv_1_5;
def _GL_ARB_derivative_control : glsl;
def _GL_ARB_fragment_shader_interlock : glsl;
def _GL_ARB_gpu_shader5 : glsl;
+def _GL_ARB_shader_image_size : glsl;
+def _GL_ARB_shader_texture_image_samples : glsl;
def _GL_ARB_sparse_texture_clamp : glsl;
+def _GL_EXT_texture_query_lod : glsl;
+def _GL_ARB_texture_query_levels : glsl;
+def _GL_ARB_texture_cube_map : glsl;
+def _GL_ARB_texture_gather : glsl;
def _GL_EXT_buffer_reference : glsl;
def _GL_EXT_buffer_reference_uvec2 : glsl;
def _GL_EXT_debug_printf : glsl;
@@ -199,6 +264,7 @@ def _GL_EXT_shader_atomic_float2 : glsl;
def _GL_EXT_shader_atomic_int64 : glsl;
def _GL_EXT_shader_atomic_float_min_max : glsl;
def _GL_EXT_shader_explicit_arithmetic_types_int64 : glsl;
+def _GL_EXT_shader_image_load_store : glsl;
def _GL_EXT_shader_realtime_clock : glsl;
def _GL_EXT_texture_shadow_lod : glsl;
def _GL_KHR_memory_scope_semantics : glsl;
@@ -207,19 +273,28 @@ def _GL_KHR_shader_subgroup_basic : glsl;
def _GL_KHR_shader_subgroup_ballot : glsl;
def _GL_KHR_shader_subgroup_quad : glsl;
def _GL_KHR_shader_subgroup_shuffle : glsl;
+def _GL_KHR_shader_subgroup_shuffle_relative : glsl;
+def _GL_KHR_shader_subgroup_shuffle_clustered : glsl;
def _GL_KHR_shader_subgroup_vote : glsl;
+def _GL_NV_compute_shader_derivatives : glsl;
def _GL_NV_shader_subgroup_partitioned : glsl;
def _GL_NV_ray_tracing_motion_blur : glsl_spirv_1_4;
+def _GL_NV_shader_atomic_fp16_vector : glsl;
def _GL_NV_shader_invocation_reorder : glsl_spirv_1_4;
def _GL_NV_shader_texture_footprint : glsl;
+def _GL_NV_gpu_shader5 : _GL_ARB_gpu_shader5;
alias _GL_NV_fragment_shader_barycentric = _GL_EXT_fragment_shader_barycentric;
alias _GL_NV_ray_tracing = _GL_EXT_ray_tracing;
// GLSL extension and SPV extension associations.
alias GL_ARB_derivative_control = _GL_ARB_derivative_control | spvDerivativeControl;
alias GL_ARB_fragment_shader_interlock = _GL_ARB_fragment_shader_interlock | spvFragmentShaderPixelInterlockEXT;
-alias GL_ARB_gpu_shader5 = _GL_ARB_fragment_shader_interlock | spirv_1_0;
+alias GL_ARB_gpu_shader5 = _GL_ARB_gpu_shader5 | spirv_1_0;
alias GL_ARB_sparse_texture_clamp = _GL_ARB_fragment_shader_interlock | spirv_1_0;
+alias GL_EXT_texture_query_lod = _GL_EXT_texture_query_lod | spvImageQuery;
+alias GL_ARB_texture_query_levels = _GL_ARB_texture_query_levels |spvImageQuery;
+alias GL_ARB_texture_cube_map = _GL_ARB_texture_cube_map | spirv_1_0;
+alias GL_ARB_texture_gather = _GL_ARB_texture_gather | spirv_1_0;
alias GL_EXT_buffer_reference = _GL_ARB_fragment_shader_interlock | spirv_1_5;
alias GL_EXT_buffer_reference_uvec2 = _GL_EXT_buffer_reference_uvec2 | spirv_1_0;
alias GL_EXT_debug_printf = _GL_EXT_debug_printf | SPV_KHR_non_semantic_info;
@@ -235,18 +310,25 @@ alias GL_EXT_shader_atomic_float2 = _GL_EXT_shader_atomic_float2 | spvAtomicFloa
alias GL_EXT_shader_atomic_int64 = _GL_EXT_shader_atomic_int64 | spvInt64Atomics;
alias GL_EXT_shader_atomic_float_min_max = _GL_EXT_shader_atomic_float_min_max | spvAtomicFloat32MinMaxEXT + spvAtomicFloat16MinMaxEXT;
alias GL_EXT_shader_explicit_arithmetic_types_int64 = _GL_EXT_shader_explicit_arithmetic_types_int64 | spirv_1_0;
+alias GL_EXT_shader_image_load_store = _GL_EXT_shader_image_load_store | spirv_1_0;
alias GL_EXT_shader_realtime_clock = _GL_EXT_shader_realtime_clock | spvShaderClockKHR;
alias GL_EXT_texture_shadow_lod = _GL_EXT_texture_shadow_lod | spirv_1_0;
alias GL_KHR_memory_scope_semantics = _GL_KHR_memory_scope_semantics | spirv_1_0;
alias GL_KHR_shader_subgroup_arithmetic = _GL_KHR_shader_subgroup_arithmetic | spvGroupNonUniformArithmetic;
alias GL_KHR_shader_subgroup_basic = _GL_KHR_shader_subgroup_basic | spvGroupNonUniformBallot;
alias GL_KHR_shader_subgroup_ballot = _GL_KHR_shader_subgroup_ballot | spvGroupNonUniformBallot;
-alias GL_KHR_shader_subgroup_quad = _GL_KHR_shader_subgroup_quad | spvGroupNonUniformQuad;
+alias GL_KHR_shader_subgroup_clustered = _GL_KHR_shader_subgroup_shuffle_clustered | spvGroupNonUniformShuffle;
alias GL_KHR_shader_subgroup_shuffle = _GL_KHR_shader_subgroup_shuffle | spvGroupNonUniformShuffle;
+alias GL_KHR_shader_subgroup_shuffle_relative = _GL_KHR_shader_subgroup_shuffle_relative | spvGroupNonUniformShuffle;
alias GL_KHR_shader_subgroup_vote = _GL_KHR_shader_subgroup_vote | spvGroupNonUniformVote;
+alias GL_KHR_shader_subgroup_quad = _GL_KHR_shader_subgroup_quad | spvGroupNonUniformQuad;
+alias GL_NV_compute_shader_derivatives = _GL_NV_compute_shader_derivatives | SOURCE_EXT_GL_NV_compute_shader_derivatives;
+alias GL_ARB_shader_image_size = _GL_ARB_shader_image_size | spvImageQuery;
+alias GL_ARB_shader_texture_image_samples = _GL_ARB_shader_texture_image_samples | spvImageQuery;
+alias GL_NV_shader_atomic_fp16_vector = _GL_NV_shader_atomic_fp16_vector + _GL_NV_gpu_shader5 | spirv_1_0;
alias GL_NV_shader_subgroup_partitioned = _GL_NV_shader_subgroup_partitioned | spvGroupNonUniformPartitionedNV;
alias GL_NV_ray_tracing_motion_blur = _GL_NV_ray_tracing_motion_blur | spvRayTracingMotionBlurNV;
-alias GL_NV_shader_invocation_reorder = _GL_NV_shader_invocation_reorder | spvShaderInvocationReorderNV;
+alias GL_NV_shader_invocation_reorder = _GL_NV_shader_invocation_reorder + _GL_EXT_buffer_reference_uvec2 | spvShaderInvocationReorderNV;
alias GL_NV_shader_texture_footprint = _GL_NV_shader_texture_footprint | spvImageFootprintNV;
alias GL_NV_fragment_shader_barycentric = GL_EXT_fragment_shader_barycentric;
@@ -254,24 +336,16 @@ alias GL_NV_ray_tracing = GL_EXT_ray_tracing;
// Define feature names
-alias tess_control_gfx = tess_control + any_gfx_target;
-alias tess_eval_gfx = tess_control + any_gfx_target;
-alias fragment_gfx = fragment + any_gfx_target;
-alias compute_gfx = compute + any_gfx_target;
-alias compute_tess_gfx = compute_gfx + tess_control_gfx + tess_eval_gfx;
-
alias nvapi = hlsl_nvapi;
alias raytracing = GL_EXT_ray_tracing | _sm_6_5 | cuda;
-alias raytracing_pos = GL_EXT_ray_tracing + GL_EXT_ray_tracing_position_fetch | _sm_6_5 | cuda;
-alias rayquery_pos = GL_EXT_ray_query + GL_EXT_ray_tracing_position_fetch | _sm_6_5 | cuda;
-alias rayquery = GL_EXT_ray_query | _sm_6_5 | cuda;
-alias ser = GL_EXT_buffer_reference_uvec2 + GL_NV_shader_invocation_reorder + GL_EXT_ray_tracing | _sm_6_6 + hlsl_nvapi;
-alias ser_motion = GL_EXT_buffer_reference_uvec2 + GL_NV_shader_invocation_reorder + GL_EXT_ray_tracing + GL_NV_ray_tracing_motion_blur | _sm_6_6 + hlsl_nvapi;
-alias shaderclock = spvShaderClockKHR | hlsl_nvapi | _GL_EXT_shader_realtime_clock | cpp | cuda;
-alias meshshading = spvMeshShadingEXT | _sm_6_5 | _GL_EXT_mesh_shader;
-alias raytracing_motionblur = GL_EXT_ray_tracing + GL_NV_ray_tracing_motion_blur | hlsl_nvapi + _sm_6_5;
-alias motionblur = GL_NV_ray_tracing_motion_blur | hlsl_nvapi;
-alias texturefootprint = GL_NV_shader_texture_footprint | hlsl_nvapi;
+alias ser = raytracing + GL_NV_shader_invocation_reorder | raytracing + hlsl_nvapi | cuda;
+alias motionblur = GL_NV_ray_tracing_motion_blur | _sm_6_5 + hlsl_nvapi | cuda;
+alias rayquery = GL_EXT_ray_query | _sm_6_5;
+alias raytracing_motionblur = raytracing + motionblur | cuda;
+alias ser_motion = ser + motionblur;
+alias shaderclock = GL_EXT_shader_realtime_clock | hlsl_nvapi | cpp | cuda;
+alias meshshading_internal = spvMeshShadingEXT + _sm_6_5 + _GL_EXT_mesh_shader;
+alias meshshading = amplification + meshshading_internal | mesh + meshshading_internal;
alias fragmentshaderinterlock = _GL_ARB_fragment_shader_interlock | hlsl_nvapi | spvFragmentShaderPixelInterlockEXT;
alias atomic64 = GL_EXT_shader_atomic_int64 | _sm_6_6 | cpp | cuda;
alias atomicfloat = GL_EXT_shader_atomic_float | _sm_6_0 + hlsl_nvapi | cpp | cuda;
@@ -280,76 +354,108 @@ alias groupnonuniform = GL_KHR_shader_subgroup_ballot + GL_KHR_shader_subgroup_s
+ GL_KHR_shader_subgroup_arithmetic + GL_KHR_shader_subgroup_quad + GL_KHR_shader_subgroup_vote
| _sm_6_0 | cuda;
alias fragmentshaderbarycentric = GL_EXT_fragment_shader_barycentric | _sm_6_1;
-alias fragmentprocessing = fragment_gfx + glsl_spirv | fragment + _sm_5_0;
-alias fragmentprocessing_derivativecontrol = fragmentprocessing + GL_ARB_derivative_control;
alias shadermemorycontrol = glsl | spirv_1_0 | _sm_5_0;
-alias shadermemorycontrol_compute = compute_gfx + shadermemorycontrol;
-alias subpass = fragment_gfx;
-alias shaderinvocationgroup = GL_KHR_shader_subgroup_vote + glsl | spirv_1_3 | _sm_6_0;
+alias shadermemorycontrol_compute = raytracing_stages_compute + shadermemorycontrol;
+alias subpass = fragment + any_gfx_target;
+alias subgroup_basic = GL_KHR_shader_subgroup_basic | GL_KHR_shader_subgroup_basic + spirv_1_0 | _sm_6_0 | _cuda_sm_7_0;
+alias subgroup_basic_ballot = GL_KHR_shader_subgroup_basic + GL_KHR_shader_subgroup_ballot | _sm_6_0 | _cuda_sm_7_0;
+alias subgroup_vote = GL_KHR_shader_subgroup_vote | _sm_6_0 | _cuda_sm_7_0;
+alias subgroup_arithmetic = GL_KHR_shader_subgroup_arithmetic | _sm_6_0 | _cuda_sm_7_0;
+alias subgroup_ballot = GL_KHR_shader_subgroup_ballot | _sm_6_0 | _cuda_sm_7_0;
+alias subgroup_shuffle = GL_KHR_shader_subgroup_shuffle | _sm_6_0 | _cuda_sm_7_0;
+alias subgroup_shufflerelative = GL_KHR_shader_subgroup_shuffle_relative | _sm_6_0 | _cuda_sm_7_0;
+alias subgroup_clustered = GL_KHR_shader_subgroup_clustered | _sm_6_0 | _cuda_sm_7_0;
+alias subgroup_quad = GL_KHR_shader_subgroup_quad | _sm_6_0 | _cuda_sm_7_0;
+alias subgroup_partitioned = GL_NV_shader_subgroup_partitioned | _sm_6_5;
+alias shaderinvocationgroup = subgroup_vote;
+alias waveprefix = _sm_6_5 | _cuda_sm_7_0 | GL_KHR_shader_subgroup_arithmetic;
+alias bufferreference = GL_EXT_buffer_reference;
+alias bufferreference_int64 = bufferreference + GL_EXT_shader_explicit_arithmetic_types_int64;
+
// Define what each HLSL shader model means on different targets.
alias sm_4_0 = _sm_4_0
- | glsl_spirv_1_0
+ | glsl_spirv_1_0 + _GL_ARB_sparse_texture_clamp + _GL_EXT_samplerless_texture_functions
| spirv_1_0 + spvImageQuery + spvImageGatherExtended + spvMinLod + SPV_GOOGLE_user_type
- | cuda
- | cpp;
+ | _cuda_sm_2_0
+ | metal
+ | cpp
+ ;
alias sm_4_1 = _sm_4_1
| glsl_spirv_1_0 + sm_4_0
| spirv_1_0 + sm_4_0
- | cuda
- | cpp;
+ | _cuda_sm_6_0
+ | metal
+ | cpp
+ ;
alias sm_5_0 = _sm_5_0
| glsl_spirv_1_0 + sm_4_1 + _GL_KHR_memory_scope_semantics
| spirv_1_0 + sm_4_1 + spvDerivativeControl + spvFragmentFullyCoveredEXT
- | cuda
- | cpp;
+ | _cuda_sm_9_0
+ | metal
+ | cpp
+ ;
alias sm_5_1 = _sm_5_1
- | glsl_spirv_1_0 + sm_5_0 + _GL_ARB_gpu_shader5 + _GL_ARB_sparse_texture_clamp + _GL_EXT_nonuniform_qualifier
+ | glsl_spirv_1_0 + sm_5_0 + _GL_ARB_gpu_shader5 + _GL_EXT_nonuniform_qualifier
| spirv_1_0 + sm_5_0 + spvShaderNonUniform
- | cuda
- | cpp;
+ | _cuda_sm_9_0
+ | metal
+ | cpp
+ ;
alias sm_6_0 = _sm_6_0
| glsl_spirv_1_3 + sm_5_1
+ groupnonuniform + atomicfloat
| spirv_1_3 + sm_5_1
+ groupnonuniform + atomicfloat
- | cuda
- | cpp;
+ | _cuda_sm_9_0
+ | metal
+ | cpp
+ ;
alias sm_6_1 = _sm_6_1
| glsl_spirv_1_3 + sm_6_0 + fragmentshaderbarycentric
| spirv_1_3 + sm_6_0 + fragmentshaderbarycentric
- | cuda
- | cpp;
+ | _cuda_sm_9_0
+ | metal
+ | cpp
+ ;
alias sm_6_2 = _sm_6_2
| glsl_spirv_1_3 + sm_6_1
| spirv_1_3 + sm_6_1
- | cuda
- | cpp;
+ | _cuda_sm_9_0
+ | metal
+ | cpp
+ ;
alias sm_6_3 = _sm_6_3
| glsl_spirv_1_4 + sm_6_2 + _GL_EXT_ray_tracing
| spirv_1_4 + sm_6_2 + SPV_KHR_ray_tracing
- | cuda
- | cpp;
+ | _cuda_sm_9_0
+ | metal
+ | cpp
+ ;
alias sm_6_4 = _sm_6_4
| glsl_spirv_1_4 + sm_6_3
| spirv_1_4 + sm_6_3
- | cuda
- | cpp;
+ | _cuda_sm_9_0
+ | metal
+ | cpp
+ ;
alias sm_6_5 = _sm_6_5
| glsl_spirv_1_4 + sm_6_4 + raytracing + meshshading
| spirv_1_4 + sm_6_4 + raytracing + meshshading
- | cuda
- | cpp;
+ | _cuda_sm_9_0
+ | metal
+ | cpp
+ ;
alias sm_6_6 = _sm_6_6
| glsl_spirv_1_5 + sm_6_5
@@ -357,34 +463,101 @@ alias sm_6_6 = _sm_6_6
| spirv_1_5 + sm_6_5
+ GL_EXT_shader_atomic_int64 + atomicfloat2
+ SPV_EXT_descriptor_indexing
- | cuda
- | cpp;
+ | _cuda_sm_9_0
+ | metal
+ | cpp
+ ;
alias sm_6_7 = _sm_6_7
| glsl_spirv_1_5 + sm_6_6
| spirv_1_5 + sm_6_6
- | cuda
- | cpp;
-
-alias all = _sm_6_7 + hlsl_nvapi
- | glsl_spirv_1_5 + sm_6_7
- + ser + shaderclock + texturefootprint + fragmentshaderinterlock + _GL_NV_shader_subgroup_partitioned
- + _GL_NV_ray_tracing_motion_blur + _GL_NV_shader_texture_footprint
- | spirv_1_5 + sm_6_7
- + ser + shaderclock + texturefootprint + fragmentshaderinterlock + spvGroupNonUniformPartitionedNV
- + spvRayTracingMotionBlurNV + spvRayTracingMotionBlurNV;
-
+ | _cuda_sm_9_0
+ | metal
+ | cpp
+ ;
// Profiles
-alias GLSL_150 = glsl + sm_5_1 | spirv_1_0;
-alias GLSL_330 = GLSL_150 | spirv_1_0 + sm_5_1;
-alias GLSL_400 = GLSL_150 | spirv_1_0 + sm_5_1;
-alias GLSL_410 = glsl + sm_5_1 | spirv_1_5 + sm_5_1;
-alias GLSL_420 = glsl + sm_5_1 | spirv_1_5 + sm_5_1;
-alias GLSL_430 = glsl + sm_5_1 | spirv_1_5 + sm_5_1;
-alias GLSL_440 = glsl + sm_6_0 | spirv_1_5 + sm_6_0;
-alias GLSL_450 = glsl + sm_6_3 | spirv_1_5 + sm_6_3;
-alias GLSL_460 = glsl_spirv_1_5 + all | spirv_1_5 + all;
+alias GLSL_130 = _GLSL_130
+ | _sm_4_0
+ | _cuda_sm_2_0
+ | spirv_1_0
+ | metal
+ | cpp
+ ;
+alias GLSL_140 = _GLSL_140
+ | _sm_4_1
+ | _cuda_sm_2_0
+ | spirv_1_0
+ | metal
+ | cpp
+ ;
+alias GLSL_150 = _GLSL_150
+ | _sm_4_1
+ | _cuda_sm_2_0
+ | spirv_1_0
+ | metal
+ | cpp
+ ;
+alias GLSL_330 = _GLSL_330
+ | _sm_5_0
+ | _cuda_sm_6_0
+ | spirv_1_0
+ | metal
+ | cpp
+ ;
+alias GLSL_400 = _GLSL_400
+ | _sm_5_1
+ | _cuda_sm_6_0
+ | spirv_1_3
+ | metal
+ | cpp
+ ;
+alias GLSL_410 = _GLSL_410
+ | _sm_5_1
+ | _cuda_sm_6_0
+ | spirv_1_3
+ | metal
+ | cpp
+ ;
+alias GLSL_420 = _GLSL_420
+ | _sm_5_1
+ | _cuda_sm_6_0
+ | spirv_1_3
+ | metal
+ | cpp
+ ;
+alias GLSL_430 = _GLSL_430
+ | _sm_5_1
+ | _cuda_sm_6_0
+ | spirv_1_3
+ | metal
+ | cpp
+ ;
+alias GLSL_440 = _GLSL_440
+ | _sm_6_0
+ | _cuda_sm_6_0
+ | spirv_1_5
+ | metal
+ | cpp
+ ;
+alias GLSL_450 = _GLSL_450
+ | _sm_6_0
+ | _cuda_sm_6_0
+ | spirv_1_5
+ | metal
+ | cpp
+ ;
+alias GLSL_460 = _GLSL_460
+ | _sm_6_6
+ | _cuda_sm_6_0
+ | spirv_1_5
+ | metal
+ | cpp
+ ;
+
+alias GLSL_410_SPIRV_1_0 = _GLSL_410 + GLSL_400 | GLSL_400;
+alias GLSL_420_SPIRV_1_0 = _GLSL_420 + GLSL_410_SPIRV_1_0 | GLSL_410_SPIRV_1_0;
+alias GLSL_430_SPIRV_1_0 = _GLSL_430 + GLSL_420_SPIRV_1_0 | GLSL_420_SPIRV_1_0;
alias DX_4_0 = sm_4_0;
alias DX_4_1 = sm_4_1;
@@ -398,3 +571,112 @@ alias DX_6_4 = sm_6_4;
alias DX_6_5 = sm_6_5;
alias DX_6_6 = sm_6_6;
alias DX_6_7 = sm_6_7;
+
+alias sm_2_0_GLSL_140 = sm_4_0 | glsl | spirv_1_0 | cuda | cpp;
+alias sm_2_0_GLSL_400 = sm_4_0 | glsl | spirv_1_0 | cuda | cpp;
+alias appendstructuredbuffer = sm_5_0 + raytracing_stages_compute_fragment;
+alias atomic_hlsl = _sm_4_0;
+alias atomic_hlsl_nvapi = _sm_4_0 + hlsl_nvapi;
+alias atomic_hlsl_sm_6_6 = _sm_6_6;
+alias byteaddressbuffer = sm_4_0;
+alias byteaddressbuffer_rw = sm_4_0 + raytracing_stages_compute_fragment;
+alias consumestructuredbuffer = sm_5_0 + raytracing_stages_compute_fragment;
+alias fragmentprocessing = raytracing_stages_compute_fragment + _sm_5_0
+ | fragment + glsl_spirv
+ | raytracing_stages_compute + GL_NV_compute_shader_derivatives
+ | raytracing_stages_compute_fragment + GLSL_460
+ ;
+alias fragmentprocessing_derivativecontrol = raytracing_stages_compute_fragment + _sm_5_0
+ | fragment + GL_ARB_derivative_control
+ | compute + GL_NV_compute_shader_derivatives
+ | raytracing_stages_compute_fragment + GLSL_460
+ ;
+alias getattributeatvertex = fragment + _sm_6_1 | fragment + GL_EXT_fragment_shader_barycentric;
+alias memorybarrier_compute = raytracing_stages_compute + sm_5_0;
+alias structuredbuffer = sm_4_0;
+alias structuredbuffer_rw = sm_4_0 + raytracing_stages_compute_fragment;
+alias texture_sm_4_1 = sm_4_1 + _GLSL_150;
+alias texture_sm_4_1_samplerless = texture_sm_4_1 + GL_EXT_samplerless_texture_functions;
+alias texture_sm_4_1_compute_fragment = cpp + texture_sm_4_1
+ | cuda + texture_sm_4_1
+ | glsl + texture_sm_4_1
+ | hlsl + texture_sm_4_1 + raytracing_stages_compute_fragment
+ | spirv_1_0 + texture_sm_4_1
+ ;
+// supposedly works on compute but docs say nothing, so for now keep as compute_fragment
+alias texture_sm_4_1_fragment = cpp + texture_sm_4_1
+ | cuda + texture_sm_4_1
+ | glsl + texture_sm_4_1
+ | hlsl + texture_sm_4_1 + raytracing_stages_compute_fragment
+ | spirv_1_0 + texture_sm_4_1
+ ;
+alias texture_sm_4_1_clamp_fragment = texture_sm_4_1_fragment + GL_ARB_sparse_texture_clamp;
+alias texture_sm_4_1_vertex_fragment_geometry = cpp + texture_sm_4_1
+ | cuda + texture_sm_4_1
+ | glsl + texture_sm_4_1
+ | hlsl + texture_sm_4_1 + raytracing_stages_compute_fragment_geometry_vertex
+ | spirv_1_0 + texture_sm_4_1
+ ;
+alias texture_gather = texture_sm_4_1_vertex_fragment_geometry + GL_ARB_texture_gather;
+alias image_samples = texture_sm_4_1_compute_fragment + GL_ARB_shader_texture_image_samples;
+alias image_size = texture_sm_4_1_compute_fragment + GL_ARB_shader_image_size;
+alias texture_size = texture_sm_4_1 + GL_ARB_shader_image_size;
+alias texture_querylod = texture_sm_4_1 + GL_EXT_texture_query_lod;
+alias texture_querylevels = texture_sm_4_1 + GL_ARB_texture_query_levels;
+alias texture_shadowlod = texture_sm_4_1 + GL_EXT_texture_shadow_lod + _GLSL_400
+ | texture_sm_4_1 + GL_EXT_texture_shadow_lod;
+alias texture_shadowlod_cube = texture_shadowlod + GL_ARB_texture_cube_map;
+
+alias atomic_glsl_float1 = GL_EXT_shader_atomic_float;
+alias atomic_glsl_float2 = GL_EXT_shader_atomic_float2;
+alias atomic_glsl_halfvec = GL_NV_shader_atomic_fp16_vector;
+alias atomic_glsl = GLSL_430_SPIRV_1_0;
+alias atomic_glsl_int64 = atomic_glsl + GL_EXT_shader_atomic_int64;
+alias GLSL_430_SPIRV_1_0_compute = GLSL_430_SPIRV_1_0 + compute;
+alias image_loadstore = GL_EXT_shader_image_load_store + GLSL_420;
+alias nonuniformqualifier = sm_5_1;
+alias printf = GL_EXT_debug_printf | _sm_4_0 | _cuda_sm_2_0 | cpp;
+alias texturefootprint = GL_NV_shader_texture_footprint + GLSL_450 | hlsl_nvapi + _sm_4_0;
+alias texturefootprintclamp = texturefootprint + GL_ARB_sparse_texture_clamp;
+alias texture_cube = GL_ARB_texture_cube_map;
+alias shader5_sm_4_0 = GL_ARB_gpu_shader5 | sm_4_0;
+alias shader5_sm_5_0 = GL_ARB_gpu_shader5 | sm_5_0;
+
+alias atomic_glsl_hlsl_cuda = atomic_glsl | _sm_5_0 | _cuda_sm_2_0;
+alias atomic_glsl_hlsl_cuda_float1 = atomic_glsl_float1 | atomic_hlsl_nvapi | _cuda_sm_2_0;
+alias atomic_glsl_hlsl_cuda_float2 = atomic_glsl_float2 | atomic_hlsl_nvapi | _cuda_sm_2_0;
+alias atomic_glsl_hlsl_cuda2_int64 = atomic_glsl_int64 | atomic_hlsl_nvapi | _cuda_sm_2_0;
+alias atomic_glsl_hlsl_cuda5_int64 = atomic_glsl_int64 | atomic_hlsl_nvapi | _cuda_sm_6_0;
+alias atomic_glsl_hlsl_cuda6_int64 = atomic_glsl_int64 | atomic_hlsl_nvapi | _cuda_sm_6_0;
+alias atomic_glsl_hlsl_cuda9_int64 = atomic_glsl_int64 | atomic_hlsl_nvapi | _cuda_sm_9_0;
+
+alias breakpoint = GL_EXT_debug_printf | hlsl | _cuda_sm_8_0 | cpp;
+
+alias rayobject = raytracing | rayquery;
+alias raytracing_allstages = raytracing_stages + raytracing;
+alias raytracing_anyhit = anyhit + raytracing;
+alias raytracing_intersection = raytracing_stages_intersection + raytracing;
+alias raytracing_anyhit_closesthit = raytracing_stages_anyhit_closesthit + raytracing;
+alias raytracing_anyhit_closesthit_intersection = raytracing_stages_anyhit_closesthit_intersection + raytracing;
+alias raytracing_raygen_closesthit_miss = raytracing_stages_raygen_closesthit_miss + raytracing;
+alias raytracing_anyhit_closesthit_intersection_miss = raytracing_stages_anyhit_closesthit_intersection_miss + raytracing;
+alias raytracing_raygen_closesthit_miss_callable = raytracing_stages_raygen_closesthit_miss_callable + raytracing;
+alias raytracing_position = raytracing + GL_EXT_ray_tracing_position_fetch + anyhit + closesthit;
+alias raytracing_motionblur_anyhit_closesthit_intersection_miss = raytracing_stages_anyhit_closesthit_intersection_miss + raytracing_motionblur;
+alias raytracing_motionblur_raygen_closesthit_miss = raytracing_stages_raygen_closesthit_miss + raytracing_motionblur;
+alias rayquery_position = rayquery + GL_EXT_ray_tracing_position_fetch;
+alias ser_raygen = raytracing_stages_raygen + ser;
+alias ser_raygen_closesthit_miss = raytracing_stages_raygen_closesthit_miss + ser;
+alias ser_any_closesthit_intersection_miss = raytracing_stages_anyhit_closesthit_intersection_miss + ser;
+alias ser_anyhit_closesthit_intersection = raytracing_stages_anyhit_closesthit_intersection + ser;
+alias ser_anyhit_closesthit = raytracing_stages_anyhit_closesthit + ser;
+alias ser_motion_raygen_closesthit_miss = raytracing_stages_raygen_closesthit_miss + ser_motion;
+alias ser_motion_raygen = raytracing_stages_raygen + ser_motion;
+
+alias all = _sm_6_7 + hlsl_nvapi
+ | glsl_spirv_1_5 + sm_6_7
+ + ser + shaderclock + texturefootprint + fragmentshaderinterlock + _GL_NV_shader_subgroup_partitioned
+ + _GL_NV_ray_tracing_motion_blur + _GL_NV_shader_texture_footprint
+ | spirv_1_5 + sm_6_7
+ + ser + shaderclock + texturefootprint + fragmentshaderinterlock + spvGroupNonUniformPartitionedNV
+ + spvRayTracingMotionBlurNV + spvRayTracingMotionBlurNV; \ No newline at end of file