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.
signature.asc
Description: This is a digitally signed message part.
