driver bug

We have discovered errors in the nvidia driver related to writing to unordered access views and reading from byte address buffers. We have put together an isolated standalone executable that can be run to test these bugs. Source code for this executable is attached to this post. We ran these tests on nvidia hardware, amd hardware and used the reference driver. The amd hardware and reference driver pass all the tests, however nvidia hardware does not. All the tests check as many return values from functions as possible, we have also run them using the debug directx layer and all of the shader code and host code is compliant.

When using a ByteAddressBuffer to read from a raw buffer there is a limit where the ByteAddressBuffer cannot read passed 512MB exactly on nvidia hardware. However if a RWByteAddressBuffer is used to do the reading it succeeds. This work around is not viable for our usage because it would require us to upgrade beyond feature level 11.0 so that vertex shaders can use uavs. We need a fix that does not require that.

Another test included in this code is writing to a uav using a RWStructuredBuffer, it fails to write beyond some limit (approximately 96MB).

We know the failure is in the writing and reading of both tests and not the copying of the buffers back to the CPU to analyze them because vertex shaders exhibit the same behavior when trying to read from these buffers.

Operating System: Windows 8.1 Enterprise, 64-bit
DirectX version: 11.0
GPU processor: Quadro K3100M
Driver version: 347.12
Direct3D API version: 11.2
Direct3D feature level: 11_0
CUDA Cores: 768
Core clock: 705 MHz
Memory data rate: 3200 MHz
Memory interface: 256-bit
Memory bandwidth: 102.40 GB/s
Total available graphics memory: 12240 MB
Dedicated video memory: 4096 MB GDDR5
System video memory: 0 MB
Shared system memory: 8144 MB
Video BIOS version: 80.04.B0.00.0A
IRQ: Not used
Bus: PCI Express x16 Gen3
Device Id: 10DE 11B6 15CD1028
Part Number: 2053 0501


nvui.dll NVIDIA User Experience Driver Component
nvxdsync.exe NVIDIA User Experience Driver Component
nvxdplcy.dll NVIDIA User Experience Driver Component
nvxdbat.dll NVIDIA User Experience Driver Component
nvxdapix.dll NVIDIA User Experience Driver Component
NVCPL.DLL NVIDIA User Experience Driver Component
nvCplUIR.dll 8.1.740.0 NVIDIA Control Panel
nvCplUI.exe 8.1.740.0 NVIDIA Control Panel
nvWSSR.dll NVIDIA Workstation Server
nvWSS.dll NVIDIA Workstation Server
nvViTvSR.dll NVIDIA Video Server
nvViTvS.dll NVIDIA Video Server
NVSTVIEW.EXE NVIDIA 3D Vision Photo Viewer
NVSTTEST.EXE NVIDIA 3D Vision Test Application
nvDispSR.dll NVIDIA Display Server
NVMCTRAY.DLL NVIDIA Media Center Library
nvDispS.dll NVIDIA Display Server
nvGameSR.dll NVIDIA 3D Settings Server
nvGameS.dll NVIDIA 3D Settings Server (48.6 KB) (51.3 KB)