Hello,
I was not subscribed to wine-devel, so I can't reply to Stefan's mail directly, but here are some of my observations with Dota 2 on an Intel HD4000 GPU.
Intel Mesa driver doesn't seem to like glBufferSubData in a way this patchset uses it. I get many many messages like these per frame when I enable INTEL_DEBUG=perf performance feedback of the Intel Mesa driver:
Using a blit copy to avoid stalling on 588b glBufferSubData() to a busy buffer object. Using a blit copy to avoid stalling on 480b glBufferSubData() to a busy buffer object. Using a blit copy to avoid stalling on 480b glBufferSubData() to a busy buffer object. Using a blit copy to avoid stalling on 1104b glBufferSubData() to a busy buffer object. Using a blit copy to avoid stalling on 252b glBufferSubData() to a busy buffer object. Using a blit copy to avoid stalling on 204b glBufferSubData() to a busy buffer object. Using a blit copy to avoid stalling on 192b glBufferSubData() to a busy buffer object. Using a blit copy to avoid stalling on 192b glBufferSubData() to a busy buffer object. Using a blit copy to avoid stalling on 12b glBufferSubData() to a busy buffer object. Using a blit copy to avoid stalling on 12b glBufferSubData() to a busy buffer object.
I'm not sure how much this really impacts performance, but even with my Dota 2 wine perf hacks [1] it's not faster than current Wine git (performance is very similar).
On what hardware did you test this patchset?
[1]: http://vrodic.blogspot.com/2013/08/dota-2-wine-optimization-for-intel-gpus.h...
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Am 2013-09-04 16:30, schrieb Vedran Rodic:
Using a blit copy to avoid stalling on 12b glBufferSubData() to a busy buffer object.
The long term plan is to use GL_ARB_buffer_storage to create buffers that can be used for rendering while mapped. That avoids the doublebuffered buffer thing and glBufferSubData calls.
I don't know exactly what the driver means with "blit copy", but I guess it creates an additional copy of the new data rather than writing it to the mmap()ed GPU memory directly. It shouldn't hurt too much.
I'm not sure how much this really impacts performance, but even with my Dota 2 wine perf hacks [1] it's not faster than current Wine git (performance is very similar).
Mostly the nvidia blob on Linux, but also some testing on OSX. I got a lot of reports of crashes on Mesa. I think there are race conditions in the driver that won't go away until I've moved all GL calls into the worker thread.
Are you GPU or CPU limited? If you're GPU limited, those patches won't change anything.