diff --git a/src/panfrost/vulkan/panvk_private.h b/src/panfrost/vulkan/panvk_private.h index be25e4cc8d7..8f0864459ed 100644 --- a/src/panfrost/vulkan/panvk_private.h +++ b/src/panfrost/vulkan/panvk_private.h @@ -742,14 +742,6 @@ struct panvk_event { uint32_t syncobj; }; -struct panvk_shader_module { - struct vk_object_base base; - unsigned char sha1[20]; - - uint32_t code_size; - const uint32_t *code[0]; -}; - struct panvk_shader { struct pan_shader_info info; struct util_dynarray binary; @@ -1069,7 +1061,6 @@ VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_pipeline, base, VkPipeline, VK_OBJECT_TYPE_ VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_pipeline_layout, base, VkPipelineLayout, VK_OBJECT_TYPE_PIPELINE_LAYOUT) VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_render_pass, base, VkRenderPass, VK_OBJECT_TYPE_RENDER_PASS) VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_sampler, base, VkSampler, VK_OBJECT_TYPE_SAMPLER) -VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_shader_module, base, VkShaderModule, VK_OBJECT_TYPE_SHADER_MODULE) VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_semaphore, base, VkSemaphore, VK_OBJECT_TYPE_SEMAPHORE) #define panvk_arch_name(name, version) panvk_## version ## _ ## name diff --git a/src/panfrost/vulkan/panvk_shader.c b/src/panfrost/vulkan/panvk_shader.c index ab17724c025..db4fb66c770 100644 --- a/src/panfrost/vulkan/panvk_shader.c +++ b/src/panfrost/vulkan/panvk_shader.c @@ -26,11 +26,6 @@ #include "panvk_private.h" -#include "nir_builder.h" -#include "nir_lower_blend.h" -#include "spirv/nir_spirv.h" -#include "util/mesa-sha1.h" - #include "pan_shader.h" #include "vk_util.h" @@ -43,46 +38,3 @@ panvk_shader_destroy(struct panvk_device *dev, util_dynarray_fini(&shader->binary); vk_free2(&dev->vk.alloc, alloc, shader); } - -VkResult -panvk_CreateShaderModule(VkDevice _device, - const VkShaderModuleCreateInfo *pCreateInfo, - const VkAllocationCallbacks *pAllocator, - VkShaderModule *pShaderModule) -{ - VK_FROM_HANDLE(panvk_device, device, _device); - struct panvk_shader_module *module; - - assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO); - assert(pCreateInfo->flags == 0); - assert(pCreateInfo->codeSize % 4 == 0); - - module = vk_object_zalloc(&device->vk, pAllocator, - sizeof(*module) + pCreateInfo->codeSize, - VK_OBJECT_TYPE_SHADER_MODULE); - if (module == NULL) - return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY); - - module->code_size = pCreateInfo->codeSize; - memcpy(module->code, pCreateInfo->pCode, pCreateInfo->codeSize); - - _mesa_sha1_compute(module->code, module->code_size, module->sha1); - - *pShaderModule = panvk_shader_module_to_handle(module); - - return VK_SUCCESS; -} - -void -panvk_DestroyShaderModule(VkDevice _device, - VkShaderModule _module, - const VkAllocationCallbacks *pAllocator) -{ - VK_FROM_HANDLE(panvk_device, device, _device); - VK_FROM_HANDLE(panvk_shader_module, module, _module); - - if (!module) - return; - - vk_object_free(&device->vk, pAllocator, module); -} diff --git a/src/panfrost/vulkan/panvk_vX_shader.c b/src/panfrost/vulkan/panvk_vX_shader.c index 47357c4d9d7..32aa4d390d2 100644 --- a/src/panfrost/vulkan/panvk_vX_shader.c +++ b/src/panfrost/vulkan/panvk_vX_shader.c @@ -34,6 +34,7 @@ #include "nir_conversion_builder.h" #include "spirv/nir_spirv.h" #include "util/mesa-sha1.h" +#include "vk_shader_module.h" #include "pan_shader.h" #include "util/pan_lower_framebuffer.h" @@ -541,7 +542,7 @@ panvk_per_arch(shader_create)(struct panvk_device *dev, bool static_blend_constants, const VkAllocationCallbacks *alloc) { - const struct panvk_shader_module *module = panvk_shader_module_from_handle(stage_info->module); + VK_FROM_HANDLE(vk_shader_module, module, stage_info->module); struct panfrost_device *pdev = &dev->physical_device->pdev; struct panvk_shader *shader; @@ -553,9 +554,9 @@ panvk_per_arch(shader_create)(struct panvk_device *dev, util_dynarray_init(&shader->binary, NULL); /* translate SPIR-V to NIR */ - assert(module->code_size % 4 == 0); - nir_shader *nir = panvk_spirv_to_nir(module->code, - module->code_size, + assert(module->size % 4 == 0); + nir_shader *nir = panvk_spirv_to_nir(module->data, + module->size, stage, stage_info->pName, stage_info->pSpecializationInfo, GENX(pan_shader_get_compiler_options)());