/* * Copyright © 2024 Valve Corporation * * SPDX-License-Identifier: MIT */ #ifndef RADV_PIPELINE_BINARY_H #define RADV_PIPELINE_BINARY_H #include "vk_object.h" #include "util/mesa-blake3.h" #include "util/mesa-sha1.h" struct radv_device; struct radv_ray_tracing_stage_info; struct radv_shader; struct util_dynarray; struct vk_pipeline_cache_object; struct radv_pipeline_binary { struct vk_object_base base; blake3_hash key; void *data; size_t size; }; VK_DEFINE_NONDISP_HANDLE_CASTS(radv_pipeline_binary, base, VkPipelineBinaryKHR, VK_OBJECT_TYPE_PIPELINE_BINARY_KHR) VkResult radv_create_pipeline_binary_from_shader(struct radv_device *device, const VkAllocationCallbacks *pAllocator, struct radv_shader *shader, struct util_dynarray *pipeline_binaries, uint32_t *num_binaries); VkResult radv_create_pipeline_binary_from_rt_shader(struct radv_device *device, const VkAllocationCallbacks *pAllocator, struct radv_shader *shader, bool is_traversal_shader, const uint8_t stage_sha1[SHA1_DIGEST_LENGTH], const struct radv_ray_tracing_stage_info *rt_stage_info, uint32_t stack_size, struct vk_pipeline_cache_object *nir, struct util_dynarray *pipeline_binaries, uint32_t *num_binaries); #endif /* RADV_PIPELINE_BINARY_H */