Direct3D feature levels discussion

Discussion in 'Rendering Technology and APIs' started by DmitryKo, Feb 20, 2015.

  1. Malo

    Malo Yak Mechanicum
    Legend Veteran Subscriber

    Joined:
    Feb 9, 2002
    Messages:
    7,035
    Likes Received:
    3,106
    Location:
    Pennsylvania
    Ah ok, thanks. I knew there was a simple explanation. I assume Carsten is running dev tools on his system then.
     
    CarstenS likes this.
  2. DmitryKo

    Regular

    Joined:
    Feb 26, 2002
    Messages:
    694
    Likes Received:
    577
    Location:
    55°38′33″ N, 37°28′37″ E
    Malo,

    as of now, only WARP12 (Microsoft Basic Render Driver) in Windows 10 version 1703 (build 16053) reports SM6 as the highest shader model. AMD and NVidia offer "experimental" driver support under a special developer mode, which has to be enabled in Settings.

    While you can use my console tool to check for this "experimental" SM6 support (as per this post), I did not add this option to the default batch file, because real-world applications are not expected to use "experimental" features.
     
    #822 DmitryKo, Jul 7, 2017
    Last edited: Jul 7, 2017
    Silent_Buddha, Malo and BRiT like this.
  3. CarstenS

    Veteran Subscriber

    Joined:
    May 31, 2002
    Messages:
    4,798
    Likes Received:
    2,056
    Location:
    Germany
    Vega Frontier Edition with Dev-Tools enabled:

    Code:
    Direct3D 12 feature checker (July 2017) by DmitryKo
    https://forum.beyond3d.com/posts/1840641/
    
    Windows 10 version 1703 (build 15063)
    Checking for experimental shader models
    
    ADAPTER 0
    "Radeon Vega Frontier Edition"
    VEN_1002, DEV_6863, SUBSYS_6B761002, REV_00
    Dedicated video memory : 4211945472  bytes
    Total video memory : 4175951872  bytes
    Video driver version : 22.19.384.2
    Maximum feature level : D3D_FEATURE_LEVEL_12_1 (0xc100)
    DoublePrecisionFloatShaderOps : 1
    OutputMergerLogicOp : 1
    MinPrecisionSupport : D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT (2)
    TiledResourcesTier : D3D12_TILED_RESOURCES_TIER_3 (3)
    ResourceBindingTier : D3D12_RESOURCE_BINDING_TIER_3 (3)
    PSSpecifiedStencilRefSupported : 1
    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_2 (2)
    MaxGPUVirtualAddressBitsPerResource : 44
    MaxGPUVirtualAddressBitsPerProcess : 44
    Adapter Node 0: 	TileBasedRenderer: 0, UMA: 0, CacheCoherentUMA: 0, IsolatedMMU: 1
    HighestShaderModel : D3D12_SHADER_MODEL_6_0 (0x0060)
    WaveOps : 1
    WaveLaneCountMin : 64
    WaveLaneCountMax : 64
    TotalLaneCount : 4096
    ExpandedComputeResourceStates : 1
    Int64ShaderOps : 1
    RootSignature.HighestVersion : D3D_ROOT_SIGNATURE_VERSION_1_1 (2)
    DepthBoundsTestSupported : 1
    ProgrammableSamplePositionsTier : D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED (0)
    ShaderCache.SupportFlags : D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO | LIBRARY (3)
     
    fellix, Lightman, Malo and 2 others like this.
  4. Malo

    Malo Yak Mechanicum
    Legend Veteran Subscriber

    Joined:
    Feb 9, 2002
    Messages:
    7,035
    Likes Received:
    3,106
    Location:
    Pennsylvania
    Quick question, why is the dedicated memory value unsigned 32bit integer max?
     
  5. Rodéric

    Rodéric a.k.a. Ingenu
    Moderator Veteran

    Joined:
    Feb 6, 2002
    Messages:
    3,986
    Likes Received:
    847
    Location:
    Planet Earth.
    mmh... that's odd it should be a uint64_t.
    Could it be different if the program is 32bits ?
     
  6. CarstenS

    Veteran Subscriber

    Joined:
    May 31, 2002
    Messages:
    4,798
    Likes Received:
    2,056
    Location:
    Germany
    Strange, re-downloaded Dmitry's tool this morning. I though he had it fixed.
     
  7. DmitryKo

    Regular

    Joined:
    Feb 26, 2002
    Messages:
    694
    Likes Received:
    577
    Location:
    55°38′33″ N, 37°28′37″ E
    I've fixed argument size modifiers so memory sizes that exceed 4GB (4096 MB or 4 294 967 295 bytes) won't wrap around now. It will also display megabytes (rounded to 0.1) in addition to bytes. Please re-download the archive.

    DXGI doesn't report the exact size of onboard physical video memory though, only the size of "dedicated video memory, dedicated system memory and shared system memory" - legacy memory pools introduced in DirectX 5 era for AGP video cards.

    With a x64 build of the checker tool, my Radeon R9 290X 4GB now reports ~4073.47MB of "dedicated video" memory and ~11.92GB of "total" video memory (="dedicated video" + "dedicated system" + "shared system"), on a PC with 16 GB of system RAM. It used to report 3GB of "dedicated video" memory and ~4095.94MB of "total" memory in a 32-bit build.
    This is because DXGI_ADAPTER_DESC2 structure doesn't use UINT64 for memory size fields - it uses size_t which is 64-bit when compiled for the x64 platform, and 32-bit on the x86 platform.
     
    #827 DmitryKo, Jul 7, 2017
    Last edited: Jul 10, 2017
    Lightman, iroboto and Malo like this.
  8. BacBeyond

    Newcomer

    Joined:
    Jun 29, 2017
    Messages:
    73
    Likes Received:
    43
    Difference I see is:

    HighestShaderModel : D3D12_SHADER_MODEL_6_0 (0x0060)

    Thanks for testing! :)
     
  9. DmitryKo

    Regular

    Joined:
    Feb 26, 2002
    Messages:
    694
    Likes Received:
    577
    Location:
    55°38′33″ N, 37°28′37″ E
    BTW I've just checked DXCapsViewer.exe from the Windows 10 SDK build 16225, and it's not correct in reporting Root Signature and Shader Model versions, which should have been signature v1.1 and SM6.0 for WARP12 (in Windows 10 RS3 Insider Preview build 16237).

    Looks like maintainers of this tool fell for the same trap as I did, because MSDN documentation for D3D_FEATURE_DATA_SHADER_MODEL completely omits the requirement to pre-populate HighestShaderModel field with the highest model to query for - which you can only learn by inspecting the SDK header file... and when you request a shader model not supported in this particular Windows build (which is SM6.1 as of SDK 16225), it results in runtime error 80070057 E_INVALIDARG as far as I can tell...
     
    #829 DmitryKo, Jul 11, 2017
    Last edited: Oct 10, 2018
    BRiT, BacBeyond and Malo like this.
  10. Alessio1989

    Regular Newcomer

    Joined:
    Jun 6, 2015
    Messages:
    582
    Likes Received:
    285
    Hopefully, when they will complete the switch to the new github docs platform, reporting such documentation errors will be easier and more productive. But now, with 3 different documentation platforms, even searching from scratch something is a complete mess (and this is why I made a custom search handler in my browser, which redirects to the old-solid MSDN library).
     
  11. CarstenS

    Veteran Subscriber

    Joined:
    May 31, 2002
    Messages:
    4,798
    Likes Received:
    2,056
    Location:
    Germany
    Intel Pentium G4560 w/HD Graphics 610 (60-$ integrated Graphics)
    Driver:

    Code:
    PS C:\Users\CarstenS\Downloads\D3D12CheckFeatureSupport> .\D3D12CheckFeatureSupport.exe /sm6
    Direct3D 12 feature checker (July 2017) by DmitryKo (x64)
    https://forum.beyond3d.com/posts/1840641/
    
    Windows 10 version 1703 (build 15063)
    Checking for experimental shader models
    
    ADAPTER 0
    "Intel(R) HD Graphics 610"
    VEN_8086, DEV_5902, SUBSYS_D0001458, REV_04
    Dedicated video memory : 128.0 MB (134217728 bytes)
    Total video memory : 4167.9 MB (4370333696 bytes)
    Video driver version : 22.20.16.4729
    Maximum feature level : D3D_FEATURE_LEVEL_12_1 (0xc100)
    DoublePrecisionFloatShaderOps : 1
    OutputMergerLogicOp : 1
    MinPrecisionSupport : D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT (2)
    TiledResourcesTier : D3D12_TILED_RESOURCES_TIER_3 (3)
    ResourceBindingTier : D3D12_RESOURCE_BINDING_TIER_3 (3)
    PSSpecifiedStencilRefSupported : 1
    TypedUAVLoadAdditionalFormats : 1
    ROVsSupported : 1
    ConservativeRasterizationTier : D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 (3)
    StandardSwizzle64KBSupported : 1
    CrossNodeSharingTier : D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED (0)
    CrossAdapterRowMajorTextureSupported : 1
    VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation : 1
    ResourceHeapTier : D3D12_RESOURCE_HEAP_TIER_2 (2)
    MaxGPUVirtualAddressBitsPerResource : 38
    MaxGPUVirtualAddressBitsPerProcess : 48
    Adapter Node 0:         TileBasedRenderer: 0, UMA: 1, CacheCoherentUMA: 1, IsolatedMMU: 1
    HighestShaderModel : D3D12_SHADER_MODEL_5_1 (0x0051)
    WaveOps : 1
    WaveLaneCountMin : 16
    WaveLaneCountMax : 16
    TotalLaneCount : 192
    ExpandedComputeResourceStates : 1
    Int64ShaderOps : 1
    RootSignature.HighestVersion : D3D_ROOT_SIGNATURE_VERSION_1_1 (2)
    DepthBoundsTestSupported : 0
    ProgrammableSamplePositionsTier : D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 (1)
    ShaderCache.SupportFlags : D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO | LIBRARY (3)
    
    StandardSwizzle64KBSupported : 1
    ProgrammableSamplePositionsTier : D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 (1)

    [my bold, removed Microsoft Basis Display Adapter]
     
  12. CarstenS

    Veteran Subscriber

    Joined:
    May 31, 2002
    Messages:
    4,798
    Likes Received:
    2,056
    Location:
    Germany
    On not so great news:
    Code:
    C:\Users\CarstenS\Downloads\D3D12CheckFeatureSupport>D3D12CheckFeatureSupport.exe /sm6
    Direct3D 12 feature checker (July 2017) by DmitryKo (x64)
    https://forum.beyond3d.com/posts/1840641/
    
    Windows 10 version 1607 (build 14393)
    Checking for experimental shader models
    Warning: experimental features are not supported in d3d12.dll
    
    ADAPTER 0
    "AMD Radeon (TM) R9 Fury Series"
    VEN_1002, DEV_7300, SUBSYS_0B361002, REV_CA
    Dedicated video memory : 4071.0 MB (4268777472 bytes)
    Total video memory : 12236.0 MB (12830353408 bytes)
    Video driver version : 22.19.673.0
    Maximum feature level : D3D_FEATURE_LEVEL_12_0 (0xc000)
    DoublePrecisionFloatShaderOps : 1
    OutputMergerLogicOp : 1
    MinPrecisionSupport : D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE (0)
    TiledResourcesTier : D3D12_TILED_RESOURCES_TIER_2 (2)
    ResourceBindingTier : D3D12_RESOURCE_BINDING_TIER_3 (3)
    PSSpecifiedStencilRefSupported : 1
    TypedUAVLoadAdditionalFormats : 1
    ROVsSupported : 0
    ConservativeRasterizationTier : D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED (0)
    StandardSwizzle64KBSupported : 0
    CrossNodeSharingTier : D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED (0)
    CrossAdapterRowMajorTextureSupported : 0
    VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation : 1
    ResourceHeapTier : D3D12_RESOURCE_HEAP_TIER_2 (2)
    MaxGPUVirtualAddressBitsPerResource : 40
    MaxGPUVirtualAddressBitsPerProcess : 40
    Adapter Node 0:         TileBasedRenderer: 0, UMA: 0, CacheCoherentUMA: 0
    HighestShaderModel : D3D12_SHADER_MODEL_5_1 (0x0051)
    WaveOps : 1
    WaveLaneCountMin : 64
    WaveLaneCountMax : 64
    TotalLaneCount : 4096
    ExpandedComputeResourceStates : 1
    Int64ShaderOps : 1
    RootSignature.HighestVersion : D3D_ROOT_SIGNATURE_VERSION_1_1 (2)
    
    MinPrecisionSupport : D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE (0)

    Apparently, AMD removed FP16-support from their newest (newer? didn't check every single driver) drivers for Fiji as well as Polaris (did not check Tonga yet).
    For Vega, it's there of course.
     
    Lightman, fellix and Ike Turner like this.
  13. Alessio1989

    Regular Newcomer

    Joined:
    Jun 6, 2015
    Messages:
    582
    Likes Received:
    285
    Yes, AMD disabled FP16 fon GCN3/GCN4 ISA GPUs since 17.2.x.
    No official word by AMD.
    This is a shame, doesn't matter if GCN3/4 GPUs have a FP32:FP16 1:1 ratio, FP16 support is still useful for development purpose, moreover I don't think final consumers will be angry if their GPUs can run the some computations using lower heat and power (not sure if on GCN3/4 FP16 can also save bandwidth).
     
    Ike Turner and Lightman like this.
  14. swaaye

    swaaye Entirely Suboptimal
    Legend

    Joined:
    Mar 15, 2003
    Messages:
    8,457
    Likes Received:
    580
    Location:
    WI, USA
    I've noticed that NVidia has Fermi running WDDM 2.2 now, which is newer compliance than some (all?) GCN or my Skylake IGP (WDDM 2.1). Haswell, Broadwell, and Braswell are at WDDM 2.0. Baytrail / Ivy Bridge run WDDM 1.3. VLIW4/5 D3D11 Radeons are at WDDM 1.3. too.
     
    #834 swaaye, Aug 28, 2017
    Last edited: Aug 28, 2017
  15. Alessio1989

    Regular Newcomer

    Joined:
    Jun 6, 2015
    Messages:
    582
    Likes Received:
    285
    All GCN gpus have WDDM 2.2 drivers..
     
  16. swaaye

    swaaye Entirely Suboptimal
    Legend

    Joined:
    Mar 15, 2003
    Messages:
    8,457
    Likes Received:
    580
    Location:
    WI, USA
    I did a clean install of Win 10 15063 on a notebook with Kaveri A10 7300 two days ago and the latest driver from AMD's site had it on WDDM 2.1. Crimson 17.7.2. Maybe it's a Kaveri thing.
     
    #836 swaaye, Aug 29, 2017
    Last edited: Aug 29, 2017
  17. Svensk Viking

    Regular

    Joined:
    Oct 11, 2009
    Messages:
    507
    Likes Received:
    61
    I'm quite sure my laptop with A10 8700P and R7 M360 reported WDDM 2.2 last time I checked.
    I was surprised though that one of my older PCs, using A10 3870k, only reports WDDM 1.2 and have no official Catalyst driver package, whereas all other DX11 Radeons report WDDM 1.3.
    The DX10/10.1 Radeons report WDDM 1.1, 8800GT reports WDDM 1.2.
     
    #837 Svensk Viking, Aug 29, 2017
    Last edited: Aug 29, 2017
  18. swaaye

    swaaye Entirely Suboptimal
    Legend

    Joined:
    Mar 15, 2003
    Messages:
    8,457
    Likes Received:
    580
    Location:
    WI, USA
    Yeah I worked on a A8 3500M recently and apparently AMD only offer a Windows 10 driver via Windows Update . It is about 6 months older than the final driver for D3D11 cards.

    The D3D10/10.1 cards haven't really had a driver update since 2012/2013. Windows Update pulls in some kind of old WDDM 1.1 driver that works well enough though. Unless you need Catalyst Control Center functionality, in which case you have to install a Windows 8 package that isn't entirely compatible with Windows 8.1 / 10 and will crash sometimes. I needed to do this in a case because HDMI was underscanning. NVidia supports their hardware much longer.
     
    #838 swaaye, Aug 29, 2017
    Last edited: Aug 29, 2017
  19. Alessio1989

    Regular Newcomer

    Joined:
    Jun 6, 2015
    Messages:
    582
    Likes Received:
    285
    Did Intel enabled tiled resources (tier1) on Haswell iGPUs? My SP3 reports it as supported.. Not sure how much can help on a 31-bit virtual address, but anyone has any news about it?

    I am using version 20.19.15.4703... (downloaded from windows update catalogue).

    Code:
    Windows 10 version 1703 (build 15063)
    
    ADAPTER 0
    "Intel(R) HD Graphics Family"
    VEN_8086, DEV_0A16, SUBSYS_00051414, REV_0B
    Dedicated video memory : 112.5 MB (117964800 bytes)
    Total video memory : 2160.5 MB (2265448448 bytes)
    Video driver version : 20.19.15.4703
    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_1 (1)
    ResourceBindingTier : D3D12_RESOURCE_BINDING_TIER_1 (1)
    PSSpecifiedStencilRefSupported : 0
    TypedUAVLoadAdditionalFormats : 0
    ROVsSupported : 1
    ConservativeRasterizationTier : D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED (0)
    StandardSwizzle64KBSupported : 0
    CrossNodeSharingTier : D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED (0)
    CrossAdapterRowMajorTextureSupported : 0
    VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation : 1
    ResourceHeapTier : D3D12_RESOURCE_HEAP_TIER_2 (2)
    MaxGPUVirtualAddressBitsPerResource : 31
    MaxGPUVirtualAddressBitsPerProcess : 31
    Adapter Node 0:     TileBasedRenderer: 0, UMA: 1, CacheCoherentUMA: 1, IsolatedMMU: 1
    HighestShaderModel : D3D12_SHADER_MODEL_5_1 (0x0051)
    WaveOps : 0
    WaveLaneCountMin : 4
    WaveLaneCountMax : 4
    TotalLaneCount : 4
    ExpandedComputeResourceStates : 1
    Int64ShaderOps : 0
    RootSignature.HighestVersion : D3D_ROOT_SIGNATURE_VERSION_1_1 (2)
    DepthBoundsTestSupported : 0
    ProgrammableSamplePositionsTier : D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED (0)
    ShaderCache.SupportFlags : D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO (1)
    Note it is non reported as supported under direct3d 11 runtime.

    EDIT: BC1 and R8G8B8A8 are reported as unsupported and fail to create related resources, so it just look like a driver bug..
     
    #839 Alessio1989, Sep 6, 2017
    Last edited: Sep 13, 2017
  20. Alessio1989

    Regular Newcomer

    Joined:
    Jun 6, 2015
    Messages:
    582
    Likes Received:
    285
    Finally, programmable sample position from AMD:

    Code:
    Direct3D 12 feature checker (July 2017) by DmitryKo (x64)
    https://forum.beyond3d.com/posts/1840641/
    
    Windows 10 version 1703 (build 15063)
    
    ADAPTER 0
    "AMD Radeon (TM) R9 380 Series"
    VEN_1002, DEV_6938, SUBSYS_E308174B, REV_F1
    Dedicated video memory : 4071.4 MB (4269203456 bytes)
    Total video memory : 12259.1 MB (12854614016 bytes)
    Video driver version : 22.19.676.0
    Maximum feature level : D3D_FEATURE_LEVEL_12_0 (0xc000)
    DoublePrecisionFloatShaderOps : 1
    OutputMergerLogicOp : 1
    MinPrecisionSupport : D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE (0)
    TiledResourcesTier : D3D12_TILED_RESOURCES_TIER_2 (2)
    ResourceBindingTier : D3D12_RESOURCE_BINDING_TIER_3 (3)
    PSSpecifiedStencilRefSupported : 1
    TypedUAVLoadAdditionalFormats : 1
    ROVsSupported : 0
    ConservativeRasterizationTier : D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED (0)
    StandardSwizzle64KBSupported : 0
    CrossNodeSharingTier : D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED (0)
    CrossAdapterRowMajorTextureSupported : 0
    VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation : 1
    ResourceHeapTier : D3D12_RESOURCE_HEAP_TIER_2 (2)
    MaxGPUVirtualAddressBitsPerResource : 40
    MaxGPUVirtualAddressBitsPerProcess : 40
    Adapter Node 0:     TileBasedRenderer: 0, UMA: 0, CacheCoherentUMA: 0, IsolatedMMU: 1
    HighestShaderModel : D3D12_SHADER_MODEL_5_1 (0x0051)
    WaveOps : 1
    WaveLaneCountMin : 64
    WaveLaneCountMax : 64
    TotalLaneCount : 2048
    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)
    
    Still no FP16 min. precision support.

    I need to test on GCN1 too..
     
    CarstenS and BRiT like this.
Loading...

Share This Page

  • About Us

    Beyond3D has been around for over a decade and prides itself on being the best place on the web for in-depth, technically-driven discussion and analysis of 3D graphics hardware. If you love pixels and transistors, you've come to the right place!

    Beyond3D is proudly published by GPU Tools Ltd.
Loading...