summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJay Kwak <82421531+jkwak-work@users.noreply.github.com>2025-04-22 00:57:02 -0700
committerGitHub <noreply@github.com>2025-04-22 00:57:02 -0700
commitcb361223b88a21446cea60d316e3c01b7f8c2546 (patch)
tree9598eabd52fcf56c5e2a2c6577beba50cd8c3ab0
parent62baf92a524a5b57eb465100a5e47c489c049f15 (diff)
Add a new SM profile 6.9 (#6879)
-rw-r--r--docs/user-guide/a3-02-reference-capability-atoms.md11
-rw-r--r--source/slang/slang-capabilities.capdef29
-rw-r--r--source/slang/slang-compiler.cpp1
-rw-r--r--source/slang/slang-profile-defs.h11
4 files changed, 49 insertions, 3 deletions
diff --git a/docs/user-guide/a3-02-reference-capability-atoms.md b/docs/user-guide/a3-02-reference-capability-atoms.md
index 300c7c2c6..296614716 100644
--- a/docs/user-guide/a3-02-reference-capability-atoms.md
+++ b/docs/user-guide/a3-02-reference-capability-atoms.md
@@ -277,6 +277,14 @@ Versions
> HLSL shader model 6.8 and related capabilities of other targets.
> Includes related GLSL/SPIRV extensions.
+`sm_6_9_version`
+> HLSL shader model 6.9 and related capabilities of other targets.
+> Does not include related GLSL/SPIRV extensions.
+
+`sm_6_9`
+> HLSL shader model 6.9 and related capabilities of other targets.
+> Includes related GLSL/SPIRV extensions.
+
`GLSL_130`
> GLSL 130 and related capabilities of other targets.
@@ -1275,6 +1283,9 @@ Other
`DX_6_8`
> Use `sm_6_8` instead
+`DX_6_9`
+> Use `sm_6_9` instead
+
`GLSL_410_SPIRV_1_0`
> User should not use this capability
diff --git a/source/slang/slang-capabilities.capdef b/source/slang/slang-capabilities.capdef
index fc1bc71a8..b62de0f08 100644
--- a/source/slang/slang-capabilities.capdef
+++ b/source/slang/slang-capabilities.capdef
@@ -209,6 +209,7 @@ def _sm_6_5 : _sm_6_4;
def _sm_6_6 : _sm_6_5;
def _sm_6_7 : _sm_6_6;
def _sm_6_8 : _sm_6_7;
+def _sm_6_9 : _sm_6_8;
/// Represents HLSL NVAPI support.
/// [Version]
@@ -1549,6 +1550,24 @@ alias sm_6_8 = sm_6_8_version
| sm_6_7
;
+/// HLSL shader model 6.9 and related capabilities of other targets.
+/// Does not include related GLSL/SPIRV extensions.
+/// [Version]
+alias sm_6_9_version = _sm_6_9
+ | _GLSL_460
+ | spirv_1_5
+ | _cuda_sm_9_0
+ | metal
+ | cpp
+ ;
+
+/// HLSL shader model 6.9 and related capabilities of other targets.
+/// Includes related GLSL/SPIRV extensions.
+/// [Version]
+alias sm_6_9 = sm_6_9_version
+ | sm_6_8
+ ;
+
// Profiles
/// Use `sm_4_0` instead
/// [Other]
@@ -1602,6 +1621,10 @@ alias DX_6_7 = sm_6_7;
/// [Other]
alias DX_6_8 = sm_6_8;
+/// Use `sm_6_9` instead
+/// [Other]
+alias DX_6_9 = sm_6_9;
+
// GLSL profile capabilities
//
/// GLSL 130 and related capabilities of other targets.
@@ -2162,10 +2185,10 @@ alias ser_motion_raygen = raygen + ser_motion;
/// User should not use this capability
/// [Other]
-alias all = _sm_6_8 + hlsl_nvapi
- | glsl_spirv_1_5 + sm_6_8
+alias all = _sm_6_9 + hlsl_nvapi
+ | glsl_spirv_1_5 + sm_6_9
+ 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_8
+ | spirv_1_5 + sm_6_9
+ ser + shaderclock + texturefootprint + fragmentshaderinterlock + spvGroupNonUniformPartitionedNV
+ spvRayTracingMotionBlurNV + spvRayTracingMotionBlurNV;
diff --git a/source/slang/slang-compiler.cpp b/source/slang/slang-compiler.cpp
index 2c9475004..9815f6ff1 100644
--- a/source/slang/slang-compiler.cpp
+++ b/source/slang/slang-compiler.cpp
@@ -874,6 +874,7 @@ String GetHLSLProfileName(Profile profile)
CASE(DX_6_6, _6_6);
CASE(DX_6_7, _6_7);
CASE(DX_6_8, _6_8);
+ CASE(DX_6_9, _6_9);
#undef CASE
default:
diff --git a/source/slang/slang-profile-defs.h b/source/slang/slang-profile-defs.h
index 57ad3ab25..29e2bbf2e 100644
--- a/source/slang/slang-profile-defs.h
+++ b/source/slang/slang-profile-defs.h
@@ -105,6 +105,7 @@ PROFILE_VERSION(DX_6_5, DX)
PROFILE_VERSION(DX_6_6, DX)
PROFILE_VERSION(DX_6_7, DX)
PROFILE_VERSION(DX_6_8, DX)
+PROFILE_VERSION(DX_6_9, DX)
PROFILE_VERSION(GLSL_150, GLSL)
PROFILE_VERSION(GLSL_330, GLSL)
@@ -141,6 +142,7 @@ PROFILE(DX_Compute_6_5, cs_6_5, Compute, DX_6_5)
PROFILE(DX_Compute_6_6, cs_6_6, Compute, DX_6_6)
PROFILE(DX_Compute_6_7, cs_6_7, Compute, DX_6_7)
PROFILE(DX_Compute_6_8, cs_6_8, Compute, DX_6_8)
+PROFILE(DX_Compute_6_9, cs_6_9, Compute, DX_6_9)
PROFILE(DX_Domain_5_0, ds_5_0, Domain, DX_5_0)
PROFILE(DX_Domain_5_1, ds_5_1, Domain, DX_5_1)
@@ -153,6 +155,7 @@ PROFILE(DX_Domain_6_5, ds_6_5, Domain, DX_6_5)
PROFILE(DX_Domain_6_6, ds_6_6, Domain, DX_6_6)
PROFILE(DX_Domain_6_7, ds_6_7, Domain, DX_6_7)
PROFILE(DX_Domain_6_8, ds_6_8, Domain, DX_6_8)
+PROFILE(DX_Domain_6_9, ds_6_9, Domain, DX_6_9)
PROFILE(DX_Geometry_4_0, gs_4_0, Geometry, DX_4_0)
PROFILE(DX_Geometry_4_1, gs_4_1, Geometry, DX_4_1)
@@ -167,6 +170,7 @@ PROFILE(DX_Geometry_6_5, gs_6_5, Geometry, DX_6_5)
PROFILE(DX_Geometry_6_6, gs_6_6, Geometry, DX_6_6)
PROFILE(DX_Geometry_6_7, gs_6_7, Geometry, DX_6_7)
PROFILE(DX_Geometry_6_8, gs_6_8, Geometry, DX_6_8)
+PROFILE(DX_Geometry_6_9, gs_6_9, Geometry, DX_6_9)
PROFILE(DX_Hull_5_0, hs_5_0, Hull, DX_5_0)
PROFILE(DX_Hull_5_1, hs_5_1, Hull, DX_5_1)
@@ -179,6 +183,7 @@ PROFILE(DX_Hull_6_5, hs_6_5, Hull, DX_6_5)
PROFILE(DX_Hull_6_6, hs_6_6, Hull, DX_6_6)
PROFILE(DX_Hull_6_7, hs_6_7, Hull, DX_6_7)
PROFILE(DX_Hull_6_8, hs_6_8, Hull, DX_6_8)
+PROFILE(DX_Hull_6_9, hs_6_9, Hull, DX_6_9)
PROFILE(DX_Fragment_4_0, ps_4_0, Fragment, DX_4_0)
PROFILE(DX_Fragment_4_1, ps_4_1, Fragment, DX_4_1)
@@ -193,6 +198,7 @@ PROFILE(DX_Fragment_6_5, ps_6_5, Fragment, DX_6_5)
PROFILE(DX_Fragment_6_6, ps_6_6, Fragment, DX_6_6)
PROFILE(DX_Fragment_6_7, ps_6_7, Fragment, DX_6_7)
PROFILE(DX_Fragment_6_8, ps_6_8, Fragment, DX_6_8)
+PROFILE(DX_Fragment_6_9, ps_6_9, Fragment, DX_6_9)
PROFILE(DX_Vertex_4_0, vs_4_0, Vertex, DX_4_0)
PROFILE(DX_Vertex_4_1, vs_4_1, Vertex, DX_4_1)
@@ -207,16 +213,19 @@ PROFILE(DX_Vertex_6_5, vs_6_5, Vertex, DX_6_5)
PROFILE(DX_Vertex_6_6, vs_6_6, Vertex, DX_6_6)
PROFILE(DX_Vertex_6_7, vs_6_7, Vertex, DX_6_7)
PROFILE(DX_Vertex_6_8, vs_6_8, Vertex, DX_6_8)
+PROFILE(DX_Vertex_6_9, vs_6_9, Vertex, DX_6_9)
PROFILE(DX_Mesh_6_5, ms_6_5, Mesh, DX_6_5)
PROFILE(DX_Mesh_6_6, ms_6_6, Mesh, DX_6_6)
PROFILE(DX_Mesh_6_7, ms_6_7, Mesh, DX_6_7)
PROFILE(DX_Mesh_6_8, ms_6_8, Mesh, DX_6_8)
+PROFILE(DX_Mesh_6_9, ms_6_9, Mesh, DX_6_9)
PROFILE(DX_Amplification_6_5, as_6_5, Amplification, DX_6_5)
PROFILE(DX_Amplification_6_6, as_6_6, Amplification, DX_6_6)
PROFILE(DX_Amplification_6_7, as_6_7, Amplification, DX_6_7)
PROFILE(DX_Amplification_6_8, as_6_8, Amplification, DX_6_8)
+PROFILE(DX_Amplification_6_9, as_6_9, Amplification, DX_6_9)
// TODO: consider making `lib_*_*` alias these...
PROFILE(DX_None_4_0, sm_4_0, Unknown, DX_4_0)
@@ -244,6 +253,7 @@ PROFILE(DX_Lib_6_5, lib_6_5, Unknown, DX_6_5)
PROFILE(DX_Lib_6_6, lib_6_6, Unknown, DX_6_6)
PROFILE(DX_Lib_6_7, lib_6_7, Unknown, DX_6_7)
PROFILE(DX_Lib_6_8, lib_6_8, Unknown, DX_6_8)
+PROFILE(DX_Lib_6_9, lib_6_9, Unknown, DX_6_9)
PROFILE_ALIAS(DX_None_6_1, DX_Lib_6_1, sm_6_1)
PROFILE_ALIAS(DX_None_6_2, DX_Lib_6_2, sm_6_2)
@@ -253,6 +263,7 @@ PROFILE_ALIAS(DX_None_6_5, DX_Lib_6_5, sm_6_5)
PROFILE_ALIAS(DX_None_6_6, DX_Lib_6_6, sm_6_6)
PROFILE_ALIAS(DX_None_6_7, DX_Lib_6_7, sm_6_7)
PROFILE_ALIAS(DX_None_6_8, DX_Lib_6_8, sm_6_8)
+PROFILE_ALIAS(DX_None_6_9, DX_Lib_6_9, sm_6_9)
PROFILE(METAL_LIB_2_3, metallib_2_3, Unknown, METAL_2_3)
PROFILE(METAL_LIB_2_4, metallib_2_4, Unknown, METAL_2_4)