yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
f65d756bf
master
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 : 18SLANG_COM_OBJECT_IUNKNOWN_ALL 19ICommandQueue * getInterface (const Guid & guid ); 20 21public : 22Desc m_desc ; 23RefPtr < DeviceImpl > m_renderer ; 24VkQueue m_queue ; 25uint32_t m_queueFamilyIndex ; 26struct FenceWaitInfo 27 { 28RefPtr < FenceImpl > fence ; 29uint64_t waitValue ; 30 }; 31List < FenceWaitInfo > m_pendingWaitFences ; 32VkSemaphore m_pendingWaitSemaphores [2 ]= {VK_NULL_HANDLE ,VK_NULL_HANDLE }; 33List < VkCommandBuffer > m_submitCommandBuffers ; 34VkSemaphore m_semaphore ; 35 ~CommandQueueImpl (); 36 37void init (DeviceImpl * renderer ,VkQueue queue ,uint32_t queueFamilyIndex ); 38 39virtual SLANG_NO_THROW void SLANG_MCALL waitOnHost ()override ; 40 41virtual SLANG_NO_THROW Result SLANG_MCALL getNativeHandle ( InteropHandle * outHandle) override; 42 43virtual SLANG_NO_THROW const Desc & SLANG_MCALL getDesc () override; 44 45virtual SLANG_NO_THROW Result SLANG_MCALL 46waitForFenceValuesOnDevice ( GfxCount fenceCount, IFence ** fences, uint64_t * waitValues) override; 47 48void queueSubmitImpl ( 49uint32_t count, 50ICommandBuffer * const * commandBuffers, 51IFence * fence, 52uint64_t valueToSignal); 53 54virtual SLANG_NO_THROW void SLANG_MCALL executeCommandBuffers ( 55GfxCount count, 56ICommandBuffer * const * commandBuffers, 57IFence * fence, 58uint64_t valueToSignal) override; 59}; 60 61} // namespace vk 62} // namespace gfx