http://bugs.winehq.org/show_bug.cgi?id=32096
--- Comment #1 from guillaum.bouchard@gmail.com 2012-10-29 18:44:19 CDT --- Ok.
I dug a bit more inside the code, in dlls/wined3d/device.c, line 440, there is the slow_mask:
slow_mask |= -!gl_info->supported[ARB_VERTEX_ARRAY_BGRA] & ((1 << WINED3D_FFP_DIFFUSE) | (1 << WINED3D_FFP_SPECULAR));
Which is at true because my system does not support ARB_VERTEX_ARRAY_BGRA. And this is why the code fallbacks to immediate mode.
Instead, why not converting the color data to RGBA when drawing ? I'll try to do this tomorrow.