[Mesa-dev] [PATCH] glsl, st/shader_cache: check the whole sha1 for zero

Grazvydas Ignotas notasas at gmail.com
Sun Mar 26 23:18:47 UTC 2017


On Sun, Mar 26, 2017 at 11:45 PM, Timothy Arceri <tarceri at itsqueeze.com> wrote:
>
>
> On 27/03/17 03:30, Grazvydas Ignotas wrote:
>>
>> 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 at gmail.com>
>> ---
>>  src/compiler/glsl/shader_cache.cpp       | 3 ++-
>>  src/mesa/state_tracker/st_shader_cache.c | 3 ++-
>>  2 files changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/compiler/glsl/shader_cache.cpp
>> b/src/compiler/glsl/shader_cache.cpp
>> index 274bb8c..ea1bc01 100644
>> --- a/src/compiler/glsl/shader_cache.cpp
>> +++ b/src/compiler/glsl/shader_cache.cpp
>> @@ -1219,11 +1219,12 @@ shader_cache_write_program_metadata(struct
>> gl_context *ctx,
>>      * generate a source from.
>>      *
>>      * 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};
>
>
> I don't think this will compile on Windows.

Why do you think so? From my experience msvc (forced to use it at
work) is fine with sizeof(array) and zero initializers, and other code
in src/compiler/glsl/ has used both already.

GraÅžvydas


More information about the mesa-dev mailing list