Direct3D feature levels discussion

I wonder why Microsoft Basic Render Driver does not work for you... I modified the code to accept minimum feature level and adapter number as command-line arguments - could you please run chkfeature_Mindtaker command file to see if other feature levels work on your system?

Code:
Direct3D 12 feature checker (May 2015) by DmitryKo
https://forum.beyond3d.com/posts/1840641/

Using minimum feature level 9_1

ADAPTER 0
"NVIDIA GeForce GTX 980"
VEN_10DE, DEV_13C0, SUBSYS_236819DA, REV_A1
Dedicated video memory : 3221225472  bytes
Total video memory : 4294901760  bytes
Failed to create Direct3D 12 device
Error 80070057: El parámetro no es correcto.

ADAPTER 1
"Microsoft Basic Render Driver"
VEN_1414, DEV_008C, SUBSYS_00000000, REV_00
Dedicated video memory : 0  bytes
Total video memory : 4276551680  bytes
Failed to create Direct3D 12 device
Error 80070057: El parámetro no es correcto.

FINISHED running on 2015-05-03 13:09:07
2 display adapters enumerated


Direct3D 12 feature checker (May 2015) by DmitryKo
https://forum.beyond3d.com/posts/1840641/

Using minimum feature level 10_0

ADAPTER 0
"NVIDIA GeForce GTX 980"
VEN_10DE, DEV_13C0, SUBSYS_236819DA, REV_A1
Dedicated video memory : 3221225472  bytes
Total video memory : 4294901760  bytes
Failed to create Direct3D 12 device
Error 80070057: El parámetro no es correcto.

ADAPTER 1
"Microsoft Basic Render Driver"
VEN_1414, DEV_008C, SUBSYS_00000000, REV_00
Dedicated video memory : 0  bytes
Total video memory : 4276551680  bytes
Failed to create Direct3D 12 device
Error 80070057: El parámetro no es correcto.

FINISHED running on 2015-05-03 13:09:07
2 display adapters enumerated


Direct3D 12 feature checker (May 2015) by DmitryKo
https://forum.beyond3d.com/posts/1840641/

Using minimum feature level 11_0

ADAPTER 0
"NVIDIA GeForce GTX 980"
VEN_10DE, DEV_13C0, SUBSYS_236819DA, REV_A1
Dedicated video memory : 3221225472  bytes
Total video memory : 4294901760  bytes
Maximum feature level : D3D_FEATURE_LEVEL_11_1 (0xb100)
DoublePrecisionFloatShaderOps : 1
OutputMergerLogicOp : 1
MinPrecisionSupport : D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE (0)
TiledResourcesTier : D3D12_TILED_RESOURCES_TIER_3 (3)
ResourceBindingTier : D3D12_RESOURCE_BINDING_TIER_2 (2)
PSSpecifiedStencilRefSupported : 0
TypedUAVLoadAdditionalFormats : 1
ROVsSupported : 1
ConservativeRasterizationTier : D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 (1)
MaxGPUVirtualAddressBitsPerResource : 38
StandardSwizzle64KBSupported : 0
CrossNodeSharingTier : D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED (0)
CrossAdapterRowMajorTextureSupported : 0
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation : 0
ResourceHeapTier : D3D12_RESOURCE_HEAP_TIER_2 (2)
Adapter Node 0:     TileBasedRenderer: 0, UMA: 0, CacheCoherentUMA: 0

ADAPTER 1
"Microsoft Basic Render Driver"
VEN_1414, DEV_008C, SUBSYS_00000000, REV_00
Dedicated video memory : 0  bytes
Total video memory : 4276551680  bytes
Failed to create Direct3D 12 device
Error 887A0004: Este sistema no admite la interfaz de dispositivo o el nivel de característica especificados.

FINISHED running on 2015-05-03 13:09:07
2 display adapters enumerated


Direct3D 12 feature checker (May 2015) by DmitryKo
https://forum.beyond3d.com/posts/1840641/

Using minimum feature level 11_1

ADAPTER 0
"NVIDIA GeForce GTX 980"
VEN_10DE, DEV_13C0, SUBSYS_236819DA, REV_A1
Dedicated video memory : 3221225472  bytes
Total video memory : 4294901760  bytes
Maximum feature level : D3D_FEATURE_LEVEL_11_1 (0xb100)
DoublePrecisionFloatShaderOps : 1
OutputMergerLogicOp : 1
MinPrecisionSupport : D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE (0)
TiledResourcesTier : D3D12_TILED_RESOURCES_TIER_3 (3)
ResourceBindingTier : D3D12_RESOURCE_BINDING_TIER_2 (2)
PSSpecifiedStencilRefSupported : 0
TypedUAVLoadAdditionalFormats : 1
ROVsSupported : 1
ConservativeRasterizationTier : D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 (1)
MaxGPUVirtualAddressBitsPerResource : 38
StandardSwizzle64KBSupported : 0
CrossNodeSharingTier : D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED (0)
CrossAdapterRowMajorTextureSupported : 0
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation : 0
ResourceHeapTier : D3D12_RESOURCE_HEAP_TIER_2 (2)
Adapter Node 0:     TileBasedRenderer: 0, UMA: 0, CacheCoherentUMA: 0

ADAPTER 1
"Microsoft Basic Render Driver"
VEN_1414, DEV_008C, SUBSYS_00000000, REV_00
Dedicated video memory : 0  bytes
Total video memory : 4276551680  bytes
Failed to create Direct3D 12 device
Error 887A0004: Este sistema no admite la interfaz de dispositivo o el nivel de característica especificados.

FINISHED running on 2015-05-03 13:09:07
2 display adapters enumerated


Direct3D 12 feature checker (May 2015) by DmitryKo
https://forum.beyond3d.com/posts/1840641/

Using minimum feature level 12_0

ADAPTER 0
"NVIDIA GeForce GTX 980"
VEN_10DE, DEV_13C0, SUBSYS_236819DA, REV_A1
Dedicated video memory : 3221225472  bytes
Total video memory : 4294901760  bytes
Failed to create Direct3D 12 device
Error 887A0004: Este sistema no admite la interfaz de dispositivo o el nivel de característica especificados.

ADAPTER 1
"Microsoft Basic Render Driver"
VEN_1414, DEV_008C, SUBSYS_00000000, REV_00
Dedicated video memory : 0  bytes
Total video memory : 4276551680  bytes
Failed to create Direct3D 12 device
Error 887A0004: Este sistema no admite la interfaz de dispositivo o el nivel de característica especificados.

FINISHED running on 2015-05-03 13:09:07
2 display adapters enumerated


Direct3D 12 feature checker (May 2015) by DmitryKo
https://forum.beyond3d.com/posts/1840641/

Using minimum feature level 12_1

ADAPTER 0
"NVIDIA GeForce GTX 980"
VEN_10DE, DEV_13C0, SUBSYS_236819DA, REV_A1
Dedicated video memory : 3221225472  bytes
Total video memory : 4294901760  bytes
Failed to create Direct3D 12 device
Error 887A0004: Este sistema no admite la interfaz de dispositivo o el nivel de característica especificados.

ADAPTER 1
"Microsoft Basic Render Driver"
VEN_1414, DEV_008C, SUBSYS_00000000, REV_00
Dedicated video memory : 0  bytes
Total video memory : 4276551680  bytes
Failed to create Direct3D 12 device
Error 887A0004: Este sistema no admite la interfaz de dispositivo o el nivel de característica especificados.

FINISHED running on 2015-05-03 13:09:07
2 display adapters enumerated

FYI you can download standalone WIndows SDK 10.0.10069 to get the updated DxCapsView for Direct3D 11.3 (the SDK is also included with Visual Studio Community 2015 RC download).

Downloading!
 
Now with the SDK installed:

Code:
Direct3D 12 feature checker (May 2015) by DmitryKo
https://forum.beyond3d.com/posts/1840641/

Using minimum feature level 9_1

ADAPTER 0
"NVIDIA GeForce GTX 980"
VEN_10DE, DEV_13C0, SUBSYS_236819DA, REV_A1
Dedicated video memory : 3221225472  bytes
Total video memory : 4294901760  bytes
Failed to create Direct3D 12 device
Error 80070057: El parámetro no es correcto.

ADAPTER 1
"Microsoft Basic Render Driver"
VEN_1414, DEV_008C, SUBSYS_00000000, REV_00
Dedicated video memory : 0  bytes
Total video memory : 4276551680  bytes
Failed to create Direct3D 12 device
Error 80070057: El parámetro no es correcto.

FINISHED running on 2015-05-03 13:53:52
2 display adapters enumerated


Direct3D 12 feature checker (May 2015) by DmitryKo
https://forum.beyond3d.com/posts/1840641/

Using minimum feature level 10_0

ADAPTER 0
"NVIDIA GeForce GTX 980"
VEN_10DE, DEV_13C0, SUBSYS_236819DA, REV_A1
Dedicated video memory : 3221225472  bytes
Total video memory : 4294901760  bytes
Failed to create Direct3D 12 device
Error 80070057: El parámetro no es correcto.

ADAPTER 1
"Microsoft Basic Render Driver"
VEN_1414, DEV_008C, SUBSYS_00000000, REV_00
Dedicated video memory : 0  bytes
Total video memory : 4276551680  bytes
Failed to create Direct3D 12 device
Error 80070057: El parámetro no es correcto.

FINISHED running on 2015-05-03 13:53:52
2 display adapters enumerated


Direct3D 12 feature checker (May 2015) by DmitryKo
https://forum.beyond3d.com/posts/1840641/

Using minimum feature level 11_0

ADAPTER 0
"NVIDIA GeForce GTX 980"
VEN_10DE, DEV_13C0, SUBSYS_236819DA, REV_A1
Dedicated video memory : 3221225472  bytes
Total video memory : 4294901760  bytes
Maximum feature level : D3D_FEATURE_LEVEL_11_1 (0xb100)
DoublePrecisionFloatShaderOps : 1
OutputMergerLogicOp : 1
MinPrecisionSupport : D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE (0)
TiledResourcesTier : D3D12_TILED_RESOURCES_TIER_3 (3)
ResourceBindingTier : D3D12_RESOURCE_BINDING_TIER_2 (2)
PSSpecifiedStencilRefSupported : 0
TypedUAVLoadAdditionalFormats : 1
ROVsSupported : 1
ConservativeRasterizationTier : D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 (1)
MaxGPUVirtualAddressBitsPerResource : 38
StandardSwizzle64KBSupported : 0
CrossNodeSharingTier : D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED (0)
CrossAdapterRowMajorTextureSupported : 0
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation : 0
ResourceHeapTier : D3D12_RESOURCE_HEAP_TIER_2 (2)
Adapter Node 0:     TileBasedRenderer: 0, UMA: 0, CacheCoherentUMA: 0

ADAPTER 1
"Microsoft Basic Render Driver"
VEN_1414, DEV_008C, SUBSYS_00000000, REV_00
Dedicated video memory : 0  bytes
Total video memory : 4276551680  bytes
Maximum feature level : D3D_FEATURE_LEVEL_12_0 (0xc000)
DoublePrecisionFloatShaderOps : 1
OutputMergerLogicOp : 1
MinPrecisionSupport : D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT | 16_BIT (3)
TiledResourcesTier : D3D12_TILED_RESOURCES_TIER_3 (3)
ResourceBindingTier : D3D12_RESOURCE_BINDING_TIER_3 (3)
PSSpecifiedStencilRefSupported : 0
TypedUAVLoadAdditionalFormats : 0
ROVsSupported : 0
ConservativeRasterizationTier : D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED (0)
MaxGPUVirtualAddressBitsPerResource : 38
StandardSwizzle64KBSupported : 0
CrossNodeSharingTier : D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED (0)
CrossAdapterRowMajorTextureSupported : 1
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation : 1
ResourceHeapTier : D3D12_RESOURCE_HEAP_TIER_2 (2)
Adapter Node 0:     TileBasedRenderer: 0, UMA: 1, CacheCoherentUMA: 1

FINISHED running on 2015-05-03 13:53:52
2 display adapters enumerated


Direct3D 12 feature checker (May 2015) by DmitryKo
https://forum.beyond3d.com/posts/1840641/

Using minimum feature level 11_1

ADAPTER 0
"NVIDIA GeForce GTX 980"
VEN_10DE, DEV_13C0, SUBSYS_236819DA, REV_A1
Dedicated video memory : 3221225472  bytes
Total video memory : 4294901760  bytes
Maximum feature level : D3D_FEATURE_LEVEL_11_1 (0xb100)
DoublePrecisionFloatShaderOps : 1
OutputMergerLogicOp : 1
MinPrecisionSupport : D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE (0)
TiledResourcesTier : D3D12_TILED_RESOURCES_TIER_3 (3)
ResourceBindingTier : D3D12_RESOURCE_BINDING_TIER_2 (2)
PSSpecifiedStencilRefSupported : 0
TypedUAVLoadAdditionalFormats : 1
ROVsSupported : 1
ConservativeRasterizationTier : D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 (1)
MaxGPUVirtualAddressBitsPerResource : 38
StandardSwizzle64KBSupported : 0
CrossNodeSharingTier : D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED (0)
CrossAdapterRowMajorTextureSupported : 0
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation : 0
ResourceHeapTier : D3D12_RESOURCE_HEAP_TIER_2 (2)
Adapter Node 0:     TileBasedRenderer: 0, UMA: 0, CacheCoherentUMA: 0

ADAPTER 1
"Microsoft Basic Render Driver"
VEN_1414, DEV_008C, SUBSYS_00000000, REV_00
Dedicated video memory : 0  bytes
Total video memory : 4276551680  bytes
Maximum feature level : D3D_FEATURE_LEVEL_12_0 (0xc000)
DoublePrecisionFloatShaderOps : 1
OutputMergerLogicOp : 1
MinPrecisionSupport : D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT | 16_BIT (3)
TiledResourcesTier : D3D12_TILED_RESOURCES_TIER_3 (3)
ResourceBindingTier : D3D12_RESOURCE_BINDING_TIER_3 (3)
PSSpecifiedStencilRefSupported : 0
TypedUAVLoadAdditionalFormats : 0
ROVsSupported : 0
ConservativeRasterizationTier : D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED (0)
MaxGPUVirtualAddressBitsPerResource : 38
StandardSwizzle64KBSupported : 0
CrossNodeSharingTier : D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED (0)
CrossAdapterRowMajorTextureSupported : 1
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation : 1
ResourceHeapTier : D3D12_RESOURCE_HEAP_TIER_2 (2)
Adapter Node 0:     TileBasedRenderer: 0, UMA: 1, CacheCoherentUMA: 1

FINISHED running on 2015-05-03 13:53:52
2 display adapters enumerated


Direct3D 12 feature checker (May 2015) by DmitryKo
https://forum.beyond3d.com/posts/1840641/

Using minimum feature level 12_0

ADAPTER 0
"NVIDIA GeForce GTX 980"
VEN_10DE, DEV_13C0, SUBSYS_236819DA, REV_A1
Dedicated video memory : 3221225472  bytes
Total video memory : 4294901760  bytes
Failed to create Direct3D 12 device
Error 887A0004: Este sistema no admite la interfaz de dispositivo o el nivel de característica especificados.

ADAPTER 1
"Microsoft Basic Render Driver"
VEN_1414, DEV_008C, SUBSYS_00000000, REV_00
Dedicated video memory : 0  bytes
Total video memory : 4276551680  bytes
Maximum feature level : D3D_FEATURE_LEVEL_12_0 (0xc000)
DoublePrecisionFloatShaderOps : 1
OutputMergerLogicOp : 1
MinPrecisionSupport : D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT | 16_BIT (3)
TiledResourcesTier : D3D12_TILED_RESOURCES_TIER_3 (3)
ResourceBindingTier : D3D12_RESOURCE_BINDING_TIER_3 (3)
PSSpecifiedStencilRefSupported : 0
TypedUAVLoadAdditionalFormats : 0
ROVsSupported : 0
ConservativeRasterizationTier : D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED (0)
MaxGPUVirtualAddressBitsPerResource : 38
StandardSwizzle64KBSupported : 0
CrossNodeSharingTier : D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED (0)
CrossAdapterRowMajorTextureSupported : 1
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation : 1
ResourceHeapTier : D3D12_RESOURCE_HEAP_TIER_2 (2)
Adapter Node 0:     TileBasedRenderer: 0, UMA: 1, CacheCoherentUMA: 1

FINISHED running on 2015-05-03 13:53:52
2 display adapters enumerated


Direct3D 12 feature checker (May 2015) by DmitryKo
https://forum.beyond3d.com/posts/1840641/

Using minimum feature level 12_1

ADAPTER 0
"NVIDIA GeForce GTX 980"
VEN_10DE, DEV_13C0, SUBSYS_236819DA, REV_A1
Dedicated video memory : 3221225472  bytes
Total video memory : 4294901760  bytes
Failed to create Direct3D 12 device
Error 887A0004: Este sistema no admite la interfaz de dispositivo o el nivel de característica especificados.

ADAPTER 1
"Microsoft Basic Render Driver"
VEN_1414, DEV_008C, SUBSYS_00000000, REV_00
Dedicated video memory : 0  bytes
Total video memory : 4276551680  bytes
Failed to create Direct3D 12 device
Error 887A0004: Este sistema no admite la interfaz de dispositivo o el nivel de característica especificados.

FINISHED running on 2015-05-03 13:53:52
2 display adapters enumerated

baX8Yhp.jpg
 
It's probably just not up to date without the SDK. Otherwise it wouldn't even enumerate.
That's what I said - the recent SDK seems to install/enable updated WARP which supports Direct3D 12 and feature level 12_0.
Otherwise WARP fails creating D3D12 device on the Basic Render adapter (and BTW the API has changed too, so you are no longer able to request hardware, Reference or WARP device with D3D12CreateDevice, unlike it's D3D11 counterpart).

Have you tried with GeForce 352.63 Windows 10TP driver?
Yes, he said it only 5 posts above.
 
That's what I said - the recent SDK seems to install/enable updated WARP which supports Direct3D 12 and feature level 12_0.

That's correct. The 12 version of the WARP driver is an SDK component right now, meant for developer usage and not mainstream application usage. It isn't quite as optimized as the 11 driver and isn't fully feature level 12.1 yet. This will improve over time and eventually it'll be included in the main OS release. The 11 version of WARP is always in the OS and supported for application scenarios.

Max McMullen
Direct3D Development Lead
Microsoft
 
https://msdn.microsoft.com/en-us/library/windows/desktop/dn770364(v=vs.85).aspx
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation

Great feature with an even greater name :).

I wonder why Microsoft hasn't discussed about this in their DX12 presentations. This has been one of our top feature requests for ages.
I forgot to explain why this is great. In DirectX 11, you had to use a geometry shader to send different triangles to different render targets. Even a pass through geometry shader (1 triangle out) is roughly 1.6x performance hit on NVIDIA and 2.7x on AMD (in primitive bound cases) according to my test cases (Intel is fast). With this DX12 feature you can directly send triangles to different render targets from the vertex shader, skipping the geometry shader entirely.

Every graphics programmer loves to skip the geometry shader (unless you are making super slow hair rendering code) :)
 
Is VPARTAIFASFRSWGSE supported across the board or does it require FL12+?
That caps bit with that name indicates whether it is supported naively by the hardware or if the driver is going to put a GS in there behind your back. It's sort of a weird cap TBH since there's no clear alternative in an application beyond putting the same GS in there manually, but yeah.
 
ViewportAndRenderTargetArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGeometryShaderEmulation

Had to try it without the abbreviations :)

will be funny if you need to enter this on each line of code for it..

This said now we can write it with underscore or space between the words and we understand finally what it was about.
 
Back
Top