https://bugs.winehq.org/show_bug.cgi?id=39057
--- Comment #17 from Matteo Bruni matteo.mystral@gmail.com --- (In reply to swswine from comment #15)
Created attachment 52746 [details] Patch to implement index version support (using UBO, wine 1.7.55)
In principle it seems okay, although the first thing to do is to test the various things I mentioned in my previous post. You could write a d3d9 test checking for the value of MaxVertexBlendMatrixIndex for devices created with the different D3DCREATE_*_VERTEXPROCESSING values. This also needs a test for the actual indexing vertex blending functionality. It should be easy to create one by copying and modifying test_vertex_blending() in d3d9/tests/visual.c.
Vertex blending without indices also use UBO with this patch.
That's probably not okay, it would mean losing non-indexed vertex blending support if the driver / GPU doesn't support UBOs. It's not the most critical issue here though.
The patch is still not optimal
Yeah, it will have to be made somewhat smarter with not uploading all the data every time.
A few more things from a quick look. You shouldn't report indexed vertex blending when the ARB_uniform_buffer_object extension isn't around (or for hardware vertex processing, unless the tests disagree). You shouldn't change MAX_VERTEX_BLENDS but create a separate define: MaxVertexBlendMatrices is 4 even for software devices. And please, try to fix formatting and indentation.
BTW, I strongly suggest you to setup a Wine git repository clone and base your work on it. You'll find it much easier to maintain your patches as Wine changes, generate diffs etc.