Direct3D feature levels discussion

Windows 10, 1903, Vega 64 and Radeon 19.6.3
Code:
Direct3D 12 feature checker (December 2018) by DmitryKo (x64)
https://forum.beyond3d.com/posts/1840641/

Windows 10 version 1903 (build 18362.175 19h1_release) x64
Checking for experimental features SM6 TR4 FL1 META

ADAPTER 0
"Radeon RX Vega"
VEN_1002, DEV_687F, SUBSYS_6B761002, REV_C1
Dedicated video memory : 8121.3 MB (8515768320 bytes)
Total video memory : 40856.2 MB (42840813568 bytes)
Video driver version : 26.20.12001.11014
Maximum feature level : D3D_FEATURE_LEVEL_12_1 (0xc100)
DoublePrecisionFloatShaderOps : 1
OutputMergerLogicOp : 1
MinPrecisionSupport : D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT (2) (0b0000'0010)
TiledResourcesTier : D3D12_TILED_RESOURCES_TIER_3 (3)
ResourceBindingTier : D3D12_RESOURCE_BINDING_TIER_3 (3)
PSSpecifiedStencilRefSupported : 1
TypedUAVLoadAdditionalFormats : 1
ROVsSupported : 1
ConservativeRasterizationTier : D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 (3)
StandardSwizzle64KBSupported : 0
CrossNodeSharingTier : D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED (0)
CrossAdapterRowMajorTextureSupported : 0
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation : 1
ResourceHeapTier : D3D12_RESOURCE_HEAP_TIER_2 (2)
MaxGPUVirtualAddressBitsPerResource : 44
MaxGPUVirtualAddressBitsPerProcess : 44
Adapter Node 0:     TileBasedRenderer: 0, UMA: 0, CacheCoherentUMA: 0, IsolatedMMU: 1, HeapSerializationTier: 0, ProtectedResourceSession.Support: 0
HighestShaderModel : D3D12_SHADER_MODEL_6_4 (0x0064)
WaveOps : 1
WaveLaneCountMin : 64
WaveLaneCountMax : 64
TotalLaneCount : 4096
ExpandedComputeResourceStates : 1
Int64ShaderOps : 1
RootSignature.HighestVersion : D3D_ROOT_SIGNATURE_VERSION_1_1 (2)
DepthBoundsTestSupported : 1
ProgrammableSamplePositionsTier : D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 (2)
ShaderCache.SupportFlags : D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO | LIBRARY | AUTOMATIC_INPROC_CACHE | AUTOMATIC_DISK_CACHE (15) (0b0000'1111)
CopyQueueTimestampQueriesSupported : 1
CastingFullyTypedFormatSupported : 1
WriteBufferImmediateSupportFlags : D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT | BUNDLE | COMPUTE | COPY (15) (0b0000'1111)
ViewInstancingTier : D3D12_VIEW_INSTANCING_TIER_1 (1)
BarycentricsSupported : 0
ExistingHeaps.Supported : 1
MSAA64KBAlignedTextureSupported : 1
SharedResourceCompatibilityTier : D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 (1)
Native16BitShaderOpsSupported : 1
AtomicShaderInstructions : 0
SRVOnlyTiledResourceTier3 : 1
RenderPassesTier : D3D12_RENDER_PASS_TIER_0 (0)
RaytracingTier : D3D12_RAYTRACING_TIER_NOT_SUPPORTED (0)
AdditionalShadingRatesSupported : 0
PerPrimitiveShadingRateSupportedWithViewportIndexing : 0
VariableShadingRateTier : D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED (0)
ShadingRateImageTileSize : 0
BackgroundProcessingSupported : 0
Number of metacommands : 4
Metacommands : Conv (Convolution) Conv (Convolution) GEMM (General matrix multiply) GEMM (General matrix multiply)

ADAPTER 1
"Microsoft Basic Render Driver"
VEN_1414, DEV_008C, SUBSYS_00000000, REV_00
Dedicated video memory : 0.0 MB (0 bytes)
Total video memory : 32734.9 MB (34325045248 bytes)
Maximum feature level : D3D_FEATURE_LEVEL_12_1 (0xc100)
DoublePrecisionFloatShaderOps : 1
OutputMergerLogicOp : 1
MinPrecisionSupport : D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT | 16_BIT (3) (0b0000'0011)
TiledResourcesTier : D3D12_TILED_RESOURCES_TIER_3 (3)
ResourceBindingTier : D3D12_RESOURCE_BINDING_TIER_3 (3)
PSSpecifiedStencilRefSupported : 1
TypedUAVLoadAdditionalFormats : 1
ROVsSupported : 1
ConservativeRasterizationTier : D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 (3)
StandardSwizzle64KBSupported : 1
CrossNodeSharingTier : D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED (0)
CrossAdapterRowMajorTextureSupported : 1
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation : 1
ResourceHeapTier : D3D12_RESOURCE_HEAP_TIER_2 (2)
MaxGPUVirtualAddressBitsPerResource : 32
MaxGPUVirtualAddressBitsPerProcess : 47
Adapter Node 0:     TileBasedRenderer: 0, UMA: 1, CacheCoherentUMA: 1, IsolatedMMU: 0, HeapSerializationTier: 10, ProtectedResourceSession.Support: 0
HighestShaderModel : D3D12_SHADER_MODEL_6_2 (0x0062)
WaveOps : 1
WaveLaneCountMin : 4
WaveLaneCountMax : 4
TotalLaneCount : 64
ExpandedComputeResourceStates : 1
Int64ShaderOps : 1
RootSignature.HighestVersion : D3D_ROOT_SIGNATURE_VERSION_1_1 (2)
DepthBoundsTestSupported : 1
ProgrammableSamplePositionsTier : D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 (2)
ShaderCache.SupportFlags : D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO | LIBRARY (3) (0b0000'0011)
CopyQueueTimestampQueriesSupported : 1
CastingFullyTypedFormatSupported : 1
WriteBufferImmediateSupportFlags : D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT | BUNDLE | COMPUTE | COPY | VIDEO_DECODE | VIDEO_PROCESS (63) (0b0011'1111)
ViewInstancingTier : D3D12_VIEW_INSTANCING_TIER_1 (1)
BarycentricsSupported : 0
ExistingHeaps.Supported : 1
MSAA64KBAlignedTextureSupported : 1
SharedResourceCompatibilityTier : D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 (1)
Native16BitShaderOpsSupported : 1
AtomicShaderInstructions : 0
SRVOnlyTiledResourceTier3 : 1
RenderPassesTier : D3D12_RENDER_PASS_TIER_1 (1)
RaytracingTier : D3D12_RAYTRACING_TIER_NOT_SUPPORTED (0)
AdditionalShadingRatesSupported : 0
PerPrimitiveShadingRateSupportedWithViewportIndexing : 0
VariableShadingRateTier : D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED (0)
ShadingRateImageTileSize : 0
BackgroundProcessingSupported : 0
Number of metacommands : 2
Metacommands : Identity ClearUAVFloat

FINISHED running on 2019-06-29 21:58:58
2 display adapters enumerated
 
Code:
Direct3D 12 feature checker (December 2018) by DmitryKo (x64)
https://forum.beyond3d.com/posts/1840641/

Windows 10 version 1903 (build 18362.207 19h1_release) x64

ADAPTER 0
"AMD Radeon RX 5700 XT"
VEN_1002, DEV_731F, SUBSYS_0B361002, REV_C1
Dedicated video memory : 8047.6 MB (8438472704 bytes)
Total video memory : 24387.6 MB (25572294656 bytes)
Video driver version : 26.20.13001.6011
Maximum feature level : D3D_FEATURE_LEVEL_12_1 (0xc100)
DoublePrecisionFloatShaderOps : 1
OutputMergerLogicOp : 1
MinPrecisionSupport : D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT (2) (0b0000'0010)
TiledResourcesTier : D3D12_TILED_RESOURCES_TIER_3 (3)
ResourceBindingTier : D3D12_RESOURCE_BINDING_TIER_3 (3)
PSSpecifiedStencilRefSupported : 1
TypedUAVLoadAdditionalFormats : 1
ROVsSupported : 1
ConservativeRasterizationTier : D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 (3)
StandardSwizzle64KBSupported : 0
CrossNodeSharingTier : D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED (0)
CrossAdapterRowMajorTextureSupported : 0
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation : 1
ResourceHeapTier : D3D12_RESOURCE_HEAP_TIER_2 (2)
MaxGPUVirtualAddressBitsPerResource : 44
MaxGPUVirtualAddressBitsPerProcess : 44
Adapter Node 0:     TileBasedRenderer: 0, UMA: 0, CacheCoherentUMA: 0, IsolatedMMU: 1, HeapSerializationTier: 0, ProtectedResourceSession.Support: 0
HighestShaderModel : D3D12_SHADER_MODEL_6_4 (0x0064)
WaveOps : 1
WaveLaneCountMin : 32
WaveLaneCountMax : 64
TotalLaneCount : 2560
ExpandedComputeResourceStates : 1
Int64ShaderOps : 1
RootSignature.HighestVersion : D3D_ROOT_SIGNATURE_VERSION_1_1 (2)
DepthBoundsTestSupported : 1
ProgrammableSamplePositionsTier : D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 (2)
ShaderCache.SupportFlags : D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO | LIBRARY | AUTOMATIC_INPROC_CACHE | AUTOMATIC_DISK_CACHE (15) (0b0000'1111)
CopyQueueTimestampQueriesSupported : 1
CastingFullyTypedFormatSupported : 1
WriteBufferImmediateSupportFlags : D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT | BUNDLE | COMPUTE | COPY (15) (0b0000'1111)
ViewInstancingTier : D3D12_VIEW_INSTANCING_TIER_1 (1)
BarycentricsSupported : 0
ExistingHeaps.Supported : 1
MSAA64KBAlignedTextureSupported : 1
SharedResourceCompatibilityTier : D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 (1)
Native16BitShaderOpsSupported : 1
AtomicShaderInstructions : 0
SRVOnlyTiledResourceTier3 : 1
RenderPassesTier : D3D12_RENDER_PASS_TIER_0 (0)
RaytracingTier : D3D12_RAYTRACING_TIER_NOT_SUPPORTED (0)
AdditionalShadingRatesSupported : 0
PerPrimitiveShadingRateSupportedWithViewportIndexing : 0
VariableShadingRateTier : D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED (0)
ShadingRateImageTileSize : 0
BackgroundProcessingSupported : 0
Metacommands enumerated : 4
Metacommands : Conv (Convolution), Conv (Convolution), GEMM (General matrix multiply), GEMM (General matrix multiply)
 
Radeon RX 5700 XT, Interesting and congratulation!

I did a file diff against my Vega 64 result.

Vega 64
  • WaveLaneCountMin : 64
  • WaveLaneCountMax : 64
  • TotalLaneCount : 4096

Radeon RX 5700 XT
  • WaveLaneCountMin : 32
  • WaveLaneCountMax : 64
  • TotalLaneCount : 2560
 
So does Turing (finally). But I think the point of wtf was that neither expose them directly through D3D. You have to use both IHVs custom hacks/extensions.
Code:
Direct3D 12 feature checker (December 2018) by DmitryKo (x64)
https://forum.beyond3d.com/posts/1840641/

Windows 10 version 1903 (build 18362.239 19h1_release) x64

ADAPTER 0
"NVIDIA GeForce RTX 2080"
VEN_10DE, DEV_1E87, SUBSYS_1E8710DE, REV_A1
Dedicated video memory : 8010.0 MB (8399093760 bytes)
Total video memory : 40734.5 MB (42713180160 bytes)
Video driver version : 26.21.14.3136
Maximum feature level : D3D_FEATURE_LEVEL_12_1 (0xc100)
DoublePrecisionFloatShaderOps : 1
OutputMergerLogicOp : 1
MinPrecisionSupport : D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE (0) (0b0000'0000)
TiledResourcesTier : D3D12_TILED_RESOURCES_TIER_3 (3)
ResourceBindingTier : D3D12_RESOURCE_BINDING_TIER_3 (3)
PSSpecifiedStencilRefSupported : 0
TypedUAVLoadAdditionalFormats : 1
ROVsSupported : 1
ConservativeRasterizationTier : D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 (3)
StandardSwizzle64KBSupported : 0
CrossNodeSharingTier : D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED (0)
CrossAdapterRowMajorTextureSupported : 0
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation : 1
ResourceHeapTier : D3D12_RESOURCE_HEAP_TIER_2 (2)
MaxGPUVirtualAddressBitsPerResource : 40
MaxGPUVirtualAddressBitsPerProcess : 40
Adapter Node 0:     TileBasedRenderer: 0, UMA: 0, CacheCoherentUMA: 0, IsolatedMMU: 1, HeapSerializationTier: 0, ProtectedResourceSession.Support: 1
HighestShaderModel : D3D12_SHADER_MODEL_6_4 (0x0064)
WaveOps : 1
WaveLaneCountMin : 32
WaveLaneCountMax : 32
TotalLaneCount : 2944
ExpandedComputeResourceStates : 1
Int64ShaderOps : 1
RootSignature.HighestVersion : D3D_ROOT_SIGNATURE_VERSION_1_1 (2)
DepthBoundsTestSupported : 1
ProgrammableSamplePositionsTier : D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 (2)
ShaderCache.SupportFlags : D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO | LIBRARY (3) (0b0000'0011)
CopyQueueTimestampQueriesSupported : 1
CastingFullyTypedFormatSupported : 1
WriteBufferImmediateSupportFlags : D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT | BUNDLE | COMPUTE | COPY | VIDEO_DECODE | VIDEO_PROCESS | VIDEO_ENCODE (127) (0b0111'1111)
ViewInstancingTier : D3D12_VIEW_INSTANCING_TIER_3 (3)
BarycentricsSupported : 1
ExistingHeaps.Supported : 1
MSAA64KBAlignedTextureSupported : 1
SharedResourceCompatibilityTier : D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 (1)
Native16BitShaderOpsSupported : 1
AtomicShaderInstructions : 0
SRVOnlyTiledResourceTier3 : 1
RenderPassesTier : D3D12_RENDER_PASS_TIER_0 (0)
RaytracingTier : D3D12_RAYTRACING_TIER_1_0 (10)
AdditionalShadingRatesSupported : 1
PerPrimitiveShadingRateSupportedWithViewportIndexing : 0
VariableShadingRateTier : D3D12_VARIABLE_SHADING_RATE_TIER_2 (2)
ShadingRateImageTileSize : 16
BackgroundProcessingSupported : 1
Metacommands enumerated : 7
Metacommands : Conv (Convolution), CopyTensor, MVN (Mean Variance Normalization), GEMM (General matrix multiply), Conv (Convolution), GEMM (General matrix multiply), MVN (Mean Variance Normalization)
 
Code:
Direct3D 12 feature checker (December 2018) by DmitryKo (x64)
https://forum.beyond3d.com/posts/1840641/

Windows 10 version 1903 (build 18362.239 19h1_release) x64

ADAPTER 0
"NVIDIA GeForce RTX 2080"
VEN_10DE, DEV_1E87, SUBSYS_1E8710DE, REV_A1
Dedicated video memory : 8010.0 MB (8399093760 bytes)
Total video memory : 40734.5 MB (42713180160 bytes)
Video driver version : 26.21.14.3136
Maximum feature level : D3D_FEATURE_LEVEL_12_1 (0xc100)
DoublePrecisionFloatShaderOps : 1
OutputMergerLogicOp : 1
MinPrecisionSupport : D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE (0) (0b0000'0000)
TiledResourcesTier : D3D12_TILED_RESOURCES_TIER_3 (3)
ResourceBindingTier : D3D12_RESOURCE_BINDING_TIER_3 (3)
PSSpecifiedStencilRefSupported : 0
TypedUAVLoadAdditionalFormats : 1
ROVsSupported : 1
ConservativeRasterizationTier : D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 (3)
StandardSwizzle64KBSupported : 0
CrossNodeSharingTier : D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED (0)
CrossAdapterRowMajorTextureSupported : 0
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation : 1
ResourceHeapTier : D3D12_RESOURCE_HEAP_TIER_2 (2)
MaxGPUVirtualAddressBitsPerResource : 40
MaxGPUVirtualAddressBitsPerProcess : 40
Adapter Node 0:     TileBasedRenderer: 0, UMA: 0, CacheCoherentUMA: 0, IsolatedMMU: 1, HeapSerializationTier: 0, ProtectedResourceSession.Support: 1
HighestShaderModel : D3D12_SHADER_MODEL_6_4 (0x0064)
WaveOps : 1
WaveLaneCountMin : 32
WaveLaneCountMax : 32
TotalLaneCount : 2944
ExpandedComputeResourceStates : 1
Int64ShaderOps : 1
RootSignature.HighestVersion : D3D_ROOT_SIGNATURE_VERSION_1_1 (2)
DepthBoundsTestSupported : 1
ProgrammableSamplePositionsTier : D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 (2)
ShaderCache.SupportFlags : D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO | LIBRARY (3) (0b0000'0011)
CopyQueueTimestampQueriesSupported : 1
CastingFullyTypedFormatSupported : 1
WriteBufferImmediateSupportFlags : D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT | BUNDLE | COMPUTE | COPY | VIDEO_DECODE | VIDEO_PROCESS | VIDEO_ENCODE (127) (0b0111'1111)
ViewInstancingTier : D3D12_VIEW_INSTANCING_TIER_3 (3)
BarycentricsSupported : 1
ExistingHeaps.Supported : 1
MSAA64KBAlignedTextureSupported : 1
SharedResourceCompatibilityTier : D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 (1)
Native16BitShaderOpsSupported : 1
AtomicShaderInstructions : 0
SRVOnlyTiledResourceTier3 : 1
RenderPassesTier : D3D12_RENDER_PASS_TIER_0 (0)
RaytracingTier : D3D12_RAYTRACING_TIER_1_0 (10)
AdditionalShadingRatesSupported : 1
PerPrimitiveShadingRateSupportedWithViewportIndexing : 0
VariableShadingRateTier : D3D12_VARIABLE_SHADING_RATE_TIER_2 (2)
ShadingRateImageTileSize : 16
BackgroundProcessingSupported : 1
Metacommands enumerated : 7
Metacommands : Conv (Convolution), CopyTensor, MVN (Mean Variance Normalization), GEMM (General matrix multiply), Conv (Convolution), GEMM (General matrix multiply), MVN (Mean Variance Normalization)
Cool, so NV supports this with standard D3D now.
 
Cool, so at least NVIDIA support them.

Yes, they have the custom proprietary extension for a long time. But I was talking about "standard" Direct3D SV_Barycentrics support. It would be nice to understand the reason, if there are any limitation or differences between AGS extension and standard version. They claim it works on all AMD Direct3D 12 capable GPUs...
 
Code:
"NVIDIA GeForce RTX 2080"
TiledResourcesTier : D3D12_TILED_RESOURCES_TIER_3 (3)
HighestShaderModel : D3D12_SHADER_MODEL_6_4 (0x0064)
WriteBufferImmediateSupportFlags : D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT | BUNDLE | COMPUTE | COPY | VIDEO_DECODE | VIDEO_PROCESS | VIDEO_ENCODE (127) (0b0111'1111)
ViewInstancingTier : D3D12_VIEW_INSTANCING_TIER_3 (3)
VariableShadingRateTier : D3D12_VARIABLE_SHADING_RATE_TIER_2 (2)
Metacommands enumerated : 7
Metacommands : Conv (Convolution), CopyTensor, MVN (Mean Variance Normalization), GEMM (General matrix multiply), Conv (Convolution), GEMM (General matrix multiply), MVN (Mean Variance Normalization)

I recall Pascal reports tiled resouces tier 4, and so should Turing. Also of interest is view instancing tier 3 and three additional metacommands: CopyTensor and MVN in two variants.

Could you please download and run the updated tool in the experimental mode? It should now report metacommand parameters for each of creation, initialization and exectution 'stages' - and there are quite a lot of named parameters, up to a hundred for the initialization stage...
 
Last edited:
The D3D12CheckFeatureSupport tool has been updated to support options 7 and mesh shader tier 1_0, raytracing tier 1_1 and shader models 6_6 in Windows 10 version 2003 (build 18945).
Code:
Adapter Node 0:   ...  ProtectedResourceSessionTypeCount: 1 D3D12_PROTECTED_RESOURCES_SESSION_HARDWARE_PROTECTED
MeshShaderTier : D3D12_MESH_SHADER_TIER_NOT_SUPPORTED (0)
SamplerFeedbackTier : D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED (0)

It will also query ID3D12Device5::EnumerateMetaCommandParameters and report the number of parameters (and additionally parameter names in verbose mode, invoked with /v[erbose] option for checkfeatures.cmd and checkfeatures_experimental.cmd ) for each metacommand's creation stage, initialization stage and execution stage (unfortunately MSDN documentation on these stages simply does not exist, as it has become usual).

This is how it looks on WARP12 'Basic Render Driver' and Polaris/GCN4 :
Code:
Metacommands [parameters per stage]: Identity [1][0][2], ClearUAVFloat [0][0][3]

Metacommands [parameters per stage]: Conv (Convolution) [84][1][6], Conv (Convolution) [108][5][6], GEMM (General matrix multiply) [67][1][6], GEMM (General matrix multiply) [91][5][6]
This is the verbose mode on Warp12 showing each parameter's name (description) as provided by the driver/runtime:
Code:
Metacommands [parameters per stage]:
Identity
[1: Size]
[0]
[2: InputBuffer, OutputBuffer]

ClearUAVFloat
[0]
[0]
[3: ClearValue, InputGPUHandle, InputCPUHandle]


This should help differentiate between several versions of the same metacommand which take very different parameters for initialization but mostly very similar parameters for creation and excution, as well as between vendor-specific implementations and video driver updates.

(Then there are types (FLOAT, UINT64, GPU Virtual Adress, GPU Descriptor Handle, CPU Descriptor Handle), flags, and resource stages for each parameter, but that's too much information to include in text output - source code provides the logic for printing parameter types, but it's not enabled so you have to use Visual Studio C++ editor to play with it.)
 
Last edited:
Could you please download and run the updated tool in the experimental mode?
Sure:
Code:
Direct3D 12 feature checker (July 2019) by DmitryKo (x64)
https://forum.beyond3d.com/posts/1840641/

Windows 10 version 1903 (build 18362.239 19h1_release) x64
Checking for experimental features SM6 TR4 FL1 META

ADAPTER 0
"NVIDIA GeForce RTX 2080"
VEN_10DE, DEV_1E87, SUBSYS_1E8710DE, REV_A1
Dedicated video memory : 8010.0 MB (8399093760 bytes)
Total video memory : 40734.5 MB (42713180160 bytes)
Video driver version : 26.21.14.3136
Maximum feature level : D3D_FEATURE_LEVEL_12_1 (0xc100)
DoublePrecisionFloatShaderOps : 1
OutputMergerLogicOp : 1
MinPrecisionSupport : D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE (0) (0b0000'0000)
TiledResourcesTier : D3D12_TILED_RESOURCES_TIER_3 (3)
ResourceBindingTier : D3D12_RESOURCE_BINDING_TIER_3 (3)
PSSpecifiedStencilRefSupported : 0
TypedUAVLoadAdditionalFormats : 1
ROVsSupported : 1
ConservativeRasterizationTier : D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 (3)
StandardSwizzle64KBSupported : 0
CrossNodeSharingTier : D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED (0)
CrossAdapterRowMajorTextureSupported : 0
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation : 1
ResourceHeapTier : D3D12_RESOURCE_HEAP_TIER_2 (2)
MaxGPUVirtualAddressBitsPerResource : 40
MaxGPUVirtualAddressBitsPerProcess : 40
Adapter Node 0:    TileBasedRenderer: 0, UMA: 0, CacheCoherentUMA: 0, IsolatedMMU: 1, HeapSerializationTier: 0, ProtectedResourceSession.Support: 1
HighestShaderModel : D3D12_SHADER_MODEL_6_4 (0x0064)
WaveOps : 1
WaveLaneCountMin : 32
WaveLaneCountMax : 32
TotalLaneCount : 2944
ExpandedComputeResourceStates : 1
Int64ShaderOps : 1
RootSignature.HighestVersion : D3D_ROOT_SIGNATURE_VERSION_1_1 (2)
DepthBoundsTestSupported : 1
ProgrammableSamplePositionsTier : D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 (2)
ShaderCache.SupportFlags : D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO | LIBRARY (3) (0b0000'0011)
CopyQueueTimestampQueriesSupported : 1
CastingFullyTypedFormatSupported : 1
WriteBufferImmediateSupportFlags : D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT | BUNDLE | COMPUTE | COPY | VIDEO_DECODE | VIDEO_PROCESS | VIDEO_ENCODE (127) (0b0111'1111)
ViewInstancingTier : D3D12_VIEW_INSTANCING_TIER_3 (3)
BarycentricsSupported : 1
ExistingHeaps.Supported : 1
MSAA64KBAlignedTextureSupported : 1
SharedResourceCompatibilityTier : D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 (1)
Native16BitShaderOpsSupported : 1
AtomicShaderInstructions : 0
SRVOnlyTiledResourceTier3 : 1
RenderPassesTier : D3D12_RENDER_PASS_TIER_0 (0)
RaytracingTier : D3D12_RAYTRACING_TIER_1_0 (10)
AdditionalShadingRatesSupported : 1
PerPrimitiveShadingRateSupportedWithViewportIndexing : 0
VariableShadingRateTier : D3D12_VARIABLE_SHADING_RATE_TIER_2 (2)
ShadingRateImageTileSize : 16
BackgroundProcessingSupported : 1
Metacommands enumerated : 8
Metacommands [parameters per stage]:
Conv (Convolution)
[84: DescIn.DataType, DescIn.Layout, DescIn.Flags, DescIn.DimensionCount, DescIn.Size[0], DescIn.Size[1], DescIn.Size[2], DescIn.Size[3], DescIn.Size[4], DescIn.Stride[0], DescIn.Stride[1], DescIn.Stride[2], DescIn.Stride[3], DescIn.Stride[4], DescFilter.DataType, DescFilter.Layout, DescFilter.Flags, DescFilter.DimensionCount, DescFilter.Size[0], DescFilter.Size[1], DescFilter.Size[2], DescFilter.Size[3], DescFilter.Size[4], DescFilter.Stride[0], DescFilter.Stride[1], DescFilter.Stride[2], DescFilter.Stride[3], DescFilter.Stride[4], DescBias.DataType, DescBias.Layout, DescBias.Flags, DescBias.DimensionCount, DescBias.Size[0], DescBias.Size[1], DescBias.Size[2], DescBias.Size[3], DescBias.Size[4], DescBias.Stride[0], DescBias.Stride[1], DescBias.Stride[2], DescBias.Stride[3], DescBias.Stride[4], DescBias.IsNull, DescOut.DataType, DescOut.Layout, DescOut.Flags, DescOut.DimensionCount, DescOut.Size[0], DescOut.Size[1], DescOut.Size[2], DescOut.Size[3], DescOut.Size[4], DescOut.Stride[0], DescOut.Stride[1], DescOut.Stride[2], DescOut.Stride[3], DescOut.Stride[4], Mode, Direction, Precision, Stride[0], Stride[1], Stride[2], Dilation[0], Dilation[1], Dilation[2], StartPadding[0], StartPadding[1], StartPadding[2], EndPadding[0], EndPadding[1], EndPadding[2], DimensionCount, OutputPadding[0], OutputPadding[1], OutputPadding[2], OutputPadding[3], OutputPadding[4], GroupCount, Activation.Function, Activation.Params.first, Activation.Params.second, Activation.IsNull, BindFlags]
[1: PersistentResource]
[6: InputResource, FilterResource, BiasResource, OutputResource, PersistentResource, TemporaryResource]

CopyTensor
[3: DstLayout, SrcLayout, BindFlags]
[1: Unused]
[31: DstDesc.DataType, DstDesc.Layout, DstDesc.Flags, DstDesc.DimensionCount, DstDesc.Size[0], DstDesc.Size[1], DstDesc.Size[2], DstDesc.Size[3], DstDesc.Size[4], DstDesc.Stride[0], DstDesc.Stride[1], DstDesc.Stride[2], DstDesc.Stride[3], DstDesc.Stride[4], DstResource, SrcDesc.DataType, SrcDesc.Layout, SrcDesc.Flags, SrcDesc.DimensionCount, SrcDesc.Size[0], SrcDesc.Size[1], SrcDesc.Size[2], SrcDesc.Size[3], SrcDesc.Size[4], SrcDesc.Stride[0], SrcDesc.Stride[1], SrcDesc.Stride[2], SrcDesc.Stride[3], SrcDesc.Stride[4], SrcResource, TemporaryResource]

2x2 Nearest neighbour Upsample
[15: SrcDesc.DataType, SrcDesc.Layout, SrcDesc.Flags, SrcDesc.DimensionCount, SrcDesc.Size[0], SrcDesc.Size[1], SrcDesc.Size[2], SrcDesc.Size[3], SrcDesc.Size[4], SrcDesc.Stride[0], SrcDesc.Stride[1], SrcDesc.Stride[2], SrcDesc.Stride[3], SrcDesc.Stride[4], BindFlags]
[1: Unused]
[2: DstResource, SrcResource]

MVN (Mean Variance Normalization)
[67: DescIn.DataType, DescIn.Layout, DescIn.Flags, DescIn.DimensionCount, DescIn.Size[0], DescIn.Size[1], DescIn.Size[2], DescIn.Size[3], DescIn.Size[4], DescIn.Stride[0], DescIn.Stride[1], DescIn.Stride[2], DescIn.Stride[3], DescIn.Stride[4], DescScale.DataType, DescScale.Layout, DescScale.Flags, DescScale.DimensionCount, DescScale.Size[0], DescScale.Size[1], DescScale.Size[2], DescScale.Size[3], DescScale.Size[4], DescScale.Stride[0], DescScale.Stride[1], DescScale.Stride[2], DescScale.Stride[3], DescScale.Stride[4], DescScale.IsNull, DescBias.DataType, DescBias.Layout, DescBias.Flags, DescBias.DimensionCount, DescBias.Size[0], DescBias.Size[1], DescBias.Size[2], DescBias.Size[3], DescBias.Size[4], DescBias.Stride[0], DescBias.Stride[1], DescBias.Stride[2], DescBias.Stride[3], DescBias.Stride[4], DescBias.IsNull, DescOut.DataType, DescOut.Layout, DescOut.Flags, DescOut.DimensionCount, DescOut.Size[0], DescOut.Size[1], DescOut.Size[2], DescOut.Size[3], DescOut.Size[4], DescOut.Stride[0], DescOut.Stride[1], DescOut.Stride[2], DescOut.Stride[3], DescOut.Stride[4], Precision, CrossChannel, NormalizeVariance, Epsilon, Activation.Function, Activation.Params.first, Activation.Params.second, Activation.IsNull, BindFlags]
[1: PersistentResource]
[6: InputResource, ScaleResource, BiasResource, OutputResource, PersistentResource, TemporaryResource]
 
The rest of it:
Code:
GEMM (General matrix multiply)
[67: DescA.DataType, DescA.Layout, DescA.Flags, DescA.DimensionCount, DescA.Size[0], DescA.Size[1], DescA.Size[2], DescA.Size[3], DescA.Size[4], DescA.Stride[0], DescA.Stride[1], DescA.Stride[2], DescA.Stride[3], DescA.Stride[4], DescB.DataType, DescB.Layout, DescB.Flags, DescB.DimensionCount, DescB.Size[0], DescB.Size[1], DescB.Size[2], DescB.Size[3], DescB.Size[4], DescB.Stride[0], DescB.Stride[1], DescB.Stride[2], DescB.Stride[3], DescB.Stride[4], DescC.DataType, DescC.Layout, DescC.Flags, DescC.DimensionCount, DescC.Size[0], DescC.Size[1], DescC.Size[2], DescC.Size[3], DescC.Size[4], DescC.Stride[0], DescC.Stride[1], DescC.Stride[2], DescC.Stride[3], DescC.Stride[4], DescC.IsNull, DescOut.DataType, DescOut.Layout, DescOut.Flags, DescOut.DimensionCount, DescOut.Size[0], DescOut.Size[1], DescOut.Size[2], DescOut.Size[3], DescOut.Size[4], DescOut.Stride[0], DescOut.Stride[1], DescOut.Stride[2], DescOut.Stride[3], DescOut.Stride[4], Precision, TransA, TransB, Alpha, Beta, Activation.Function, Activation.Params.first, Activation.Params.second, Activation.IsNull, BindFlags]
[1: PersistentResource]
[6: AResource, BResource, CResource, OutputResource, PersistentResource, TemporaryResource]

Conv (Convolution)
[108: InputDesc.DataType, InputDesc.Flags, InputDesc.DimensionCount, InputDesc.Size[0], InputDesc.Size[1], InputDesc.Size[2], InputDesc.Size[3], InputDesc.Size[4], InputDesc.Stride[0], InputDesc.Stride[1], InputDesc.Stride[2], InputDesc.Stride[3], InputDesc.Stride[4], InputDesc.StrideAlignment[0], InputDesc.StrideAlignment[1], InputDesc.StrideAlignment[2], InputDesc.StrideAlignment[3], InputDesc.StrideAlignment[4], InputDesc.BaseAlignmentInBytes, InputDesc.PhysicalSizeInElements, FilterDesc.DataType, FilterDesc.Flags, FilterDesc.DimensionCount, FilterDesc.Size[0], FilterDesc.Size[1], FilterDesc.Size[2], FilterDesc.Size[3], FilterDesc.Size[4], FilterDesc.Stride[0], FilterDesc.Stride[1], FilterDesc.Stride[2], FilterDesc.Stride[3], FilterDesc.Stride[4], FilterDesc.StrideAlignment[0], FilterDesc.StrideAlignment[1], FilterDesc.StrideAlignment[2], FilterDesc.StrideAlignment[3], FilterDesc.StrideAlignment[4], FilterDesc.BaseAlignmentInBytes, FilterDesc.PhysicalSizeInElements, BiasDesc.DataType, BiasDesc.Flags, BiasDesc.DimensionCount, BiasDesc.Size[0], BiasDesc.Size[1], BiasDesc.Size[2], BiasDesc.Size[3], BiasDesc.Size[4], BiasDesc.Stride[0], BiasDesc.Stride[1], BiasDesc.Stride[2], BiasDesc.Stride[3], BiasDesc.Stride[4], BiasDesc.StrideAlignment[0], BiasDesc.StrideAlignment[1], BiasDesc.StrideAlignment[2], BiasDesc.StrideAlignment[3], BiasDesc.StrideAlignment[4], BiasDesc.BaseAlignmentInBytes, BiasDesc.PhysicalSizeInElements, BiasDesc.IsNull, OutputDesc.DataType, OutputDesc.Flags, OutputDesc.DimensionCount, OutputDesc.Size[0], OutputDesc.Size[1], OutputDesc.Size[2], OutputDesc.Size[3], OutputDesc.Size[4], OutputDesc.Stride[0], OutputDesc.Stride[1], OutputDesc.Stride[2], OutputDesc.Stride[3], OutputDesc.Stride[4], OutputDesc.StrideAlignment[0], OutputDesc.StrideAlignment[1], OutputDesc.StrideAlignment[2], OutputDesc.StrideAlignment[3], OutputDesc.StrideAlignment[4], OutputDesc.BaseAlignmentInBytes, OutputDesc.PhysicalSizeInElements, Attributes.Mode, Attributes.Direction, Attributes.Precision, Attributes.Stride[0], Attributes.Stride[1], Attributes.Stride[2], Attributes.Dilation[0], Attributes.Dilation[1], Attributes.Dilation[2], Attributes.StartPadding[0], Attributes.StartPadding[1], Attributes.StartPadding[2], Attributes.EndPadding[0], Attributes.EndPadding[1], Attributes.EndPadding[2], Attributes.DimensionCount, Attributes.OutputPadding[0], Attributes.OutputPadding[1], Attributes.OutputPadding[2], Attributes.OutputPadding[3], Attributes.OutputPadding[4], Attributes.GroupCount, Attributes.Activation.Function, Attributes.Activation.Params.first, Attributes.Activation.Params.second, Attributes.Activation.IsNull, Attributes.BindFlags]
[5: InputResource, FilterResource, BiasResource, PersistentResource, TemporaryResource]
[6: InputResource, FilterResource, BiasResource, OutputResource, PersistentResource, TemporaryResource]

GEMM (General matrix multiply)
[91: ADesc.DataType, ADesc.Flags, ADesc.DimensionCount, ADesc.Size[0], ADesc.Size[1], ADesc.Size[2], ADesc.Size[3], ADesc.Size[4], ADesc.Stride[0], ADesc.Stride[1], ADesc.Stride[2], ADesc.Stride[3], ADesc.Stride[4], ADesc.StrideAlignment[0], ADesc.StrideAlignment[1], ADesc.StrideAlignment[2], ADesc.StrideAlignment[3], ADesc.StrideAlignment[4], ADesc.BaseAlignmentInBytes, ADesc.PhysicalSizeInElements, BDesc.DataType, BDesc.Flags, BDesc.DimensionCount, BDesc.Size[0], BDesc.Size[1], BDesc.Size[2], BDesc.Size[3], BDesc.Size[4], BDesc.Stride[0], BDesc.Stride[1], BDesc.Stride[2], BDesc.Stride[3], BDesc.Stride[4], BDesc.StrideAlignment[0], BDesc.StrideAlignment[1], BDesc.StrideAlignment[2], BDesc.StrideAlignment[3], BDesc.StrideAlignment[4], BDesc.BaseAlignmentInBytes, BDesc.PhysicalSizeInElements, CDesc.DataType, CDesc.Flags, CDesc.DimensionCount, CDesc.Size[0], CDesc.Size[1], CDesc.Size[2], CDesc.Size[3], CDesc.Size[4], CDesc.Stride[0], CDesc.Stride[1], CDesc.Stride[2], CDesc.Stride[3], CDesc.Stride[4], CDesc.StrideAlignment[0], CDesc.StrideAlignment[1], CDesc.StrideAlignment[2], CDesc.StrideAlignment[3], CDesc.StrideAlignment[4], CDesc.BaseAlignmentInBytes, CDesc.PhysicalSizeInElements, CDesc.IsNull, OutputDesc.DataType, OutputDesc.Flags, OutputDesc.DimensionCount, OutputDesc.Size[0], OutputDesc.Size[1], OutputDesc.Size[2], OutputDesc.Size[3], OutputDesc.Size[4], OutputDesc.Stride[0], OutputDesc.Stride[1], OutputDesc.Stride[2], OutputDesc.Stride[3], OutputDesc.Stride[4], OutputDesc.StrideAlignment[0], OutputDesc.StrideAlignment[1], OutputDesc.StrideAlignment[2], OutputDesc.StrideAlignment[3], OutputDesc.StrideAlignment[4], OutputDesc.BaseAlignmentInBytes, OutputDesc.PhysicalSizeInElements, Attributes.Precision, Attributes.ATransform, Attributes.BTransform, Attributes.Alpha, Attributes.Beta, Attributes.Activation.Function, Attributes.Activation.Params.first, Attributes.Activation.Params.second, Attributes.Activation.IsNull, Attributes.BindFlags]
[5: AResource, BResource, CResource, PersistentResource, TemporaryResource]
[6: AResource, BResource, CResource, OutputResource, PersistentResource, TemporaryResource]

MVN (Mean Variance Normalization)
[91: InputDesc.DataType, InputDesc.Flags, InputDesc.DimensionCount, InputDesc.Size[0], InputDesc.Size[1], InputDesc.Size[2], InputDesc.Size[3], InputDesc.Size[4], InputDesc.Stride[0], InputDesc.Stride[1], InputDesc.Stride[2], InputDesc.Stride[3], InputDesc.Stride[4], InputDesc.StrideAlignment[0], InputDesc.StrideAlignment[1], InputDesc.StrideAlignment[2], InputDesc.StrideAlignment[3], InputDesc.StrideAlignment[4], InputDesc.BaseAlignmentInBytes, InputDesc.PhysicalSizeInElements, ScaleDesc.DataType, ScaleDesc.Flags, ScaleDesc.DimensionCount, ScaleDesc.Size[0], ScaleDesc.Size[1], ScaleDesc.Size[2], ScaleDesc.Size[3], ScaleDesc.Size[4], ScaleDesc.Stride[0], ScaleDesc.Stride[1], ScaleDesc.Stride[2], ScaleDesc.Stride[3], ScaleDesc.Stride[4], ScaleDesc.StrideAlignment[0], ScaleDesc.StrideAlignment[1], ScaleDesc.StrideAlignment[2], ScaleDesc.StrideAlignment[3], ScaleDesc.StrideAlignment[4], ScaleDesc.BaseAlignmentInBytes, ScaleDesc.PhysicalSizeInElements, ScaleDesc.IsNull, BiasDesc.DataType, BiasDesc.Flags, BiasDesc.DimensionCount, BiasDesc.Size[0], BiasDesc.Size[1], BiasDesc.Size[2], BiasDesc.Size[3], BiasDesc.Size[4], BiasDesc.Stride[0], BiasDesc.Stride[1], BiasDesc.Stride[2], BiasDesc.Stride[3], BiasDesc.Stride[4], BiasDesc.StrideAlignment[0], BiasDesc.StrideAlignment[1], BiasDesc.StrideAlignment[2], BiasDesc.StrideAlignment[3], BiasDesc.StrideAlignment[4], BiasDesc.BaseAlignmentInBytes, BiasDesc.PhysicalSizeInElements, BiasDesc.IsNull, OutputDesc.DataType, OutputDesc.Flags, OutputDesc.DimensionCount, OutputDesc.Size[0], OutputDesc.Size[1], OutputDesc.Size[2], OutputDesc.Size[3], OutputDesc.Size[4], OutputDesc.Stride[0], OutputDesc.Stride[1], OutputDesc.Stride[2], OutputDesc.Stride[3], OutputDesc.Stride[4], OutputDesc.StrideAlignment[0], OutputDesc.StrideAlignment[1], OutputDesc.StrideAlignment[2], OutputDesc.StrideAlignment[3], OutputDesc.StrideAlignment[4], OutputDesc.BaseAlignmentInBytes, OutputDesc.PhysicalSizeInElements, Attributes.Precision, Attributes.CrossChannel, Attributes.NormalizeVariance, Attributes.Epsilon, Attributes.Activation.Function, Attributes.Activation.Params.first, Attributes.Activation.Params.second, Attributes.Activation.IsNull, Attributes.BindFlags]
[5: InputResource, ScaleResource, BiasResource, PersistentResource, TemporaryResource]
[6: InputResource, ScaleResource, BiasResource, OutputResource, PersistentResource, TemporaryResource]
 
Thanks! So experimental tiled resources tier 4 is no more...

Metacommand parameter names are provided by the runtime it seems, so no need for a verbose listing by default. The option /v[erbose] stays and can be invoked in command line when a full list of parameter names is needed.
 
Back
Top