http://bugs.winehq.org/show_bug.cgi?id=32096
--- Comment #2 from Henri Verbeet hverbeet@gmail.com 2012-10-29 18:57:38 CDT --- (In reply to comment #0)
So this bug report is more a way of opening the discussion. I see many options to improve the situation:
a) Tweak the heuristics which detects and fallbacks to drawStridedSlow. If necessary implements the needed conversions in software. But this will not generates OpenGL function call and will increase performance a bit b) Tweak the vertex shader to do the conversion in the vertex shader, I think it is our best option c) Tweak drawStridedSlow to still rely on vertex array when possible (I have an example of code which is doing this. I'm playing WoW with this since 3 days without any issue and with a FPS increase of 200%). I don't think that honestly it is the good idea. d) do something else. Because I did not read anything else than the drawStritedSlow function, I may have missed something important.
Well, we have most of that, see e.g. wined3d_buffer_preload() and shader_glsl_swizzle_to_str(). You should probably figure out why that code doesn't get used for you. Personally though, I think it's probably more productive to work on fixing any issues in Mesa / Nouveau for your hardware, and just use those drivers instead.