Direct3D feature levels discussion

I was just comparing numbers, let me cross-check. edit: You're right, I'll edit.
edit 2: Dang, I should resume keeping my DX caps table...
edit 3:
Direct3D 12 feature checker (July 2020) by DmitryKo (x64)
https://forum.beyond3d.com/posts/1840641/

Windows 10 version 2009 (build 19042.630 vb_release) x64
Checking for experimental features SM6 TR4 META

ADAPTER 0
"NVIDIA GeForce RTX 3090"
VEN_10DE, DEV_2204, SUBSYS_147D10DE, REV_A1
Dedicated video memory : 24348.0 MB (25530728448 bytes)
Total video memory : 40698.9 MB (42675924992 bytes)
Video driver version : 27.21.14.5709
WDDM version : KMT_DRIVERVERSION_WDDM_2_7 (2700)
Virtual memory model : GPUMMU
Hardware-accelerated scheduler : Enabled
GraphicsPreemptionGranularity : DXGI_GRAPHICS_PREEMPTION_PIXEL_BOUNDARY (3)
ComputePreemptionGranularity : DXGI_COMPUTE_PREEMPTION_DISPATCH_BOUNDARY (1)
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_4 (4)
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, ProtectedResourceSessionTypeCount: 1 D3D12_PROTECTED_RESOURCES_SESSION_HARDWARE_PROTECTED
HighestShaderModel : D3D12_SHADER_MODEL_6_5 (0x0065)
WaveOps : 1
WaveLaneCountMin : 32
WaveLaneCountMax : 32
TotalLaneCount : 10496
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_2 (2)
Native16BitShaderOpsSupported : 1
AtomicShaderInstructions : 0
SRVOnlyTiledResourceTier3 : 1
RenderPassesTier : D3D12_RENDER_PASS_TIER_0 (0)
RaytracingTier : D3D12_RAYTRACING_TIER_1_1 (11)
AdditionalShadingRatesSupported : 1
PerPrimitiveShadingRateSupportedWithViewportIndexing : 1
VariableShadingRateTier : D3D12_VARIABLE_SHADING_RATE_TIER_2 (2)
ShadingRateImageTileSize : 16
BackgroundProcessingSupported : 1
MeshShaderTier : D3D12_MESH_SHADER_TIER_1 (10)
SamplerFeedbackTier : D3D12_SAMPLER_FEEDBACK_TIER_0_9 (90)
DirectML maximum feature level : DML_FEATURE_LEVEL_2_0 (0x2000)
Metacommands enumerated : 8
Metacommands [parameters per stage]: Conv (Convolution) [84][1][6], CopyTensor [3][1][31], 2x2 Nearest neighbour Upsample [15][1][2], MVN (Mean Variance Normalization) [67][1][6], GEMM (General matrix multiply) [67][1][6], Conv (Convolution) [108][5][6], GEMM (General matrix multiply) [91][5][6], MVN (Mean Variance Normalization) [91][5][6]
 
Last edited:
You likely need to have 460 or 465 branch drivers installed on Win 10 21H1 to show any SM 6.6 support.
SM 6.6 doesn't seem to be supported on NV h/w even as an experimental feature yet

I've checked D3D12DDI_SHADER_MODEL in the Insider Preview SDK/WDK, and experimental SM 6_6 is supported with WDDM 2.7, i.e. Windows 10 build 1904x (versions 2004/2009 etc).
WDDM 2.8/2.9 (Insider Preview Manganese / Iron) support 6_6 release and 6_7 experimental.

But of course user-mode video driver needs to explicitly enable them.

RDNA2: Radeon 6800
In comparison to RX5700:
Code:
BarycentricsSupported : 1
RaytracingTier : D3D12_RAYTRACING_TIER_1_1 (11)
PerPrimitiveShadingRateSupportedWithViewportIndexing : 1
VariableShadingRateTier : D3D12_VARIABLE_SHADING_RATE_TIER_2 (2)
ShadingRateImageTileSize : 8
MeshShaderTier : D3D12_MESH_SHADER_TIER_1 (10)
SamplerFeedbackTier : D3D12_SAMPLER_FEEDBACK_TIER_1_0 (100)
Comparing to RTX2080/3090, features are roughly a match, with the same variable shading rate tier (2), better sample feedback tier (1_0 vs 0_9), and lower view instancing tier (1 vs 3).
 
Is there a WDDM version in which using GPU virtual memory won't suck ? (ie be as slow as a snail ?)
 
WARP12 reports KMT_DRIVERVERSION_WDDM_3_0 in Windows 10 Insider Preview Cobalt (build 21277.1000 rs_prerelease); matching SDK/WDK build has not been released yet, but upping of major version number indicates some significant changes under the hood.
 
Last edited:
a tiny little bit about WDDM 3.0 in here
Seems about virtualization.

I think it's something else. If you read the original Microsoft blog post "Direct3D loves Linux", DXGK paravirtualization DDIs required by Direct3D 12 for WSL2 are available since WDDM 2.5. New is supports bundling of proprietary Direct3D12 User Mode Driver binaries for WSL2 with graphics driver packages, but this already works in Windows 10 Iron with WDDM 2.9 WSL2 preview drivers, and version 2.10 would be more appropriate for small refinements than a major version bump.
 
Last edited:
WDDM 3.0 is enabled in the latest Insider build 21301 with Nv's 465.42 driver

Capture30d.png
 
Last edited:
BTW Adrenalin driver v21.2.1 adds finer compute preemption granularity with preliminary support for hardware-accelerated scheduler on RDNA cards (the latter is also available with WU driver 27.20.14502.208 for insider builds). Here's how Insider Preview "Cobalt" reports it on my RX 5700 XT:

Code:
Video driver version : 27.20.14533.1000
WDDM version : KMT_DRIVERVERSION_WDDM_2_7 (2700)
Hardware-accelerated scheduler : Enabled, DXGK_FEATURE_SUPPORT_EXPERIMENTAL (1)
ComputePreemptionGranularity : DXGI_COMPUTE_PREEMPTION_DISPATCH_BOUNDARY (1)

The control for enabling the scheduler is still not showing in System - Display - Graphics Settings - Advanced...
 
Last edited:
Code:
Direct3D 12 feature checker (May 2020) by DmitryKo (x64)
https://forum.beyond3d.com/posts/1840641/

Windows 10 version 2009 (build 19042.804 vb_release) x64
Checking for experimental features SM6 TR4 META

ADAPTER 0
"Intel(R) Iris(R) Xe Graphics"
VEN_8086, DEV_9A40, SUBSYS_22128086, REV_01
Dedicated video memory : 128.0 MB (134217728 bytes)
Total video memory : 8191.3 MB (8589156352 bytes)
Video driver version : 27.20.100.9168
WDDM version : KMT_DRIVERVERSION_WDDM_2_7 (2700)
Hardware-accelerated scheduler : Disabled, not supported
GraphicsPreemptionGranularity : DXGI_GRAPHICS_PREEMPTION_TRIANGLE_BOUNDARY (2)
ComputePreemptionGranularity : DXGI_COMPUTE_PREEMPTION_THREAD_GROUP_BOUNDARY (2)
Maximum feature level : D3D_FEATURE_LEVEL_12_1 (0xc100)
DoublePrecisionFloatShaderOps : 0
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 : 1
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation : 1
ResourceHeapTier : D3D12_RESOURCE_HEAP_TIER_2 (2)
MaxGPUVirtualAddressBitsPerResource : 44
MaxGPUVirtualAddressBitsPerProcess : 48
Adapter Node 0:     TileBasedRenderer: 0, UMA: 1, CacheCoherentUMA: 1, IsolatedMMU: 1, HeapSerializationTier: 0, ProtectedResourceSession.Support: 1, ProtectedResourceSessionTypeCount: 1 D3D12_PROTECTED_RESOURCES_SESSION_HARDWARE_PROTECTED
HighestShaderModel : D3D12_SHADER_MODEL_6_5 (0x0065)
WaveOps : 1
WaveLaneCountMin : 16
WaveLaneCountMax : 16
TotalLaneCount : 1536
ExpandedComputeResourceStates : 1
Int64ShaderOps : 1
RootSignature.HighestVersion : D3D_ROOT_SIGNATURE_VERSION_1_1 (2)
DepthBoundsTestSupported : 1
ProgrammableSamplePositionsTier : D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 (1)
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_2 (2)
BarycentricsSupported : 0
ExistingHeaps.Supported : 1
MSAA64KBAlignedTextureSupported : 1
SharedResourceCompatibilityTier : D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2 (2)
Native16BitShaderOpsSupported : 1
AtomicShaderInstructions : 0
SRVOnlyTiledResourceTier3 : 1
RenderPassesTier : D3D12_RENDER_PASS_TIER_0 (0)
RaytracingTier : D3D12_RAYTRACING_TIER_NOT_SUPPORTED (0)
AdditionalShadingRatesSupported : 1
PerPrimitiveShadingRateSupportedWithViewportIndexing : 0
VariableShadingRateTier : D3D12_VARIABLE_SHADING_RATE_TIER_1 (1)
ShadingRateImageTileSize : 0
BackgroundProcessingSupported : 0
MeshShaderTier : D3D12_MESH_SHADER_TIER_NOT_SUPPORTED (0)
SamplerFeedbackTier : D3D12_SAMPLER_FEEDBACK_TIER_0_9 (90)
Failed to query feature data 8
Error 80070057: The parameter is incorrect.

DirectML maximum feature level : DML_FEATURE_LEVEL_2_0 (0x2000)
Metacommands enumerated : 8
Metacommands [parameters per stage]: Conv (Convolution) [84][1][6], GEMM (General matrix multiply) [67][1][6], Pooling [44][1][4], Conv (Convolution) [108][5][6], GEMM (General matrix multiply) [91][5][6], MVN (Mean Variance Normalization) [91][5][6], Pooling [56][3][4], LSTM (Long Short-Term Memory) [252][10][13]

As mentioned elswhere, I was surprised that Intels latest and greatest did not have Mesh Shader enabled and also only the lower tier Variable Rate Shading.
I hope for the best for Xe HPG and of course that this is only a driver issue for now.
 
As mentioned elswhere, I was surprised that Intels latest and greatest did not have Mesh Shader enabled and also only the lower tier Variable Rate Shading.
I hope for the best for Xe HPG and of course that this is only a driver issue for now.
Xe-LP would miss some DX12U features regardless, so they could have just figured "why bother with any" for it. Xe-HPG on the other hand has been confirmed to support RT and I doubt they would have been so shortsighted that they'd miss other DX12U features (especially since we already know MS can give some leeway like they did for NVIDIA)
 
Mesh shaders, in contrast to raytracing, can help improve framerate, thus making games playable in the first place on lower tier integrated graphics.
 
Back
Top