linker: Link built-in functions instead of including them in every shader

This is an invasive set of changes.  Each user shader tracks a set of other
shaders that contain built-in functions.  During compilation, function
prototypes are imported from these shaders.  During linking, the
shaders are linked with these built-in-function shaders just like with
any other shader.
This commit is contained in:
Ian Romanick
2010-07-20 11:29:46 -07:00
parent 4ccd3c548b
commit d5be2acae3
9 changed files with 253 additions and 57 deletions
+4
View File
@@ -219,6 +219,9 @@ compile_shader(struct gl_shader *shader)
shader->symbols = state->symbols;
shader->CompileStatus = !state->error;
shader->Version = state->language_version;
memcpy(shader->builtins_to_link, state->builtins_to_link,
sizeof(shader->builtins_to_link[0]) * state->num_builtins_to_link);
shader->num_builtins_to_link = state->num_builtins_to_link;
if (shader->InfoLog)
talloc_free(shader->InfoLog);
@@ -305,6 +308,7 @@ main(int argc, char **argv)
talloc_free(whole_program);
_mesa_glsl_release_types();
_mesa_glsl_release_functions();
return status;
}