[Mesa-dev] [PATCH 2/3] glsl: disable cache if MESA_EXTENSION_OVERRIDE is set
Timothy Arceri
tarceri at itsqueeze.com
Tue Apr 11 10:21:55 UTC 2017
On 11/04/17 19:22, Nicolai Hähnle wrote:
> On 06.04.2017 12:35, Timothy Arceri wrote:
>> On 05/04/17 19:58, Nicolai Hähnle wrote:
>>> On 05.04.2017 05:56, Timothy Arceri wrote:
>>>> In the following patch we will stop pre-processing shaders before
>>>> hashing them, so we just disable the cache if MESA_EXTENSION_OVERRIDE
>>>> is set.
>>>
>>> Why can't you add the value of MESA_EXTENSION_OVERRIDE to the hash of
>>> shaders?
>>
>> I could but env vars are normally temporary or experimental things, I
>> wasn't sure we would really want these added to the cache, if you prefer
>> I can change it.
>
> At least that particular environment setting is pretty permanent I think.
Yeah, I've dropped this patch and updated patch 3 to add the env var to
the hash :)
https://patchwork.freedesktop.org/series/22748/
>
> Cheers,
> Nicolai
>
>
>>
>>
>>>
>>> Cheers,
>>> Nicolai
>>>
>>>>
>>>> Tested-by: Grazvydas Ignotas <notasas at gmail.com>
>>>> ---
>>>> src/util/disk_cache.c | 9 +++++++++
>>>> 1 file changed, 9 insertions(+)
>>>>
>>>> diff --git a/src/util/disk_cache.c b/src/util/disk_cache.c
>>>> index d9de8ef..dc883a3 100644
>>>> --- a/src/util/disk_cache.c
>>>> +++ b/src/util/disk_cache.c
>>>> @@ -167,20 +167,29 @@ disk_cache_create(const char *gpu_name, const
>>>> char *timestamp)
>>>> {
>>>> void *local;
>>>> struct disk_cache *cache = NULL;
>>>> char *path, *max_size_str;
>>>> uint64_t max_size;
>>>> int fd = -1;
>>>> struct stat sb;
>>>> struct statvfs vfs = { 0 };
>>>> size_t size;
>>>>
>>>> + /* We no longer pre-process shaders before hashing them so disable
>>>> the
>>>> + * cache if extensions are overridden.
>>>> + *
>>>> + * Note: Versions are part of the linked programs hash so we don't
>>>> need
>>>> + * to worry about those here.
>>>> + */
>>>> + if (getenv("MESA_EXTENSION_OVERRIDE"))
>>>> + return NULL;
>>>> +
>>>> /* If running as a users other than the real user disable cache */
>>>> if (geteuid() != getuid())
>>>> return NULL;
>>>>
>>>> /* A ralloc context for transient data during this invocation. */
>>>> local = ralloc_context(NULL);
>>>> if (local == NULL)
>>>> goto fail;
>>>>
>>>> /* At user request, disable shader cache entirely. */
>>>>
>>>
>>>
>
>
More information about the mesa-dev
mailing list