Nebula
Loading...
Searching...
No Matches
vkresourcetable.h
Go to the documentation of this file.
1#pragma once
2//------------------------------------------------------------------------------
9//------------------------------------------------------------------------------
10#include "ids/idallocator.h"
12#include "threading/spinlock.h"
13#include <array>
14namespace Vulkan
15{
16
17//------------------------------------------------------------------------------
21//------------------------------------------------------------------------------
29
31{
32 union
33 {
34 VkDescriptorImageInfo img;
35 VkDescriptorBufferInfo buf;
36 VkBufferView tex;
37 VkAccelerationStructureKHR tlas;
38 };
39
40 VkWriteDescriptorSet write;
41 VkWriteDescriptorSetAccelerationStructureKHR tlasWrite;
43};
44
45enum
46{
53};
54
55typedef Ids::IdAllocatorSafe<0xFFFF,
56 VkDevice,
57 VkDescriptorSet,
58 IndexT,
64
71
72//------------------------------------------------------------------------------
76//------------------------------------------------------------------------------
77enum
78{
86};
87typedef Ids::IdAllocator<
88 VkDevice,
89 VkDescriptorSetLayout,
97extern VkDescriptorSetLayout EmptySetLayout;
98
101
103const VkDescriptorSetLayout& ResourceTableLayoutGetVk(const CoreGraphics::ResourceTableLayoutId& id);
105void ResourceTableLayoutAllocTable(const CoreGraphics::ResourceTableLayoutId& id, const VkDevice dev, uint overallocationSize, IndexT& outIndex, VkDescriptorSet& outSet);
107void ResourceTableLayoutDeallocTable(const CoreGraphics::ResourceTableLayoutId& id, const VkDevice dev, const VkDescriptorSet& set, const IndexT index);
109const VkDescriptorPool& ResourceTableLayoutGetVkDescriptorPool(const CoreGraphics::ResourceTableLayoutId& id, const IndexT index);
112
113//------------------------------------------------------------------------------
117//------------------------------------------------------------------------------
118typedef Ids::IdAllocator<
119 VkDevice,
120 VkPipelineLayout
123
125const VkPipelineLayout& ResourcePipelineGetVk(const CoreGraphics::ResourcePipelineId& id);
126
127} // namespace Vulkan
An ID allocator associates an id with a slice in an N number of arrays.
Definition idallocator.h:39
Definition idallocator.h:105
Nebula's dynamic array class.
Definition array.h:61
Organizes key/value pairs by a hash code.
Definition hashtable.h:42
Vulkan implementation of GPU acceleration structure.
Definition vkaccelerationstructure.cc:15
VkResourceTableAllocator resourceTableAllocator
Definition vkresourcetable.cc:19
const VkDescriptorSetLayout & ResourceTableLayoutGetVk(const CoreGraphics::ResourceTableLayoutId &id)
get table layout
Definition vkresourcetable.cc:88
WriteType
Resource table.
Definition vkresourcetable.h:23
@ Tlas
Definition vkresourcetable.h:27
@ Buffer
Definition vkresourcetable.h:25
@ TexelBuffer
Definition vkresourcetable.h:26
@ Image
Definition vkresourcetable.h:24
void ResourceTableLayoutAllocTable(const CoreGraphics::ResourceTableLayoutId &id, const VkDevice dev, uint overallocationSize, IndexT &outIndex, VkDescriptorSet &outSet)
allocate new descriptor set from pool
Definition vkresourcetable.cc:97
Ids::IdAllocatorSafe< 0xFFFF, VkDevice, VkDescriptorSet, IndexT, CoreGraphics::ResourceTableLayoutId, Util::HashTable< uint64_t, WriteInfo >, Util::Array< VkCopyDescriptorSet, 4 > > VkResourceTableAllocator
Definition vkresourcetable.h:62
VkResourcePipelineAllocator resourcePipelineAllocator
Definition vkresourcetable.cc:21
const VkDescriptorPool & ResourceTableLayoutGetVkDescriptorPool(const CoreGraphics::ResourceTableLayoutId &id, const IndexT index)
Get descriptor pool.
Definition vkresourcetable.cc:173
VkDescriptorSetLayout EmptySetLayout
Definition vkresourcetable.cc:22
VkResourceTableLayoutAllocator resourceTableLayoutAllocator
Definition vkresourcetable.cc:20
Ids::IdAllocator< VkDevice, VkPipelineLayout > VkResourcePipelineAllocator
Resource pipeline.
Definition vkresourcetable.h:121
const IndexT ResourceTableGetVkPoolIndex(CoreGraphics::ResourceTableId id)
Get descriptor pool index.
Definition vkresourcetable.cc:38
uint * ResourceTableLayoutGetFreeItemsCounter(const CoreGraphics::ResourceTableLayoutId &id, const IndexT index)
Get descriptor pool free items counter.
Definition vkresourcetable.cc:182
Ids::IdAllocator< VkDevice, VkDescriptorSetLayout, Util::Array< VkDescriptorPoolSize >, Util::Array< Util::Pair< CoreGraphics::SamplerId, uint32_t > >, Util::HashTable< uint32_t, bool >, Util::Array< VkDescriptorPool >, Util::Array< uint > > VkResourceTableLayoutAllocator
Definition vkresourcetable.h:95
@ ResourceTable_DescriptorPoolIndex
Definition vkresourcetable.h:49
@ ResourceTable_WriteInfos
Definition vkresourcetable.h:51
@ ResourceTable_Copies
Definition vkresourcetable.h:52
@ ResourceTable_Layout
Definition vkresourcetable.h:50
@ ResourceTable_Device
Definition vkresourcetable.h:47
@ ResourceTable_DescriptorSet
Definition vkresourcetable.h:48
const VkDescriptorSet & ResourceTableGetVkDescriptorSet(CoreGraphics::ResourceTableId id)
Get descriptor set.
Definition vkresourcetable.cc:29
const VkDevice & ResourceTableGetVkDevice(CoreGraphics::ResourceTableId id)
Get device used to create resource table.
Definition vkresourcetable.cc:47
void SetupEmptyDescriptorSetLayout()
run this before using any resource tables
Definition vkresourcetable.cc:56
const VkPipelineLayout & ResourcePipelineGetVk(const CoreGraphics::ResourcePipelineId &id)
get pipeline layout
Definition vkresourcetable.cc:192
@ ResourceTableLayout_Samplers
Definition vkresourcetable.h:82
@ ResourceTableLayout_Device
Definition vkresourcetable.h:79
@ ResourceTableLayout_DescriptorPools
Definition vkresourcetable.h:84
@ ResourceTableLayout_SetLayout
Definition vkresourcetable.h:80
@ ResourceTableLayout_DescriptorPoolFreeItems
Definition vkresourcetable.h:85
@ ResourceTableLayout_PoolSizes
Definition vkresourcetable.h:81
@ ResourceTableLayout_ImmutableSamplerFlags
Definition vkresourcetable.h:83
void ResourceTableLayoutDeallocTable(const CoreGraphics::ResourceTableLayoutId &id, const VkDevice dev, const VkDescriptorSet &set, const IndexT index)
deallocate descriptor set from pool
Definition vkresourcetable.cc:161
A resource table declares a list of resources (ResourceTable in DX12, DescriptorSet in Vulkan).
Definition resourcetable.h:399
Definition resourcetable.h:95
Definition resourcetable.h:25
Definition vkresourcetable.h:31
VkDescriptorBufferInfo buf
Definition vkresourcetable.h:35
VkAccelerationStructureKHR tlas
Definition vkresourcetable.h:37
VkDescriptorImageInfo img
Definition vkresourcetable.h:34
WriteType type
Definition vkresourcetable.h:42
VkWriteDescriptorSetAccelerationStructureKHR tlasWrite
Definition vkresourcetable.h:41
VkBufferView tex
Definition vkresourcetable.h:36
VkWriteDescriptorSet write
Definition vkresourcetable.h:40
unsigned int uint
Definition types.h:33
int IndexT
Definition types.h:41