Has anyone noticed windows stop errors when reading large pixel buffers using the PDR extension? Specifically, with Matt Craighead’s PixPerf test, my machine crashes when I try benchmarking buffer size much larger than 512x512.
Well, with the 3Dlabs VP870 128MB installed in this VIA Opteron system, I get a peak PixPerf of 161 MPixels/sec. Pretty good percentage of theoretical AGP 4x bandwidth.
This card does appear to be chipset-dependent, because I was only able to get 100 MPixels/sec on an older Intel mobo.
Basically, any size much larger than 512 will cause anomalous behavior. On the i840 chipset (I’m guessing it’s the chipset or GART driver or something), it crashes. It stopped crashing after I lowered the number of iterations. What chipset do you have?
On the Opteron, I get around 50 MPixels/sec for -size 512. For bigger sizes, I seem to get pretty unreliably large values (like 225 MPixels/sec).
I’m going to modify PixPerf to test if the ReadPixels are actually producing sensical results.
I modified PixPerf to push around a bitmap so I can be sure that something sensical is happening. Looks like the GeforceFX is limited to ~50MPixels/sec, whereas the 3Dlabs card goes up to 165MPixels/sec. The odd this is: with the GF FX, when there is nothing in the framebuffer I get very high bandwidth for larger read sizes.
Does this mean that the driver knows if parts of a buffer has undefined values, and short circuits parts of the transfer? Maybe the colorbuffer is decompressed on the client-side? Weird…
Anyway, the moral appears to be: don’t trust PixPerf for NVIDIA hardware beyond 512^2. You can only get about 50MPixels/sec.