--- layout: user-guide --- Capability Atoms ============================ ### Sections: 1. [Targets](#Targets) 2. [Stages](#Stages) 3. [Versions](#Versions) 4. [Extensions](#Extensions) 5. [Compound Capabilities](#Compound-Capabilities) 6. [Other](#Other) Targets ---------------------- *Capabilities to specify code generation targets (`glsl`, `spirv`...)* `textualTarget` > Represents a non-assembly code generation target. `hlsl` > Represents the HLSL code generation target. `glsl` > Represents the GLSL code generation target. `c` > Represents the C programming language code generation target. `cpp` > Represents the C++ programming language code generation target. `cuda` > Represents the CUDA code generation target. `metal` > Represents the Metal programming language code generation target. `spirv` > Represents the SPIR-V code generation target. `wgsl` > Represents the WebGPU shading language code generation target. Stages ---------------------- *Capabilities to specify code generation stages (`vertex`, `fragment`...)* `vertex` > Vertex shader stage `fragment` > Fragment shader stage `compute` > Compute shader stage `hull` > Hull shader stage `domain` > Domain shader stage `geometry` > Geometry shader stage `pixel` > Pixel shader stage `tesscontrol` > Tessellation Control shader stage `tesseval` > Tessellation Evaluation shader stage `raygen` > Ray-Generation shader stage & ray-tracing capabilities `raygeneration` > Ray-Generation shader stage & ray-tracing capabilities `intersection` > Intersection shader stage & ray-tracing capabilities `anyhit` > Any-Hit shader stage & ray-tracing capabilities `closesthit` > Closest-Hit shader stage & ray-tracing capabilities `callable` > Callable shader stage & ray-tracing capabilities `miss` > Ray-Miss shader stage & ray-tracing capabilities `mesh` > Mesh shader stage & mesh shader capabilities `amplification` > Amplification shader stage & mesh shader capabilities Versions ---------------------- *Capabilities to specify versions of a code generation target (`sm_5_0`, `GLSL_400`...)* `glsl_spirv_1_0` > Represents SPIR-V 1.0 through glslang. `glsl_spirv_1_1` > Represents SPIR-V 1.1 through glslang. `glsl_spirv_1_2` > Represents SPIR-V 1.2 through glslang. `glsl_spirv_1_3` > Represents SPIR-V 1.3 through glslang. `glsl_spirv_1_4` > Represents SPIR-V 1.4 through glslang. `glsl_spirv_1_5` > Represents SPIR-V 1.5 through glslang. `glsl_spirv_1_6` > Represents SPIR-V 1.6 through glslang. `metallib_2_3` > Represents MetalLib 2.3. `metallib_2_4` > Represents MetalLib 2.4. `metallib_3_0` > Represents MetalLib 3.0. `metallib_3_1` > Represents MetalLib 3.1. `metallib_latest` > Represents the latest MetalLib version. `hlsl_nvapi` > Represents HLSL NVAPI support. `dxil_lib` > Represents capabilities required for DXIL Library compilation. `spirv_1_0` > Represents SPIR-V 1.0 version. `spirv_1_1` > Represents SPIR-V 1.1 version, which includes SPIR-V 1.0. `spirv_1_2` > Represents SPIR-V 1.2 version, which includes SPIR-V 1.1. `spirv_1_3` > Represents SPIR-V 1.3 version, which includes SPIR-V 1.2. `spirv_1_4` > Represents SPIR-V 1.4 version, which includes SPIR-V 1.3. `spirv_1_5` > Represents SPIR-V 1.5 version, which includes SPIR-V 1.4 and additional extensions. `spirv_1_6` > Represents SPIR-V 1.6 version, which includes SPIR-V 1.5 and additional extensions. `spirv_latest` > Represents the latest SPIR-V version. `sm_4_0_version` > HLSL shader model 4.0 and related capabilities of other targets. > Does not include related GLSL/SPIRV extensions. `sm_4_0` > HLSL shader model 4.0 and related capabilities of other targets. > Includes related GLSL/SPIRV extensions. `sm_4_1_version` > HLSL shader model 4.1 and related capabilities of other targets. > Does not include related GLSL/SPIRV extensions. `sm_4_1` > HLSL shader model 4.1 and related capabilities of other targets. > Includes related GLSL/SPIRV extensions. `sm_5_0_version` > HLSL shader model 5.0 and related capabilities of other targets. > Does not include related GLSL/SPIRV extensions. `sm_5_0` > HLSL shader model 5.0 and related capabilities of other targets. > Includes related GLSL/SPIRV extensions. `sm_5_1_version` > HLSL shader model 5.1 and related capabilities of other targets. > Does not include related GLSL/SPIRV extensions. `sm_5_1` > HLSL shader model 5.1 and related capabilities of other targets. > Includes related GLSL/SPIRV extensions. `sm_6_0_version` > HLSL shader model 6.0 and related capabilities of other targets. > Does not include related GLSL/SPIRV extensions. `sm_6_0` > HLSL shader model 6.0 and related capabilities of other targets. > Includes related GLSL/SPIRV extensions. `sm_6_1_version` > HLSL shader model 6.1 and related capabilities of other targets. > Does not include related GLSL/SPIRV extensions. `sm_6_1` > HLSL shader model 6.1 and related capabilities of other targets. > Includes related GLSL/SPIRV extensions. `sm_6_2_version` > HLSL shader model 6.2 and related capabilities of other targets. > Does not include related GLSL/SPIRV extensions. `sm_6_2` > HLSL shader model 6.2 and related capabilities of other targets. > Includes related GLSL/SPIRV extensions. `sm_6_3_version` > HLSL shader model 6.3 and related capabilities of other targets. > Does not include related GLSL/SPIRV extensions. `sm_6_3` > HLSL shader model 6.3 and related capabilities of other targets. > Includes related GLSL/SPIRV extensions. `sm_6_4_version` > HLSL shader model 6.4 and related capabilities of other targets. > Does not include related GLSL/SPIRV extensions. `sm_6_4` > HLSL shader model 6.4 and related capabilities of other targets. > Includes related GLSL/SPIRV extensions. `sm_6_5_version` > HLSL shader model 6.5 and related capabilities of other targets. > Does not include related GLSL/SPIRV extensions. `sm_6_5` > HLSL shader model 6.5 and related capabilities of other targets. > Includes related GLSL/SPIRV extensions. `sm_6_6_version` > HLSL shader model 6.6 and related capabilities of other targets. > Does not include related GLSL/SPIRV extensions. `sm_6_6` > HLSL shader model 6.6 and related capabilities of other targets. > Includes related GLSL/SPIRV extensions. `sm_6_7_version` > HLSL shader model 6.7 and related capabilities of other targets. > Does not include related GLSL/SPIRV extensions. `sm_6_7` > HLSL shader model 6.7 and related capabilities of other targets. > Includes related GLSL/SPIRV extensions. `sm_6_8_version` > HLSL shader model 6.8 and related capabilities of other targets. > Does not include related GLSL/SPIRV extensions. `sm_6_8` > HLSL shader model 6.8 and related capabilities of other targets. > Includes related GLSL/SPIRV extensions. `GLSL_130` > GLSL 130 and related capabilities of other targets. `GLSL_140` > GLSL 140 and related capabilities of other targets. `GLSL_150` > GLSL 150 and related capabilities of other targets. `GLSL_330` > GLSL 330 and related capabilities of other targets. `GLSL_400` > GLSL 400 and related capabilities of other targets. `GLSL_410` > GLSL 410 and related capabilities of other targets. `GLSL_420` > GLSL 420 and related capabilities of other targets. `GLSL_430` > GLSL 430 and related capabilities of other targets. `GLSL_440` > GLSL 440 and related capabilities of other targets. `GLSL_450` > GLSL 450 and related capabilities of other targets. `GLSL_460` > GLSL 460 and related capabilities of other targets. `cuda_sm_1_0` > cuda 1.0 and related capabilities of other targets. `cuda_sm_2_0` > cuda 2.0 and related capabilities of other targets. `cuda_sm_3_0` > cuda 3.0 and related capabilities of other targets. `cuda_sm_3_5` > cuda 3.5 and related capabilities of other targets. `cuda_sm_4_0` > cuda 4.0 and related capabilities of other targets. `cuda_sm_5_0` > cuda 5.0 and related capabilities of other targets. `cuda_sm_6_0` > cuda 6.0 and related capabilities of other targets. `cuda_sm_7_0` > cuda 7.0 and related capabilities of other targets. `cuda_sm_8_0` > cuda 8.0 and related capabilities of other targets. `cuda_sm_9_0` > cuda 9.0 and related capabilities of other targets. Extensions ---------------------- *Capabilities to specify extensions (`GL_EXT`, `SPV_EXT`...)* `SPV_EXT_fragment_shader_interlock` > Represents the SPIR-V extension for fragment shader interlock operations. `SPV_EXT_physical_storage_buffer` > Represents the SPIR-V extension for physical storage buffer. `SPV_EXT_fragment_fully_covered` > Represents the SPIR-V extension for SPV_EXT_fragment_fully_covered. `SPV_EXT_descriptor_indexing` > Represents the SPIR-V extension for descriptor indexing. `SPV_EXT_shader_atomic_float_add` > Represents the SPIR-V extension for atomic float add operations. `SPV_EXT_shader_atomic_float16_add` > Represents the SPIR-V extension for atomic float16 add operations. `SPV_EXT_shader_atomic_float_min_max` > Represents the SPIR-V extension for atomic float min/max operations. `SPV_EXT_mesh_shader` > Represents the SPIR-V extension for mesh shaders. `SPV_EXT_demote_to_helper_invocation` > Represents the SPIR-V extension for demoting to helper invocation. `SPV_KHR_maximal_reconvergence` > Represents the SPIR-V extension for maximal reconvergence. `SPV_KHR_quad_control` > Represents the SPIR-V extension for quad group control. `SPV_KHR_fragment_shader_barycentric` > Represents the SPIR-V extension for fragment shader barycentric. `SPV_KHR_non_semantic_info` > Represents the SPIR-V extension for non-semantic information. `SPV_KHR_ray_tracing` > Represents the SPIR-V extension for ray tracing. `SPV_KHR_ray_query` > Represents the SPIR-V extension for ray queries. `SPV_KHR_ray_tracing_position_fetch` > Represents the SPIR-V extension for ray tracing position fetch. > Should be used with either SPV_KHR_ray_query or SPV_KHR_ray_tracing. `SPV_KHR_shader_clock` > Represents the SPIR-V extension for shader clock. `SPV_NV_shader_subgroup_partitioned` > Represents the SPIR-V extension for shader subgroup partitioned. `SPV_NV_ray_tracing_motion_blur` > Represents the SPIR-V extension for ray tracing motion blur. `SPV_NV_shader_invocation_reorder` > Represents the SPIR-V extension for shader invocation reorder. > Requires SPV_KHR_ray_tracing. `SPV_NV_shader_image_footprint` > Represents the SPIR-V extension for shader image footprint. `SPV_NV_compute_shader_derivatives` > Represents the SPIR-V extension for compute shader derivatives. `SPV_GOOGLE_user_type` > Represents the SPIR-V extension for SPV_GOOGLE_user_type. `SPV_EXT_replicated_composites` > Represents the SPIR-V extension for SPV_EXT_replicated_composites. `SPV_NV_cooperative_vector` > Represents the SPIR-V extension for SPV_NV_cooperative_vector. `spvAtomicFloat32AddEXT` > Represents the SPIR-V capability for atomic float 32 add operations. `spvAtomicFloat16AddEXT` > Represents the SPIR-V capability for atomic float 16 add operations. `spvAtomicFloat64AddEXT` > Represents the SPIR-V capability for atomic float 64 add operations. `spvInt64Atomics` > Represents the SPIR-V capability for 64-bit integer atomics. `spvAtomicFloat32MinMaxEXT` > Represents the SPIR-V capability for atomic float 32 min/max operations. `spvAtomicFloat16MinMaxEXT` > Represents the SPIR-V capability for atomic float 16 min/max operations. `spvAtomicFloat64MinMaxEXT` > Represents the SPIR-V capability for atomic float 64 min/max operations. `spvDerivativeControl` > Represents the SPIR-V capability for 'derivative control' operations. `spvImageQuery` > Represents the SPIR-V capability for image query operations. `spvImageGatherExtended` > Represents the SPIR-V capability for extended image gather operations. `spvSparseResidency` > Represents the SPIR-V capability for sparse residency. `spvImageFootprintNV` > Represents the SPIR-V capability for image footprint. `spvMinLod` > Represents the SPIR-V capability for using minimum LOD operations. `spvFragmentShaderPixelInterlockEXT` > Represents the SPIR-V capability for using SPV_EXT_fragment_shader_interlock. `spvFragmentBarycentricKHR` > Represents the SPIR-V capability for using SPV_KHR_fragment_shader_barycentric. `spvFragmentFullyCoveredEXT` > Represents the SPIR-V capability for using SPV_EXT_fragment_fully_covered functionality. `spvGroupNonUniformBallot` > Represents the SPIR-V capability for group non-uniform ballot operations. `spvGroupNonUniformShuffle` > Represents the SPIR-V capability for group non-uniform shuffle operations. `spvGroupNonUniformArithmetic` > Represents the SPIR-V capability for group non-uniform arithmetic operations. `spvGroupNonUniformQuad` > Represents the SPIR-V capability for group non-uniform quad operations. `spvGroupNonUniformVote` > Represents the SPIR-V capability for group non-uniform vote operations. `spvGroupNonUniformPartitionedNV` > Represents the SPIR-V capability for group non-uniform partitioned operations. `spvRayTracingMotionBlurNV` > Represents the SPIR-V capability for ray tracing motion blur. `spvMeshShadingEXT` > Represents the SPIR-V capability for mesh shading. `spvRayTracingKHR` > Represents the SPIR-V capability for ray tracing. `spvRayTracingPositionFetchKHR` > Represents the SPIR-V capability for ray tracing position fetch. `spvRayQueryKHR` > Represents the SPIR-V capability for ray query. `spvRayQueryPositionFetchKHR` > Represents the SPIR-V capability for ray query position fetch. `spvShaderInvocationReorderNV` > Represents the SPIR-V capability for shader invocation reorder. `spvShaderClockKHR` > Represents the SPIR-V capability for shader clock. `spvShaderNonUniformEXT` > Represents the SPIR-V capability for non-uniform resource indexing. `spvShaderNonUniform` > Represents the SPIR-V capability for non-uniform resource indexing. `spvDemoteToHelperInvocationEXT` > Represents the SPIR-V capability for demoting to helper invocation. `spvDemoteToHelperInvocation` > Represents the SPIR-V capability for demoting to helper invocation. `spvReplicatedCompositesEXT` > Represents the SPIR-V capability for replicated composites `spvCooperativeVectorNV` > Represents the SPIR-V capability for cooperative vectors `spvCooperativeVectorTrainingNV` > Represents the SPIR-V capability for cooperative vector training `spvMaximalReconvergenceKHR` > Represents the SPIR-V capability for maximal reconvergence. `spvQuadControlKHR` > Represents the SPIR-V capability for quad group control. `GL_EXT_buffer_reference` > Represents the GL_EXT_buffer_reference extension. `GL_EXT_buffer_reference_uvec2` > Represents the GL_EXT_buffer_reference_uvec2 extension. `GL_EXT_debug_printf` > Represents the GL_EXT_debug_printf extension. `GL_EXT_demote_to_helper_invocation` > Represents the GL_EXT_demote_to_helper_invocation extension. `GL_EXT_maximal_reconvergence` > Represents the GL_EXT_maximal_reconvergence extension. `GL_EXT_shader_quad_control` > Represents the GL_EXT_shader_quad_control extension. `GL_EXT_fragment_shader_barycentric` > Represents the GL_EXT_fragment_shader_barycentric extension. `GL_EXT_mesh_shader` > Represents the GL_EXT_mesh_shader extension. `GL_EXT_nonuniform_qualifier` > Represents the GL_EXT_nonuniform_qualifier extension. `GL_EXT_ray_query` > Represents the GL_EXT_ray_query extension. `GL_EXT_ray_tracing` > Represents the GL_EXT_ray_tracing extension. `GL_EXT_ray_tracing_position_fetch_ray_tracing` > Represents the GL_EXT_ray_tracing_position_fetch_ray_tracing extension. `GL_EXT_ray_tracing_position_fetch_ray_query` > Represents the GL_EXT_ray_tracing_position_fetch_ray_query extension. `GL_EXT_ray_tracing_position_fetch` > Represents the GL_EXT_ray_tracing_position_fetch extension. `GL_EXT_samplerless_texture_functions` > Represents the GL_EXT_samplerless_texture_functions extension. `GL_EXT_shader_atomic_float` > Represents the GL_EXT_shader_atomic_float extension. `GL_EXT_shader_atomic_float_min_max` > Represents the GL_EXT_shader_atomic_float_min_max extension. `GL_EXT_shader_atomic_float2` > Represents the GL_EXT_shader_atomic_float2 extension. `GL_EXT_shader_atomic_int64` > Represents the GL_EXT_shader_atomic_int64 extension. `GL_EXT_shader_explicit_arithmetic_types_int64` > Represents the GL_EXT_shader_explicit_arithmetic_types_int64 extension. `GL_EXT_shader_image_load_store` > Represents the GL_EXT_shader_image_load_store extension. `GL_EXT_shader_realtime_clock` > Represents the GL_EXT_shader_realtime_clock extension. `GL_EXT_texture_query_lod` > Represents the GL_EXT_texture_query_lod extension. `GL_EXT_texture_shadow_lod` > Represents the GL_EXT_texture_shadow_lod extension. `GL_ARB_derivative_control` > Represents the GL_ARB_derivative_control extension. `GL_ARB_fragment_shader_interlock` > Represents the GL_ARB_fragment_shader_interlock extension. `GL_ARB_gpu_shader5` > Represents the GL_ARB_gpu_shader5 extension. `GL_ARB_shader_image_load_store` > Represents the GL_ARB_shader_image_load_store extension. `GL_ARB_shader_image_size` > Represents the GL_ARB_shader_image_size extension. `GL_ARB_texture_multisample` > Represents the GL_ARB_texture_multisample extension. `GL_ARB_shader_texture_image_samples` > Represents the GL_ARB_shader_texture_image_samples extension. `GL_ARB_sparse_texture` > Represents the GL_ARB_sparse_texture extension. `GL_ARB_sparse_texture2` > Represents the GL_ARB_sparse_texture2 extension. `GL_ARB_sparse_texture_clamp` > Represents the GL_ARB_sparse_texture_clamp extension. `GL_ARB_texture_gather` > Represents the GL_ARB_texture_gather extension. `GL_ARB_texture_query_levels` > Represents the GL_ARB_texture_query_levels extension. `GL_ARB_shader_clock` > Represents the GL_ARB_shader_clock extension. `GL_ARB_shader_clock64` > Represents the GL_ARB_shader_clock64 extension. `GL_ARB_gpu_shader_int64` > Represents the GL_ARB_gpu_shader_int64 extension. `GL_KHR_memory_scope_semantics` > Represents the GL_KHR_memory_scope_semantics extension. `GL_KHR_shader_subgroup_arithmetic` > Represents the GL_KHR_shader_subgroup_arithmetic extension. `GL_KHR_shader_subgroup_ballot` > Represents the GL_KHR_shader_subgroup_ballot extension. `GL_KHR_shader_subgroup_basic` > Represents the GL_KHR_shader_subgroup_basic extension. `GL_KHR_shader_subgroup_clustered` > Represents the GL_KHR_shader_subgroup_clustered extension. `GL_KHR_shader_subgroup_quad` > Represents the GL_KHR_shader_subgroup_quad extension. `GL_KHR_shader_subgroup_shuffle` > Represents the GL_KHR_shader_subgroup_shuffle extension. `GL_KHR_shader_subgroup_shuffle_relative` > Represents the GL_KHR_shader_subgroup_shuffle_relative extension. `GL_KHR_shader_subgroup_vote` > Represents the GL_KHR_shader_subgroup_vote extension. `GL_NV_compute_shader_derivatives` > Represents the GL_NV_compute_shader_derivatives extension. `GL_NV_fragment_shader_barycentric` > Represents the GL_NV_fragment_shader_barycentric extension. `GL_NV_gpu_shader5` > Represents the GL_NV_gpu_shader5 extension. `GL_NV_ray_tracing` > Represents the GL_NV_ray_tracing extension. `GL_NV_ray_tracing_motion_blur` > Represents the GL_NV_ray_tracing_motion_blur extension. `GL_NV_shader_atomic_fp16_vector` > Represents the GL_NV_shader_atomic_fp16_vector extension. `GL_NV_shader_invocation_reorder` > Represents the GL_NV_shader_invocation_reorder extension. `GL_NV_shader_subgroup_partitioned` > Represents the GL_NV_shader_subgroup_partitioned extension. `GL_NV_shader_texture_footprint` > Represents the GL_NV_shader_texture_footprint extension. Compound Capabilities ---------------------- *Capabilities to specify capabilities created by other capabilities (`raytracing`, `meshshading`...)* `any_target` > All code-gen targets `any_textual_target` > All non-asm code-gen targets `any_gfx_target` > All slang-gfx compatible code-gen targets `any_cpp_target` > All "cpp syntax" code-gen targets `cpp_cuda` > CPP and CUDA code-gen targets `cpp_cuda_spirv` > CPP, CUDA and SPIRV code-gen targets `cuda_spirv` > CUDA and SPIRV code-gen targets `cpp_cuda_glsl_spirv` > CPP, CUDA, GLSL and SPIRV code-gen targets `cpp_cuda_glsl_hlsl` > CPP, CUDA, GLSL, and HLSL code-gen targets `cpp_cuda_glsl_hlsl_spirv` > CPP, CUDA, GLSL, HLSL, and SPIRV code-gen targets `cpp_cuda_glsl_hlsl_spirv_wgsl` > CPP, CUDA, GLSL, HLSL, SPIRV and WGSL code-gen targets `cpp_cuda_glsl_hlsl_metal_spirv` > CPP, CUDA, GLSL, HLSL, Metal and SPIRV code-gen targets `cpp_cuda_glsl_hlsl_metal_spirv_wgsl` > CPP, CUDA, GLSL, HLSL, Metal, SPIRV and WGSL code-gen targets `cpp_cuda_hlsl` > CPP, CUDA, and HLSL code-gen targets `cpp_cuda_hlsl_spirv` > CPP, CUDA, HLSL, and SPIRV code-gen targets `cpp_cuda_hlsl_metal_spirv` > CPP, CUDA, HLSL, Metal, and SPIRV code-gen targets `cpp_glsl` > CPP, and GLSL code-gen targets `cpp_glsl_hlsl_spirv` > CPP, GLSL, HLSL, and SPIRV code-gen targets `cpp_glsl_hlsl_spirv_wgsl` > CPP, GLSL, HLSL, SPIRV and WGSL code-gen targets `cpp_glsl_hlsl_metal_spirv` > CPP, GLSL, HLSL, Metal, and SPIRV code-gen targets `cpp_glsl_hlsl_metal_spirv_wgsl` > CPP, GLSL, HLSL, Metal, SPIRV and WGSL code-gen targets `cpp_hlsl` > CPP, and HLSL code-gen targets `cuda_glsl_hlsl` > CUDA, GLSL, and HLSL code-gen targets `cuda_hlsl_metal_spirv` > CUDA, HLSL, Metal, and SPIRV code-gen targets `cuda_glsl_hlsl_spirv` > CUDA, GLSL, HLSL, and SPIRV code-gen targets `cuda_glsl_hlsl_spirv_wgsl` > CUDA, GLSL, HLSL, SPIRV, and WGSL code-gen targets `cuda_glsl_hlsl_metal_spirv` > CUDA, GLSL, HLSL, Metal, and SPIRV code-gen targets `cuda_glsl_hlsl_metal_spirv_wgsl` > CUDA, GLSL, HLSL, Metal, SPIRV and WGSL code-gen targets `cuda_glsl_spirv` > CUDA, GLSL, and SPIRV code-gen targets `cuda_glsl_metal_spirv` > CUDA, GLSL, Metal, and SPIRV code-gen targets `cuda_glsl_metal_spirv_wgsl` > CUDA, GLSL, Metal, SPIRV and WGSL code-gen targets `cuda_hlsl` > CUDA, and HLSL code-gen targets `cuda_hlsl_spirv` > CUDA, HLSL, SPIRV code-gen targets `glsl_hlsl_spirv` > GLSL, HLSL, and SPIRV code-gen targets `glsl_hlsl_spirv_wgsl` > GLSL, HLSL, SPIRV and WGSL code-gen targets `glsl_hlsl_metal_spirv` > GLSL, HLSL, Metal, and SPIRV code-gen targets `glsl_hlsl_metal_spirv_wgsl` > GLSL, HLSL, Metal, SPIRV and WGSL code-gen targets `glsl_metal_spirv` > GLSL, Metal, and SPIRV code-gen targets `glsl_metal_spirv_wgsl` > GLSL, Metal, SPIRV and WGSL code-gen targets `glsl_spirv` > GLSL, and SPIRV code-gen targets `glsl_spirv_wgsl` > GLSL, SPIRV, and WGSL code-gen targets `hlsl_spirv` > HLSL, and SPIRV code-gen targets `nvapi` > NVAPI capability for HLSL `raytracing` > Capabilities needed for minimal raytracing support `ser` > Capabilities needed for shader-execution-reordering `motionblur` > Capabilities needed for raytracing-motionblur `rayquery` > Capabilities needed for compute-shader rayquery `raytracing_motionblur` > Capabilities needed for compute-shader rayquery and motion-blur `ser_motion` > Capabilities needed for shader-execution-reordering and motion-blur `shaderclock` > Capabilities needed for realtime clocks `fragmentshaderinterlock` > Capabilities needed for interlocked-fragment operations `atomic64` > Capabilities needed for int64/uint64 atomic operations `atomicfloat` > Capabilities needed to use GLSL-tier-1 float-atomic operations `atomicfloat2` > Capabilities needed to use GLSL-tier-2 float-atomic operations `fragmentshaderbarycentric` > Capabilities needed to use fragment-shader-barycentric's `shadermemorycontrol` > (gfx targets) Capabilities needed to use memory barriers `wave_multi_prefix` > Capabilities needed to use HLSL tier wave operations `bufferreference` > Capabilities needed to use GLSL buffer-reference's `bufferreference_int64` > Capabilities needed to use GLSL buffer-reference's with int64 `cooperative_vector` > Capabilities needed to use cooperative vectors > Note that cpp and cuda are supported via a fallback non-cooperative implementation > No HLSL shader model bound yet `cooperative_vector_training` > Capabilities needed to train cooperative vectors `any_stage` > Collection of all shader stages `amplification_mesh` > Collection of shader stages `raytracing_stages` > Collection of shader stages `anyhit_closesthit` > Collection of shader stages `raygen_closesthit_miss` > Collection of shader stages `anyhit_closesthit_intersection` > Collection of shader stages `anyhit_closesthit_intersection_miss` > Collection of shader stages `raygen_closesthit_miss_callable` > Collection of shader stages `compute_tesscontrol_tesseval` > Collection of shader stages `compute_fragment` > Collection of shader stages `compute_fragment_geometry_vertex` > Collection of shader stages `domain_hull` > Collection of shader stages `raytracingstages_fragment` > Collection of shader stages `raytracingstages_compute` > Collection of shader stages `raytracingstages_compute_amplification_mesh` > Collection of shader stages `raytracingstages_compute_fragment` > Collection of shader stages `raytracingstages_compute_fragment_geometry_vertex` > Collection of shader stages `meshshading` > Ccapabilities required to use mesh shading features `shadermemorycontrol_compute` > (gfx targets) Capabilities required to use memory barriers that only work for raytracing & compute shader stages `subpass` > Capabilities required to use Subpass-Input's `appendstructuredbuffer` > Capabilities required to use AppendStructuredBuffer `atomic_hlsl` > (hlsl only) Capabilities required to use hlsl atomic operations `atomic_hlsl_nvapi` > (hlsl only) Capabilities required to use hlsl NVAPI atomics `atomic_hlsl_sm_6_6` > (hlsl only) Capabilities required to use hlsl sm_6_6 atomics `byteaddressbuffer` > Capabilities required to use ByteAddressBuffer `byteaddressbuffer_rw` > Capabilities required to use RWByteAddressBuffer `consumestructuredbuffer` > Capabilities required to use ConsumeStructuredBuffer `structuredbuffer` > Capabilities required to use StructuredBuffer `structuredbuffer_rw` > Capabilities required to use RWStructuredBuffer `fragmentprocessing` > Capabilities required to use fragment derivative operations (without GLSL derivativecontrol) `fragmentprocessing_derivativecontrol` > Capabilities required to use fragment derivative operations (with GLSL derivativecontrol) `getattributeatvertex` > Capabilities required to use 'getAttributeAtVertex' `memorybarrier` > Capabilities required to use sm_5_0 style memory barriers `texture_sm_4_0` > Capabilities required to use sm_4_0 texture operations `texture_sm_4_1` > Capabilities required to use sm_4_1 texture operations `texture_sm_4_1_samplerless` > Capabilities required to use sm_4_1 samplerless texture operations `texture_sm_4_1_compute_fragment` > Capabilities required to use 'compute/fragment shader only' texture operations. > We do not require 'compute'/'fragment' shader capabilities since this seems to be incorrect behavior despite what official documentation says. `texture_sm_4_0_fragment` > Capabilities required to use 'fragment shader only' texture operations `texture_sm_4_1_clamp_fragment` > Capabilities required to use 'fragment shader only' texture clamp operations `texture_sm_4_1_vertex_fragment_geometry` > Capabilities required to use 'fragment/geometry shader only' texture clamp operations `texture_gather` > Capabilities required to use 'vertex/fragment/geometry shader only' texture gather operations `image_samples` > Capabilities required to query image (RWTexture) sample info `image_size` > Capabilities required to query image (RWTexture) size info `texture_size` > Capabilities required to query texture sample info `texture_querylod` > Capabilities required to query texture LOD info `texture_querylevels` > Capabilities required to query texture level info `texture_shadowlod` > Capabilities required to query shadow texture lod info `atomic_glsl_float1` > (GLSL/SPIRV) Capabilities required to use GLSL-tier-1 float-atomic operations `atomic_glsl_float2` > (GLSL/SPIRV) Capabilities required to use GLSL-tier-2 float-atomic operations `atomic_glsl_halfvec` > (GLSL/SPIRV) Capabilities required to use NVAPI GLSL-fp16 float-atomic operations `atomic_glsl` > (GLSL/SPIRV) Capabilities required to use GLSL-400 atomic operations `atomic_glsl_int64` > (GLSL/SPIRV) Capabilities required to use int64/uint64 atomic operations `image_loadstore` > (GLSL/SPIRV) Capabilities required to use image load/image store operations `nonuniformqualifier` > Capabilities required to use NonUniform qualifier `printf` > Capabilities required to use 'printf' `texturefootprint` > Capabilities required to use basic TextureFootprint operations `texturefootprintclamp` > Capabilities required to use TextureFootprint clamp operations `shader5_sm_4_0` > Capabilities required to use sm_4_0 features apart of GL_ARB_gpu_shader5 `shader5_sm_5_0` > Capabilities required to use sm_5_0 features apart of GL_ARB_gpu_shader5 `subgroup_basic` > Capabilities required to use GLSL-style subgroup operations 'subgroup_basic' `subgroup_ballot` > Capabilities required to use GLSL-style subgroup operations 'subgroup_ballot' `subgroup_ballot_activemask` > Capabilities required to use GLSL-style subgroup operations 'subgroup_ballot_activemask' `subgroup_basic_ballot` > Capabilities required to use GLSL-style subgroup operations 'subgroup_basic_ballot' `subgroup_vote` > Capabilities required to use GLSL-style subgroup operations 'subgroup_vote' `shaderinvocationgroup` > Capabilities required to use GLSL-style subgroup operations 'subgroup_vote' `subgroup_arithmetic` > Capabilities required to use GLSL-style subgroup operations 'subgroup_arithmetic' `subgroup_shuffle` > Capabilities required to use GLSL-style subgroup operations 'subgroup_shuffle' `subgroup_shufflerelative` > Capabilities required to use GLSL-style subgroup operations 'subgroup_shuffle_relative' `subgroup_clustered` > Capabilities required to use GLSL-style subgroup operations 'subgroup_clustered' `subgroup_quad` > Capabilities required to use GLSL-style subgroup operations 'subgroup_quad' `subgroup_partitioned` > Capabilities required to use GLSL-style subgroup operations 'subgroup_partitioned' `atomic_glsl_hlsl_nvapi_cuda_metal_float1` > (All implemented targets) Capabilities required to use atomic operations of GLSL tier-1 float atomics `atomic_glsl_hlsl_nvapi_cuda5_int64` > (All implemented targets) Capabilities required to use atomic operations of int64 (cuda_sm_5 tier atomics) `atomic_glsl_hlsl_nvapi_cuda6_int64` > (All implemented targets) Capabilities required to use atomic operations of int64 (cuda_sm_6 tier atomics) `atomic_glsl_hlsl_nvapi_cuda9_int64` > (All implemented targets) Capabilities required to use atomic operations of int64 (cuda_sm_9 tier atomics) `atomic_glsl_hlsl_cuda_metal` > (All implemented targets) Capabilities required to use atomic operations `atomic_glsl_hlsl_cuda9_int64` > (All implemented targets) Capabilities required to use atomic operations (cuda_sm_9 tier atomics) `helper_lane` > Capabilities required to enable helper-lane demotion `quad_control` > Capabilities required to enable quad group control `breakpoint` > Capabilities required to enable shader breakpoints `raytracing_allstages` > Collection of capabilities for raytracing with all raytracing stages. `raytracing_anyhit` > Collection of capabilities for raytracing with the shader stage of anyhit. `raytracing_intersection` > Collection of capabilities for raytracing with the shader stage of intersection. `raytracing_anyhit_closesthit` > Collection of capabilities for raytracing with the shader stages of anyhit and closesthit. `raytracing_anyhit_closesthit_intersection` > Collection of capabilities for raytracing with the shader stages of anyhit, closesthit, and intersection. `raytracing_raygen_closesthit_miss` > Collection of capabilities for raytracing with the shader stages of raygen, closesthit, and miss. `raytracing_anyhit_closesthit_intersection_miss` > Collection of capabilities for raytracing with the shader stages of anyhit, closesthit, intersection, and miss. `raytracing_raygen_closesthit_miss_callable` > Collection of capabilities for raytracing the shader stages of raygen, closesthit, miss, and callable. `raytracing_position` > Collection of capabilities for raytracing + ray_tracing_position_fetch and the shader stages of anyhit and closesthit. `raytracing_motionblur_anyhit_closesthit_intersection_miss` > Collection of capabilities for raytracing + motion blur and the shader stages of anyhit, closesthit, intersection, and miss. `raytracing_motionblur_raygen_closesthit_miss` > Collection of capabilities for raytracing + motion blur and the shader stages of raygen, closesthit, and miss. `rayquery_position` > Collection of capabilities for rayquery + ray_tracing_position_fetch. `ser_raygen` > Collection of capabilities for raytracing + shader execution reordering and the shader stage of raygen. `ser_raygen_closesthit_miss` > Collection of capabilities for raytracing + shader execution reordering and the shader stages of raygen, closesthit, and miss. `ser_any_closesthit_intersection_miss` > Collection of capabilities for raytracing + shader execution reordering and the shader stages of anyhit, closesthit, intersection, and miss. `ser_anyhit_closesthit_intersection` > Collection of capabilities for raytracing + shader execution reordering and the shader stages of anyhit, closesthit, and intersection. `ser_anyhit_closesthit` > Collection of capabilities for raytracing + shader execution reordering and the shader stages of anyhit and closesthit. `ser_motion_raygen_closesthit_miss` > Collection of capabilities for raytracing + motion blur + shader execution reordering and the shader stages of raygen, closesthit, and miss. `ser_motion_raygen` > Collection of capabilities for raytracing raytracing + motion blur + shader execution reordering and the shader stage of raygen. Other ---------------------- *Capabilities which may be deprecated* `SPIRV_1_0` > Use `spirv_1_0` instead `SPIRV_1_1` > Use `spirv_1_1` instead `SPIRV_1_2` > Use `spirv_1_2` instead `SPIRV_1_3` > Use `spirv_1_3` instead `SPIRV_1_4` > Use `spirv_1_4` instead `SPIRV_1_5` > Use `spirv_1_5` instead `SPIRV_1_6` > Use `spirv_1_6` instead `DX_4_0` > Use `sm_4_0` instead `DX_4_1` > Use `sm_4_1` instead `DX_5_0` > Use `sm_5_0` instead `DX_5_1` > Use `sm_5_1` instead `DX_6_0` > Use `sm_6_0` instead `DX_6_1` > Use `sm_6_1` instead `DX_6_2` > Use `sm_6_2` instead `DX_6_3` > Use `sm_6_3` instead `DX_6_4` > Use `sm_6_4` instead `DX_6_5` > Use `sm_6_5` instead `DX_6_6` > Use `sm_6_6` instead `DX_6_7` > Use `sm_6_7` instead `DX_6_8` > Use `sm_6_8` instead `GLSL_410_SPIRV_1_0` > User should not use this capability `GLSL_420_SPIRV_1_0` > User should not use this capability `GLSL_430_SPIRV_1_0` > User should not use this capability `METAL_2_3` > Use `metallib_2_3` instead `METAL_2_4` > Use `metallib_2_4` instead `METAL_3_0` > Use `metallib_3_0` instead `METAL_3_1` > Use `metallib_3_1` instead `GLSL_430_SPIRV_1_0_compute` > User should not use this capability `all` > User should not use this capability