|
@@ -12,6 +12,7 @@
|
|
#include "dxc/DXIL/DxilShaderModel.h"
|
|
#include "dxc/DXIL/DxilShaderModel.h"
|
|
#include "dxc/DXIL/DxilSemantic.h"
|
|
#include "dxc/DXIL/DxilSemantic.h"
|
|
#include "dxc/Support/Global.h"
|
|
#include "dxc/Support/Global.h"
|
|
|
|
+#include <unordered_map>
|
|
|
|
|
|
|
|
|
|
namespace hlsl {
|
|
namespace hlsl {
|
|
@@ -54,12 +55,15 @@ bool ShaderModel::IsValidForDxil() const {
|
|
switch (m_Major) {
|
|
switch (m_Major) {
|
|
case 6: {
|
|
case 6: {
|
|
switch (m_Minor) {
|
|
switch (m_Minor) {
|
|
|
|
+ /* <py::lines('VALRULE-TEXT')>hctdb_instrhelp.get_is_valid_for_dxil()</py>*/
|
|
|
|
+ // VALRULE-TEXT:BEGIN
|
|
case 0:
|
|
case 0:
|
|
case 1:
|
|
case 1:
|
|
case 2:
|
|
case 2:
|
|
case 3:
|
|
case 3:
|
|
case 4:
|
|
case 4:
|
|
case 5:
|
|
case 5:
|
|
|
|
+ // VALRULE-TEXT:END
|
|
return true;
|
|
return true;
|
|
case kOfflineMinor:
|
|
case kOfflineMinor:
|
|
return m_Kind == Kind::Library;
|
|
return m_Kind == Kind::Library;
|
|
@@ -75,31 +79,82 @@ bool ShaderModel::IsValidForModule() const {
|
|
return IsValid() && !IsRay();
|
|
return IsValid() && !IsRay();
|
|
}
|
|
}
|
|
|
|
|
|
-const ShaderModel *ShaderModel::Get(unsigned Idx) {
|
|
|
|
- DXASSERT_NOMSG(Idx < kNumShaderModels - 1);
|
|
|
|
- if (Idx < kNumShaderModels - 1)
|
|
|
|
- return &ms_ShaderModels[Idx];
|
|
|
|
- else
|
|
|
|
- return GetInvalid();
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
const ShaderModel *ShaderModel::Get(Kind Kind, unsigned Major, unsigned Minor) {
|
|
const ShaderModel *ShaderModel::Get(Kind Kind, unsigned Major, unsigned Minor) {
|
|
- const ShaderModel *pSM = std::lower_bound(
|
|
|
|
- &ms_ShaderModels[0], &ms_ShaderModels[kNumShaderModels - 1],
|
|
|
|
- ShaderModel(Kind, Major, Minor, "", 0, 0, false, false, 0),
|
|
|
|
- [](const ShaderModel& a, const ShaderModel& b) -> bool {
|
|
|
|
- if (a.m_Kind < b.m_Kind) return 1;
|
|
|
|
- if (b.m_Kind < a.m_Kind) return 0;
|
|
|
|
- if (a.m_Major < b.m_Major) return 1;
|
|
|
|
- if (b.m_Major < a.m_Major) return 0;
|
|
|
|
- if (a.m_Minor < b.m_Minor) return 1;
|
|
|
|
- return 0;
|
|
|
|
- });
|
|
|
|
- if (pSM && pSM < ms_ShaderModels + kNumShaderModels &&
|
|
|
|
- pSM->m_Kind == Kind && pSM->m_Major == Major && pSM->m_Minor == Minor)
|
|
|
|
- return pSM;
|
|
|
|
-
|
|
|
|
- return GetInvalid();
|
|
|
|
|
|
+ /* <py::lines('VALRULE-TEXT')>hctdb_instrhelp.get_shader_model_get()</py>*/
|
|
|
|
+ // VALRULE-TEXT:BEGIN
|
|
|
|
+ const static std::unordered_map<unsigned, unsigned> hashToIdxMap = {
|
|
|
|
+ {1024,0}, //ps_4_0
|
|
|
|
+ {1025,1}, //ps_4_1
|
|
|
|
+ {1280,2}, //ps_5_0
|
|
|
|
+ {1281,3}, //ps_5_1
|
|
|
|
+ {1536,4}, //ps_6_0
|
|
|
|
+ {1537,5}, //ps_6_1
|
|
|
|
+ {1538,6}, //ps_6_2
|
|
|
|
+ {1539,7}, //ps_6_3
|
|
|
|
+ {1540,8}, //ps_6_4
|
|
|
|
+ {1541,9}, //ps_6_5
|
|
|
|
+ {66560,10}, //vs_4_0
|
|
|
|
+ {66561,11}, //vs_4_1
|
|
|
|
+ {66816,12}, //vs_5_0
|
|
|
|
+ {66817,13}, //vs_5_1
|
|
|
|
+ {67072,14}, //vs_6_0
|
|
|
|
+ {67073,15}, //vs_6_1
|
|
|
|
+ {67074,16}, //vs_6_2
|
|
|
|
+ {67075,17}, //vs_6_3
|
|
|
|
+ {67076,18}, //vs_6_4
|
|
|
|
+ {67077,19}, //vs_6_5
|
|
|
|
+ {132096,20}, //gs_4_0
|
|
|
|
+ {132097,21}, //gs_4_1
|
|
|
|
+ {132352,22}, //gs_5_0
|
|
|
|
+ {132353,23}, //gs_5_1
|
|
|
|
+ {132608,24}, //gs_6_0
|
|
|
|
+ {132609,25}, //gs_6_1
|
|
|
|
+ {132610,26}, //gs_6_2
|
|
|
|
+ {132611,27}, //gs_6_3
|
|
|
|
+ {132612,28}, //gs_6_4
|
|
|
|
+ {132613,29}, //gs_6_5
|
|
|
|
+ {197888,30}, //hs_5_0
|
|
|
|
+ {197889,31}, //hs_5_1
|
|
|
|
+ {198144,32}, //hs_6_0
|
|
|
|
+ {198145,33}, //hs_6_1
|
|
|
|
+ {198146,34}, //hs_6_2
|
|
|
|
+ {198147,35}, //hs_6_3
|
|
|
|
+ {198148,36}, //hs_6_4
|
|
|
|
+ {198149,37}, //hs_6_5
|
|
|
|
+ {263424,38}, //ds_5_0
|
|
|
|
+ {263425,39}, //ds_5_1
|
|
|
|
+ {263680,40}, //ds_6_0
|
|
|
|
+ {263681,41}, //ds_6_1
|
|
|
|
+ {263682,42}, //ds_6_2
|
|
|
|
+ {263683,43}, //ds_6_3
|
|
|
|
+ {263684,44}, //ds_6_4
|
|
|
|
+ {263685,45}, //ds_6_5
|
|
|
|
+ {328704,46}, //cs_4_0
|
|
|
|
+ {328705,47}, //cs_4_1
|
|
|
|
+ {328960,48}, //cs_5_0
|
|
|
|
+ {328961,49}, //cs_5_1
|
|
|
|
+ {329216,50}, //cs_6_0
|
|
|
|
+ {329217,51}, //cs_6_1
|
|
|
|
+ {329218,52}, //cs_6_2
|
|
|
|
+ {329219,53}, //cs_6_3
|
|
|
|
+ {329220,54}, //cs_6_4
|
|
|
|
+ {329221,55}, //cs_6_5
|
|
|
|
+ {394753,56}, //lib_6_1
|
|
|
|
+ {394754,57}, //lib_6_2
|
|
|
|
+ {394755,58}, //lib_6_3
|
|
|
|
+ {394756,59}, //lib_6_4
|
|
|
|
+ {394757,60}, //lib_6_5
|
|
|
|
+ // lib_6_x is for offline linking only, and relaxes restrictions
|
|
|
|
+ {394767,61},//lib_6_x
|
|
|
|
+ {853509,62}, //ms_6_5
|
|
|
|
+ {919045,63}, //as_6_5
|
|
|
|
+ };
|
|
|
|
+ unsigned hash = (unsigned)Kind << 16 | Major << 8 | Minor;
|
|
|
|
+ auto it = hashToIdxMap.find(hash);
|
|
|
|
+ if (it == hashToIdxMap.end())
|
|
|
|
+ return GetInvalid();
|
|
|
|
+ return &ms_ShaderModels[it->second];
|
|
|
|
+ // VALRULE-TEXT:END
|
|
}
|
|
}
|
|
|
|
|
|
const ShaderModel *ShaderModel::GetByName(const char *pszName) {
|
|
const ShaderModel *ShaderModel::GetByName(const char *pszName) {
|
|
@@ -141,30 +196,33 @@ const ShaderModel *ShaderModel::GetByName(const char *pszName) {
|
|
switch (pszName[Idx++]) {
|
|
switch (pszName[Idx++]) {
|
|
case '0': Minor = 0; break;
|
|
case '0': Minor = 0; break;
|
|
case '1': Minor = 1; break;
|
|
case '1': Minor = 1; break;
|
|
- case '2':
|
|
|
|
- if (Major == 6) {
|
|
|
|
- Minor = 2;
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- else return GetInvalid();
|
|
|
|
- case '3':
|
|
|
|
- if (Major == 6) {
|
|
|
|
- Minor = 3;
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- else return GetInvalid();
|
|
|
|
- case '4':
|
|
|
|
- if (Major == 6) {
|
|
|
|
- Minor = 4;
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- else return GetInvalid();
|
|
|
|
- case '5':
|
|
|
|
- if (Major == 6) {
|
|
|
|
- Minor = 5;
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- else return GetInvalid();
|
|
|
|
|
|
+ /* <py::lines('VALRULE-TEXT')>hctdb_instrhelp.get_shader_model_by_name()</py>*/
|
|
|
|
+ // VALRULE-TEXT:BEGIN
|
|
|
|
+ case '2':
|
|
|
|
+ if (Major == 6) {
|
|
|
|
+ Minor = 2;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ else return GetInvalid();
|
|
|
|
+ case '3':
|
|
|
|
+ if (Major == 6) {
|
|
|
|
+ Minor = 3;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ else return GetInvalid();
|
|
|
|
+ case '4':
|
|
|
|
+ if (Major == 6) {
|
|
|
|
+ Minor = 4;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ else return GetInvalid();
|
|
|
|
+ case '5':
|
|
|
|
+ if (Major == 6) {
|
|
|
|
+ Minor = 5;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ else return GetInvalid();
|
|
|
|
+ // VALRULE-TEXT:END
|
|
case 'x':
|
|
case 'x':
|
|
if (kind == Kind::Library && Major == 6) {
|
|
if (kind == Kind::Library && Major == 6) {
|
|
Minor = kOfflineMinor;
|
|
Minor = kOfflineMinor;
|
|
@@ -183,6 +241,8 @@ void ShaderModel::GetDxilVersion(unsigned &DxilMajor, unsigned &DxilMinor) const
|
|
DXASSERT(IsValidForDxil(), "invalid shader model");
|
|
DXASSERT(IsValidForDxil(), "invalid shader model");
|
|
DxilMajor = 1;
|
|
DxilMajor = 1;
|
|
switch (m_Minor) {
|
|
switch (m_Minor) {
|
|
|
|
+ /* <py::lines('VALRULE-TEXT')>hctdb_instrhelp.get_dxil_version()</py>*/
|
|
|
|
+ // VALRULE-TEXT:BEGIN
|
|
case 0:
|
|
case 0:
|
|
DxilMinor = 0;
|
|
DxilMinor = 0;
|
|
break;
|
|
break;
|
|
@@ -199,9 +259,12 @@ void ShaderModel::GetDxilVersion(unsigned &DxilMajor, unsigned &DxilMinor) const
|
|
DxilMinor = 4;
|
|
DxilMinor = 4;
|
|
break;
|
|
break;
|
|
case 5:
|
|
case 5:
|
|
|
|
+ DxilMinor = 5;
|
|
|
|
+ break;
|
|
case kOfflineMinor: // Always update this to highest dxil version
|
|
case kOfflineMinor: // Always update this to highest dxil version
|
|
DxilMinor = 5;
|
|
DxilMinor = 5;
|
|
break;
|
|
break;
|
|
|
|
+ // VALRULE-TEXT:END
|
|
default:
|
|
default:
|
|
DXASSERT(0, "IsValidForDxil() should have caught this.");
|
|
DXASSERT(0, "IsValidForDxil() should have caught this.");
|
|
break;
|
|
break;
|
|
@@ -212,6 +275,8 @@ void ShaderModel::GetMinValidatorVersion(unsigned &ValMajor, unsigned &ValMinor)
|
|
DXASSERT(IsValidForDxil(), "invalid shader model");
|
|
DXASSERT(IsValidForDxil(), "invalid shader model");
|
|
ValMajor = 1;
|
|
ValMajor = 1;
|
|
switch (m_Minor) {
|
|
switch (m_Minor) {
|
|
|
|
+ /* <py::lines('VALRULE-TEXT')>hctdb_instrhelp.get_min_validator_version()</py>*/
|
|
|
|
+ // VALRULE-TEXT:BEGIN
|
|
case 0:
|
|
case 0:
|
|
ValMinor = 0;
|
|
ValMinor = 0;
|
|
break;
|
|
break;
|
|
@@ -230,6 +295,7 @@ void ShaderModel::GetMinValidatorVersion(unsigned &ValMajor, unsigned &ValMinor)
|
|
case 5:
|
|
case 5:
|
|
ValMinor = 5;
|
|
ValMinor = 5;
|
|
break;
|
|
break;
|
|
|
|
+ // VALRULE-TEXT:END
|
|
case kOfflineMinor:
|
|
case kOfflineMinor:
|
|
ValMajor = 0;
|
|
ValMajor = 0;
|
|
ValMinor = 0;
|
|
ValMinor = 0;
|
|
@@ -265,82 +331,76 @@ typedef ShaderModel SM;
|
|
typedef Semantic SE;
|
|
typedef Semantic SE;
|
|
const ShaderModel ShaderModel::ms_ShaderModels[kNumShaderModels] = {
|
|
const ShaderModel ShaderModel::ms_ShaderModels[kNumShaderModels] = {
|
|
// IR OR UAV? TyUAV? UAV base
|
|
// IR OR UAV? TyUAV? UAV base
|
|
- SM(Kind::Pixel, 4, 0, "ps_4_0", 32, 8, false, false, 0),
|
|
|
|
- SM(Kind::Pixel, 4, 1, "ps_4_1", 32, 8, false, false, 0),
|
|
|
|
- SM(Kind::Pixel, 5, 0, "ps_5_0", 32, 8, true, true, 64),
|
|
|
|
- SM(Kind::Pixel, 5, 1, "ps_5_1", 32, 8, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Pixel, 6, 0, "ps_6_0", 32, 8, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Pixel, 6, 1, "ps_6_1", 32, 8, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Pixel, 6, 2, "ps_6_2", 32, 8, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Pixel, 6, 3, "ps_6_3", 32, 8, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Pixel, 6, 4, "ps_6_4", 32, 8, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Pixel, 6, 5, "ps_6_5", 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),
|
|
|
|
- SM(Kind::Vertex, 5, 1, "vs_5_1", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Vertex, 6, 0, "vs_6_0", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Vertex, 6, 1, "vs_6_1", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Vertex, 6, 2, "vs_6_2", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Vertex, 6, 3, "vs_6_3", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Vertex, 6, 4, "vs_6_4", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Vertex, 6, 5, "vs_6_5", 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),
|
|
|
|
- SM(Kind::Geometry, 5, 1, "gs_5_1", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Geometry, 6, 0, "gs_6_0", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Geometry, 6, 1, "gs_6_1", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Geometry, 6, 2, "gs_6_2", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Geometry, 6, 3, "gs_6_3", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Geometry, 6, 4, "gs_6_4", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Geometry, 6, 5, "gs_6_5", 32, 32, true, true, UINT_MAX),
|
|
|
|
-
|
|
|
|
- SM(Kind::Hull, 5, 0, "hs_5_0", 32, 32, true, true, 64),
|
|
|
|
- SM(Kind::Hull, 5, 1, "hs_5_1", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Hull, 6, 0, "hs_6_0", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Hull, 6, 1, "hs_6_1", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Hull, 6, 2, "hs_6_2", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Hull, 6, 3, "hs_6_3", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Hull, 6, 4, "hs_6_4", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Hull, 6, 5, "hs_6_5", 32, 32, true, true, UINT_MAX),
|
|
|
|
-
|
|
|
|
- SM(Kind::Domain, 5, 0, "ds_5_0", 32, 32, true, true, 64),
|
|
|
|
- SM(Kind::Domain, 5, 1, "ds_5_1", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Domain, 6, 0, "ds_6_0", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Domain, 6, 1, "ds_6_1", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Domain, 6, 2, "ds_6_2", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Domain, 6, 3, "ds_6_3", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Domain, 6, 4, "ds_6_4", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Domain, 6, 5, "ds_6_5", 32, 32, true, true, UINT_MAX),
|
|
|
|
-
|
|
|
|
- SM(Kind::Compute, 4, 0, "cs_4_0", 0, 0, true, false, 1),
|
|
|
|
- SM(Kind::Compute, 4, 1, "cs_4_1", 0, 0, true, false, 1),
|
|
|
|
- SM(Kind::Compute, 5, 0, "cs_5_0", 0, 0, true, true, 64),
|
|
|
|
- SM(Kind::Compute, 5, 1, "cs_5_1", 0, 0, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Compute, 6, 0, "cs_6_0", 0, 0, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Compute, 6, 1, "cs_6_1", 0, 0, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Compute, 6, 2, "cs_6_2", 0, 0, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Compute, 6, 3, "cs_6_3", 0, 0, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Compute, 6, 4, "cs_6_4", 0, 0, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Compute, 6, 5, "cs_6_5", 0, 0, true, true, UINT_MAX),
|
|
|
|
-
|
|
|
|
- SM(Kind::Library, 6, 1, "lib_6_1", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Library, 6, 2, "lib_6_2", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Library, 6, 3, "lib_6_3", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Library, 6, 4, "lib_6_4", 32, 32, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Library, 6, 5, "lib_6_5", 32, 32, true, true, UINT_MAX),
|
|
|
|
-
|
|
|
|
|
|
+ /* <py::lines('VALRULE-TEXT')>hctdb_instrhelp.get_shader_models()</py>*/
|
|
|
|
+ // VALRULE-TEXT:BEGIN
|
|
|
|
+ SM(Kind::Pixel, 4, 0, "ps_4_0", 32, 8, false, false, 0),
|
|
|
|
+ SM(Kind::Pixel, 4, 1, "ps_4_1", 32, 8, false, false, 0),
|
|
|
|
+ SM(Kind::Pixel, 5, 0, "ps_5_0", 32, 8, true, true, 64),
|
|
|
|
+ SM(Kind::Pixel, 5, 1, "ps_5_1", 32, 8, true, true, 64),
|
|
|
|
+ SM(Kind::Pixel, 6, 0, "ps_6_0", 32, 8, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Pixel, 6, 1, "ps_6_1", 32, 8, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Pixel, 6, 2, "ps_6_2", 32, 8, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Pixel, 6, 3, "ps_6_3", 32, 8, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Pixel, 6, 4, "ps_6_4", 32, 8, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Pixel, 6, 5, "ps_6_5", 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),
|
|
|
|
+ SM(Kind::Vertex, 5, 1, "vs_5_1", 32, 32, true, true, 64),
|
|
|
|
+ SM(Kind::Vertex, 6, 0, "vs_6_0", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Vertex, 6, 1, "vs_6_1", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Vertex, 6, 2, "vs_6_2", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Vertex, 6, 3, "vs_6_3", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Vertex, 6, 4, "vs_6_4", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Vertex, 6, 5, "vs_6_5", 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),
|
|
|
|
+ SM(Kind::Geometry, 5, 1, "gs_5_1", 32, 32, true, true, 64),
|
|
|
|
+ SM(Kind::Geometry, 6, 0, "gs_6_0", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Geometry, 6, 1, "gs_6_1", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Geometry, 6, 2, "gs_6_2", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Geometry, 6, 3, "gs_6_3", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Geometry, 6, 4, "gs_6_4", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Geometry, 6, 5, "gs_6_5", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Hull, 5, 0, "hs_5_0", 32, 32, true, true, 64),
|
|
|
|
+ SM(Kind::Hull, 5, 1, "hs_5_1", 32, 32, true, true, 64),
|
|
|
|
+ SM(Kind::Hull, 6, 0, "hs_6_0", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Hull, 6, 1, "hs_6_1", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Hull, 6, 2, "hs_6_2", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Hull, 6, 3, "hs_6_3", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Hull, 6, 4, "hs_6_4", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Hull, 6, 5, "hs_6_5", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Domain, 5, 0, "ds_5_0", 32, 32, true, true, 64),
|
|
|
|
+ SM(Kind::Domain, 5, 1, "ds_5_1", 32, 32, true, true, 64),
|
|
|
|
+ SM(Kind::Domain, 6, 0, "ds_6_0", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Domain, 6, 1, "ds_6_1", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Domain, 6, 2, "ds_6_2", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Domain, 6, 3, "ds_6_3", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Domain, 6, 4, "ds_6_4", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Domain, 6, 5, "ds_6_5", 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),
|
|
|
|
+ SM(Kind::Compute, 5, 1, "cs_5_1", 0, 0, true, true, 64),
|
|
|
|
+ SM(Kind::Compute, 6, 0, "cs_6_0", 0, 0, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Compute, 6, 1, "cs_6_1", 0, 0, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Compute, 6, 2, "cs_6_2", 0, 0, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Compute, 6, 3, "cs_6_3", 0, 0, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Compute, 6, 4, "cs_6_4", 0, 0, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Compute, 6, 5, "cs_6_5", 0, 0, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Library, 6, 1, "lib_6_1", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Library, 6, 2, "lib_6_2", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Library, 6, 3, "lib_6_3", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Library, 6, 4, "lib_6_4", 32, 32, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Library, 6, 5, "lib_6_5", 32, 32, true, true, UINT_MAX),
|
|
// lib_6_x is for offline linking only, and relaxes restrictions
|
|
// 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),
|
|
SM(Kind::Library, 6, kOfflineMinor, "lib_6_x", 32, 32, true, true, UINT_MAX),
|
|
-
|
|
|
|
- SM(Kind::Mesh, 6, 5, "ms_6_5", 0, 0, true, true, UINT_MAX),
|
|
|
|
- SM(Kind::Amplification, 6, 5, "as_6_5", 0, 0, true, true, UINT_MAX),
|
|
|
|
-
|
|
|
|
|
|
+ SM(Kind::Mesh, 6, 5, "ms_6_5", 0, 0, true, true, UINT_MAX),
|
|
|
|
+ SM(Kind::Amplification, 6, 5, "as_6_5", 0, 0, true, true, UINT_MAX),
|
|
// Values before Invalid must remain sorted by Kind, then Major, then Minor.
|
|
// Values before Invalid must remain sorted by Kind, then Major, then Minor.
|
|
SM(Kind::Invalid, 0, 0, "invalid", 0, 0, false, false, 0),
|
|
SM(Kind::Invalid, 0, 0, "invalid", 0, 0, false, false, 0),
|
|
|
|
+ // VALRULE-TEXT:END
|
|
};
|
|
};
|
|
|
|
|
|
} // namespace hlsl
|
|
} // namespace hlsl
|