mirror of
https://github.com/Kbz-8/Pulse.git
synced 2026-01-11 07:23:35 +00:00
working on vulkan's descriptor sets
This commit is contained in:
@@ -10,11 +10,60 @@
|
||||
#include <vulkan/vulkan_core.h>
|
||||
|
||||
#include <Pulse.h>
|
||||
#include "../../PulseInternal.h"
|
||||
|
||||
typedef struct VulkanDescriptor
|
||||
#include "VulkanEnums.h"
|
||||
|
||||
#define VULKAN_POOL_SIZE 128
|
||||
|
||||
typedef struct VulkanDescriptorSetLayout
|
||||
{
|
||||
} VulkanDescriptor;
|
||||
VkDescriptorSetLayout layout;
|
||||
VulkanDescriptorSetType type;
|
||||
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
uint32_t storage_buffer_count;
|
||||
uint32_t storage_texture_count;
|
||||
} ReadOnly;
|
||||
struct
|
||||
{
|
||||
uint32_t storage_buffer_count;
|
||||
uint32_t storage_texture_count;
|
||||
} ReadWrite;
|
||||
struct
|
||||
{
|
||||
uint32_t buffer_count;
|
||||
} Uniform;
|
||||
};
|
||||
} VulkanDescriptorSetLayout;
|
||||
|
||||
typedef struct VulkanDescriptorSet
|
||||
{
|
||||
VulkanDescriptorSetLayout* layout;
|
||||
struct VulkanDescriptorSetPool* pool;
|
||||
VkDescriptorSet set;
|
||||
} VulkanDescriptorSet;
|
||||
|
||||
typedef struct VulkanDescriptorSetPool
|
||||
{
|
||||
VulkanDescriptorSet* used_sets[VULKAN_POOL_SIZE];
|
||||
VulkanDescriptorSet* free_sets[VULKAN_POOL_SIZE];
|
||||
VkDescriptorPool pool;
|
||||
uint32_t sets_count;
|
||||
} VulkanDescriptorSetPool;
|
||||
|
||||
typedef struct VulkanDescriptorSetPoolManager
|
||||
{
|
||||
VulkanDescriptorSetPool* pools;
|
||||
uint32_t pools_capacity;
|
||||
uint32_t pools_size;
|
||||
} VulkanDescriptorSetPoolManager;
|
||||
|
||||
void VulkanInitDescriptorSetPoolManager(VulkanDescriptorSetPoolManager* manager);
|
||||
VulkanDescriptorSetPool* VulkanGetAvailableDescriptorSetPool(VulkanDescriptorSetPoolManager* manager);
|
||||
void VulkanDestroyDescriptorSetPoolManager(VulkanDescriptorSetPoolManager* manager);
|
||||
|
||||
#endif // PULSE_VULKAN_DESCRIPTOR_H_
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
// Copyright (C) 2024 kanel
|
||||
//
|
||||
// This file is part of "Pulse"
|
||||
// For conditions of distribution and use, see copyright notice in LICENSE
|
||||
|
||||
@@ -11,11 +10,20 @@
|
||||
typedef enum VulkanQueueType
|
||||
{
|
||||
VULKAN_QUEUE_COMPUTE = 0,
|
||||
VULKAN_QUEUE_TRANSFER = 1,
|
||||
VULKAN_QUEUE_TRANSFER,
|
||||
|
||||
VULKAN_QUEUE_END_ENUM // For internal use only
|
||||
} VulkanQueueType;
|
||||
|
||||
typedef enum VulkanDescriptorSetType
|
||||
{
|
||||
VULKAN_DESCRIPTOR_SET_READ_ONLY = 0,
|
||||
VULKAN_DESCRIPTOR_SET_READ_WRITE,
|
||||
VULKAN_DESCRIPTOR_SET_UNIFORM,
|
||||
|
||||
VULKAN_DESCRIPTOR_SET_END_ENUM // For internal use only
|
||||
} VulkanDescriptorSetType;
|
||||
|
||||
#endif // PULSE_VULKAN_ENUMS_H_
|
||||
|
||||
#endif // PULSE_ENABLE_VULKAN_BACKEND
|
||||
|
||||
Reference in New Issue
Block a user