yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
5a3aa6159
master
1// d3d12-swap-chain.h 2#pragma once 3 4#include "d3d12-base.h" 5 6namespace gfx 7{ 8namespace d3d12 9{ 10 11using namespace Slang ; 12 13static const Int kMaxNumRenderFrames = 4 ; 14 15class SwapchainImpl :public D3DSwapchainBase 16{ 17public : 18ComPtr < ID3D12CommandQueue > m_queue ; 19ComPtr < IDXGIFactory > m_dxgiFactory ; 20ComPtr < IDXGISwapChain3 > m_swapChain3 ; 21ComPtr < ID3D12Fence > m_fence ; 22ShortList < HANDLE ,kMaxNumRenderFrames > m_frameEvents ; 23uint64_t fenceValue = 0 ; 24Result init (DeviceImpl * renderer ,const ISwapchain ::Desc & swapchainDesc ,WindowHandle window ); 25 26virtual SLANG_NO_THROW Result SLANG_MCALL resize (GfxCount width ,GfxCount height )override ; 27 28virtual void createSwapchainBufferImages ()override ; 29virtual IDXGIFactory * getDXGIFactory () override { return m_dxgiFactory; } 30virtual IUnknown * getOwningDevice () override { return m_queue; } 31virtual SLANG_NO_THROW int SLANG_MCALL acquireNextImage () override ; 32virtual SLANG_NO_THROW Result SLANG_MCALL present () override; 33virtual SLANG_NO_THROW bool SLANG_MCALL isOccluded () override; 34virtual SLANG_NO_THROW Result SLANG_MCALL setFullScreenMode ( bool mode) override; 35}; 36 37} // namespace d3d12 38} // namespace gfx