
It seems to me as if PIX for Windows, and its integration with the NVIDIA device drivers, has just gone downhill during the last year or so. I have a single project, which can demonstrate bugs both in the latest NVIDIA graphics drivers, and in the PIX tool itself.
This project attempts to draw a simple Mandelbrot fractal using DX9 and DX10 shaders. When running using REF device on DX9, on an Intel Core 2 Duo E6850 with 4 GB of RAM and Windows Vista SP1, Pix For Windows (using the November 2008 SDK, 64-bit version) doesn't work very well.
If I run the program using "-forceref /9 /debug" as arguments, to select D3D9 rendering API, and then capture a frame, it will be properly captured. I can then move to the draw call in the event list, and show the Render tab, and see the render target.
To show the problem: Right-click on the render pixel event for a brighter pixel, and click the "debug pixel" event, and then click to the disassembly tab. You will be able to single-step through the shader. However, when you get to the endrep instruction, and the instruction pointer jumps back, the text caret will instead continue to the next instruction. The registers displayed will be those of the text caret, not those of the program counter, and thus debugging anything other than the first iteration of a loop is impossible.
When running with "-forceref /10 /debug," I haven't gotten the REF device to render a single frame after waiting for 15 minutes (the DX9 REF device takes 15 seconds); I don't know what's up with that. It's using the same shader (using #include). However, at this point, I just want PIX single-stepping to work right, and not buggy as demonstrated in the DX9 case.
This project attempts to draw a simple Mandelbrot fractal using DX9 and DX10 shaders. When running NVIDIA driver version 175.15 or 180.43 on a GeForce 8800 GTS/512 (G92), on an Intel Core 2 Duo E6850 with 4 GB of RAM and Windows Vista x64 SP1, Pix For Windows (using the November 2008 SDK, 64-bit version) doesn't work very well.
If I run the program using "/10 /debug" as arguments, to select D3D10 rendering API, and then capture a frame (it will be all green), and then press the "D-Down" button to go to the Draw() call, and then click the "Render" tab, PIX will pause for a little while, and then the screen will blink and say "there was an error." Meanwhile, the Windows Vista task bar tells me that the graphics driver has failed and recovered. Hence, I cannot debug the D3D10 version of the shader. Sometimes, the pause/blink actually happens when first loading the run file, instead of just when trying to view the render.
I believe these to be problems with the NVIDIA DirectX drivers, based on previous experience with PIX on this machine (where REF generally gives better results).
You can download the archive at http://www.enchantedage.com/sites/default/files/NvidiaPixCrash.zip. Please let me know what you find.
Jon Watte, Microsoft DirectX/XNA MVP
http://www.enchantedage.com/node/69
| Attachment | Size |
|---|---|
| NvidiaPixCrash.zip | 400.11 KB |