I wonder if we'll see "emulators" for the PS4 and XBox One soon (maybe even sooner than usable PS3 emulators) given that they both use x86-64 CPU architecture.
It seems we wouldn't even need emulation, "just" an API emulation layer like Wine. And I think the ps3 used openGL, so it might not be too difficult to map that to native calls. And unlike emulators we'd get near-native speeds.
Actually that sounds a bit too simple to be true, what am I missing?
Both systems have "hUMA", where the GPU and CPU have a coherent view of memory (at least on the "Onion" bus) and the former can even page fault. This likely makes them rather difficult to emulate properly on computers that don't have similar AMD cards, and I think AMD hasn't even properly exposed APIs for this for those cards on PC.
And, of course, writing something like Wine is a huge amount of work.
Also worth pointing out that while AMD does have PC hardware with hUMA (Kaveri series APUs), the unified memory pool only exists when you're using the integrated graphics processor. If you hook up a discrete GPU (which most gamers do) you get two separate memory pools that are in a unified address space, but don't have the magical consistency benefits that hUMA can give a CPU+GPU working on the same data. Not my area of expertise, but I doubt that kind of setup will help with PS4/XBOne emulation.
I was talking specifically about the PS4. I don't know why I thought they'd use OpenGL, I just naively thought Xbox == DirectX and PS4 == OpenGL. Seemed easier for the devs to port their games on a well known and documented API.
The PS4 uses a couple APIs for game graphics, GNM and GNMX[1]. I've heard that their shader language is similar to GLSL (corrected by lunixbochs). The menus are built in WebGL running inside a stripped-down Webkit browser. Developers are unable to use WebGL for games, but it isn't out of the question that will be supported in the future.
It seems we wouldn't even need emulation, "just" an API emulation layer like Wine. And I think the ps3 used openGL, so it might not be too difficult to map that to native calls. And unlike emulators we'd get near-native speeds.
Actually that sounds a bit too simple to be true, what am I missing?