blob: c7778c2ec94c28dc185b26bc05b7c2fb3dd95ebb [file] [log] [blame]
/*
* 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 */