LLVMpipe Patches Pending For Faster Vertex/Fragment Processing
Airlie this week wrote a blog post outlining this vertex/fragment processing improvement he started originally two years ago. While working on OpenGL tessellation shaders for LLVMpipe and noticing the unbearably slow performance out of Unigine Heaven, he was working on improvements to the scene handling. However, at the time the code wasn't properly geared up for asynchronous pipeline processing. That work stalled but then recently Airlie was analyzing ParaView traces on LLVMpipe where these prior patches could help out.
Due to vertex-heavy workloads of the ParaView data visualization software, the patch series turned out to help and has been found to increase the performance between 13.9% and 67% depending upon the particular test case.
This merge request is now pending for mainline Mesa that adds support to LLVMpipe and Lavapipe for overlapping vertex and fragment processing. "This set takes the llvmpipe scene objects that have been there since the start and actually allows multiple overlapping scenes to be rendering. It means however that fencing now matters, since the main thread will get control back before the fragment shader has finished rendering. This should allow much more complete CPU saturation."
This is also notable as ParaView has been one of the workloads where Intel's OpenSWR software rasterizer has traditionally performed much faster than LLVMpipe.
Thus the next round of ParaView benchmarking with LLVMpipe should be interesting.