diff options
| author | lucy96chen <47800040+lucy96chen@users.noreply.github.com> | 2022-06-30 11:09:45 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-06-30 11:09:45 -0700 |
| commit | 5eee6b03c391d0bb6ed0ded2d8d91c2e525fdb97 (patch) | |
| tree | 0d47d3ebc385699ff195c8a19400dd3780107667 /tools/gfx/d3d11/d3d11-device.h | |
| parent | abc100f81d4b22229105f9ed569a7efafc653a3a (diff) | |
Split render-d3d11.cpp into smaller files (#2307)
* render-d3d11 split, does not compile
* Compiles but unit tests failing
* ran premake.bat
* Readded constructor code that was accidentally removed
Diffstat (limited to 'tools/gfx/d3d11/d3d11-device.h')
| -rw-r--r-- | tools/gfx/d3d11/d3d11-device.h | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/tools/gfx/d3d11/d3d11-device.h b/tools/gfx/d3d11/d3d11-device.h new file mode 100644 index 000000000..608411912 --- /dev/null +++ b/tools/gfx/d3d11/d3d11-device.h @@ -0,0 +1,161 @@ +// d3d11-device.h +#pragma once +#include "d3d11-framebuffer.h" +#include "d3d11-pipeline-state.h" + +namespace gfx +{ + +using namespace Slang; + +namespace d3d11 +{ + +class DeviceImpl : public ImmediateRendererBase +{ +public: + + ~DeviceImpl() {} + + // Renderer implementation + virtual SLANG_NO_THROW Result SLANG_MCALL initialize(const Desc& desc) override; + virtual void clearFrame(uint32_t colorBufferMask, bool clearDepth, bool clearStencil) override; + virtual SLANG_NO_THROW Result SLANG_MCALL createSwapchain( + const ISwapchain::Desc& desc, WindowHandle window, ISwapchain** outSwapchain) override; + virtual SLANG_NO_THROW Result SLANG_MCALL createFramebufferLayout( + const IFramebufferLayout::Desc& desc, IFramebufferLayout** outLayout) override; + virtual SLANG_NO_THROW Result SLANG_MCALL + createFramebuffer(const IFramebuffer::Desc& desc, IFramebuffer** outFramebuffer) override; + virtual void setFramebuffer(IFramebuffer* frameBuffer) override; + virtual void setStencilReference(uint32_t referenceValue) override; + + virtual SLANG_NO_THROW Result SLANG_MCALL createTextureResource( + const ITextureResource::Desc& desc, + const ITextureResource::SubresourceData* initData, + ITextureResource** outResource) override; + virtual SLANG_NO_THROW Result SLANG_MCALL createBufferResource( + const IBufferResource::Desc& desc, + const void* initData, + IBufferResource** outResource) override; + virtual SLANG_NO_THROW Result SLANG_MCALL + createSamplerState(ISamplerState::Desc const& desc, ISamplerState** outSampler) override; + + virtual SLANG_NO_THROW Result SLANG_MCALL createTextureView( + ITextureResource* texture, + IResourceView::Desc const& desc, + IResourceView** outView) override; + + virtual SLANG_NO_THROW Result SLANG_MCALL createBufferView( + IBufferResource* buffer, + IBufferResource* counterBuffer, + IResourceView::Desc const& desc, + IResourceView** outView) override; + + virtual SLANG_NO_THROW Result SLANG_MCALL createInputLayout( + IInputLayout::Desc const& desc, + IInputLayout** outLayout) override; + + virtual SLANG_NO_THROW Result SLANG_MCALL createQueryPool( + const IQueryPool::Desc& desc, IQueryPool** outPool) override; + + virtual Result createShaderObjectLayout( + slang::TypeLayoutReflection* typeLayout, + ShaderObjectLayoutBase** outLayout) override; + virtual Result createShaderObject(ShaderObjectLayoutBase* layout, IShaderObject** outObject) + override; + virtual Result createMutableShaderObject(ShaderObjectLayoutBase* layout, IShaderObject** outObject) override; + virtual Result createRootShaderObject(IShaderProgram* program, ShaderObjectBase** outObject) + override; + virtual void bindRootShaderObject(IShaderObject* shaderObject) override; + + virtual SLANG_NO_THROW Result SLANG_MCALL createProgram( + const IShaderProgram::Desc& desc, + IShaderProgram** outProgram, + ISlangBlob** outDiagnosticBlob) override; + virtual SLANG_NO_THROW Result SLANG_MCALL createGraphicsPipelineState( + const GraphicsPipelineStateDesc& desc, IPipelineState** outState) override; + virtual SLANG_NO_THROW Result SLANG_MCALL createComputePipelineState( + const ComputePipelineStateDesc& desc, IPipelineState** outState) override; + + virtual void* map(IBufferResource* buffer, MapFlavor flavor) override; + virtual void unmap(IBufferResource* buffer, size_t offsetWritten, size_t sizeWritten) override; + virtual void copyBuffer( + IBufferResource* dst, + size_t dstOffset, + IBufferResource* src, + size_t srcOffset, + size_t size) override; + virtual SLANG_NO_THROW SlangResult SLANG_MCALL readTextureResource( + ITextureResource* texture, ResourceState state, ISlangBlob** outBlob, size_t* outRowPitch, size_t* outPixelSize) override; + + virtual void setPrimitiveTopology(PrimitiveTopology topology) override; + + virtual void setVertexBuffers( + GfxIndex startSlot, + GfxCount slotCount, + IBufferResource* const* buffers, + const Offset* offsets) override; + virtual void setIndexBuffer( + IBufferResource* buffer, Format indexFormat, Offset offset) override; + virtual void setViewports(GfxCount count, Viewport const* viewports) override; + virtual void setScissorRects(GfxCount count, ScissorRect const* rects) override; + virtual void setPipelineState(IPipelineState* state) override; + virtual void draw(GfxCount vertexCount, GfxIndex startVertex) override; + virtual void drawIndexed( + GfxCount indexCount, GfxIndex startIndex, GfxIndex baseVertex) override; + virtual void drawInstanced( + GfxCount vertexCount, + GfxCount instanceCount, + GfxIndex startVertex, + GfxIndex startInstanceLocation) override; + virtual void drawIndexedInstanced( + GfxCount indexCount, + GfxCount instanceCount, + GfxIndex startIndexLocation, + GfxIndex baseVertexLocation, + GfxIndex startInstanceLocation) override; + virtual void dispatchCompute(int x, int y, int z) override; + virtual void submitGpuWork() override {} + virtual void waitForGpu() override + { + + } + virtual SLANG_NO_THROW const DeviceInfo& SLANG_MCALL getDeviceInfo() const override + { + return m_info; + } + virtual void beginCommandBuffer(const CommandBufferInfo& info) override; + virtual void endCommandBuffer(const CommandBufferInfo& info) override; + virtual void writeTimestamp(IQueryPool* pool, GfxIndex index) override; + +public: + void _flushGraphicsState(); + + // D3D11Device members. + + DeviceInfo m_info; + String m_adapterName; + + ComPtr<IDXGISwapChain> m_swapChain; + ComPtr<ID3D11Device> m_device; + ComPtr<ID3D11DeviceContext> m_immediateContext; + ComPtr<ID3D11Texture2D> m_backBufferTexture; + ComPtr<IDXGIFactory> m_dxgiFactory; + RefPtr<FramebufferImpl> m_currentFramebuffer; + + RefPtr<PipelineStateImpl> m_currentPipelineState; + + ComPtr<ID3D11Query> m_disjointQuery; + + uint32_t m_stencilRef = 0; + bool m_depthStencilStateDirty = true; + + Desc m_desc; + + float m_clearColor[4] = { 0, 0, 0, 0 }; + + bool m_nvapi = false; +}; + +} // namespace d3d11 +} // namespace gfx |
