Previous | Next --- Slide 56 of 63
Back to Lecture Thumbnails
Tdog

Back when I had my old computer, I had to run games like tf2 on 640x400 and would get about 35 fps. However, I noticed that when I ran it on 1920x1080, I would get about 10-11 fps. Despite the resolution being over over 6x higher, it seemingly only ran at ~1/3 the fps. Is this some trick that the GPU or game engine uses? Or is this just my old computer being a piece of garbo.

motoole2

@Tdog Good question! Let's think about how performance decreases when increasing the resolution from 640x400 to 1920x1080, and consider what happens when rendering the same game geometry at these two different resolutions. 1) Processing sound, physics, AI, netcode, and other similar components of a standard game engine is not generally affected by screen resolution. 2) The number of vertices and primitives being rasterized is also not affected by screen resolution, since this is all determined by scene geometry. 3) The number of fragments (samples) does increase with resolution, so any computation associated with processing these fragments (e.g., computing their color values) does require more work.

So, there's no tricks. :-) Since processing fragments is only a fraction of the overall workload, this explains why increasing the resolution by a factor of 6x does not reduce framerates by the same factor.

adrian_TA

@Tdog Wrote this before realizing @motoole2 beat me, so to add on...

It depends on what part of your computer is the bottleneck. It could be the CPU or certain parts of the CPU (ex: individual cores, communication between cores and the L3 cache, etc). It could be the GPU or certain parts of the GPU (communication between GPU cores and shared GPU memory, GPU cores waiting on other GPU cores before tasks can complete, and more). It could be communication between the CPU and GPU, which happens on certain high speed busses (this is a huge problem with DirectX 9 / OpenGL 2.0 and previous versions, which require very many API calls). It could even be the CPU waiting on things like RAM queries. Where the bottleneck is depends on what kind of load the hardware is under -- i.e. what the running program is asking the hardware to do.

So in the case of TF2, if the program is not GPU-bound (more accurately, if it is not bound on the specific GPU subroutine that performs triangle fill), then increasing resolution will not have a significant impact on overall performance.

If you're interested in thinking about this kind of stuff, check out 15-418!