Direct3D feature levels discussion

This is more or less similar to how MS has provided D3D12 support on Win7 for some games I'd say.
There are two major differences: first, the D3D12Core component of the OS will be serviced by Windows Update to automatically include the latest released version (while this particular OS remains supported); second, developers only need to declare two export symbols in the executable file (which specify the minimum supported SDK version and the path to the redistributable D3D12Core.dll), while the D3D12.dll thunk library should automatically load the latest available version of D3D12Core.


Meanwhile, I've made a minor update to my Direct3D12 Feature Checker tool to report new options in the Direct3D 12 Agile SDK headers, which are currently the same as Insider Preview 'Cobalt'.

I will look into supporting D3D12Core, so people could test new video driver features without installing Insider Preview builds. I need to check if the redistributable D3D12Core.dll has to be included with the executable at all times, or the D3D12.dll thunk will substitute the version that comes with the downlevel OS...


[Edit] Agile versions have been added. Requires the Direct3D 12 Agile SDK package
https://www.nuget.org/packages/Microsoft.Direct3D.D3D12
Extract D3D12Core.dll from x64 (or ARM64) subfolder and place it into into D3D12\ subfoler in the tool folder.
The NuGet package file (.NPKG) is a ZIP format archive which can be opened by NuGet Package Explorer, 7-Zip, WinRAR, or File Explorer
 
Last edited:
In before Microsoft decides that there will be too many OS-DX runtime versions combo support and that is not good that some dll cannot updated and controlled by their OS... And in before more driver madness... and DXGI compatibility issues..

second, developers only need to declare two export symbols in the executable file (which specify the minimum supported SDK version and the path to the redistributable D3D12Core.dll). while the d3d12.dll thunk library should automatically load the latest available version of D3D12Core.
that's looks reasonable... in before devs discover they still continue to use absolute paths when asking about dlls (lol jokin.. but that happened a lot of time in the past!)
 
I will look into supporting D3D12Core, so people could test new video driver features without installing Insider Preview builds. I need to check if the redistributable D3D12Core.dll has to be included with the executable at all times, or the D3D12.dll thunk will substitute the version that comes with the downlevel OS...

Nope, failure creating Direct3D 12 device if "D3D12\D3D12Core.dll" is not present. Otherwise works as advertised - i.e. all features from Cobalt SDK can be queried on versions 200x/210x (preview build 1904x).


I will include a separate EXE download for those who run Windows 10 versions 1909 (build 1836x) or 2009 (build 1904x). They will need to download the latest Direct3D 12 Agility SDK package from NuGet, then extract x64\D3D12Core.dll into "D3D12" subfolder (.NUPKG file is simply a ZIP archive which can be opened by WinRAR or 7-Zip).
https://www.nuget.org/packages/Microsoft.Direct3D.D3D12

there will be too many OS-DX runtime versions combo support and that is not good that some dll cannot updated and controlled by their OS... And in before more driver madness... and DXGI compatibility issues
There are several servicing strategies - they can either 'force-upgrade' to the latest SDK version, or make a service release for the same SDK version of the redistributable D3D12Core.dll - I guess this will be decided on a case-by-case basis, according to specific feature requests from major publishers.

Overall this will be limited to features implemented by the user-mode driver, such as DXIL improvements and feature level 12_2; features that require new DXGK/WDDM versions, such as hardware-accelerated graphics scheduler, will not work and will be reported as 'not supported' by feature query.
 
Last edited:
I've added the 'agile' version of the tool to the post above.

Redistributable runtime
Windows 10 version 1909 (build 18363) and later support redistributable Direct3D 12 runtime which offfers latest features from Insider Preview builds.

Download the latest Direct3D 12 Agile SDK and extract d3d12core.dll from x64 (or arm64) folder of the NuGet package to the D3D12\ subfolder in the app folder.
https://www.nuget.org/packages/Microsoft.Direct3D.D3D12
(NuGet package file (.NPKG) is a ZIP format archive which can be opened by NuGet Package Explorer, 7-Zip, WinRAR, or File Explorer.)

Run the Agile version of the feature checker tool.​
 
I don't normally scrutinize these quotes, but the way NVIDIA and AMD are phrasing their support is wildly different!

NVIDIA is bolder, bragging about working with Microsoft to introduce Mesh Shaders, Variable Rate Shading and Ray Tracing.
NVIDIA has been working with Microsoft to empower game developers with DirectX 12 Ultimate through the introduction of Mesh Shading, Variable Rate Shading, Sampler Feedback, and DirectX Raytracing.

While AMD is more casual about it, citing support, nothing more.
AMD’s RDNA™ 2 graphics architecture fully supports DirectX® 12 Ultimate and is available on a broad spectrum of hardware, including Xbox Series X|S and AMD Radeon™ RX 6000 Series graphics cards

One is phrasing their words as if they influenced the making of DX12U, while the other is just casually stating widespread support.
Does this mean anything? Or is it just a figure of speech? I don't know.
 
I don't normally scrutinize these quotes, but the way NVIDIA and AMD are phrasing their support is wildly different!

NVIDIA is bolder, bragging about working with Microsoft to introduce Mesh Shaders, Variable Rate Shading and Ray Tracing.


While AMD is more casual about it, citing support, nothing more.


One is phrasing their words as if they influenced the making of DX12U, while the other is just casually stating widespread support.
Does this mean anything? Or is it just a figure of speech? I don't know.
Considering that NVIDIA is including Sampler Feedback, feature that had to be scaled down to "0.9" so it would work with NVIDIA, I'd say it's safe to say it's just the way they want to talk.
 
Considering that NVIDIA is including Sampler Feedback, feature that had to be scaled down to "0.9" so it would work with NVIDIA, I'd say it's safe to say it's just the way they want to talk.
That's just the way you want to think, as for facts, nvidia introduced all these features years before MS in NVAPI and Vulkan extensions, so there is no way they couldn't have influenced Microsoft's API development.
The real widespread hardware support on PC is also all about Turing and Ampere GPUs, market share of RDNA2 in PC space is obviously statistically insignificant in comparison.
 
Considering that NVIDIA is including Sampler Feedback, feature that had to be scaled down to "0.9" so it would work with NVIDIA, I'd say it's safe to say it's just the way they want to talk.
0.9 SF tier lacks support for some obscure texture formats AFAIU. You can just as easily say that MS has decided to name that "0.9" because the main target for the feature was their XSX GPU - which supports SF for such formats.
I think it's a weird choice of naming on MS's part as a 1.0 and 1.1 would be a better fit here probably. 0.9 makes it look like the feature isn't support - which isn't correct.
 
That's just the way you want to think, as for facts, nvidia introduced all these features years before MS in NVAPI and Vulkan extensions, so there is no way they couldn't have influenced Microsoft's API development.
The real widespread hardware support on PC is also all about Turing and Ampere GPUs, market share of RDNA2 in PC space is obviously statistically insignificant in comparison.
No-one said or even remotely suggested NVIDIA didn't influence Microsoft API development, of course they did, just like AMD, Intel, Qualcomm and probably others did too.
That doesn't change the fact that NVIDIAs Texture Space Shading isn't capable of everything what Microsoft wanted for Sampler Feedback, which is why it's not Tier 1 but 0.9.

You shouldn't view DirectX/Direct3D as just PC only, either, since Xbox is very much part of the process instead of separate entity with it's own APIs, even when they're not 1:1 with Windows DX in all aspects.

0.9 SF tier lacks support for some obscure texture formats AFAIU. You can just as easily say that MS has decided to name that "0.9" because the main target for the feature was their XSX GPU - which supports SF for such formats.
I think it's a weird choice of naming on MS's part as a 1.0 and 1.1 would be a better fit here probably. 0.9 makes it look like the feature isn't support - which isn't correct.
https://microsoft.github.io/DirectX-Specs/d3d/SamplerFeedback.html
There seems to be quite a lot of restrictions in 0.9 to make it work other than "support for obscure texture formats" according to that.
It seems more likely MS agreed to implent 0.9 for NVIDIA because of their market share with hardware supporting all the rest of DX12U, rather than just bad naming.
Before if you couldn't meet everything some feature required, you didn't support it, end of story. IIRC there has been plenty of cases where hardware x meets most of feature y's requirements, but not all, and end up not supporting the feature because of it.
 
That doesn't change the fact that NVIDIAs Texture Space Shading isn't capable of everything what Microsoft wanted for Sampler Feedback, which is why it's not Tier 1 but 0.9.
We don't know the logic behind this naming, so there are no facts why it was named 0.9.
Just as well, it could have been named 1.1 as DegustatoR said.
As of now, that naming brings nothing but fanboy's bragging about it.
Unfortunately, people bragging about it have no clue on how restrictive the 0.9 is or about its limitations.
Personally I don't know how often mirrored textures with the unsupported D3D12_TEXTURE_ADDRESS_MODE_MIRROR address mode can be found in modern games.
I don't remember seeing any such textures in recent games, so not sure whether Tier 1 has any meaningfull impact for development at all, probably this stuff can even be workarounded with a few shader instructions on a game's renderer side.
Lets wait for the 3DMark Sampler Feedback feature test at least.

You shouldn't view DirectX/Direct3D as just PC only, either, since Xbox is very much part of the process instead of separate entity with it's own APIs,
It's a separate entity because MS has a plenty of low level stuff there not exposed on PC.

There seems to be quite a lot of restrictions in 0.9 to make it work other than "support for obscure texture formats" according to that.
There are not, the only meaningful restrictions are address modes, other restrictions don't matter much.
 
https://microsoft.github.io/DirectX-Specs/d3d/SamplerFeedback.html
There seems to be quite a lot of restrictions in 0.9 to make it work other than "support for obscure texture formats" according to that.
It seems more likely MS agreed to implent 0.9 for NVIDIA because of their market share with hardware supporting all the rest of DX12U, rather than just bad naming.
Before if you couldn't meet everything some feature required, you didn't support it, end of story. IIRC there has been plenty of cases where hardware x meets most of feature y's requirements, but not all, and end up not supporting the feature because of it.

It puzzles me then why Nvidia hasn't catched up to SF Tier 1.0 with Ampere. Seems like this feature will remain to play a subordinate role for a long time, or Tier 0.9 will be good enough.
 
https://microsoft.github.io/DirectX-Specs/d3d/SamplerFeedback.html
There seems to be quite a lot of restrictions in 0.9 to make it work other than "support for obscure texture formats" according to that.
It seems more likely MS agreed to implent 0.9 for NVIDIA because of their market share with hardware supporting all the rest of DX12U, rather than just bad naming.
Before if you couldn't meet everything some feature required, you didn't support it, end of story. IIRC there has been plenty of cases where hardware x meets most of feature y's requirements, but not all, and end up not supporting the feature because of it.

It puzzles me then why Nvidia hasn't catched up to SF Tier 1.0 with Ampere. Seems like this feature will remain to play a subordinate role for a long time, or Tier 0.9 will be good enough.


Tier 1.0 is pretty much irrelevant outside a very few and selected scenarios. 0.9 is more than enough. I've talked with Microsoft engineers on the DX discord about this matter.
 
Splitting the user base on such minor feature wouldn't be of any help to anyone I'd imagine.
Playing the devil's advocate here: It's entirely possible for a company to slow the adoption of a feature via such devices until said feature does not hurt their performance as much as it might do now. That's much more subtle than not to support it in the first place or to say "yes we support it, but please do not use it/use it only in small doses".

No idea, if that's the case here and if so, how they got M$ to play along, but I think it's entirely possible.
 
Playing the devil's advocate here: It's entirely possible for a company to slow the adoption of a feature via such devices until said feature does not hurt their performance as much as it might do now. That's much more subtle than not to support it in the first place or to say "yes we support it, but please do not use it/use it only in small doses".

No idea, if that's the case here and if so, how they got M$ to play along, but I think it's entirely possible.
This makes no sense as the company in question has actually introduced the feature in the first place.
 
Back
Top