Is wine reporting the right value for MaxVertexBlendMatrices ?

Stefan Dösinger stefan at codeweavers.com
Sat Feb 9 13:25:30 CST 2008


Am Samstag, 9. Februar 2008 16:00:51 schrieb Julio Fernandez:
> At the moment is set in wine as *pCaps->MaxVertexBlendMatrices =
> GL_LIMITS(blends) which results in a value of 0 (at least in my Linux
>
> computer/build), while under Windows (XPSP2 DX9c) results in a value of 4
What we return depends on the features of the OpenGL implementation. If 
GL_ARB_vertex_blend is not supported, we return 0, otherwise we return the 
limited reported to us by OpenGL, which is 4 on implementations that support 
it.

That said, GL_ARB_vertex_blend is not very common. Only MacOS supports it, and 
it is software emulated there. The Linux ATI driver used to support it until 
ATI switched to a different codebase. So this constant ends up beeing 0 
almost everywhere. The extension was dropped in favor of vertex programs, 
since vertex programs appeared shortly after vertex blending and no gl app 
was using it at this time. On Windows drivers emulate vertex blending using 
vertex shaders.

I am not sure if 0 is the correct value to return in case of no vertex 
blending support. What happens if you set it to 1? 1 would be a reasonable 
default as well, because we're still able to transform vertices with one 
matrix(ie, unblened transformation). It could also be that this game silently 
expects vertex blending to be supported: For one part, all dx8+ cards support 
this feature on Windows, and on older cards Windows has software vertex 
processing which can perform blending in a slow, but working fashion.

I have a patch for software emulated vertex blending somewhere, but I dropped 
it because I didn't come across an app which uses this function. Maybe its 
time to revive it, and continue the work on a fixed function replacement 
shader.



More information about the wine-devel mailing list