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:

committed by
Marge Bot

parent
0b4a80b4c4
commit
0c871d89ae
@@ -742,14 +742,6 @@ struct panvk_event {
|
|||||||
uint32_t syncobj;
|
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 panvk_shader {
|
||||||
struct pan_shader_info info;
|
struct pan_shader_info info;
|
||||||
struct util_dynarray binary;
|
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_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_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_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)
|
VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_semaphore, base, VkSemaphore, VK_OBJECT_TYPE_SEMAPHORE)
|
||||||
|
|
||||||
#define panvk_arch_name(name, version) panvk_## version ## _ ## name
|
#define panvk_arch_name(name, version) panvk_## version ## _ ## name
|
||||||
|
@@ -26,11 +26,6 @@
|
|||||||
|
|
||||||
#include "panvk_private.h"
|
#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 "pan_shader.h"
|
||||||
|
|
||||||
#include "vk_util.h"
|
#include "vk_util.h"
|
||||||
@@ -43,46 +38,3 @@ panvk_shader_destroy(struct panvk_device *dev,
|
|||||||
util_dynarray_fini(&shader->binary);
|
util_dynarray_fini(&shader->binary);
|
||||||
vk_free2(&dev->vk.alloc, alloc, shader);
|
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 "nir_conversion_builder.h"
|
||||||
#include "spirv/nir_spirv.h"
|
#include "spirv/nir_spirv.h"
|
||||||
#include "util/mesa-sha1.h"
|
#include "util/mesa-sha1.h"
|
||||||
|
#include "vk_shader_module.h"
|
||||||
|
|
||||||
#include "pan_shader.h"
|
#include "pan_shader.h"
|
||||||
#include "util/pan_lower_framebuffer.h"
|
#include "util/pan_lower_framebuffer.h"
|
||||||
@@ -541,7 +542,7 @@ panvk_per_arch(shader_create)(struct panvk_device *dev,
|
|||||||
bool static_blend_constants,
|
bool static_blend_constants,
|
||||||
const VkAllocationCallbacks *alloc)
|
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 panfrost_device *pdev = &dev->physical_device->pdev;
|
||||||
struct panvk_shader *shader;
|
struct panvk_shader *shader;
|
||||||
|
|
||||||
@@ -553,9 +554,9 @@ panvk_per_arch(shader_create)(struct panvk_device *dev,
|
|||||||
util_dynarray_init(&shader->binary, NULL);
|
util_dynarray_init(&shader->binary, NULL);
|
||||||
|
|
||||||
/* translate SPIR-V to NIR */
|
/* translate SPIR-V to NIR */
|
||||||
assert(module->code_size % 4 == 0);
|
assert(module->size % 4 == 0);
|
||||||
nir_shader *nir = panvk_spirv_to_nir(module->code,
|
nir_shader *nir = panvk_spirv_to_nir(module->data,
|
||||||
module->code_size,
|
module->size,
|
||||||
stage, stage_info->pName,
|
stage, stage_info->pName,
|
||||||
stage_info->pSpecializationInfo,
|
stage_info->pSpecializationInfo,
|
||||||
GENX(pan_shader_get_compiler_options)());
|
GENX(pan_shader_get_compiler_options)());
|
||||||
|
Reference in New Issue
Block a user