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.

[Display]
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

[Components]

nvui.dll 8.17.13.4712 NVIDIA User Experience Driver Component
nvxdsync.exe 8.17.13.4712 NVIDIA User Experience Driver Component
nvxdplcy.dll 8.17.13.4712 NVIDIA User Experience Driver Component
nvxdbat.dll 8.17.13.4712 NVIDIA User Experience Driver Component
nvxdapix.dll 8.17.13.4712 NVIDIA User Experience Driver Component
NVCPL.DLL 8.17.13.4712 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 6.14.13.4712 NVIDIA Workstation Server
nvWSS.dll 6.14.13.4712 NVIDIA Workstation Server
nvViTvSR.dll 6.14.13.4712 NVIDIA Video Server
nvViTvS.dll 6.14.13.4712 NVIDIA Video Server
NVSTVIEW.EXE 7.17.13.4712 NVIDIA 3D Vision Photo Viewer
NVSTTEST.EXE 7.17.13.4712 NVIDIA 3D Vision Test Application
NVSTRES.DLL 7.17.13.4712 NVIDIA 3D Vision Module
nvDispSR.dll 6.14.13.4712 NVIDIA Display Server
NVMCTRAY.DLL 8.17.13.4712 NVIDIA Media Center Library
nvDispS.dll 6.14.13.4712 NVIDIA Display Server
NVCUDA.DLL 8.17.13.4712 NVIDIA CUDA 7.0.18 driver
nvGameSR.dll 6.14.13.4712 NVIDIA 3D Settings Server
nvGameS.dll 6.14.13.4712 NVIDIA 3D Settings Server
BufferBug.zip (48.6 KB)
BufferBugExe.zip (51.3 KB)