radv: do not compute the cache UUID for LLVM if it's not used
If the LLVM version (even minor) isn't the same on the OS that precompiles shaders vs the OS that runs them, the cache UUID would be different, even if only ACO is used. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15406>
This commit is contained in:

committed by
Marge Bot

parent
2e336c602d
commit
590eb9d640
@@ -98,8 +98,9 @@ radv_get_current_time(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
radv_device_get_cache_uuid(enum radeon_family family, void *uuid)
|
radv_device_get_cache_uuid(struct radv_physical_device *pdevice, void *uuid)
|
||||||
{
|
{
|
||||||
|
enum radeon_family family = pdevice->rad_info.family;
|
||||||
struct mesa_sha1 ctx;
|
struct mesa_sha1 ctx;
|
||||||
unsigned char sha1[20];
|
unsigned char sha1[20];
|
||||||
unsigned ptr_size = sizeof(void *);
|
unsigned ptr_size = sizeof(void *);
|
||||||
@@ -109,7 +110,8 @@ radv_device_get_cache_uuid(enum radeon_family family, void *uuid)
|
|||||||
|
|
||||||
if (!disk_cache_get_function_identifier(radv_device_get_cache_uuid, &ctx)
|
if (!disk_cache_get_function_identifier(radv_device_get_cache_uuid, &ctx)
|
||||||
#ifdef LLVM_AVAILABLE
|
#ifdef LLVM_AVAILABLE
|
||||||
|| !disk_cache_get_function_identifier(LLVMInitializeAMDGPUTargetInfo, &ctx)
|
|| (pdevice->use_llvm &&
|
||||||
|
!disk_cache_get_function_identifier(LLVMInitializeAMDGPUTargetInfo, &ctx))
|
||||||
#endif
|
#endif
|
||||||
)
|
)
|
||||||
return -1;
|
return -1;
|
||||||
@@ -716,7 +718,7 @@ radv_physical_device_try_create(struct radv_instance *instance, drmDevicePtr drm
|
|||||||
radv_get_compiler_string(device));
|
radv_get_compiler_string(device));
|
||||||
|
|
||||||
#ifdef ENABLE_SHADER_CACHE
|
#ifdef ENABLE_SHADER_CACHE
|
||||||
if (radv_device_get_cache_uuid(device->rad_info.family, device->cache_uuid)) {
|
if (radv_device_get_cache_uuid(device, device->cache_uuid)) {
|
||||||
result = vk_errorf(instance, VK_ERROR_INITIALIZATION_FAILED, "cannot generate UUID");
|
result = vk_errorf(instance, VK_ERROR_INITIALIZATION_FAILED, "cannot generate UUID");
|
||||||
goto fail_wsi;
|
goto fail_wsi;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user