xash3d-fwgs/ref/vk/vk_descriptor.h

60 lines
1.4 KiB
C

#pragma once
#include "vk_core.h"
#include "vk_const.h"
// Only used for traditional renderer
typedef struct descriptor_pool_s
{
VkDescriptorPool pool;
VkDescriptorSet texture_sets[MAX_TEXTURES];
VkDescriptorSetLayout one_texture_layout;
// FIXME HOW THE F
VkDescriptorSet ubo_sets[2];
VkDescriptorSetLayout one_uniform_buffer_layout;
} descriptor_pool_t;
// FIXME: move to traditional renderer
extern descriptor_pool_t vk_desc_fixme;
qboolean VK_DescriptorInit( void );
void VK_DescriptorShutdown( void );
struct xvk_image_s;
typedef union {
VkDescriptorBufferInfo buffer;
VkDescriptorImageInfo image;
const VkDescriptorImageInfo *image_array;
VkWriteDescriptorSetAccelerationStructureKHR accel;
const struct r_vk_image_s *image_object;
} vk_descriptor_value_t;
typedef struct {
int num_bindings;
const VkDescriptorSetLayoutBinding *bindings;
// Used in Write only
vk_descriptor_value_t *values;
VkPushConstantRange push_constants;
VkPipelineLayout pipeline_layout;
VkDescriptorSetLayout desc_layout;
VkDescriptorPool desc_pool;
int num_sets;
VkDescriptorSet *desc_sets;
} vk_descriptors_t;
void VK_DescriptorsCreate(vk_descriptors_t *desc);
void VK_DescriptorsWrite(const vk_descriptors_t *desc, int set_slot);
void VK_DescriptorsDestroy(const vk_descriptors_t *desc);
// typedef enum {
// VK_DescType_SingleTexture,
// } vk_desc_type_t;
// VkDescriptorSet VK_DescriptorGetSet( vk_desc_type_t type );