stuff like resource binding (and bindless) is only exposed in D3D12 and has no equivalent in 11.3
I know, but what would be the practical implications?
New rendering features in 11.3 are available on the same hardware as in Direct3D 12 and require the same WDDM 2.0 drivers - it's an update for those not wishing to go 12.0 route just yet. It's not like developers will be first making a Direct3D 12 version with bindless shaders and other 12_0 features, then port it down to Direct3D 11.3 just to run slower on the same hardware and rework all shaders again too.
There have actually been optional capabilities in every version of DX, but I agree they swung back in that direction a bit with 11.1
Yes, I said it before that resource formats and their supported operations are optional.
D3D10_FORMAT_SUPPORT
D3D11_FORMAT_SUPPORT
D3D12_FORMAT_SUPPORT1
This is when the support matrix between Windows version, WDDM driver version, Direct3D runtime version, and supported feature level became unmanageable for most developers
The alternative isn't any more manageable - you need the latest OS *and* the latest hardware to use a new API.
At least on Windows 10 if you have the latest hardware, you can finally use its features - for AMD and NVidia, it's almost anything they released in the last 3-4 years. And the a free OS upgrade is an in-place update process initiated through Windows Update.
This should be clearly an improvement over current OS/WDDM/Direct3D fragmentation.
I don't see a clearly better way for it to be handled than what DX is doing, although it would be much nicer if feature levels just had unrelated names.
Yes, apparently the source of the problem is not really with the naming of feature levels, but with hardware support.
The confusion started when NVidia did not implement full level 11_1 requirements in their hardware for some reasons - and continued when Windows 8/WDDM 1.2 failed in the market, in effect making level 11_1 support much less relevant since level 11_0 features were the highest the users could practically get on Windows 7. Clever naming schemes are the most effortless way to minimize the consequences of moving off the "no options" strategy.
I wonder how this would work for future version of Direct3D 12.x - will they return to the more strict approach of Direct3D 10.x and 11.0, where the feature levels included an extended list of strict of requirements, or they will follow the current path of 11.1 where only a few major features are required on the higher levels and most other features are optional. I guess it also depends on whether these new features will be driven by hardware vendors or application software developers...
Also 11.3 is lacking ExecuteIndirect, async copy and async compute. I would assume it is also lacking GPU buffer predicates (skip commands based on a GPU buffer value).
But these differences also apply to feature levels 11_0 and 11_1.
each version of DirectX (e.g. 11, 11.1, 11.2, 11.3, 12, etc.) should have their own set of feature levels (e.g. feature level 1, 2, 3, etc.)
Each
major version should probably have its own feature levels. And thankfully Microsoft settled on 11_0 as a minimum supported in Direct3D 12 and excluded levels 9_x and 10_x.
Trying to freeze minor revisions or build numbers is a bit extreme - Microsoft tried it with the HLSL compiler which had a different DLL name in each DirectX SDK revision, but finally settled with d3dcompiler_47.dll and made it part of the OS in Windows 8.1.
Yes, this is how it works on the game consoles, but what would be the benefits of "freezing" minor revisions of Direct3D runtime in Windows, where both graphics drivers by vendors and the OS platform itself are indeed a moving target?
why Microsoft didn't add a cap-bit to expose 64 slots and UAV for all sahders for what that was like... 50% of the GPU market?
Probably because Fermi/Kepler/Maxwell do not support it - at least the way it was implemented in Direct3D, since
OpenGL limits seem to be quite different.