Direct3D feature levels discussion

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

  1. Alessio1989

    Regular Newcomer

    Joined:
    Jun 6, 2015
    Messages:
    596
    Likes Received:
    306
    Programmable sample. This. Finally.
     
    sebbbi likes this.
  2. sebbbi

    Veteran

    Joined:
    Nov 14, 2007
    Messages:
    2,924
    Likes Received:
    5,293
    Location:
    Helsinki, Finland
    My Siggraph 2015 presentation want list (http://advances.realtimerendering.c...siggraph2015_combined_final_footer_220dpi.pdf) is getting smaller every day. Still missing SV_Barycentric (pixel shader) and shader language with generics/templates.

    And where's my UpdateTileMappingsIndirect! Tiled resources (and 3d tiled resources) are much less useful when you can't change tile mappings on GPU side. Still need to do software indirection for virtual shadow mapping :(
     
    Alessio1989 likes this.
  3. Alessio1989

    Regular Newcomer

    Joined:
    Jun 6, 2015
    Messages:
    596
    Likes Received:
    306
    Something is moving in the wish-list/roadmap of DXIL...
     
    sebbbi likes this.
  4. sebbbi

    Veteran

    Joined:
    Nov 14, 2007
    Messages:
    2,924
    Likes Received:
    5,293
    Location:
    Helsinki, Finland
    I was in DX12 advisory board when I was still working at Ubisoft... Now I am just waiting for new info patently like everybody else :(
     
  5. Alessio1989

    Regular Newcomer

    Joined:
    Jun 6, 2015
    Messages:
    596
    Likes Received:
    306
    They also don't share any-more previous infos like it was in the EAP :(
    But I really appreciate the fact the new compiler is open on github.
     
  6. sebbbi

    Veteran

    Joined:
    Nov 14, 2007
    Messages:
    2,924
    Likes Received:
    5,293
    Location:
    Helsinki, Finland
    That sucks... but the new open source HLSL compiler at github is a very good thing indeed. Hopefully there will be steady stream of language improvements in the future. DirectCompute hasn't practically changed a bit in 8 years! CUDA now is even further ahead than it was at DirectCompute launch. There's plenty of good properly tested and optimized CUDA libraries for various tasks, but practically no DirectCompute libraries at all. Without any support for generics/templates, it is painful to make general purpose algorithms and data structures. This is the main reason there's no libraries for DirectCompute.

    Even simple stuff like passing reference to groupshared memory array (to a function) is missing in DirectCompute. You need to hardcode access to groupshared memory inside the functions (access groupshared globals directly). Need to copy the function if you want to do the same operation to another groupshared memory array. This is awful when you are programming reductions (prefix scan, averages/sums, etc). And there's no way to reuse the same groupshared memory region either (overlap arrays in groupshared memory). Two groupshared memory arrays both reserve their own space, even when you never want to use them at the same time. These two things combined make even simple things such as using functions hard in HLSL compute shaders. Copy & paste and macro hacks are often the only solutions. We need something better soon.

    OpenCL 2.1 added C++ based shading language with modern features. Vulkan uses the same SPIR-V intermediate language as OpenCL 2.1+ and there's been discussions since the Vulkan launch about a C++ based modern shading language. When this happens, this would leave DirectX (DirectCompute) the only relevant modern API without a modern C++ based shading language: Metal, OpenCL, CUDA, (soon Vulkan).
     
  7. Ethatron

    Regular Subscriber

    Joined:
    Jan 24, 2010
    Messages:
    868
    Likes Received:
    276
    There is always C++ AMP. :grin:
     
  8. DeanoC

    DeanoC Trust me, I'm a renderer person!
    Veteran Subscriber

    Joined:
    Feb 6, 2003
    Messages:
    1,469
    Likes Received:
    185
    Location:
    Viking lands
    Vulkan and OpenCL don't really share SPIR-V, there are two profiles and Vulkan doesn't accept the profile used by OpenCL (logical vs physical memory model). That is not to say the problem isn't being worked on, but currently just having a C++ -> SPIR-V compiler that works for OpenCL isn't enough for Vulkan to get support.
     
  9. sebbbi

    Veteran

    Joined:
    Nov 14, 2007
    Messages:
    2,924
    Likes Received:
    5,293
    Location:
    Helsinki, Finland
    There are differences, but OpenCL and Vulkan compute shaders try to solve the same problem and use the same intermediate language (albeit not 100% compatible). We already have a modern C++ compiler for OpenCL and it produces SPIR-V code. We eventually want identical feature set for Vulkan compute shaders. I don't know what was the main reason to choose a different memory model for Vulkan compute shaders versus OpenCL 2.1. But I would argue that OpenCL (and CUDA) model is better for compute shaders, so I'd prefer Vulkan compute shaders to switch to physical memory model as well (eventually). There is no reason to limit compute shader functionality because you want simplicity in pixel/vertex shaders. Compute needs more flexibility and better language constructs for generic algorithms and data structures.
     
    Alessio1989 likes this.
  10. Alessio1989

    Regular Newcomer

    Joined:
    Jun 6, 2015
    Messages:
    596
    Likes Received:
    306
    Did C++AMP receive any major update in the upcoming SKD?
     
  11. Ethatron

    Regular Subscriber

    Joined:
    Jan 24, 2010
    Messages:
    868
    Likes Received:
    276
    C++ 17 eventually. :D
     
  12. DmitryKo

    Regular

    Joined:
    Feb 26, 2002
    Messages:
    802
    Likes Received:
    826
    Location:
    55°38′33″ N, 37°28′37″ E
    The updated MSDN documentation is live:

    Shader Model 6.0 is currently an experimental feature which needs to be explicitly enabled using the D3D12EnableExperimentalFeatures function.

    https://github.com/Microsoft/DirectXShaderCompiler/wiki/FAQ

    d3d12.h
     
    #752 DmitryKo, Apr 3, 2017
    Last edited: Sep 17, 2017
  13. Alessio1989

    Regular Newcomer

    Joined:
    Jun 6, 2015
    Messages:
    596
    Likes Received:
    306
    So, there is also depth-bound test. Maybe a little to late, but it could be still useful in some cases.. Most of AMD and NVIDIA graphics cards should support it. Not sure about Intel.
     
  14. DeanoC

    DeanoC Trust me, I'm a renderer person!
    Veteran Subscriber

    Joined:
    Feb 6, 2003
    Messages:
    1,469
    Likes Received:
    185
    Location:
    Viking lands
    As I understand it, the reason for Vulkan compute being logical memory model, was concerns about validation, particularly among mobile and web clients.Its also worth noting that sometimes Khronos can be 'political', if Vulkan does everything OpenCL does, is OpenCL obselete? And then you get all the fun of people protecting turf etc. I've heard that any compute in Vulkan was hard, similarly why it came relatively late to GL, the orthodoxy is/was CL is for compute, Vulkan is just for graphics, so why blur the lines?!

    Personally I agree 100% that we need physical memory model Vulkan compute ASAP.
     
    Rodéric and sebbbi like this.
  15. sebbbi

    Veteran

    Joined:
    Nov 14, 2007
    Messages:
    2,924
    Likes Received:
    5,293
    Location:
    Helsinki, Finland
    The only problem is that the lines have already been blurred a long time ago. Nowadays all modern AAA renderers use a lot of compute shaders. There are games that are almost pure compute (see: Media Molecule's game "Dreams"). Point clouds, distance fields, voxels are all getting traction rapidly. Compute shaders are used to process and display these. Polygon rendering isn't the only way to render modern graphics anymore. GPU-driven renderers that process the scene data structures using compute shaders perform render setup & culling (viewport & occlusion & sub-object) on GPU are also getting popular.

    Graphics API without good compute support is useless for modern rendering techniques. I am not happy until DirectX and Vulkan compute shaders match CUDA in productivity and feature set. Shader Model 6.0 finally gave us cross lane operations and and other goodies, so at least there's hope. But HLSL/GLSL is still way behind CUDA in productivity features. Because of this there's barely any compute libraries for HLSL/GLSL.
     
    #755 sebbbi, Apr 5, 2017
    Last edited: Apr 5, 2017
  16. DeanoC

    DeanoC Trust me, I'm a renderer person!
    Veteran Subscriber

    Joined:
    Feb 6, 2003
    Messages:
    1,469
    Likes Received:
    185
    Location:
    Viking lands
    I whole heartily agree but what do we know *sigh*
    I personally see the lack of decent cross-platform compute rendering capabilities the biggest thing holding rendering back at the moment. HIP gives us CUDA compatiblity (to a degree) on AMD GPUs, but that needs windows support first AND a way of interacting with Vulkan or Dx12.
    And that still leaves out Intel, so maybe even that wouldn't be enough...
     
  17. Alessio1989

    Regular Newcomer

    Joined:
    Jun 6, 2015
    Messages:
    596
    Likes Received:
    306
    I did some quick queries on the AMD drivers: the D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME priority is reported to be supported for both copy and compute queues on GCN3, none on GCN1. I may guess this is something similar to the "quick response queue".
    Depth bound test is also reported to be supported for both architecture as I expected.
    None of the driver cards reported to support programmable sampling for now.
    Shader caching is reported to be D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO and D3D12_SHADER_CACHE_SUPPORT_LIBRARY, but not D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE or D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE for now.
    The driver also reported the architecture to have an "Isolated MMU" on both GPUs.
     
    BRiT likes this.
  18. Kaotik

    Kaotik Drunk Member
    Legend

    Joined:
    Apr 16, 2003
    Messages:
    9,088
    Likes Received:
    2,955
    Location:
    Finland
    Worth noting is that AMD didn't include "official Creators Update support" on the 17.4.1's so maybe there will be some changes in next driver set
     
    BRiT likes this.
  19. Alessio1989

    Regular Newcomer

    Joined:
    Jun 6, 2015
    Messages:
    596
    Likes Received:
    306
    AMD never tell about non-gaming or non-multimedia related things in the release notes..

    edit: just ntried with 17.4.2 (first AMD drivers marked as "WDDM 2.2"): no changes. I did not check with experimental mode enable, I am too lazy.

    edit2: enabling experimental mode for shader model, both o my AMD GPUs, a GCN1 and a GCN3, reports SM6 support.
     
    #759 Alessio1989, Apr 12, 2017
    Last edited: Apr 12, 2017
  20. Alessio1989

    Regular Newcomer

    Joined:
    Jun 6, 2015
    Messages:
    596
    Likes Received:
    306
    #760 Alessio1989, Apr 12, 2017
    Last edited: Apr 12, 2017
    CSI PC and iroboto 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...