top | item 41413662

Playstation 2 GS emulation – the final frontier of Vulkan compute emulation

222 points| cton | 1 year ago |themaister.net | reply

65 comments

order
[+] nightowl_games|1 year ago|reply
How far do I gotta read before this article will expand the "GS" acronym? Interesting stuff but I'm being left behind here.
[+] wk_end|1 year ago|reply
It stands for “Graphics Synthesizer” - Sony’s name for the “GPU” in the PS2.
[+] badsectoracula|1 year ago|reply
> Pray you have programmable blending

I prayed for programmable blending via "blending shaders" (and FWIW programmable texture decoding via "texture shaders" - useful for custom texture format/compression, texture synthesis, etc) since i first learned about pixel shaders waay back in early 2000s.

Somehow GPUs got raytracing before programmable blending when the former felt like some summer night dream and the latter just about replacing yet another fixed function block with a programmable one :-P

(still waiting for texture shaders though)

[+] pandaman|1 year ago|reply
The mobile PowerVR GPUs had programmable blending last time I've touched those, in fact, it's the only kind of blending they had. Changing blend states on PS Vita was ~1ms, not pretty.
[+] pjmlp|1 year ago|reply
Well, there is mesh shaders, work graphs, CUDA, plain C++ shaders.

OTOY does all their rendering with compute nowadays.

[+] Cieric|1 year ago|reply
I mean most of that could be emulated in vulkan or dx12, I'm not sure about other apis. I'm curious what the use case would be though. I'm also fairly certain it can be done to a degree, but without a convincing use case it's hard to justify the implementation work.
[+] xgkickt|1 year ago|reply
My favorite part of the GS was the sheer insanity of the bus, 2560 bits wide in total with a clever split on the cache. The PS3 felt like a step down in some ways, blending especially.
[+] bonzini|1 year ago|reply
How does this approach compare to Dolphin's ubershader?
[+] Sesse__|1 year ago|reply
Basically, not at all. Dolphin's ubershader does one thing; simulate fixed-function blending/texturing using modern flexible hardware. (It was already an old technique when Dolphin adopted it, by the way.) This project is a complete renderer, with the rasterizer and all, and as you can see from the text, it includes an ubershader for the blending. The shader doesn't draw triangles, it just gets called for each point in the triangle and with some inputs and gets to decide what color it is.

It's vaguely like comparing a full CPU emulator with something that implements the ADD and MUL instructions.

[+] ammar-DLL|1 year ago|reply

[deleted]

[+] tetris11|1 year ago|reply
For anyone wondering:

> A dynamic recompiler is a type of software that translates code from one instruction set architecture (ISA) to another at runtime, rather than ahead of time. This process allows programs written for one platform to be executed on another platform without needing to modify the original code. Dynamic recompilation is often used in emulators, virtual machines, and just-in-time (JIT) compilation systems.

Is this what Dolphin does most of the time, or is all handcrafted at the assembly level?