Windows10 64bit, DX11.1, 64bit, Geforce GTX960
I am investigating an issue where we end up with a difference of 1-2 bits in a 4xfloat16/half framebuffer in some pixels (usually between 1 and 2000 pixels in a 512x512xBGRAFloat16).
The difference is not visually noticeable as it is normally in the last digit of precision (absolute error normally < 0.0001), but we are using these renders as part of an offline build process.
We use the CRC32 of the image to detect whether to do an expensive operation - this difference obviously invalidates the cache and forces the expensive process to run.
Using “Start Graphics Debugging” I have captured two successive runs where a difference was detected. If I open the two frames and compare the data it is identical (in terms of GPU state) and usually the pixel history is identical.
However - if I toggle back and forth between the two captures in the Visual Studio Graphics Analyser VSGA tool (looking at the same pixel) sometimes the final pixel colour will change. The number of times I click back and forth between the two is “random” anywhere from 1 to 20 clicks.
When a difference shows up it is normally in a change in the Framebuffer value, not the output of the shaders.
Ie. if I look at the output merger of a given shader I see the Pixel Shader Output (SRC) and the Render Target (DEST) are identical between the two runs. So is the Result (ie. new Framebuffer value). However the final pixel value has changed by 1-2 bits at the end of the frame.
It should be noted that this seems to happen in a blend operation (overlaid decals) - but the geometry and all GPU states are identical between runs.
I am trying to narrow this down to a DX issue or a driver/vendor specific issue.
How is the pixel history calculated? I assume it is with the default GPU in the debugging machine. Would a driver specific optimisation or bug account for the differences in playback?
Any feedback or suggestions from the driver team would be greatly appreciated.
Windows 10 Pro 64-bit (10.0, Build 10240) (10240.th1_st1.160222-1812)
Card name: NVIDIA GeForce GTX 960 Manufacturer: NVIDIA Chip type: GeForce GTX 960 DAC type: Integrated RAMDAC Device Type: Full Device Device Key: Enum\PCI\VEN_10DE&DEV_1401&SUBSYS_1138196E&REV_A1 Display Memory: 20355 MB
Dedicated Memory: 4010 MB
Shared Memory: 16345 MB
Current Mode: 1920 x 1200 (32 bit) (59Hz)
Monitor Name: Dell U2413(Digital)
Monitor Model: DELL U2413
Monitor Id: DELF047
Native Mode: 1920 x 1200§ (59.950Hz)
Output Type: DVI
Driver Name: nvd3dumx.dll,nvwgf2umx.dll,nvwgf2umx.dll,nvwgf2umx.dll,nvd3dum,nvwgf2um,nvwgf2um,nvwgf2um
Driver File Version: 10.18.0013.6510 (English)
Driver Version: 10.18.13.6510