glsl, st/shader_cache: check the whole sha1 for zero
The checks were only looking at the first byte, while the intention seems to be to check if the whole sha1 is zero. This prevented all shaders with first byte zero in their sha1 from being saved. This shaves around a second from Deus Ex load time on a hot cache. Signed-off-by: Grazvydas Ignotas <notasas@gmail.com> Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com> Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net>
This commit is contained in:
parent
f2d4d11611
commit
b97faea162
|
@ -1221,7 +1221,8 @@ shader_cache_write_program_metadata(struct gl_context *ctx,
|
|||
* TODO: In future we should use another method to generate a key for ff
|
||||
* programs.
|
||||
*/
|
||||
if (*prog->data->sha1 == 0)
|
||||
static const char zero[sizeof(prog->data->sha1)] = {0};
|
||||
if (memcmp(prog->data->sha1, zero, sizeof(prog->data->sha1)) == 0)
|
||||
return;
|
||||
|
||||
struct blob *metadata = blob_create();
|
||||
|
|
|
@ -64,7 +64,8 @@ st_store_tgsi_in_disk_cache(struct st_context *st, struct gl_program *prog,
|
|||
/* Exit early when we are dealing with a ff shader with no source file to
|
||||
* generate a source from.
|
||||
*/
|
||||
if (*prog->sh.data->sha1 == 0)
|
||||
static const char zero[sizeof(prog->sh.data->sha1)] = {0};
|
||||
if (memcmp(prog->sh.data->sha1, zero, sizeof(prog->sh.data->sha1)) == 0)
|
||||
return;
|
||||
|
||||
unsigned char *sha1;
|
||||
|
|
Loading…
Reference in New Issue