Hacker News new | ask | show | jobs
by AlexAltea 1272 days ago
This is fairly common in many console emulators, see:

- PS3 (Nvidia RSX): https://github.com/RPCS3/rpcs3/blob/master/rpcs3/Emu/RSX/rsx...

- PS4 (AMD GCN): https://github.com/AlexAltea/orbital-qemu/blob/master/hw/ps4...

The hardware is known ahead of time, so console platforms take advantage of that: GPU drivers allocate a context and hand it over to userspace which can do nearly anything it wants with it (abstraction layers are quite thin), and graphics APIs are essentially a 1:1 mapping of the hardware.

Because of that there's little difference between emulating the API or emulating the GPU (the subset of the GPU accessible through the API).

The only major difference I'd say is emulating the entire GPU (including VM, GART/IOMMU, display controller, multi-contexts, etc.) vs just emulating a single GPU context (which feels quite similar to implementing a graphics API).

1 comments

Fascinating, and still an impressive technical lift especially for hobby projects without full time funding.
If you want to visit crazy-land, check out Dolphin's UberShaders; the gamecube had a mostly fixed function but super configurable graphics pipeline that can't really be translated well to modern hardware, and this caused lots of stutters and annoyances, so eventually some mad lad decided to write a GPU shader that just simulated the entire pipeline flow, no more translation or anything. Won't work on your laptop very well, but if you have an 8 year old dedicated GPU or newer, fixes the problem outright.

A similar thing was actually done in n64 world for RSP emulation, another proto-gpu device with it's own highly configurable microcode. First it was emulated in CPU with AngryLion, and someone else I think made it all run in compute shaders on the GPU, meaning you can FINALLY play nearly every n64 game accurately rendered, upscaled rendering if you want, and no slowdowns or bugs or glitches from more rare techniques, like the spy gadget in perfect dark.

"Ubershaders: A Ridiculous Solution to an Impossible Problem" https://dolphin-emu.org/blog/2017/07/30/ubershaders/

Hah. Yes. I appreciate people doing all of this because from a preservation standpoint these emulators will likely be maintainable long after working original hardware becomes very rare.