blob: 7b8d5f0306fb913072190698e18b67d96edd4abd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#pragma once
#include "vke.h"
namespace vke {
struct BindingSlot {
uint layoutIdx;
uint descriptorIdx;
Resource* pResource;
};
//should be thread safe with dedicate desc and cmd pools
class ShadingContext
{
device_t* device;
VkDescriptorPool descriptorPool;
VkCommandPool cmdPool;//?
std::vector<std::vector<VkDescriptorSetLayoutBinding>> descriptorSetLayoutBindings;
uint32_t maxSets;
public:
std::vector<VkDescriptorSetLayout> layouts;
ShadingContext(device_t* _device, uint32_t maxDescriptorSet = 1);
virtual ~ShadingContext();
uint32_t addDescriptorSetLayout (const std::vector<VkDescriptorSetLayoutBinding>& descriptorSetLayoutBinding);
void prepare ();
VkDescriptorSet allocateDescriptorSet (uint32_t layoutIndex);
void updateDescriptorSet (VkDescriptorSet ds, const std::vector<BindingSlot>& slots);
};
}
|