Direct3D feature levels discussion

A minor update to support new options in Windows 10 SDK build 18945, including mesh shader tier 1_0 :
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)
 
Windows 10 build 18956 includes updated WARP12 (Microsoft Basic Render Driver) with support for variable-rate shading:

Code:
AdditionalShadingRatesSupported : 1
PerPrimitiveShadingRateSupportedWithViewportIndexing : 0
VariableShadingRateTier : D3D12_VARIABLE_SHADING_RATE_TIER_1 (1)
ShadingRateImageTileSize : 0
 
Last edited:
Nvidia 440.23 driver is WDDM2.7 big driver!
enables D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT also on DX11 should be good for Far Cry 5 and Dawn..
dxdiag reports for first time:
(GPU) "Hardware Scheduling: Supported:True"
anybody with a Turing card to see if enables Mesh shading on DX12?

Direct3D 12 feature checker (July 2019) by DmitryKo (x64)
https://forum.beyond3d.com/posts/1840641/
Windows 10 version 1903 (build 18965.1005 rs_prerelease) x64
Checking for experimental features SM6 TR4 FL1 META
ADAPTER 0
"NVIDIA TITAN V"
VEN_10DE, DEV_1D81, SUBSYS_121810DE, REV_A1
Dedicated video memory : 12079.0 MB (12665749504 bytes)
Total video memory : 28441.5 MB (29823049728 bytes)
Video driver version : 26.21.14.4023
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 : 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_1 (1)
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_4 (0x0064)
WaveOps : 1
WaveLaneCountMin : 32
WaveLaneCountMax : 32
TotalLaneCount : 5120
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_2 (2)
BarycentricsSupported : 0
ExistingHeaps.Supported : 1
MSAA64KBAlignedTextureSupported : 1
SharedResourceCompatibilityTier : D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_??? (2)
Native16BitShaderOpsSupported : 1
AtomicShaderInstructions : 0
SRVOnlyTiledResourceTier3 : 1
RenderPassesTier : D3D12_RENDER_PASS_TIER_0 (0)
RaytracingTier : D3D12_RAYTRACING_TIER_1_0 (10)
AdditionalShadingRatesSupported : 0
PerPrimitiveShadingRateSupportedWithViewportIndexing : 0
VariableShadingRateTier : D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED (0)
ShadingRateImageTileSize : 0
BackgroundProcessingSupported : 1
MeshShaderTier : D3D12_MESH_SHADER_TIER_NOT_SUPPORTED (0)
SamplerFeedbackTier : D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED (0)
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]
 
all the WDDM 2.0 differences are covered under the hood
Fine, the Direct3D12 downlevel runtime can call the user-mode driver. However kernel-mode driver uses WDDM/DXGI which remain at version 1.1 as originally shipped in Windows 7 - so recent DXGI features like HDR formats, 3D stereo/VR quad-buffers, finer-grained multitasking, and a few others will not be available.

Nvidia 440.23 driver is WDDM2.7 big driver!
The reported driver version number, 26.21.14.4023, refers to WDDM 2.6.
anybody with a Turing card to see if enables Mesh shading on DX12?
Why would NVidia even bother with driver support? Mesh shader pipeline is not even fully implemented in the Windows SDK Preview, there's not much you can do besides getting the caps bit...
 
mi
Fine, the Direct3D12 downlevel runtime can call the user-mode driver. However kernel-mode driver uses WDDM/DXGI which remain at version 1.1 as originally shipped in Windows 7 - so recent DXGI features like HDR formats, 3D stereo/VR quad-buffers, finer-grained multitasking, and a few others will not be available.


The reported driver version number, 26.21.14.4023, refers to WDDM 2.6.
Why would NVidia even bother with driver support? Mesh shader pipeline is not even fully implemented in the Windows SDK Preview, there's not much you can do besides getting the caps bit...
might be an oversight as dxdiag reports 2.7..
big driver as lots of VK exts, also exposes atomic int64 on OpenCL for first time..
also dxc on github now supports compiling mesh/AS shaders.. and api has dispatch mesh shaders.. so might be enough to test..
also forgot to say 18965 SDK adds directml tiers ,dxva and d3d12 video AV1 profiles..
just a wish, but would be nice if could upgrade your tool to check directml tiers and exposed video codecs on d3d12 api..
 
DXDIAG:
Driver File Version: 26.21.0014.4023 (English)
Driver Version: 26.21.14.4023
DDI Version: 12
Feature Levels: 12_1,12_0,11_1,11_0,10_1,10_0,9_3,9_2,9_1
Driver Model: WDDM 2.7
Hardware Scheduling: Supported:True Enabled:True
 
Fine, the Direct3D12 downlevel runtime can call the user-mode driver. However kernel-mode driver uses WDDM/DXGI which remain at version 1.1 as originally shipped in Windows 7 - so recent DXGI features like HDR formats, 3D stereo/VR quad-buffers, finer-grained multitasking, and a few others will not be available.


The reported driver version number, 26.21.14.4023, refers to WDDM 2.6.
Why would NVidia even bother with driver support? Mesh shader pipeline is not even fully implemented in the Windows SDK Preview, there's not much you can do besides getting the caps bit...
3D stereo is practically dead (maybe AMD still support it via AGS), while HDR output present should be available in fullscreen using AGS and NVAPI I guess... But yess, DXGI 1.1 is the biggest limitation.
 
18965 SDK adds directml tiers ,dxva and d3d12 video AV1 profiles..
just a wish, but would be nice if could upgrade your tool to check directml tiers and exposed video codecs on d3d12 api..
I may add DirectML feature levels at some point, but they are only available in Windows 20H1 and there are no docs yet.

D3D12Video is way too complex, it would probably require a separate reporting utility with a different logic. Basically the output will be very, VERY large lists made from combining every codec/profile, video format, color space, resolution and framerate, and other quite arcane options, for each of the several video device types.
Besides that, there are still no public docs, even though two years have passed, and SDK header file has no SAL annotations, so it's not instantly obvious what parameters the runtime will treat as input.

3D stereo is practically dead (maybe AMD still support it via AGS), while HDR output present should be available in fullscreen using AGS and NVAPI I guess
NVAPI and AMD GPU Services cannot define their own resource formats - these are the responsibility of the WDDM/DXGI layer, which is a part of the OS kernel, and the the vendor-supplied kernel-mode video driver (DXGK).
Virtual/Mixed/Augmented reality is also based on stereoscopic rendering - though Windows 7 is probably not the best platform for that - and AMD OpenGL/Vulkan drivers did support quad-buffer stereoscopy for ages.
 
NVAPI and AMD GPU Services cannot define their own resource formats - these are the responsibility of the WDDM/DXGI layer, which is a part of the OS kernel, and the the vendor-supplied kernel-mode video driver (DXGK).
Virtual/Mixed/Augmented reality is also based on stereoscopic rendering - though Windows 7 is probably not the best platform for that - and AMD OpenGL/Vulkan drivers did support quad-buffer stereoscopy for ages.
Yes, AMD quad buffer is an old thing, and I didn't thing about VR but only on 3D stereo displays..

As for HDR, IIRC Windows 7 supports DXGI_FORMAT_R16G16B16A16_FLOAT as swap chain format on flip mode, which is a supported HDR output on AGS.. I do not remember if RGB10 is also supported, but according to AGS documentation, it should work with agsSetDisplayMode.

HDR10 PQ mode requires a 1010102 swapchain.
HDR10 scRGB mode requires an FP16 swapchain.
Freesync2 scRGB mode requires an FP16 swapchain.
Dolby Vision requires a 8888 UNORM swapchain.

As for colour space that's the main issue, I guess it must be simulated via shader (for the lack of
DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709 support or DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020 using RGB10), something like was needed XBOX 360 for sRGB (it uses a piecewise linear approximation for sRGB.. Valve made a presentation about it, using both runtime shader and offline texture conversions). But I never dealt with HDR presentation, so I may not estimate how much this is practical for HDR color space..

As for paid video content (like Netflix 4K UHD), the lack of playready 3 is a no-go.
 
Last edited:
I think I've made the tool run on Windows 7 and load the downlevel Direct3D12 runtime - if you bother to extract d3d12.dll from the "D3D12onWin7" Nuget package to the same directory or the "12on7" subfolder, as described in the developer specs. Build number from d3d12.dll file version info shall help skip unsupported features.
It's not released yet - I need to test it on a Windows 7 computer with a D3D12 capable discrete card, as it won't run in a compatibility shim.
It will also report the two DirectML feature levels on supporting builds - not sure whatever these levels are supposed to mean though, as both Radeon RX560 and WARP12 report feature level 2_0.
 
Last edited:
question is, can it run Inline RT and DXR Tier 1.1?
Pretty sure it can not because traversal and intersection is a FF unit - likely the traversal can not be made programmable. The question is: Will Ampere support it? Maybe the chip design was done before it turned oput programmable traversal could be so useful.
I think the impact of this functionality is so big it could turn this first gen Turing RT kinda useless on the long run. But if Turing could support this already, i'd love to know it.

I admit i was wrong when i thought they would never 'fix' the API. This traversal shader / inline RT stuff is awesome. Now my only remaining request is to expose BVH data structure with vendor extensions. :)
 
So we know Turing can do Mesh Shaders, question is, can it run Inline RT and DXR Tier 1.1?
Curious about that since Nvidia's blog seems to indicate some level of conformity with microsoft's software changes. But we should know more fairly soon.
Developers targeting NVIDIA RTX GPUS will be able to take the greatest advantage of Microsoft’s software improvements, given the product range’s RT Cores for accelerating ray tracing and hardware support for mesh shaders.
https://news.developer.nvidia.com/dxr-tier-1-1/
 
Ok, now i think 'inline RT' likely means ability to launch rays from compute or pixel shaders but no programmable traversal? Not sure if traversal shaders made it into 1.1 at all.
 
Ok, now i think 'inline RT' likely means ability to launch rays from compute or pixel shaders but no programmable traversal? Not sure if traversal shaders made it into 1.1 at all.
There is no mention of "programmable traversal" anywhere in the links provided. AFAIK all new DX features of 20H1 will be supported on Turing GPUs.
 
Back
Top