yum-mirror/slang

Making it easier to work with shaders

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

Ellie Hermaszewskaformatf65d756bf

master
1.0 KiB42 linesraw
1// vk-transient-heap.h
2#pragma once
3
4#include "vk-base.h"
5#include "vk-buffer.h"
6#include "vk-command-buffer.h"
7
8namespace gfx
9{
10
11using namespace Slang;
12
13namespace vk
14{
15
16class TransientResourceHeapImpl
17    : public TransientResourceHeapBaseImpl<DeviceImpl, BufferResourceImpl>
18{
19private:
20    typedef TransientResourceHeapBaseImpl<DeviceImpl, BufferResourceImpl> Super;
21
22public:
23    VkCommandPool m_commandPool;
24    DescriptorSetAllocator m_descSetAllocator;
25    List<VkFence> m_fences;
26    Index m_fenceIndex = -1;
27    List<RefPtr<CommandBufferImpl>> m_commandBufferPool;
28    uint32_t m_commandBufferAllocId = 0;
29    VkFence getCurrentFence() { return m_fences[m_fenceIndex]; }
30    void advanceFence();
31
32    Result init(const ITransientResourceHeap::Desc& desc, DeviceImpl* device);
33    ~TransientResourceHeapImpl();
34
35public:
36    virtual SLANG_NO_THROW Result SLANG_MCALL
37    createCommandBuffer(ICommandBuffer** outCommandBuffer) override;
38    virtual SLANG_NO_THROW Result SLANG_MCALL synchronizeAndReset() override;
39};
40
41} // namespace vk
42} // namespace gfx