Direct3D feature levels discussion

Nice to know that! Are you talking about all Intel hardware, Gen 7.5 included?
Yes, all hardware. See our earlier presentations - they include big sections on resource binding on both Gen7.5/Gen8 and Gen9.

But yeah, feel free to send 64 DWORD constants or whatever in your RS on Intel hardware - works great.
 
MSDN states:

On which hardware?
I also still do not have clear which hardware has a dedicated buffer for root argument versioning and how big is it.
On GCN a wave execution starts with the first SGPRs filled with the root arguments. You can use AMD CodeXL to inspect GCN shader microcode. GCN vertex fetch is bindless, and vertex buffer (VBV) uses a resource descriptor like every other shader resource (SRV, UAV, CBV). AMD doesn't have bindless IBVs.

Nvidia's OpenGL extensions (such as https://www.opengl.org/registry/specs/NV/bindless_multi_draw_indirect.txt) point out that Nvidia possibly has bindless IBV support (or other way of supporting this use case).
 
I also still do not have clear which hardware has a dedicated buffer for root argument versioning and how big is it. I guess there are different hardware with different "root buffer" sizes, but none of current hardware has a big one enough to cover the full root signature size allowed by the API (64 DWORDs).
Uhh, that's not correct. Intel hardware can do even more than the 64 DWORDS without additional indirection.
Keep in mind parallelism between multiple kernels on all of the "bigger" architectures. You can possibly have much more than a single root signature loaded on the CU.

E.g. Nvidia hints that you should sort your root signature by possible performance if not cached, in case L1/LSHM occupation limit is already reached.
 
Keep in mind parallelism between multiple kernels on all of the "bigger" architectures. You can possibly have much more than a single root signature loaded on the CU.
Pipelining of root argument/signature changes is required on all chips for performance - this *is* the inner loop after all. My statement stands - Gen can easily pipeline 64 DWORDS/draw or more efficiently.
 
AMD Catalyst driver 15.201.1151.1007 (15.11 beta) now reports feature level 12_0 under Direct3D 11.3 in Windows 10 build 10586, so DXDiag lists the level "12.0" now.


There's also a standalone Windows SDK 10.0.10563 release; it includes an updated DXCapsView with a full Direct3D 12 node and support for feature level 12_0 under Direct3D 11.3 node, as well as a feature-complete WARP12 renderer which now implements feature level 12_1 with PS Specified Stencil Ref, Conservative Rasterization Tier 3, and StandardSwizzle64KB (no DIrect3D 11.3 support yet).
https://dev.windows.com/en-us/downloads/windows-10-sdk


AFAIK that's the first actual update since the release of VS2015 and SDK 10.0.10240 in late June - not quite at "SDK updates with each Fast ring release" level yet...
 
Last edited:
Had a quick look in the UE 4.10: they are making some differences between resource binding tiers and heap tiers. "async compute" is still in the preprocessor limbo "#error Implement me!"
 
Hi,
somebody knows why I can't get my Intel HD 530 graphics to create a D3D12 device..

I also have a Nvidia 970..
complete specs:
Intel 6600k
Gigabyte Z170 Gaming 7 bios f7k
nvidia driver 361.92
intel driver.. whatever I have tried latest beta 4380 and stable one..
Windows 10 x64 TH2

doesn't matter in BIOS I boot with GPU boot device HD530 or GTX970..
Also doesn't matter if I enable UEFI boot or not..
I have checked changing crazy things like disable/enable VT-D, VGA mem sizes, etc..

may be what's special is because I'm using HDMI 2.0 port of Gigabyte mobo to connect to a 4k TV to a HDMI input in Samsung TV that doesn't support 4:4:4 so getting 4k60hz @ 4:2:0
super strange as OpenGL, D3D11, OpenCL works correctly on HD 530..

using feature checker from this thread I get two reports (one using as primary adapter other as secondary):


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

ADAPTER 0
"Intel(R) HD Graphics 530"
VEN_8086, DEV_1912, SUBSYS_D0001458, REV_06
Dedicated video memory : 134217728 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
"NVIDIA GeForce GTX 970"
VEN_10DE, DEV_13C2, SUBSYS_31601462, REV_A1
Dedicated video memory : 3221225472 bytes
Total video memory : 4294901760 bytes
Maximum feature level : D3D_FEATURE_LEVEL_12_1 (0xc100)
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)
StandardSwizzle64KBSupported : 0
CrossNodeSharingTier : D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED (0)
CrossAdapterRowMajorTextureSupported : 0
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation : 0
ResourceHeapTier : D3D12_RESOURCE_HEAP_TIER_1 (1)
MaxGPUVirtualAddressBitsPerResource : 40
MaxGPUVirtualAddressBitsPerProcess : 40
Adapter Node 0: TileBasedRenderer: 0, UMA: 0, CacheCoherentUMA: 0


::::::::::::::::::::::::::::::::::::

ADAPTER 0
"NVIDIA GeForce GTX 970"
VEN_10DE, DEV_13C2, SUBSYS_31601462, REV_A1
Dedicated video memory : 3221225472 bytes
Total video memory : 4294901760 bytes
Maximum feature level : D3D_FEATURE_LEVEL_12_1 (0xc100)
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)
StandardSwizzle64KBSupported : 0
CrossNodeSharingTier : D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED (0)
CrossAdapterRowMajorTextureSupported : 0
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation : 0
ResourceHeapTier : D3D12_RESOURCE_HEAP_TIER_1 (1)
MaxGPUVirtualAddressBitsPerResource : 40
MaxGPUVirtualAddressBitsPerProcess : 40
Adapter Node 0: TileBasedRenderer: 0, UMA: 0, CacheCoherentUMA: 0

ADAPTER 1
"Intel(R) HD Graphics 530"
VEN_8086, DEV_1912, SUBSYS_D0001458, REV_06
Dedicated video memory : 134217728 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.
 
@oscarbg I see you are using the BETA bios version (and at that even a version which hasn't even been released officially yet!).

Does the bug also occur with the stable bios version F6, or at least with the public version F7g?
 
Latest I've tried were 358.70 which seemed to be working for a few SDK samples I tried.
Latest I've heard from Nvidia, when asking this via email was: „“
 
Even the GTX580 had only 1.5GB (save for the very rare 3GB versions), and it seems 2GB is the bare minimum to do anything in DX12. So I thought it was very odd that they ever planned on supporting Fermi in DX12/Vulcan.
 
Back
Top