Fixed function pipeline replacement infrastructure follow up
stefan at codeweavers.com
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
Size: 189 bytes
Desc: This is a digitally signed message part.
Url : http://www.winehq.org/pipermail/wine-devel/attachments/20080310/71dd143f/attachment.pgp
More information about the wine-devel