Mibouru said:
But I don't understand how the game itself taking every frame and upscaling it before output would be any less work than rendering the frame in the higher res from the start
Every 3d game (at least)double buffers rendering.
Render to Back buffer, while Displaying Frontbuffer.
When it's time to show the next frame, you have two options:
- Swap Back and Front buffers (requires that both buffers have identical size and color format).
- Copy Back->Front buffer on start of vertical sync (commonly used since start of PS2 generation, when GPUs became fast enough for copy being almost free, and
required on machines like 360 and GCN, which cannot scanout from their videoram).
The second option puts no restriction on buffer formats or sizes - so, you can use Frontbuffer in any resolution (upscaled, downscaled, whatever) you choose.
(Eg. Often used on PS2/GC was Backbuffer 512x512, Frontbuffer 640x480).
There's no real extra cost aside for more VideoRam usage when FrontBuffer is larger (External Scaler will save you that overhead).