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:
Grazvydas Ignotas 2017-03-26 19:30:23 +03:00 committed by Timothy Arceri
parent f2d4d11611
commit b97faea162
2 changed files with 4 additions and 2 deletions

View File

@ -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();

View File

@ -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;