From c7b20d096b6d3c7f5a8dfebf95fdf8ea7ee5c774 Mon Sep 17 00:00:00 2001 From: Ashley Coleman Date: Wed, 23 Sep 2026 15:24:52 -0600 Subject: [PATCH 1/4] [SM6.10] Retail hash SM6.10, enable experimental SM6.11 --- docs/ReleaseNotes.md | 8 + include/dxc/DXIL/DxilConstants.h | 4 +- include/dxc/DXIL/DxilShaderModel.h | 7 +- include/dxc/Support/HLSLOptions.td | 2 +- lib/DXIL/DxilShaderModel.cpp | 225 ++++++++++-------- .../reflection/experimental_rdat.hlsl | 12 +- .../reflection/experimental_rdat_rel_sm.hlsl | 14 +- ...-10-op.ll => experimental-dxil-6-11-op.ll} | 15 +- .../experimental-op-on-release-sm.ll | 4 +- tools/clang/unittests/HLSL/ValidationTest.cpp | 6 +- utils/hct/hctdb_instrhelp.py | 2 +- utils/version/latest-release.json | 4 +- 12 files changed, 175 insertions(+), 128 deletions(-) rename tools/clang/test/DXC/{experimental-dxil-6-10-op.ll => experimental-dxil-6-11-op.ll} (73%) diff --git a/docs/ReleaseNotes.md b/docs/ReleaseNotes.md index 375d68d2fa..d0d4f9cd5d 100644 --- a/docs/ReleaseNotes.md +++ b/docs/ReleaseNotes.md @@ -64,6 +64,10 @@ line upon naming the release. Refer to previous for appropriate section names. compatibility warnings available for earlier language versions [#8482](https://github.com/microsoft/DirectXShaderCompiler/issues/8482). +#### Shader Model 6.10 + +- Shader Model 6.10 and DXIL 1.10 now use retail validation hashes. + #### SPIR-V - Inline `[[vk::ext_decorate]]`, `[[vk::ext_capability]]`, and @@ -86,6 +90,10 @@ line upon naming the release. Refer to previous for appropriate section names. These changes apply to experimental preview shader models only and will not be part of the next non-preview release. +#### Experimental Shader Model 6.11 + +- Added experimental Shader Model 6.11 target profiles. + #### Experimental Shader Model 6.10 These are incremental changes to the experimental Shader Model 6.10 features that diff --git a/include/dxc/DXIL/DxilConstants.h b/include/dxc/DXIL/DxilConstants.h index ceb73fe41f..a47fc89d53 100644 --- a/include/dxc/DXIL/DxilConstants.h +++ b/include/dxc/DXIL/DxilConstants.h @@ -29,8 +29,8 @@ namespace DXIL { const unsigned kDxilMajor = 1; /* hctdb_instrhelp.get_dxil_version_minor()*/ // VALRULE-TEXT:BEGIN -const unsigned kDxilMinor = 10; -const unsigned kDxilReleasedMinor = 9; +const unsigned kDxilMinor = 11; +const unsigned kDxilReleasedMinor = 10; // VALRULE-TEXT:END inline unsigned MakeDxilVersion(unsigned DxilMajor, unsigned DxilMinor) { diff --git a/include/dxc/DXIL/DxilShaderModel.h b/include/dxc/DXIL/DxilShaderModel.h index ff9ef39b99..6e5dd9225c 100644 --- a/include/dxc/DXIL/DxilShaderModel.h +++ b/include/dxc/DXIL/DxilShaderModel.h @@ -33,7 +33,7 @@ class ShaderModel { // clang-format on // VALRULE-TEXT:BEGIN static const unsigned kHighestMajor = 6; - static const unsigned kHighestMinor = 10; + static const unsigned kHighestMinor = 11; // VALRULE-TEXT:END // Major/Minor version of highest released shader model @@ -41,7 +41,7 @@ class ShaderModel { // clang-format on // VALRULE-TEXT:BEGIN static const unsigned kHighestReleasedMajor = 6; - static const unsigned kHighestReleasedMinor = 9; + static const unsigned kHighestReleasedMinor = 10; // VALRULE-TEXT:END static const unsigned kOfflineMinor = 0xF; @@ -88,6 +88,7 @@ class ShaderModel { bool IsSM68Plus() const { return IsSMAtLeast(6, 8); } bool IsSM69Plus() const { return IsSMAtLeast(6, 9); } bool IsSM610Plus() const { return IsSMAtLeast(6, 10); } + bool IsSM611Plus() const { return IsSMAtLeast(6, 11); } // VALRULE-TEXT:END const char *GetName() const { return m_pszName; } const char *GetKindName() const; @@ -139,7 +140,7 @@ class ShaderModel { bool m_bTypedUavs, unsigned m_UAVRegsLim); /* hctdb_instrhelp.get_num_shader_models()*/ // VALRULE-TEXT:BEGIN - static const unsigned kNumShaderModels = 116; + static const unsigned kNumShaderModels = 125; // VALRULE-TEXT:END static const ShaderModel ms_ShaderModels[kNumShaderModels]; diff --git a/include/dxc/Support/HLSLOptions.td b/include/dxc/Support/HLSLOptions.td index f35e4809df..bfd986ad3e 100644 --- a/include/dxc/Support/HLSLOptions.td +++ b/include/dxc/Support/HLSLOptions.td @@ -462,7 +462,7 @@ def fvk_bind_counter_heap : MultiArg<["-"], "fvk-bind-counter-heap", 2>, MetaVar def target_profile : JoinedOrSeparate<["-", "/"], "T">, Flags<[CoreOption]>, Group, MetaVarName<"">, /* hctdb_instrhelp.get_target_profiles()*/ // VALRULE-TEXT:BEGIN - HelpText<"Set target profile. \n\t: ps_6_0, ps_6_1, ps_6_2, ps_6_3, ps_6_4, ps_6_5, ps_6_6, ps_6_7, ps_6_8, ps_6_9, ps_6_10, \n\t\t vs_6_0, vs_6_1, vs_6_2, vs_6_3, vs_6_4, vs_6_5, vs_6_6, vs_6_7, vs_6_8, vs_6_9, vs_6_10, \n\t\t gs_6_0, gs_6_1, gs_6_2, gs_6_3, gs_6_4, gs_6_5, gs_6_6, gs_6_7, gs_6_8, gs_6_9, gs_6_10, \n\t\t hs_6_0, hs_6_1, hs_6_2, hs_6_3, hs_6_4, hs_6_5, hs_6_6, hs_6_7, hs_6_8, hs_6_9, hs_6_10, \n\t\t ds_6_0, ds_6_1, ds_6_2, ds_6_3, ds_6_4, ds_6_5, ds_6_6, ds_6_7, ds_6_8, ds_6_9, ds_6_10, \n\t\t cs_6_0, cs_6_1, cs_6_2, cs_6_3, cs_6_4, cs_6_5, cs_6_6, cs_6_7, cs_6_8, cs_6_9, cs_6_10, \n\t\t lib_6_1, lib_6_2, lib_6_3, lib_6_4, lib_6_5, lib_6_6, lib_6_7, lib_6_8, lib_6_9, lib_6_10, \n\t\t ms_6_5, ms_6_6, ms_6_7, ms_6_8, ms_6_9, ms_6_10, \n\t\t as_6_5, as_6_6, as_6_7, as_6_8, as_6_9, as_6_10, \n\t\t ">; + HelpText<"Set target profile. \n\t: ps_6_0, ps_6_1, ps_6_2, ps_6_3, ps_6_4, ps_6_5, ps_6_6, ps_6_7, ps_6_8, ps_6_9, ps_6_10, ps_6_11, \n\t\t vs_6_0, vs_6_1, vs_6_2, vs_6_3, vs_6_4, vs_6_5, vs_6_6, vs_6_7, vs_6_8, vs_6_9, vs_6_10, vs_6_11, \n\t\t gs_6_0, gs_6_1, gs_6_2, gs_6_3, gs_6_4, gs_6_5, gs_6_6, gs_6_7, gs_6_8, gs_6_9, gs_6_10, gs_6_11, \n\t\t hs_6_0, hs_6_1, hs_6_2, hs_6_3, hs_6_4, hs_6_5, hs_6_6, hs_6_7, hs_6_8, hs_6_9, hs_6_10, hs_6_11, \n\t\t ds_6_0, ds_6_1, ds_6_2, ds_6_3, ds_6_4, ds_6_5, ds_6_6, ds_6_7, ds_6_8, ds_6_9, ds_6_10, ds_6_11, \n\t\t cs_6_0, cs_6_1, cs_6_2, cs_6_3, cs_6_4, cs_6_5, cs_6_6, cs_6_7, cs_6_8, cs_6_9, cs_6_10, cs_6_11, \n\t\t lib_6_1, lib_6_2, lib_6_3, lib_6_4, lib_6_5, lib_6_6, lib_6_7, lib_6_8, lib_6_9, lib_6_10, lib_6_11, \n\t\t ms_6_5, ms_6_6, ms_6_7, ms_6_8, ms_6_9, ms_6_10, ms_6_11, \n\t\t as_6_5, as_6_6, as_6_7, as_6_8, as_6_9, as_6_10, as_6_11, \n\t\t ">; // VALRULE-TEXT:END def entrypoint : JoinedOrSeparate<["-", "/"], "E">, Flags<[CoreOption, RewriteOption]>, Group, HelpText<"Entry point name">; diff --git a/lib/DXIL/DxilShaderModel.cpp b/lib/DXIL/DxilShaderModel.cpp index e70a3b44c9..836c1ba71d 100644 --- a/lib/DXIL/DxilShaderModel.cpp +++ b/lib/DXIL/DxilShaderModel.cpp @@ -66,6 +66,7 @@ bool ShaderModel::IsValidForDxil() const { case 8: case 9: case 10: + case 11: // VALRULE-TEXT:END return true; case kOfflineMinor: @@ -95,107 +96,116 @@ const ShaderModel *ShaderModel::Get(Kind Kind, unsigned Major, unsigned Minor) { {1544, 12}, // ps_6_8 {1545, 13}, // ps_6_9 {1546, 14}, // ps_6_10 - {66560, 15}, // vs_4_0 - {66561, 16}, // vs_4_1 - {66816, 17}, // vs_5_0 - {66817, 18}, // vs_5_1 - {67072, 19}, // vs_6_0 - {67073, 20}, // vs_6_1 - {67074, 21}, // vs_6_2 - {67075, 22}, // vs_6_3 - {67076, 23}, // vs_6_4 - {67077, 24}, // vs_6_5 - {67078, 25}, // vs_6_6 - {67079, 26}, // vs_6_7 - {67080, 27}, // vs_6_8 - {67081, 28}, // vs_6_9 - {67082, 29}, // vs_6_10 - {132096, 30}, // gs_4_0 - {132097, 31}, // gs_4_1 - {132352, 32}, // gs_5_0 - {132353, 33}, // gs_5_1 - {132608, 34}, // gs_6_0 - {132609, 35}, // gs_6_1 - {132610, 36}, // gs_6_2 - {132611, 37}, // gs_6_3 - {132612, 38}, // gs_6_4 - {132613, 39}, // gs_6_5 - {132614, 40}, // gs_6_6 - {132615, 41}, // gs_6_7 - {132616, 42}, // gs_6_8 - {132617, 43}, // gs_6_9 - {132618, 44}, // gs_6_10 - {197632, 45}, // hs_4_0 - {197633, 46}, // hs_4_1 - {197888, 47}, // hs_5_0 - {197889, 48}, // hs_5_1 - {198144, 49}, // hs_6_0 - {198145, 50}, // hs_6_1 - {198146, 51}, // hs_6_2 - {198147, 52}, // hs_6_3 - {198148, 53}, // hs_6_4 - {198149, 54}, // hs_6_5 - {198150, 55}, // hs_6_6 - {198151, 56}, // hs_6_7 - {198152, 57}, // hs_6_8 - {198153, 58}, // hs_6_9 - {198154, 59}, // hs_6_10 - {263168, 60}, // ds_4_0 - {263169, 61}, // ds_4_1 - {263424, 62}, // ds_5_0 - {263425, 63}, // ds_5_1 - {263680, 64}, // ds_6_0 - {263681, 65}, // ds_6_1 - {263682, 66}, // ds_6_2 - {263683, 67}, // ds_6_3 - {263684, 68}, // ds_6_4 - {263685, 69}, // ds_6_5 - {263686, 70}, // ds_6_6 - {263687, 71}, // ds_6_7 - {263688, 72}, // ds_6_8 - {263689, 73}, // ds_6_9 - {263690, 74}, // ds_6_10 - {328704, 75}, // cs_4_0 - {328705, 76}, // cs_4_1 - {328960, 77}, // cs_5_0 - {328961, 78}, // cs_5_1 - {329216, 79}, // cs_6_0 - {329217, 80}, // cs_6_1 - {329218, 81}, // cs_6_2 - {329219, 82}, // cs_6_3 - {329220, 83}, // cs_6_4 - {329221, 84}, // cs_6_5 - {329222, 85}, // cs_6_6 - {329223, 86}, // cs_6_7 - {329224, 87}, // cs_6_8 - {329225, 88}, // cs_6_9 - {329226, 89}, // cs_6_10 - {394241, 90}, // lib_4_1 - {394497, 91}, // lib_5_1 - {394753, 92}, // lib_6_1 - {394754, 93}, // lib_6_2 - {394755, 94}, // lib_6_3 - {394756, 95}, // lib_6_4 - {394757, 96}, // lib_6_5 - {394758, 97}, // lib_6_6 - {394759, 98}, // lib_6_7 - {394760, 99}, // lib_6_8 - {394761, 100}, // lib_6_9 - {394762, 101}, // lib_6_10 + {1547, 15}, // ps_6_11 + {66560, 16}, // vs_4_0 + {66561, 17}, // vs_4_1 + {66816, 18}, // vs_5_0 + {66817, 19}, // vs_5_1 + {67072, 20}, // vs_6_0 + {67073, 21}, // vs_6_1 + {67074, 22}, // vs_6_2 + {67075, 23}, // vs_6_3 + {67076, 24}, // vs_6_4 + {67077, 25}, // vs_6_5 + {67078, 26}, // vs_6_6 + {67079, 27}, // vs_6_7 + {67080, 28}, // vs_6_8 + {67081, 29}, // vs_6_9 + {67082, 30}, // vs_6_10 + {67083, 31}, // vs_6_11 + {132096, 32}, // gs_4_0 + {132097, 33}, // gs_4_1 + {132352, 34}, // gs_5_0 + {132353, 35}, // gs_5_1 + {132608, 36}, // gs_6_0 + {132609, 37}, // gs_6_1 + {132610, 38}, // gs_6_2 + {132611, 39}, // gs_6_3 + {132612, 40}, // gs_6_4 + {132613, 41}, // gs_6_5 + {132614, 42}, // gs_6_6 + {132615, 43}, // gs_6_7 + {132616, 44}, // gs_6_8 + {132617, 45}, // gs_6_9 + {132618, 46}, // gs_6_10 + {132619, 47}, // gs_6_11 + {197632, 48}, // hs_4_0 + {197633, 49}, // hs_4_1 + {197888, 50}, // hs_5_0 + {197889, 51}, // hs_5_1 + {198144, 52}, // hs_6_0 + {198145, 53}, // hs_6_1 + {198146, 54}, // hs_6_2 + {198147, 55}, // hs_6_3 + {198148, 56}, // hs_6_4 + {198149, 57}, // hs_6_5 + {198150, 58}, // hs_6_6 + {198151, 59}, // hs_6_7 + {198152, 60}, // hs_6_8 + {198153, 61}, // hs_6_9 + {198154, 62}, // hs_6_10 + {198155, 63}, // hs_6_11 + {263168, 64}, // ds_4_0 + {263169, 65}, // ds_4_1 + {263424, 66}, // ds_5_0 + {263425, 67}, // ds_5_1 + {263680, 68}, // ds_6_0 + {263681, 69}, // ds_6_1 + {263682, 70}, // ds_6_2 + {263683, 71}, // ds_6_3 + {263684, 72}, // ds_6_4 + {263685, 73}, // ds_6_5 + {263686, 74}, // ds_6_6 + {263687, 75}, // ds_6_7 + {263688, 76}, // ds_6_8 + {263689, 77}, // ds_6_9 + {263690, 78}, // ds_6_10 + {263691, 79}, // ds_6_11 + {328704, 80}, // cs_4_0 + {328705, 81}, // cs_4_1 + {328960, 82}, // cs_5_0 + {328961, 83}, // cs_5_1 + {329216, 84}, // cs_6_0 + {329217, 85}, // cs_6_1 + {329218, 86}, // cs_6_2 + {329219, 87}, // cs_6_3 + {329220, 88}, // cs_6_4 + {329221, 89}, // cs_6_5 + {329222, 90}, // cs_6_6 + {329223, 91}, // cs_6_7 + {329224, 92}, // cs_6_8 + {329225, 93}, // cs_6_9 + {329226, 94}, // cs_6_10 + {329227, 95}, // cs_6_11 + {394241, 96}, // lib_4_1 + {394497, 97}, // lib_5_1 + {394753, 98}, // lib_6_1 + {394754, 99}, // lib_6_2 + {394755, 100}, // lib_6_3 + {394756, 101}, // lib_6_4 + {394757, 102}, // lib_6_5 + {394758, 103}, // lib_6_6 + {394759, 104}, // lib_6_7 + {394760, 105}, // lib_6_8 + {394761, 106}, // lib_6_9 + {394762, 107}, // lib_6_10 + {394763, 108}, // lib_6_11 // lib_6_x is for offline linking only, and relaxes restrictions - {394767, 102}, // lib_6_x - {853509, 103}, // ms_6_5 - {853510, 104}, // ms_6_6 - {853511, 105}, // ms_6_7 - {853512, 106}, // ms_6_8 - {853513, 107}, // ms_6_9 - {853514, 108}, // ms_6_10 - {919045, 109}, // as_6_5 - {919046, 110}, // as_6_6 - {919047, 111}, // as_6_7 - {919048, 112}, // as_6_8 - {919049, 113}, // as_6_9 - {919050, 114}, // as_6_10 + {394767, 109}, // lib_6_x + {853509, 110}, // ms_6_5 + {853510, 111}, // ms_6_6 + {853511, 112}, // ms_6_7 + {853512, 113}, // ms_6_8 + {853513, 114}, // ms_6_9 + {853514, 115}, // ms_6_10 + {853515, 116}, // ms_6_11 + {919045, 117}, // as_6_5 + {919046, 118}, // as_6_6 + {919047, 119}, // as_6_7 + {919048, 120}, // as_6_8 + {919049, 121}, // as_6_9 + {919050, 122}, // as_6_10 + {919051, 123}, // as_6_11 }; unsigned hash = (unsigned)Kind << 16 | Major << 8 | Minor; auto pred = [](const std::pair &elem, unsigned val) { @@ -341,6 +351,9 @@ void ShaderModel::GetDxilVersion(unsigned &DxilMajor, case 10: DxilMinor = 10; break; + case 11: + DxilMinor = 11; + break; case kOfflineMinor: // Always update this to highest dxil version DxilMinor = DXIL::kDxilMinor; break; @@ -394,6 +407,9 @@ void ShaderModel::GetMinValidatorVersion(unsigned &ValMajor, case 10: ValMinor = 10; break; + case 11: + ValMinor = 11; + break; // VALRULE-TEXT:END case kOfflineMinor: ValMajor = 0; @@ -536,6 +552,7 @@ const ShaderModel ShaderModel::ms_ShaderModels[kNumShaderModels] = { SM(Kind::Pixel, 6, 8, "ps_6_8", 32, 8, true, true, UINT_MAX), SM(Kind::Pixel, 6, 9, "ps_6_9", 32, 8, true, true, UINT_MAX), SM(Kind::Pixel, 6, 10, "ps_6_10", 32, 8, true, true, UINT_MAX), + SM(Kind::Pixel, 6, 11, "ps_6_11", 32, 8, true, true, UINT_MAX), SM(Kind::Vertex, 4, 0, "vs_4_0", 16, 16, false, false, 0), SM(Kind::Vertex, 4, 1, "vs_4_1", 32, 32, false, false, 0), SM(Kind::Vertex, 5, 0, "vs_5_0", 32, 32, true, true, 64), @@ -551,6 +568,7 @@ const ShaderModel ShaderModel::ms_ShaderModels[kNumShaderModels] = { SM(Kind::Vertex, 6, 8, "vs_6_8", 32, 32, true, true, UINT_MAX), SM(Kind::Vertex, 6, 9, "vs_6_9", 32, 32, true, true, UINT_MAX), SM(Kind::Vertex, 6, 10, "vs_6_10", 32, 32, true, true, UINT_MAX), + SM(Kind::Vertex, 6, 11, "vs_6_11", 32, 32, true, true, UINT_MAX), SM(Kind::Geometry, 4, 0, "gs_4_0", 16, 32, false, false, 0), SM(Kind::Geometry, 4, 1, "gs_4_1", 32, 32, false, false, 0), SM(Kind::Geometry, 5, 0, "gs_5_0", 32, 32, true, true, 64), @@ -566,6 +584,7 @@ const ShaderModel ShaderModel::ms_ShaderModels[kNumShaderModels] = { SM(Kind::Geometry, 6, 8, "gs_6_8", 32, 32, true, true, UINT_MAX), SM(Kind::Geometry, 6, 9, "gs_6_9", 32, 32, true, true, UINT_MAX), SM(Kind::Geometry, 6, 10, "gs_6_10", 32, 32, true, true, UINT_MAX), + SM(Kind::Geometry, 6, 11, "gs_6_11", 32, 32, true, true, UINT_MAX), SM(Kind::Hull, 4, 0, "hs_4_0", 32, 32, false, false, 0), SM(Kind::Hull, 4, 1, "hs_4_1", 32, 32, false, false, 0), SM(Kind::Hull, 5, 0, "hs_5_0", 32, 32, true, true, 64), @@ -581,6 +600,7 @@ const ShaderModel ShaderModel::ms_ShaderModels[kNumShaderModels] = { SM(Kind::Hull, 6, 8, "hs_6_8", 32, 32, true, true, UINT_MAX), SM(Kind::Hull, 6, 9, "hs_6_9", 32, 32, true, true, UINT_MAX), SM(Kind::Hull, 6, 10, "hs_6_10", 32, 32, true, true, UINT_MAX), + SM(Kind::Hull, 6, 11, "hs_6_11", 32, 32, true, true, UINT_MAX), SM(Kind::Domain, 4, 0, "ds_4_0", 32, 32, false, false, 0), SM(Kind::Domain, 4, 1, "ds_4_1", 32, 32, false, false, 0), SM(Kind::Domain, 5, 0, "ds_5_0", 32, 32, true, true, 64), @@ -596,6 +616,7 @@ const ShaderModel ShaderModel::ms_ShaderModels[kNumShaderModels] = { SM(Kind::Domain, 6, 8, "ds_6_8", 32, 32, true, true, UINT_MAX), SM(Kind::Domain, 6, 9, "ds_6_9", 32, 32, true, true, UINT_MAX), SM(Kind::Domain, 6, 10, "ds_6_10", 32, 32, true, true, UINT_MAX), + SM(Kind::Domain, 6, 11, "ds_6_11", 32, 32, true, true, UINT_MAX), SM(Kind::Compute, 4, 0, "cs_4_0", 0, 0, false, false, 0), SM(Kind::Compute, 4, 1, "cs_4_1", 0, 0, false, false, 0), SM(Kind::Compute, 5, 0, "cs_5_0", 0, 0, true, true, 64), @@ -611,6 +632,7 @@ const ShaderModel ShaderModel::ms_ShaderModels[kNumShaderModels] = { SM(Kind::Compute, 6, 8, "cs_6_8", 0, 0, true, true, UINT_MAX), SM(Kind::Compute, 6, 9, "cs_6_9", 0, 0, true, true, UINT_MAX), SM(Kind::Compute, 6, 10, "cs_6_10", 0, 0, true, true, UINT_MAX), + SM(Kind::Compute, 6, 11, "cs_6_11", 0, 0, true, true, UINT_MAX), SM(Kind::Library, 4, 1, "lib_4_1", 0, 0, false, false, 0), SM(Kind::Library, 5, 1, "lib_5_1", 0, 0, true, true, 64), SM(Kind::Library, 6, 1, "lib_6_1", 0, 0, true, true, UINT_MAX), @@ -623,6 +645,7 @@ const ShaderModel ShaderModel::ms_ShaderModels[kNumShaderModels] = { SM(Kind::Library, 6, 8, "lib_6_8", 0, 0, true, true, UINT_MAX), SM(Kind::Library, 6, 9, "lib_6_9", 0, 0, true, true, UINT_MAX), SM(Kind::Library, 6, 10, "lib_6_10", 0, 0, true, true, UINT_MAX), + SM(Kind::Library, 6, 11, "lib_6_11", 0, 0, true, true, UINT_MAX), // lib_6_x is for offline linking only, and relaxes restrictions SM(Kind::Library, 6, kOfflineMinor, "lib_6_x", 32, 32, true, true, UINT_MAX), @@ -632,12 +655,14 @@ const ShaderModel ShaderModel::ms_ShaderModels[kNumShaderModels] = { SM(Kind::Mesh, 6, 8, "ms_6_8", 0, 0, true, true, UINT_MAX), SM(Kind::Mesh, 6, 9, "ms_6_9", 0, 0, true, true, UINT_MAX), SM(Kind::Mesh, 6, 10, "ms_6_10", 0, 0, true, true, UINT_MAX), + SM(Kind::Mesh, 6, 11, "ms_6_11", 0, 0, true, true, UINT_MAX), SM(Kind::Amplification, 6, 5, "as_6_5", 0, 0, true, true, UINT_MAX), SM(Kind::Amplification, 6, 6, "as_6_6", 0, 0, true, true, UINT_MAX), SM(Kind::Amplification, 6, 7, "as_6_7", 0, 0, true, true, UINT_MAX), SM(Kind::Amplification, 6, 8, "as_6_8", 0, 0, true, true, UINT_MAX), SM(Kind::Amplification, 6, 9, "as_6_9", 0, 0, true, true, UINT_MAX), SM(Kind::Amplification, 6, 10, "as_6_10", 0, 0, true, true, UINT_MAX), + SM(Kind::Amplification, 6, 11, "as_6_11", 0, 0, true, true, UINT_MAX), // Values before Invalid must remain sorted by Kind, then Major, then Minor. SM(Kind::Invalid, 0, 0, "invalid", 0, 0, false, false, 0), // VALRULE-TEXT:END diff --git a/tools/clang/test/CodeGenDXIL/reflection/experimental_rdat.hlsl b/tools/clang/test/CodeGenDXIL/reflection/experimental_rdat.hlsl index a3f4c18813..44977d5e7e 100644 --- a/tools/clang/test/CodeGenDXIL/reflection/experimental_rdat.hlsl +++ b/tools/clang/test/CodeGenDXIL/reflection/experimental_rdat.hlsl @@ -1,17 +1,17 @@ // Note: Base this on highest the experimental version, or released+1. -// REQUIRES: dxil-1-10 -// RUN: %dxc %s -Tlib_6_10 -Vd -validator-version 0.0 -Fo %t +// REQUIRES: dxil-1-11 +// RUN: %dxc %s -Tlib_6_11 -Vd -validator-version 0.0 -Fo %t // RUN: %dxa %t -dumprdat | FileCheck %s -check-prefixes=CHECK,EXP -// RUN: %dxc %s -Tlib_6_10 -Fo %t +// RUN: %dxc %s -Tlib_6_11 -Fo %t // RUN: %dxa %t -dumprdat | FileCheck %s -check-prefixes=CHECK,EXP -// RUN: %dxc %s -Tlib_6_10 -validator-version 1.10 -Fo %t +// RUN: %dxc %s -Tlib_6_11 -validator-version 1.11 -Fo %t // RUN: %dxa %t -dumprdat | FileCheck %s -check-prefixes=CHECK,EXP // No experimental RDAT for released shader models even with default or latest // validator versions. -// RUN: %dxc %s -Tlib_6_9 -Fo %t +// RUN: %dxc %s -Tlib_6_10 -Fo %t // RUN: %dxa %t -dumprdat | FileCheck %s -check-prefixes=CHECK,NOEXP -// RUN: %dxc %s -Tlib_6_9 -validator-version 1.10 -Fo %t +// RUN: %dxc %s -Tlib_6_10 -validator-version 1.11 -Fo %t // RUN: %dxa %t -dumprdat | FileCheck %s -check-prefixes=CHECK,NOEXP // Make sure experimental RDAT is not emitted for released shader models, diff --git a/tools/clang/test/CodeGenDXIL/reflection/experimental_rdat_rel_sm.hlsl b/tools/clang/test/CodeGenDXIL/reflection/experimental_rdat_rel_sm.hlsl index bc582dca05..0d1508a16f 100644 --- a/tools/clang/test/CodeGenDXIL/reflection/experimental_rdat_rel_sm.hlsl +++ b/tools/clang/test/CodeGenDXIL/reflection/experimental_rdat_rel_sm.hlsl @@ -1,13 +1,19 @@ // Note: Add RUN lines for newer released shader models to this test when available. -// REQUIRES: dxil-1-9 +// REQUIRES: dxil-1-11 // RUN: %dxc %s -Tlib_6_x -Fo %t // RUN: %dxa %t -dumprdat | FileCheck %s -check-prefixes=CHECK,EXP -// RUN: %dxc %s -Tlib_6_9 -Vd -validator-version 0.0 -Fo %t +// RUN: %dxc %s -Tlib_6_10 -Vd -validator-version 0.0 -Fo %t // RUN: %dxa %t -dumprdat | FileCheck %s -check-prefixes=CHECK,EXP -// RUN: %dxc %s -Tlib_6_9 -Fo %t +// RUN: %dxc %s -Tlib_6_10 -Fo %t // RUN: %dxa %t -dumprdat | FileCheck %s -check-prefixes=CHECK,NOEXP -// RUN: %dxc %s -Tlib_6_9 -validator-version 1.9 -Fo %t +// RUN: %dxc %s -Tlib_6_10 -validator-version 1.10 -Fo %t // RUN: %dxa %t -dumprdat | FileCheck %s -check-prefixes=CHECK,NOEXP +// RUN: %dxc %s -Tlib_6_11 -Vd -validator-version 0.0 -Fo %t +// RUN: %dxa %t -dumprdat | FileCheck %s -check-prefixes=CHECK,EXP +// RUN: %dxc %s -Tlib_6_11 -Fo %t +// RUN: %dxa %t -dumprdat | FileCheck %s -check-prefixes=CHECK,EXP +// RUN: %dxc %s -Tlib_6_11 -validator-version 1.11 -Fo %t +// RUN: %dxa %t -dumprdat | FileCheck %s -check-prefixes=CHECK,EXP // Make sure experimental RDAT is not emitted for released shader models, // unless the validator version is 0.0 (no validation supported). Validator diff --git a/tools/clang/test/DXC/experimental-dxil-6-10-op.ll b/tools/clang/test/DXC/experimental-dxil-6-11-op.ll similarity index 73% rename from tools/clang/test/DXC/experimental-dxil-6-10-op.ll rename to tools/clang/test/DXC/experimental-dxil-6-11-op.ll index 749c0c2cf6..f1beeedae0 100644 --- a/tools/clang/test/DXC/experimental-dxil-6-10-op.ll +++ b/tools/clang/test/DXC/experimental-dxil-6-11-op.ll @@ -1,7 +1,8 @@ -; REQUIRES: dxil-1-10 +; REQUIRES: dxil-1-11 ; RUN: %dxa %s -o %t.dxil | FileCheck %s -check-prefix=DXA ; RUN: %dxc -dumpbin %t.dxil | FileCheck %s -check-prefix=DXIL -; RUN: not %dxv %t.dxil 2>&1 | FileCheck %s -check-prefix=VAL +; RUN: %dxv %t.dxil -o %t.hash.dxil 2>&1 | FileCheck %s -check-prefix=VAL +; RUN: %dxa %t.hash.dxil -dumphash | FileCheck %s -check-prefix=HASH ; DXA: Assembly succeeded. @@ -9,8 +10,10 @@ ; DXIL: declare void @dx.op.nop(i32) #[[ATTR:[0-9]+]] ; DXIL: attributes #[[ATTR]] = { nounwind readnone } -; VAL: Function: main: error: Opcode ExperimentalNop not valid in shader model cs_6_10. -; VAL: Validation failed. +; VAL: Validation succeeded. + +; Make sure it's the PREVIEW hash. +; HASH: Validation hash: 0x02020202020202020202020202020202 target datalayout = "e-m:e-p:32:32-i1:32-i8:8-i16:16-i32:32-i64:64-f16:16-f32:32-f64:64-n8:16:32:64" target triple = "dxil-ms-dx" @@ -33,8 +36,8 @@ attributes #0 = { nounwind readnone } !dx.entryPoints = !{!4} !0 = !{!"custom IR"} -!1 = !{i32 1, i32 10} -!2 = !{!"cs", i32 6, i32 10} +!1 = !{i32 1, i32 11} +!2 = !{!"cs", i32 6, i32 11} !3 = !{null, null, null, null} !4 = !{void ()* @main, !"main", null, !3, !5} !5 = !{i32 0, i64 0, i32 4, !6} diff --git a/tools/clang/test/LitDXILValidation/experimental-op-on-release-sm.ll b/tools/clang/test/LitDXILValidation/experimental-op-on-release-sm.ll index 14a7f1691d..0e04cb3344 100644 --- a/tools/clang/test/LitDXILValidation/experimental-op-on-release-sm.ll +++ b/tools/clang/test/LitDXILValidation/experimental-op-on-release-sm.ll @@ -35,8 +35,8 @@ attributes #0 = { nounwind readnone } !dx.entryPoints = !{!6} !0 = !{!"custom IR"} -!1 = !{i32 1, i32 9} -!2 = !{!"cs", i32 6, i32 9} +!1 = !{i32 1, i32 10} +!2 = !{!"cs", i32 6, i32 10} !3 = !{null, null, null, null} !6 = !{void ()* @main, !"main", null, !3, !7} !7 = !{i32 0, i64 0, i32 4, !8} diff --git a/tools/clang/unittests/HLSL/ValidationTest.cpp b/tools/clang/unittests/HLSL/ValidationTest.cpp index 8df9dcfb73..0e64c647c7 100644 --- a/tools/clang/unittests/HLSL/ValidationTest.cpp +++ b/tools/clang/unittests/HLSL/ValidationTest.cpp @@ -4180,8 +4180,12 @@ TEST_F(ValidationTest, ValidateWithHash) { if (m_ver.SkipDxilVersion(1, ShaderModel::kHighestReleasedMinor)) return; CComPtr pProgram; + LPCSTR pShaderModel = ShaderModel::Get(ShaderModel::Kind::Pixel, + ShaderModel::kHighestReleasedMajor, + ShaderModel::kHighestReleasedMinor) + ->GetName(); CompileSource("float4 main(float a:A, float b:B) : SV_Target { return 1; }", - "ps_6_0", &pProgram); + pShaderModel, &pProgram); CComPtr pValidator; CComPtr pResult; diff --git a/utils/hct/hctdb_instrhelp.py b/utils/hct/hctdb_instrhelp.py index a087a2992e..af5f7c5484 100644 --- a/utils/hct/hctdb_instrhelp.py +++ b/utils/hct/hctdb_instrhelp.py @@ -1736,7 +1736,7 @@ def get_extended_table_opcode_enum_decls(): # since there can be pre-release versions that are higher # than the last released version highest_major = 6 -highest_minor = 10 +highest_minor = 11 highest_shader_models = {4: 1, 5: 1, 6: highest_minor} # fetch the last released version from latest-released.json diff --git a/utils/version/latest-release.json b/utils/version/latest-release.json index 4843648665..b8609f1a8a 100644 --- a/utils/version/latest-release.json +++ b/utils/version/latest-release.json @@ -1,8 +1,8 @@ { "version": { "major": "1", - "minor": "9", + "minor": "10", "rev": "2609" }, - "sha": "b9e9f840b3ed530a7f67010ee899a02a613d3586" + "sha": "6a069afc1cca9147d8b7d16fa2fa56122b42cb65" } From ad60bf948cf3337a9e2e1f89b4bbda9b59a1fc83 Mon Sep 17 00:00:00 2001 From: Ashley Coleman Date: Wed, 23 Sep 2026 16:26:09 -0600 Subject: [PATCH 2/4] update release notes --- docs/ReleaseNotes.md | 58 ++++++++++++++++++-------------------------- 1 file changed, 23 insertions(+), 35 deletions(-) diff --git a/docs/ReleaseNotes.md b/docs/ReleaseNotes.md index d0d4f9cd5d..49cec783c8 100644 --- a/docs/ReleaseNotes.md +++ b/docs/ReleaseNotes.md @@ -22,6 +22,29 @@ The included licenses apply to the following files: Place release notes for the upcoming release below this line and remove this line upon naming the release. Refer to previous for appropriate section names. +#### Shader Model 6.10 + +- Shader Model 6.10 and DXIL 1.10 are now available in retail. Detailed blogs + posts will be updated here once available. SM6.10 introduced the following + APIs: LinAlg Matrix, WaveGroup Index and Count, DebugBreak, Clustered + Geometry, and Triangle Object Positions. + +#### HLSL Language + +- Starting with HLSL 202x, the count in `[unroll(N)]` is a partial-unroll hint + and no longer limits the number of loop iterations + [#8789](https://github.com/microsoft/DirectXShaderCompiler/issues/8789). +- Casting a scalar to a struct or array containing a resource is now an error + instead of crashing + [#6661](https://github.com/microsoft/DirectXShaderCompiler/issues/6661). +- Added the `-Whlsl-2026-compat` warning group for identifying issues + with language changes introduced in HLSL 2026. +- The legacy effects syntax support is removed in HLSL 202x + [#8480](https://github.com/microsoft/DirectXShaderCompiler/issues/8480). +- The `shared` and `uniform` keywords are removed in HLSL 202x, with + compatibility warnings available for earlier language versions + [#8482](https://github.com/microsoft/DirectXShaderCompiler/issues/8482). + #### Bug Fixes - Fixed derivative operations being moved into divergent control flow, which @@ -48,25 +71,6 @@ line upon naming the release. Refer to previous for appropriate section names. or on one of its fields with payload access qualifiers enabled [#6464](https://github.com/microsoft/DirectXShaderCompiler/issues/6464). -#### HLSL Language - -- Starting with HLSL 202x, the count in `[unroll(N)]` is a partial-unroll hint - and no longer limits the number of loop iterations - [#8789](https://github.com/microsoft/DirectXShaderCompiler/issues/8789). -- Casting a scalar to a struct or array containing a resource is now an error - instead of crashing - [#6661](https://github.com/microsoft/DirectXShaderCompiler/issues/6661). -- Added the `-Whlsl-2026-compat` warning group for identifying issues - with language changes introduced in HLSL 2026. -- The legacy effects syntax support is removed in HLSL 202x - [#8480](https://github.com/microsoft/DirectXShaderCompiler/issues/8480). -- The `shared` and `uniform` keywords are removed in HLSL 202x, with - compatibility warnings available for earlier language versions - [#8482](https://github.com/microsoft/DirectXShaderCompiler/issues/8482). - -#### Shader Model 6.10 - -- Shader Model 6.10 and DXIL 1.10 now use retail validation hashes. #### SPIR-V @@ -94,22 +98,6 @@ part of the next non-preview release. - Added experimental Shader Model 6.11 target profiles. -#### Experimental Shader Model 6.10 - -These are incremental changes to the experimental Shader Model 6.10 features that -first shipped in the 1.10.2605 preview. - -- Fixed the set of numeric types allowed in LinAlg matrix intrinsics - [#8271](https://github.com/microsoft/DirectXShaderCompiler/issues/8271). -- Corrected the parameter order of `InterlockedAccumulate` - [#8459](https://github.com/microsoft/DirectXShaderCompiler/pull/8459). -- Added validation of LinAlg matrix builtin parameters and result K dimension - [#8588](https://github.com/microsoft/DirectXShaderCompiler/pull/8588). -- Restricted the component types allowed in LinAlg matrices - [#8608](https://github.com/microsoft/DirectXShaderCompiler/pull/8608). -- Added `BFloat16` to the ComponentType enum in DxilConstants and the linalg - header [#8722](https://github.com/microsoft/DirectXShaderCompiler/issues/8722). -- Removed work graph support from Shader Model 6.10, and DXIL 1.10 [microsoft/hlsl-specs#915](https://github.com/microsoft/hlsl-specs/issues/915). ### Version 1.9.2607 From 5830bf43efcc78e698b335a54b12b2908ab9aabf Mon Sep 17 00:00:00 2001 From: Ashley Coleman Date: Wed, 23 Sep 2026 16:30:48 -0600 Subject: [PATCH 3/4] address comments --- utils/version/version.inc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/version/version.inc b/utils/version/version.inc index e705e7a09e..bb7f0db8f5 100644 --- a/utils/version/version.inc +++ b/utils/version/version.inc @@ -13,7 +13,7 @@ #ifdef RC_VERSION_FIELD_2 #undef RC_VERSION_FIELD_2 #endif -#define RC_VERSION_FIELD_2 9 +#define RC_VERSION_FIELD_2 10 #ifdef RC_VERSION_FIELD_3 #undef RC_VERSION_FIELD_3 @@ -28,7 +28,7 @@ #ifdef RC_FILE_VERSION #undef RC_FILE_VERSION #endif -#define RC_FILE_VERSION "1.9.2609.0" +#define RC_FILE_VERSION "1.10.2609.0" #ifdef RC_FILE_DESCRIPTION #undef RC_FILE_DESCRIPTION @@ -49,7 +49,7 @@ #ifdef RC_PRODUCT_VERSION #undef RC_PRODUCT_VERSION #endif -#define RC_PRODUCT_VERSION "1.9.2609.0" +#define RC_PRODUCT_VERSION "1.10.2609.0" #ifdef HLSL_TOOL_NAME #undef HLSL_TOOL_NAME From aef69503d09796fb12912cd04081b62c06230e25 Mon Sep 17 00:00:00 2001 From: Ashley Coleman Date: Wed, 23 Sep 2026 16:33:18 -0600 Subject: [PATCH 4/4] address comments --- docs/ReleaseNotes.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/ReleaseNotes.md b/docs/ReleaseNotes.md index 49cec783c8..153e761598 100644 --- a/docs/ReleaseNotes.md +++ b/docs/ReleaseNotes.md @@ -24,10 +24,10 @@ line upon naming the release. Refer to previous for appropriate section names. #### Shader Model 6.10 -- Shader Model 6.10 and DXIL 1.10 are now available in retail. Detailed blogs - posts will be updated here once available. SM6.10 introduced the following - APIs: LinAlg Matrix, WaveGroup Index and Count, DebugBreak, Clustered - Geometry, and Triangle Object Positions. +- Shader Model 6.10 and DXIL 1.10 are now available in retail, introducing + LinAlg Matrix, WaveGroup Index and Count, DebugBreak, Clustered Geometry, and + Triangle Object Positions, with detailed blog posts to be linked here once + available. #### HLSL Language