Currently, MAME does not use your GPU to render 3D games. That much is true.
But you have a fundamental misunderstanding as to why MAME has historically avoided GPU acceleration. From MAME's inception until roughly 2010-2013 or so, the way emulators used the host GPU to accelerate emulation was by trying to map the emulated GPU's functions as closely as possible onto the host GPU's functions.
This had a whole bunch of limitations. If you had ever played Goldeneye in an N64 emulator at the time, you'd have seen that the sky was divided diagonally, with one half having the sky texture and the other half missing it. This is because emulator authors wrongly assumed that the N64's GPU only drew triangles, when in reality some careful selection of the triangle parameters could cause it to draw a square, or a trapezoid. Goldeneye abused this functionality to draw the sky texture with one draw call, rather than two separate triangles.
In general, anything involving trying to map the guest GPU functionality onto the host GPU was a complete no-go due to accuracy concerns.
However, we now live in a day and age where Compute Shaders are a thing, which opens the door to being able to run what amounts to a software renderer massively parallel on the GPU. This solution has all of the accuracy of running a software renderer on the CPU, with all of the speed provided by using a GPU.
Progress is slow on this front due to MAME's underlying graphics architecture not having kept up with the times, and so being able to do this will essentially require a re-write of the graphics system on the order of what happened with 0.106. It's something that I've asked Olivier to look into, and he has been, but given the number of things he has on his to-do list, it's not going to be quick. But it will eventually happen.
|