yum-mirror/slang

Making it easier to work with shaders

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

lucy96chenSplit render-d3d12.h/cpp into a set of smaller files (#2231)5a3aa6159

master
1.2 KiB38 linesraw
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:
18    ComPtr<ID3D12CommandQueue> m_queue;
19    ComPtr<IDXGIFactory> m_dxgiFactory;
20    ComPtr<IDXGISwapChain3> m_swapChain3;
21    ComPtr<ID3D12Fence> m_fence;
22    ShortList<HANDLE, kMaxNumRenderFrames> m_frameEvents;
23    uint64_t fenceValue = 0;
24    Result init(DeviceImpl* renderer, const ISwapchain::Desc& swapchainDesc, WindowHandle window);
25
26    virtual SLANG_NO_THROW Result SLANG_MCALL resize(GfxCount width, GfxCount height) override;
27
28    virtual void createSwapchainBufferImages() override;
29    virtual IDXGIFactory* getDXGIFactory() override { return m_dxgiFactory; }
30    virtual IUnknown* getOwningDevice() override { return m_queue; }
31    virtual SLANG_NO_THROW int SLANG_MCALL acquireNextImage() override;
32    virtual SLANG_NO_THROW Result SLANG_MCALL present() override;
33    virtual SLANG_NO_THROW bool SLANG_MCALL isOccluded() override;
34    virtual SLANG_NO_THROW Result SLANG_MCALL setFullScreenMode(bool mode) override;
35};
36
37} // namespace d3d12
38} // namespace gfx