From 7cf1037d5af015912e84cd52a992be80f4f6092c Mon Sep 17 00:00:00 2001 From: Jordan Justen <jordan.l.justen@intel.com> Date: Mon, 30 Oct 2017 11:16:48 -0700 Subject: main, glsl: Add UniformDataDefaults which stores uniform defaults MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The ARB_get_program_binary extension requires that uniform values in a program be restored to their initial value just after linking. This patch saves off the initial values just after linking. When the program is restored by glProgramBinary, we can use this to copy the initial value of uniforms into UniformDataSlots. V2 (Timothy Arceri): - Store UniformDataDefaults only when serializing GLSL as this is what we want for both disk cache and ARB_get_program_binary. This saves us having to come back later and reset the Uniforms on program binary restores. Signed-off-by: Timothy Arceri <tarceri@itsqueeze.com> Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> (v1) Reviewed-by: Tapani Pälli <tapani.palli@intel.com> --- src/compiler/glsl/link_uniform_initializers.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/compiler/glsl/link_uniform_initializers.cpp') diff --git a/src/compiler/glsl/link_uniform_initializers.cpp b/src/compiler/glsl/link_uniform_initializers.cpp index be3715cc1a3..97796e721bf 100644 --- a/src/compiler/glsl/link_uniform_initializers.cpp +++ b/src/compiler/glsl/link_uniform_initializers.cpp @@ -357,5 +357,7 @@ link_set_uniform_initializers(struct gl_shader_program *prog, } } + memcpy(prog->data->UniformDataDefaults, prog->data->UniformDataSlots, + sizeof(union gl_constant_value) * prog->data->NumUniformDataSlots); ralloc_free(mem_ctx); } -- cgit v1.2.3