wined3d: declaration/FVF conversion test

Ivan Gyurdiev ivg231 at
Sat Jun 17 22:19:43 CDT 2006

Ivan Gyurdiev wrote:
> H. Verbeet wrote:
>> On 17/06/06, Vitaly Budovski <vbudovsk at> wrote:
>>> Comments?
>> A few points:
>>  - Taking only the first element of the declaration into account
>> seems unlikely to be correct
>>  - Is there a reason you're using pDeclaration9 instead of
>> pDeclarationWine? It would be usefull if dx8 applications worked as
>> well.
>>  - Let's not dump large amounts of code in
>> IWineD3DDeviceImpl_SetVertexDeclaration
> Ditto. I should note that fixing the fvf -> decl conversion seems 
> rather important, because the FVF loading code will not work with a 
> vertex shader at the moment - as far as I can see this will break 3 
> more demos, so that brings the count of broken demos up to 5 (ASCII, 
> Sketch, RollerCoaster, dx9_hlsl_* (2) ). Those demos will set a 
> shader, and then call SetFVF() afterwards (but 
> primitiveConvertToStridedData will see that shader != NULL and will 
> not do anything)
Ok I kind of lied here - those demos will not be fixed since they use 
the DrawPrimitiveUP function, which works differently. However, there 
are certainly demos which follow this pattern:

- setStreamSource[0]
- setVertexShader
- setFVF
- drawPrimitive or drawIndexedPrimitive (not UP variant).

and those currently fail, because that case isn't handled at all in the 
FVF loading code. It thinks this is a multi-stream case, when in fact 
only the 0th stream is used. Jason Green has a demo - 
dx9_hdr_texture_loader, which is broken exactly by this.

Instead of changing the FVF loading code, however, we should just 
translate it to a vertex declaration, and use the decl loading code.

More information about the wine-devel mailing list