@04dcarraher said:
@ronvalencia:
NVAPI is a driver interface framework. It doesn't replace Opengl or Direct x. Big difference there comparing it to Mantle or Vulkan etc. Which incorporates native GCN hardware features. NVAPI allows low access to the GPU but only for some functions. It does not help the GPU render graphics any better.
Do you realize Mantle is still broken/slower on GCN 1.2 than on GCN 1.0/1.1?
OpenGL's NVIDIA "Approaching Zero Driver Overhead" API extensions was the alternative to Vulkan API. There was more votes for AMD's Mantle/Vulkan API than NVIDIA's "Approaching Zero Driver Overhead" API extensions.
Again, Mantle still uses MS HLSL and Doom 2016 Vulkan is first PC title that used AMD's specific GCN intrinsic shaders.
So you completely ignored Far Cry 2's DX10.X kitbash access that speeds up rendering process (impacts ROPS's MSAA areas)?
https://developer.nvidia.com/unlocking-gpu-intrinsics-hlsl
None of the intrinsics are possible in standard DirectX or OpenGL. But they have been supported and well-documented in CUDA for years. A mechanism to support them in DirectX has been available for a while but not widely documented. I happen to have an old NVAPI version 343 on my system from October 2014 and the intrinsics are supported in DirectX by that version and probably earlier versions. This blog explains the mechanism for using them in DirectX.
Unlike OpenGL or Vulkan, DirectX unfortunately doesn't have a native mechanism for vendor-specific extensions. But there is still a way to make all this functionality available in DirectX 11 or 12 through custom intrinsics. That mechanism is implemented in our graphics driver and accessible through the NVAPI library.
OpenGL is a rendering API.. NVIDIA talks about similar OpenGL extended functions under DirectX via NVAPI.
https://developer.nvidia.com/unlocking-gpu-intrinsics-hlsl
Extending HLSL Shaders
In order to use the intrinsics, they have to be encoded as special sequences of regular HLSL instructions that the driver can recognize and turn into the intended operations. These special sequences are provided in one of the header files that comes with the NVAPI SDK: nvHLSLExtns.h.
One important thing about these instruction sequences is that they have to pass through the HLSL compiler without optimizations, because the compiler does not understand their true meaning and therefore could modify them beyond recognition, change their order, or even completely remove them. To prevent the compiler from doing that, the sequences use atomic operations on a UAV buffer. The HLSL compiler cannot optimize away these instructions because it is unaware of possible dependencies (even though there are none). That UAV buffer is basically a fake and it will not be used by the actual shader once it's passed through the NVIDIA GPU driver. But the applications still have to allocate a UAV slot for it and tell the driver which slot that is.
You did not read https://developer.nvidia.com/unlocking-gpu-intrinsics-hlsl where it shown an example for pixel shader hardware intrinsics.
Log in to comment