3 ms·
CPU is just x86-64, so on PC no emulation of that is necessary. More problematic is translation of custom graphics API (Gnm/Gnmx) and shading language (PSSL), b
by garaetjjte 7y ago
CPU is just x86-64, so on PC no emulation of that is necessary. More problematic is translation of custom graphics API (Gnm/Gnmx) and shading language (PSSL), but similar feats were done before (DirectX->OpenGL wined3d, DirectX->Vulkan DXVK, etc.) so it should be doable. Game performance might be hurt because they could have assumed that CPU<>GPU transfers are very fast, on PS4 it is UMA with single memory.
Though I wonder how feasible would be trying to pull graphics driver from PS4 firmware and make it to work with Radeon HD7000 series GPU.
- MayeulC 7y agoThe original Xbox is x86 as well, the complex part is emulating the GPU, DSP, etc, which developers sometimes use at a very low level, setting registers, relying on HW quirks, etc (see: xqemu) Maybe such low-level optimizations are now longer necessary with more powerful consoles, though? Regarding GPU drivers, that seems quite doable, as the PS4 Linux port uses slightly modified open source drivers, and gets good performance, IIRC.
- Jasper_ 7y agoPSSL doesn't need to be emulated, it's compiled offline to machine code binaries for the GPU. The DirectX -> OpenGL wined3d backend is similar inspirit, but the bytecode (DXBC) in D3D is a much, much higher level, so better compilation is possible. Untangling machine code into good shading language is not easy. Additionally, GNM is a lot lower level than even something like Vulkan, and you can pass pointers directly between the CPU and GPU, they share the same memory space. It's this that makes emulating things tricky. > Though I wonder how feasible would be trying to pull graphics driver from PS4 firmware There is no "graphics driver", in the traditional sense.
- earenndil 7y ago> PSSL doesn't need to be emulated ...which makes the job much harder. Shading languages aren't terribly complicated; implementing a compiler from one to native spir-v/whatever is a reasonable task. Translating from one shader bytecode to another is a more involved operation.