yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

Ellie Hermaszewskaformatf65d756bf

master
955 B43 linesraw
1// vk-descriptor-allocator.h
2
3#pragma once
4
5#include "core/slang-list.h"
6#include "vk-api.h"
7
8namespace gfx
9{
10struct VulkanDescriptorSet
11{
12    VkDescriptorSet handle;
13    VkDescriptorPool pool;
14};
15class DescriptorSetAllocator
16{
17public:
18    Slang::List<VkDescriptorPool> pools;
19    const VulkanApi* m_api;
20    VkDescriptorPool newPool();
21    VkDescriptorPool getPool()
22    {
23        if (pools.getCount())
24            return pools.getLast();
25        return newPool();
26    }
27    VulkanDescriptorSet allocate(VkDescriptorSetLayout layout);
28    void free(VulkanDescriptorSet set)
29    {
30        m_api->vkFreeDescriptorSets(m_api->m_device, set.pool, 1, &set.handle);
31    }
32    void reset()
33    {
34        for (auto pool : pools)
35            m_api->vkResetDescriptorPool(m_api->m_device, pool, 0);
36    }
37    void close()
38    {
39        for (auto pool : pools)
40            m_api->vkDestroyDescriptorPool(m_api->m_device, pool, nullptr);
41    }
42};
43} // namespace gfx