mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 02:58:05 +02:00
vulkan: Add a shader module clone helper
Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com> Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16027>
This commit is contained in:
parent
7998f242a8
commit
1873880b50
2 changed files with 21 additions and 0 deletions
|
|
@ -131,3 +131,21 @@ vk_shader_module_to_nir(struct vk_device *device,
|
|||
return VK_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,6 +60,9 @@ 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) { \
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue