Fixed function pipeline replacement infrastructure follow up

Stefan Dösinger stefan at
Mon Mar 10 08:47:13 CDT 2008

Am Sonntag, 9. März 2008 20:15:19 schrieb Stefan Dösinger:
> What is missing is dealing with vertex states, Henri has some code for that
> already. The data structure and comparison of pipeline states needs
> optimization. The already existing pipeline replacement using
> GL_NV_register_combiners and GL_NV_texture_shader should be moved into a
> separate shader backend.
An update on this, I think moving the 
GL_NV_texture_shader+GL_NV_register_combiners code into a separate shader 
model is pointless. I had a deeper look at the code again, and I think that 
the NVTS handling is well abstracted using set_tex_op vs set_tex_op_nvrc. 
GL_NV_texture_shader in turn is handled mostly in the activate_dimensions() 
function in state.c.

The situation isn't 100Q% desireable, but to get major improvements we'd need 
an nvts+nvrc exclusive backend, and keep both extensions out of the base one. 
This would mean a functional regression for cards that have nvrc but not 
nvts(Geforce 2 and earlier). Trying to keep nvrc functionality without nvts 
and still separating the code would mean massive code duplication with the 
gain of removing 4 or 5 if conditions. (Or alternatively adding a few more 
shader callbacks, one for each replaced if())

Once we implement real pixel shaders using those extensions we need a separate 
shader backend, but for the ffp part it will only hook the state_alphaop(), 
state_colorop() and sampler() functions to prevent the originals from killing 
the shader, but not modifying their functionality.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part.
Url : 

More information about the wine-devel mailing list