yum-mirror/slang

Making it easier to work with shaders

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

Ellie Hermaszewskaformatf65d756bf

master
1.6 KiB62 linesraw
1// vk-command-queue.h
2#pragma once
3
4#include "vk-base.h"
5#include "vk-device.h"
6
7namespace gfx
8{
9
10using namespace Slang;
11
12namespace vk
13{
14
15class CommandQueueImpl : public ICommandQueue, public ComObject
16{
17public:
18    SLANG_COM_OBJECT_IUNKNOWN_ALL
19    ICommandQueue* getInterface(const Guid& guid);
20
21public:
22    Desc m_desc;
23    RefPtr<DeviceImpl> m_renderer;
24    VkQueue m_queue;
25    uint32_t m_queueFamilyIndex;
26    struct FenceWaitInfo
27    {
28        RefPtr<FenceImpl> fence;
29        uint64_t waitValue;
30    };
31    List<FenceWaitInfo> m_pendingWaitFences;
32    VkSemaphore m_pendingWaitSemaphores[2] = {VK_NULL_HANDLE, VK_NULL_HANDLE};
33    List<VkCommandBuffer> m_submitCommandBuffers;
34    VkSemaphore m_semaphore;
35    ~CommandQueueImpl();
36
37    void init(DeviceImpl* renderer, VkQueue queue, uint32_t queueFamilyIndex);
38
39    virtual SLANG_NO_THROW void SLANG_MCALL waitOnHost() override;
40
41    virtual SLANG_NO_THROW Result SLANG_MCALL getNativeHandle(InteropHandle* outHandle) override;
42
43    virtual SLANG_NO_THROW const Desc& SLANG_MCALL getDesc() override;
44
45    virtual SLANG_NO_THROW Result SLANG_MCALL
46    waitForFenceValuesOnDevice(GfxCount fenceCount, IFence** fences, uint64_t* waitValues) override;
47
48    void queueSubmitImpl(
49        uint32_t count,
50        ICommandBuffer* const* commandBuffers,
51        IFence* fence,
52        uint64_t valueToSignal);
53
54    virtual SLANG_NO_THROW void SLANG_MCALL executeCommandBuffers(
55        GfxCount count,
56        ICommandBuffer* const* commandBuffers,
57        IFence* fence,
58        uint64_t valueToSignal) override;
59};
60
61} // namespace vk
62} // namespace gfx