@@ -45,7 +45,6 @@ static HRESULT AtlCheck(HRESULT hr) {
45
45
46
46
// Not defined in Creators Update version of d3d12.h:
47
47
#if WDK_NTDDI_VERSION <= NTDDI_WIN10_RS2
48
- #define D3D_SHADER_MODEL_6_1 ((D3D_SHADER_MODEL)0x61 )
49
48
#define D3D12_FEATURE_D3D12_OPTIONS3 ((D3D12_FEATURE)21 )
50
49
typedef
51
50
enum D3D12_COMMAND_LIST_SUPPORT_FLAGS
@@ -83,7 +82,6 @@ typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3
83
82
#endif
84
83
85
84
#if WDK_NTDDI_VERSION <= NTDDI_WIN10_RS3
86
- #define D3D_SHADER_MODEL_6_2 ((D3D_SHADER_MODEL)0x62 )
87
85
#define D3D12_FEATURE_D3D12_OPTIONS4 ((D3D12_FEATURE)23 )
88
86
typedef enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER
89
87
{
@@ -104,7 +102,6 @@ typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS4
104
102
#endif
105
103
106
104
#if WDK_NTDDI_VERSION <= NTDDI_WIN10_RS4
107
- #define D3D_SHADER_MODEL_6_3 ((D3D_SHADER_MODEL)0x63 )
108
105
#define D3D12_FEATURE_D3D12_OPTIONS5 ((D3D12_FEATURE)27 )
109
106
typedef enum D3D12_RENDER_PASS_TIER
110
107
{
@@ -128,21 +125,27 @@ typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS5
128
125
} D3D12_FEATURE_DATA_D3D12_OPTIONS5;
129
126
#endif
130
127
131
- #ifndef NTDDI_WIN10_RS5
132
- #define NTDDI_WIN10_RS5 0x0A000006
133
- #endif
134
-
135
- #if WDK_NTDDI_VERSION <= NTDDI_WIN10_RS5
136
- #define D3D_SHADER_MODEL_6_4 ((D3D_SHADER_MODEL)0x64 )
128
+ #ifndef NTDDI_WIN10_NI
129
+ #define NTDDI_WIN10_NI 0x0A00000C
137
130
#endif
138
131
139
- // TODO: Place under new version once available
140
- #if WDK_NTDDI_VERSION <= NTDDI_WIN10_RS5
141
- #define D3D_SHADER_MODEL_6_5 ((D3D_SHADER_MODEL)0x65 )
132
+ #if WDK_NTDDI_VERSION <= NTDDI_WIN10_NI
133
+ #define D3D12_FEATURE_D3D12_OPTIONS14 ((D3D12_FEATURE)43 )
134
+ typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS14
135
+ {
136
+ _Out_ BOOL AdvancedTextureOpsSupported;
137
+ _Out_ BOOL WriteableMSAATexturesSupported;
138
+ _Out_ BOOL IndependentFrontAndBackStencilRefMaskSupported;
139
+ } D3D12_FEATURE_DATA_D3D12_OPTIONS14;
142
140
#endif
143
141
144
142
#pragma warning( disable : 4063 )
145
143
#define D3D12_RAYTRACING_TIER_1_1 ((D3D12_RAYTRACING_TIER)11 )
144
+ #define D3D_SHADER_MODEL_6_1 ((D3D_SHADER_MODEL)0x61 )
145
+ #define D3D_SHADER_MODEL_6_2 ((D3D_SHADER_MODEL)0x62 )
146
+ #define D3D_SHADER_MODEL_6_3 ((D3D_SHADER_MODEL)0x63 )
147
+ #define D3D_SHADER_MODEL_6_4 ((D3D_SHADER_MODEL)0x64 )
148
+ #define D3D_SHADER_MODEL_6_5 ((D3D_SHADER_MODEL)0x65 )
146
149
#define D3D_SHADER_MODEL_6_6 ((D3D_SHADER_MODEL)0x66 )
147
150
#define D3D_SHADER_MODEL_6_7 ((D3D_SHADER_MODEL)0x67 )
148
151
#define D3D_SHADER_MODEL_6_8 ((D3D_SHADER_MODEL)0x68 )
@@ -229,21 +232,26 @@ static HRESULT PrintAdapters() {
229
232
D3D12_FEATURE_DATA_D3D12_OPTIONS3 DeviceOptions3;
230
233
D3D12_FEATURE_DATA_D3D12_OPTIONS4 DeviceOptions4;
231
234
D3D12_FEATURE_DATA_D3D12_OPTIONS5 DeviceOptions5;
235
+ D3D12_FEATURE_DATA_D3D12_OPTIONS14 DeviceOptions14;
236
+
232
237
memset (&DeviceOptions, 0 , sizeof (DeviceOptions));
233
238
memset (&DeviceOptions3, 0 , sizeof (DeviceOptions3));
234
239
memset (&DeviceOptions4, 0 , sizeof (DeviceOptions4));
235
240
memset (&DeviceOptions5, 0 , sizeof (DeviceOptions5));
241
+ memset (&DeviceOptions14, 0 , sizeof (DeviceOptions14));
236
242
D3D12_FEATURE_DATA_SHADER_MODEL DeviceSM;
237
243
AtlCheck (pAdapter->GetDesc1 (&AdapterDesc));
238
244
AtlCheck (D3D12CreateDevice (pAdapter, D3D_FEATURE_LEVEL_11_0, IID_PPV_ARGS (&pDevice)));
239
245
AtlCheck (pDevice->CheckFeatureSupport (D3D12_FEATURE_D3D12_OPTIONS1, &DeviceOptions, sizeof (DeviceOptions)));
240
246
pDevice->CheckFeatureSupport (D3D12_FEATURE_D3D12_OPTIONS3, &DeviceOptions3, sizeof (DeviceOptions3));
241
247
pDevice->CheckFeatureSupport (D3D12_FEATURE_D3D12_OPTIONS4, &DeviceOptions4, sizeof (DeviceOptions4));
242
248
pDevice->CheckFeatureSupport (D3D12_FEATURE_D3D12_OPTIONS5, &DeviceOptions5, sizeof (DeviceOptions5));
249
+ pDevice->CheckFeatureSupport (D3D12_FEATURE_D3D12_OPTIONS14, &DeviceOptions14, sizeof (DeviceOptions14));
250
+
243
251
AtlCheck (GetHighestShaderModel (pDevice, DeviceSM));
244
252
const char *Format = IsOutputJson ?
245
- " %c { \" name\" : \" %S\" , \" sm\" : \" %s\" , \" wave\" : %s, \" i64\" : %s, \" bary\" : %s, \" view-inst\" : \" %s\" , \" 16bit\" : %s, \" raytracing\" : \" %s\" }\n " :
246
- " %c %S - Highest SM [%s] Wave [%s] I64 [%s] Barycentrics [%s] View Instancing [%s] 16bit Support [%s] Raytracing [%s]\n " ;
253
+ " %c { \" name\" : \" %S\" , \" sm\" : \" %s\" , \" wave\" : %s, \" i64\" : %s, \" bary\" : %s, \" view-inst\" : \" %s\" , \" 16bit\" : %s, \" raytracing\" : \" %s\" , \" ato \" : \" %s \" }\n " :
254
+ " %c %S - Highest SM [%s] Wave [%s] I64 [%s] Barycentrics [%s] View Instancing [%s] 16bit Support [%s] Raytracing [%s] Advanced Texture Ops [%s] \n " ;
247
255
printf (Format,
248
256
comma,
249
257
AdapterDesc.Description ,
@@ -253,7 +261,8 @@ static HRESULT PrintAdapters() {
253
261
BoolToStr (DeviceOptions3.BarycentricsSupported ),
254
262
ViewInstancingTierToStr (DeviceOptions3.ViewInstancingTier ),
255
263
BoolToStr (DeviceOptions4.Native16BitShaderOpsSupported ),
256
- RaytracingTierToStr (DeviceOptions5.RaytracingTier )
264
+ RaytracingTierToStr (DeviceOptions5.RaytracingTier ),
265
+ BoolToStr (DeviceOptions14.AdvancedTextureOpsSupported )
257
266
);
258
267
AdapterIndex++;
259
268
comma = IsOutputJson ? ' ,' : ' ' ;
0 commit comments