diff --git a/src/amd/vulkan/radv_pipeline.h b/src/amd/vulkan/radv_pipeline.h index ee379171954..129153a26a1 100644 --- a/src/amd/vulkan/radv_pipeline.h +++ b/src/amd/vulkan/radv_pipeline.h @@ -37,6 +37,7 @@ enum radv_pipeline_type { struct radv_pipeline { struct vk_object_base base; + uint8_t sha1[SHA1_DIGEST_LENGTH]; enum radv_pipeline_type type; VkPipelineCreateFlags2KHR create_flags; diff --git a/src/amd/vulkan/radv_pipeline_cache.c b/src/amd/vulkan/radv_pipeline_cache.c index c0430bca6ba..326a519ea6a 100644 --- a/src/amd/vulkan/radv_pipeline_cache.c +++ b/src/amd/vulkan/radv_pipeline_cache.c @@ -85,7 +85,7 @@ radv_hash_rt_shaders(const struct radv_device *device, unsigned char *hash, cons for (uint32_t i = 0; i < pCreateInfo->pLibraryInfo->libraryCount; ++i) { VK_FROM_HANDLE(radv_pipeline, lib_pipeline, pCreateInfo->pLibraryInfo->pLibraries[i]); struct radv_ray_tracing_pipeline *lib = radv_pipeline_to_ray_tracing(lib_pipeline); - _mesa_sha1_update(&ctx, lib->sha1, SHA1_DIGEST_LENGTH); + _mesa_sha1_update(&ctx, lib->base.base.sha1, SHA1_DIGEST_LENGTH); } } @@ -413,7 +413,7 @@ radv_ray_tracing_pipeline_cache_search(struct radv_device *device, struct vk_pip } struct vk_pipeline_cache_object *object = - vk_pipeline_cache_lookup_object(cache, pipeline->sha1, SHA1_DIGEST_LENGTH, &radv_pipeline_ops, found); + vk_pipeline_cache_lookup_object(cache, pipeline->base.base.sha1, SHA1_DIGEST_LENGTH, &radv_pipeline_ops, found); if (!object) return false; @@ -473,7 +473,7 @@ radv_ray_tracing_pipeline_cache_insert(struct radv_device *device, struct vk_pip num_stages * sizeof(struct radv_ray_tracing_stage_cache_data); struct radv_pipeline_cache_object *pipeline_obj = - radv_pipeline_cache_object_create(&device->vk, num_shaders, pipeline->sha1, data_size); + radv_pipeline_cache_object_create(&device->vk, num_shaders, pipeline->base.base.sha1, data_size); struct radv_ray_tracing_pipeline_cache_data *data = pipeline_obj->data; data->has_traversal_shader = !!pipeline->base.base.shaders[MESA_SHADER_INTERSECTION]; diff --git a/src/amd/vulkan/radv_pipeline_rt.c b/src/amd/vulkan/radv_pipeline_rt.c index cab5ba71bbe..e8c8437bbf3 100644 --- a/src/amd/vulkan/radv_pipeline_rt.c +++ b/src/amd/vulkan/radv_pipeline_rt.c @@ -846,8 +846,8 @@ radv_rt_pipeline_compile(struct radv_device *device, const VkRayTracingPipelineC int64_t pipeline_start = os_time_get_nano(); - radv_hash_rt_shaders(device, pipeline->sha1, pipeline->stages, pCreateInfo, pipeline->groups); - pipeline->base.base.pipeline_hash = *(uint64_t *)pipeline->sha1; + radv_hash_rt_shaders(device, pipeline->base.base.sha1, pipeline->stages, pCreateInfo, pipeline->groups); + pipeline->base.base.pipeline_hash = *(uint64_t *)pipeline->base.base.sha1; /* Skip the shaders cache when any of the below are true: * - shaders are captured because it's for debugging purposes diff --git a/src/amd/vulkan/radv_pipeline_rt.h b/src/amd/vulkan/radv_pipeline_rt.h index 16f1326084f..baab7aacd99 100644 --- a/src/amd/vulkan/radv_pipeline_rt.h +++ b/src/amd/vulkan/radv_pipeline_rt.h @@ -25,7 +25,6 @@ struct radv_ray_tracing_pipeline { unsigned non_imported_stage_count; unsigned group_count; - uint8_t sha1[SHA1_DIGEST_LENGTH]; uint32_t stack_size; /* set if any shaders from this pipeline require robustness2 in the merged traversal shader */