radv: use different builtin shader cache for 32bit
Currently if 64bit and 32bit programs are used interchangeably, radv will keep overwriting the cache. Use separate cache files to avoid that. Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
@@ -234,15 +234,12 @@ radv_builtin_cache_path(char *path)
|
||||
const char *suffix2 = "/.cache/radv_builtin_shaders";
|
||||
struct passwd pwd, *result;
|
||||
char path2[PATH_MAX + 1]; /* PATH_MAX is not a real max,but suffices here. */
|
||||
int ret;
|
||||
|
||||
if (xdg_cache_home) {
|
||||
|
||||
if (strlen(xdg_cache_home) + strlen(suffix) > PATH_MAX)
|
||||
return false;
|
||||
|
||||
strcpy(path, xdg_cache_home);
|
||||
strcat(path, suffix);
|
||||
return true;
|
||||
ret = snprintf(path, PATH_MAX + 1, "%s%s%zd",
|
||||
xdg_cache_home, suffix, sizeof(void *) * 8);
|
||||
return ret > 0 && ret < PATH_MAX + 1;
|
||||
}
|
||||
|
||||
getpwuid_r(getuid(), &pwd, path2, PATH_MAX - strlen(suffix2), &result);
|
||||
@@ -253,8 +250,9 @@ radv_builtin_cache_path(char *path)
|
||||
strcat(path, "/.cache");
|
||||
mkdir(path, 0755);
|
||||
|
||||
strcat(path, suffix);
|
||||
return true;
|
||||
ret = snprintf(path, PATH_MAX + 1, "%s%s%zd",
|
||||
pwd.pw_dir, suffix2, sizeof(void *) * 8);
|
||||
return ret > 0 && ret < PATH_MAX + 1;
|
||||
}
|
||||
|
||||
static bool
|
||||
|
Reference in New Issue
Block a user