A Theoretical Graphics Question

Paratus

Lifer
Jun 4, 2004
17,519
15,558
146
I realize that's an extreme example but why do current cards not come anywhere near their theoretical fill rates.

My 9600XT has a fillrate of 2Giga Pixels/sec (4pipes x 500mhz) yet I barely manage 30FPS at 800x600. I'm hitting about .7% of the theoretical fillrate. Even the latest cards the 8800GTX can't do much better (32 ROPS x 575mhz = 18.4 GP/s) 1920x1200 at 100FPS is only 1.2% of its maximum

So why does each pixel take so may cycles to complete?
 

m21s

Senior member
Dec 6, 2004
775
0
71
At 800x600 you need to factor in your CPU because your CPU limited at that resolution.
 

40sTheme

Golden Member
Sep 24, 2006
1,607
0
0
Originally posted by: m21s
At 800x600 you need to factor in your CPU because your CPU limited at that resolution.

QFT. There is far more to a game than graphics, and you also have to understand that not all of graphics has to do with fillrate.
 

Paratus

Lifer
Jun 4, 2004
17,519
15,558
146
I understand how CPU/GPU interact. What I don't get is why it takes about 200 cycles to spit out a pixel.

Is it all waiting on the CPU, Mem, TMU, PS & ROP or does each pixel require multiple passes through the 'pipe'?
 

40sTheme

Golden Member
Sep 24, 2006
1,607
0
0
Well, in the case of the Pixel Shader, the pixel is already halfway through the pipeline. The VS and PS have to perform processes on the pixel, which is one way the time is increased. Basically, no 'theoretical' performance is going to be true.
 

zephyrprime

Diamond Member
Feb 18, 2001
7,512
2
81
Basically, none of us knows.

I also wondered about memory bandwidth usage. It seems like memory bandwidth usage is also only a tiny fraction of the theoretical max.
 

zephyrprime

Diamond Member
Feb 18, 2001
7,512
2
81
Oh, I found this interesting link examining the theoretical and real fillrates of the old x700.

link

Apparently, the key is multitexturing. A single pixel can have multiple textures applied to it. You could have: texture, bump map, gloss map, light map, displacement map.

But even when 0 textures are applied to a polygon, the x700 can only attain 70% of it's theoretical maximum fillrate.

In the real world, I would guess that there is some stalling due to triangle setup. Also, I have never read anything to indicate that texture pipelines implement simultaneous multithreading (hyperthread, ultrathreading, and etc) so I guess any memory reads would result in big stalls. But I'm no expert so is no doubt more to it.
 

evolucion8

Platinum Member
Jun 17, 2005
2,867
3
81
Yeah, the only thing that would benefit of higher fillrate regardless is the Anti Aliasing.
 

BFG10K

Lifer
Aug 14, 2000
22,709
3,002
126
So why does each pixel take so may cycles to complete?
Lots of reasons but if it's a modern game the most likely reason is shaders. Each pixel could have hundreds of instructions run on it before it's ready to hit the screen.
 

IntelUser2000

Elite Member
Oct 14, 2003
8,686
3,787
136
My 9600XT has a fillrate of 2Giga Pixels/sec (4pipes x 500mhz) yet I barely manage 30FPS at 800x600. I'm hitting about .7% of the theoretical fillrate. Even the latest cards the 8800GTX can't do much better (32 ROPS x 575mhz = 18.4 GP/s) 1920x1200 at 100FPS is only 1.2% of its maximum

Modern video cards doesn't reach theoretical bandwidth measurements in fill-rate testing.

http://www.techreport.com/reviews/2003q4/radeon-9600xt/index.x?pg=1

From the review above Radeon 9600XT can reach 913.4MTexels in single-texturing and 1828.6MTexels in multi-texturing(you can think of single-texturing fill rate as fill rate in Pixels/s). Far from the theoretical 2GPixels/s, you get less than 50%.

So your video card doesn't even meet theoretical fill rates anyway, nowhere near that. Then there are other factors that make it not meet how you would calculate(which isn't right way to figure out fps you get).

There aren't many 4 pixel pipeline cards that reach 1GPixels/s in real-world fill rate measurements.
 

Paratus

Lifer
Jun 4, 2004
17,519
15,558
146
Originally posted by: BFG10K
So why does each pixel take so may cycles to complete?
Lots of reasons but if it's a modern game the most likely reason is shaders. Each pixel could have hundreds of instructions run on it before it's ready to hit the screen.

I guess thats why we are seeing AMD/ATIs 3PS/TMU setup or NVs 128 "Stream Processors".


I guess then that until the pixel has completed all instructions, the hardware (PS, VS, TMU, ROP) can't be released to work on another pixel?
 

Paratus

Lifer
Jun 4, 2004
17,519
15,558
146
Originally posted by: IntelUser2000
My 9600XT has a fillrate of 2Giga Pixels/sec (4pipes x 500mhz) yet I barely manage 30FPS at 800x600. I'm hitting about .7% of the theoretical fillrate. Even the latest cards the 8800GTX can't do much better (32 ROPS x 575mhz = 18.4 GP/s) 1920x1200 at 100FPS is only 1.2% of its maximum

Modern video cards doesn't reach theoretical bandwidth measurements in fill-rate testing.

http://www.techreport.com/reviews/2003q4/radeon-9600xt/index.x?pg=1

From the review above Radeon 9600XT can reach 913.4MTexels in single-texturing and 1828.6MTexels in multi-texturing(you can think of single-texturing fill rate as fill rate in Pixels/s). Far from the theoretical 2GPixels/s, you get less than 50%.

So your video card doesn't even meet theoretical fill rates anyway, nowhere near that. Then there are other factors that make it not meet how you would calculate(which isn't right way to figure out fps you get).

There aren't many 4 pixel pipeline cards that reach 1GPixels/s in real-world fill rate measurements.

Ok so lets call it 1GPixel/s then for a 2MPixel display - (1920x1200) thats 500 FPS. We get no where near that for the reasons BFG said I suppose.
 

IntelUser2000

Elite Member
Oct 14, 2003
8,686
3,787
136
Ok so lets call it 1GPixel/s then for a 2MPixel display - (1920x1200) thats 500 FPS. We get no where near that for the reasons BFG said I suppose.

Ah I see. You are just calculating 1920x1200. It should be 1920x1200x32. The 32 is the 32-bits color.

For 800x600x32, you can get 65 fps, which isn't that far from your reported 30 fps.
 

BFG10K

Lifer
Aug 14, 2000
22,709
3,002
126
I guess then that until the pixel has completed all instructions, the hardware (PS, VS, TMU, ROP) can't be released to work on another pixel?
It depends on the pipeline/shader configuration.

The point is your original comparison to fillrate is meaningless since workload required for a pixel changes on a per game basis. A pixel created in GLQuake is not equal to a pixel created in Far Cry as the latter requires vastly more work to produce.

You can't just add up the number of pixels and expect to tie them to some magical number. It just doesn't work like that.