5/3 WineD3D: Don't use blending on pixel formats which don't support it in combination with shaders

Stefan Dösinger stefan at codeweavers.com
Sun Mar 23 07:04:54 CDT 2008


Am Sonntag, 23. März 2008 00:08:00 schrieb Roderick Colenbrander:
> Hi,
>
> Windows drivers only offer post pixel shader blending support on generic
> (A)RGB-like formats and in case of dx10-class cards like the Geforce8 also
> on some float formats. Right now we enable blending even when it isn't
> needed. In case of R32F (if you would disable the software conversion code)
> this gives a 400% performance boost in
> http://www.angelcode.com/dev/shadow/.
Don't disable GL_BLEND() in context.c . This will be overwritten by the 
state_blend() state handler later if the state is dirty for some reason. 
Instead mark the state dirty and let the state handler code you added handle 
this.

You're checking for use_ps() in the state_blend handler, in this case you'll 
have to make sure that a pixel shader change updates this. However, I suspect 
that the pixel shader does not have any effect on blending and the flag's 
name is a red herring. Can you write a test testing blending on formats that 
do not support post pixel shader blending?



More information about the wine-devel mailing list