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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user