Wine "PBA" Shows Potential For Improving Direct3D-Over-OpenGL Performance
University student Andrew Comminos wasn't too familiar with Direct3D or Wine development, but out of a desire for better World of Warcraft performance on Linux, he figured out the code-base and a means of enhancing the WineD3D code.
Thanks to the perf subsystem and APITrace, he was able to figure out World of Warcraft's rendering technique and how a GPU pipeline stall was happening. He ended up making use of OpenGL's ARB_buffer_storage extension to write a GPU heap allocator that performs much better for buffer maps.
With this code, which he is staging in a branch called Wine-PBA (Persistent Buffer Allocator), his World of Warcraft results via Wine are very promising. In fact, 30~60% faster in some instances.
The Wine-PBA code is currently available but he's still working towards segregated free lists, chunked OpenGL buffer allocations, and improving the code as well as more extensive testing of this heap alloator. Right now it's not production quality, but once everything is addressed, he's hopeful to take the patches to mainline Wine.
More details on Wine-PBA via this blog post.
Thanks to the perf subsystem and APITrace, he was able to figure out World of Warcraft's rendering technique and how a GPU pipeline stall was happening. He ended up making use of OpenGL's ARB_buffer_storage extension to write a GPU heap allocator that performs much better for buffer maps.
With this code, which he is staging in a branch called Wine-PBA (Persistent Buffer Allocator), his World of Warcraft results via Wine are very promising. In fact, 30~60% faster in some instances.
The Wine-PBA code is currently available but he's still working towards segregated free lists, chunked OpenGL buffer allocations, and improving the code as well as more extensive testing of this heap alloator. Right now it's not production quality, but once everything is addressed, he's hopeful to take the patches to mainline Wine.
More details on Wine-PBA via this blog post.
62 Comments