With the Gallium3D driver architecture there's state trackers for Mesa, OpenVG, OpenGL ES 1.1/2.0, and even most recently one for exposing Direct3D 10.0/11.0 on Linux
. These state trackers are then what can run on the Gallium3D hardware drivers or even on the CPU in the case of Softpipe and the much more interesting LLVMpipe
. There's even now a new Gallium3D state tracker being contemplated by the Lightspark Flash Player project.
We have previously reported on Lightspark working on a new graphics engine
for this open-source project to implement the Adobe Flash/SWF specification. This new graphics engine leverages OpenGL and Cairo, but now the lead developer is considering a different approach.
Rather than using OpenGL, which is rather complex when all that Lightspark is using this graphics API for is just uploading images rendered by Cairo to the video memory and then to blit and composite the result, creating a simple Gallium3D state tracker could also do the trick.
While no code has yet to materialize, what is being considered as an option would be coming up with a new API and a simple Gallium3D state tracker that would simply be responsible for these simpler tasks. This API and Gallium3D state tracker would be responsible for DMA accelerated transfers of rendered image data, blitting and compositing of rendered images, notify the client of a-synchronous work, enqueue to-be-uploaded-to-VRAM images and have them transferred, and apply simple but programmable shader-like transformations of pixel data.
If this work does materialize, it will likely not come in the immediate future and OpenGL support would still likely be needed within Lightspark for handling the proprietary NVIDIA/AMD drivers and other situations where Gallium3D is not available.
For more information, read this blog post