diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c index 1c24a30a1c8..739a0e78628 100644 --- a/src/amd/vulkan/radv_pipeline.c +++ b/src/amd/vulkan/radv_pipeline.c @@ -1099,7 +1099,7 @@ radv_copy_shader_stage_create_info(struct radv_device *device, uint32_t stageCou vk_object_base_init(&device->vk, &new_module->base, VK_OBJECT_TYPE_SHADER_MODULE); new_module->nir = NULL; - memcpy(new_module->sha1, module->sha1, sizeof(module->sha1)); + memcpy(new_module->hash, module->hash, sizeof(module->hash)); new_module->size = module->size; memcpy(new_module->data, module->data, module->size); diff --git a/src/vulkan/runtime/vk_pipeline.c b/src/vulkan/runtime/vk_pipeline.c index 694354b30c4..812a6bfd125 100644 --- a/src/vulkan/runtime/vk_pipeline.c +++ b/src/vulkan/runtime/vk_pipeline.c @@ -32,6 +32,7 @@ #include "nir_serialize.h" #include "util/mesa-sha1.h" +#include "util/mesa-blake3.h" bool vk_pipeline_shader_stage_is_null(const VkPipelineShaderStageCreateInfo *info) @@ -176,12 +177,12 @@ vk_pipeline_hash_shader_stage(const VkPipelineShaderStageCreateInfo *info, _mesa_sha1_update(&ctx, &info->stage, sizeof(info->stage)); if (module) { - _mesa_sha1_update(&ctx, module->sha1, sizeof(module->sha1)); + _mesa_sha1_update(&ctx, module->hash, sizeof(module->hash)); } else if (minfo) { - unsigned char spirv_sha1[SHA1_DIGEST_LENGTH]; + blake3_hash spirv_hash; - _mesa_sha1_compute(minfo->pCode, minfo->codeSize, spirv_sha1); - _mesa_sha1_update(&ctx, spirv_sha1, sizeof(spirv_sha1)); + _mesa_blake3_compute(minfo->pCode, minfo->codeSize, spirv_hash); + _mesa_sha1_update(&ctx, spirv_hash, sizeof(spirv_hash)); } else { /* It is legal to pass in arbitrary identifiers as long as they don't exceed * the limit. Shaders with bogus identifiers are more or less guaranteed to fail. */ diff --git a/src/vulkan/runtime/vk_shader_module.c b/src/vulkan/runtime/vk_shader_module.c index 6f838ed948c..556d4f0bf2a 100644 --- a/src/vulkan/runtime/vk_shader_module.c +++ b/src/vulkan/runtime/vk_shader_module.c @@ -23,7 +23,6 @@ #include "vk_shader_module.h" -#include "util/mesa-sha1.h" #include "vk_alloc.h" #include "vk_common_entrypoints.h" #include "vk_device.h" @@ -43,7 +42,7 @@ void vk_shader_module_init(struct vk_device *device, module->size = create_info->codeSize; memcpy(module->data, create_info->pCode, module->size); - _mesa_sha1_compute(module->data, module->size, module->sha1); + _mesa_blake3_compute(module->data, module->size, module->hash); } VKAPI_ATTR VkResult VKAPI_CALL @@ -71,7 +70,7 @@ vk_common_CreateShaderModule(VkDevice _device, return VK_SUCCESS; } -const uint8_t vk_shaderModuleIdentifierAlgorithmUUID[VK_UUID_SIZE] = "MESA-SHA1"; +const uint8_t vk_shaderModuleIdentifierAlgorithmUUID[VK_UUID_SIZE] = "MESA-BLAKE3"; VKAPI_ATTR void VKAPI_CALL vk_common_GetShaderModuleIdentifierEXT(VkDevice _device, @@ -79,8 +78,8 @@ vk_common_GetShaderModuleIdentifierEXT(VkDevice _device, VkShaderModuleIdentifierEXT *pIdentifier) { VK_FROM_HANDLE(vk_shader_module, module, _module); - memcpy(pIdentifier->identifier, module->sha1, sizeof(module->sha1)); - pIdentifier->identifierSize = sizeof(module->sha1); + memcpy(pIdentifier->identifier, module->hash, sizeof(module->hash)); + pIdentifier->identifierSize = sizeof(module->hash); } VKAPI_ATTR void VKAPI_CALL @@ -88,9 +87,9 @@ vk_common_GetShaderModuleCreateInfoIdentifierEXT(VkDevice _device, const VkShaderModuleCreateInfo *pCreateInfo, VkShaderModuleIdentifierEXT *pIdentifier) { - _mesa_sha1_compute(pCreateInfo->pCode, pCreateInfo->codeSize, - pIdentifier->identifier); - pIdentifier->identifierSize = SHA1_DIGEST_LENGTH; + _mesa_blake3_compute(pCreateInfo->pCode, pCreateInfo->codeSize, + pIdentifier->identifier); + pIdentifier->identifierSize = sizeof(blake3_hash); } VKAPI_ATTR void VKAPI_CALL diff --git a/src/vulkan/runtime/vk_shader_module.h b/src/vulkan/runtime/vk_shader_module.h index efb1d8c3865..c5c81cf3778 100644 --- a/src/vulkan/runtime/vk_shader_module.h +++ b/src/vulkan/runtime/vk_shader_module.h @@ -26,6 +26,7 @@ #include +#include "util/mesa-blake3.h" #include "compiler/shader_enums.h" #include "vk_object.h" @@ -40,7 +41,7 @@ struct spirv_to_nir_options; struct vk_shader_module { struct vk_object_base base; struct nir_shader *nir; - unsigned char sha1[20]; + blake3_hash hash; uint32_t size; char data[0]; };