This conversation with
@bitstorm started on another thread, where it was off topic. It is very much on topic here, so we’re coming here to continue it.
Previous post:
I think that the term “Graphics Card” these days is a misnomer. They’re better called a “Gaming Card,” because they do so more than graphics these days, in particular physics simulation and collision detection. This allows game developers to offload these tasks to the GPU, and use CPU resources for other tasks necessary for operating the game, like AI. Of course, while the modern “Gaming Card” is designed for
games, it’s still basically a computer within a computer, and it
can be used that way with some know how... as Bitcoin Miners demonstrated.
Which is why I think Frontier decided to use the GPU for surface generation, rather than the CPU: they needed these functions for their proc-gen anyways, and why reinvent the wheel? The “problem” is that I susoect that these functions are tied to fame rate by default. 99% of the time, this makes sense. In most games you
want these functions operating in sync with each other, along with user input, since the most likely bottleneck is the CPU, and weird things can happen if various processes are out if sync. But because Frontier is using the GPU for proc-gen surface generation, not just “normal” game functions, so when the frame rate is artificially throttled, there are unexpected side effects.
When it comes to v-sync vs frame rate caps, and why they have an effect on the surface generation, I think it’s best to think of them as turnstiles at a subway station. By default, they let through as many commuters as possible, as quickly as the trains can load them. By default, the griaphics card driver assumes a commuter is an adult (next video frame) with a briefcase for work (physics, collision detection, etc.). Elite: Dangerous, though, sometimes sends a second type of commuter, one the driver isn’t designed to handle separately: a child with a backpack for school (surface generation). By default, it assumes any child will be accompanied by an adult.
As long as the frame rate isn’t throttled, things work as expected. As soon as you start throttling things, though, it’s on get unexpected results. The turnstile meters how many commuters are allowed through, and any child still needs to be accompanied by an adult. If Frontier wants to allow for “free-range children,” it needs to redesign the turnstiles to permit it.
Now, how you limit frame rates depends on what method you use. The main difference between a frame rate cap, and v-sync, is that one is a hard limit, the other one adjusts itself to keep the frame rate at multiples of the screen’s refresh rate. In the case of the former, if your video card can handle 300 FPS, and you limit it to 60, your GPU will be idle 80% of the time. Great for conserving battery power, not burning your lap, or reducing fan noise, but it has knock on effects.
In the case of the latter, if your monitor has a refresh rate of 60 hz, and your GPU can handle 300 FPS, then it will work at 300... until the frame rate drops below 300, where it throttles down to 240. If the frame rate drops below 240, it throttles down to 180, and so on. Below 60, it will go down to 30, then 20, 15, 10, and so on. This helps prevent screen tearing.
Unfortunately, my last break at work is over, so I’ll have to finish here. Hope this makes sense.