panvk: Use vk_shader_module
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15305>
This commit is contained in:
parent
0b4a80b4c4
commit
0c871d89ae
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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)());
|
||||
|
|
Loading…
Reference in New Issue