yum-mirror/slang

Making it easier to work with shaders

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

Ellie Hermaszewskaformatf65d756bf

master
1.8 KiB56 linesraw
1// debug-command-buffer.h
2#pragma once
3#include "debug-base.h"
4#include "debug-command-encoder.h"
5#include "debug-shader-object.h"
6
7namespace gfx
8{
9using namespace Slang;
10
11namespace debug
12{
13
14class DebugCommandBuffer : public DebugObject<ICommandBuffer>, ICommandBufferD3D12
15{
16public:
17    SLANG_COM_OBJECT_IUNKNOWN_ALL;
18
19public:
20    DebugTransientResourceHeap* m_transientHeap;
21
22private:
23    DebugRenderCommandEncoder m_renderCommandEncoder;
24    DebugComputeCommandEncoder m_computeCommandEncoder;
25    DebugResourceCommandEncoder m_resourceCommandEncoder;
26    DebugRayTracingCommandEncoder m_rayTracingCommandEncoder;
27
28public:
29    DebugCommandBuffer();
30    ICommandBuffer* getInterface(const Slang::Guid& guid);
31    virtual SLANG_NO_THROW void SLANG_MCALL encodeRenderCommands(
32        IRenderPassLayout* renderPass,
33        IFramebuffer* framebuffer,
34        IRenderCommandEncoder** outEncoder) override;
35    virtual SLANG_NO_THROW void SLANG_MCALL
36    encodeComputeCommands(IComputeCommandEncoder** outEncoder) override;
37    virtual SLANG_NO_THROW void SLANG_MCALL
38    encodeResourceCommands(IResourceCommandEncoder** outEncoder) override;
39    virtual SLANG_NO_THROW void SLANG_MCALL
40    encodeRayTracingCommands(IRayTracingCommandEncoder** outEncoder) override;
41    virtual SLANG_NO_THROW void SLANG_MCALL close() override;
42    virtual SLANG_NO_THROW Result SLANG_MCALL getNativeHandle(InteropHandle* outHandle) override;
43    virtual SLANG_NO_THROW void SLANG_MCALL invalidateDescriptorHeapBinding() override;
44    virtual SLANG_NO_THROW void SLANG_MCALL ensureInternalDescriptorHeapsBound() override;
45
46private:
47    void checkEncodersClosedBeforeNewEncoder();
48    void checkCommandBufferOpenWhenCreatingEncoder();
49
50public:
51    DebugRootShaderObject rootObject;
52    bool isOpen = true;
53};
54
55} // namespace debug
56} // namespace gfx