diff --git a/src/amd/vulkan/radv_pipeline_rt.c b/src/amd/vulkan/radv_pipeline_rt.c index ba113178908..cb7d91fe33b 100644 --- a/src/amd/vulkan/radv_pipeline_rt.c +++ b/src/amd/vulkan/radv_pipeline_rt.c @@ -142,7 +142,18 @@ radv_rt_pipeline_library_create(VkDevice _device, VkPipelineCache _cache, PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT); if (module) { - struct vk_shader_module *new_module = vk_shader_module_clone(NULL, module); + struct vk_shader_module *new_module = + ralloc_size(NULL, sizeof(struct vk_shader_module) + module->size); + if (!new_module) + goto fail; + + 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)); + new_module->size = module->size; + memcpy(new_module->data, module->data, module->size); + pipeline->stages[i].module = vk_shader_module_to_handle(new_module); pipeline->stages[i].pNext = NULL; } else { diff --git a/src/vulkan/runtime/vk_shader_module.c b/src/vulkan/runtime/vk_shader_module.c index 7519d52b5fc..b9ca8a96765 100644 --- a/src/vulkan/runtime/vk_shader_module.c +++ b/src/vulkan/runtime/vk_shader_module.c @@ -135,21 +135,3 @@ vk_shader_module_to_nir(struct vk_device *device, spirv_options, nir_options, mem_ctx, nir_out); } - -struct vk_shader_module * -vk_shader_module_clone(void *mem_ctx, const struct vk_shader_module *src) -{ - struct vk_shader_module *dst = - ralloc_size(mem_ctx, sizeof(struct vk_shader_module) + src->size); - - vk_object_base_init(src->base.device, &dst->base, VK_OBJECT_TYPE_SHADER_MODULE); - - dst->nir = NULL; - - memcpy(dst->sha1, src->sha1, sizeof(src->sha1)); - - dst->size = src->size; - memcpy(dst->data, src->data, src->size); - - return dst; -} diff --git a/src/vulkan/runtime/vk_shader_module.h b/src/vulkan/runtime/vk_shader_module.h index 430abaf9aec..4748450516e 100644 --- a/src/vulkan/runtime/vk_shader_module.h +++ b/src/vulkan/runtime/vk_shader_module.h @@ -62,9 +62,6 @@ vk_shader_module_to_nir(struct vk_device *device, const struct nir_shader_compiler_options *nir_options, void *mem_ctx, struct nir_shader **nir_out); -struct vk_shader_module *vk_shader_module_clone(void *mem_ctx, - const struct vk_shader_module *src); - /* this should only be used for stack-allocated, temporary objects */ #define vk_shader_module_handle_from_nir(_nir) \ ((VkShaderModule)(uintptr_t)&(struct vk_shader_module) { \