[Mesa-dev] [PATCH 1/2] glsl/serialize: Save shader program metadata sha1

Timothy Arceri tarceri at itsqueeze.com
Mon Mar 12 21:52:59 UTC 2018


Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>

On 12/03/18 11:25, Jordan Justen wrote:
> When the shader cache is used, this can be generated. In fact, the
> shader cache uses this sha1 to lookup the serialized GL shader
> program.
> 
> If a GL shader program is restored with ProgramBinary, the shaders are
> not available, and therefore the correct sha1 cannot be generated. If
> this is restored, then we can use the shader cache to restore the
> binary programs to the program that was loaded with ProgramBinary.
> 
> Cc: Timothy Arceri <tarceri at itsqueeze.com>
> Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
> ---
>   src/compiler/glsl/serialize.cpp | 4 ++++
>   1 file changed, 4 insertions(+)
> 
> diff --git a/src/compiler/glsl/serialize.cpp b/src/compiler/glsl/serialize.cpp
> index 9d2033bddfa..1fdbaa990f4 100644
> --- a/src/compiler/glsl/serialize.cpp
> +++ b/src/compiler/glsl/serialize.cpp
> @@ -1163,6 +1163,8 @@ extern "C" void
>   serialize_glsl_program(struct blob *blob, struct gl_context *ctx,
>                          struct gl_shader_program *prog)
>   {
> +   blob_write_bytes(blob, prog->data->sha1, sizeof(prog->data->sha1));
> +
>      write_uniforms(blob, prog);
>   
>      write_hash_tables(blob, prog);
> @@ -1219,6 +1221,8 @@ deserialize_glsl_program(struct blob_reader *blob, struct gl_context *ctx,
>   
>      assert(prog->data->UniformStorage == NULL);
>   
> +   blob_copy_bytes(blob, prog->data->sha1, sizeof(prog->data->sha1));
> +
>      read_uniforms(blob, prog);
>   
>      read_hash_tables(blob, prog);
> 


More information about the mesa-dev mailing list