yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
f65d756bf
master
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 : 17SLANG_COM_OBJECT_IUNKNOWN_ALL ; 18 19public : 20DebugTransientResourceHeap * m_transientHeap ; 21 22private : 23DebugRenderCommandEncoder m_renderCommandEncoder ; 24DebugComputeCommandEncoder m_computeCommandEncoder ; 25DebugResourceCommandEncoder m_resourceCommandEncoder ; 26DebugRayTracingCommandEncoder m_rayTracingCommandEncoder ; 27 28public : 29DebugCommandBuffer (); 30ICommandBuffer * getInterface (const Slang ::Guid & guid ); 31virtual SLANG_NO_THROW void SLANG_MCALL encodeRenderCommands ( 32IRenderPassLayout * renderPass , 33IFramebuffer * framebuffer , 34IRenderCommandEncoder ** outEncoder )override ; 35virtual SLANG_NO_THROW void SLANG_MCALL 36encodeComputeCommands (IComputeCommandEncoder ** outEncoder )override ; 37virtual SLANG_NO_THROW void SLANG_MCALL 38encodeResourceCommands (IResourceCommandEncoder ** outEncoder )override ; 39virtual SLANG_NO_THROW void SLANG_MCALL 40encodeRayTracingCommands (IRayTracingCommandEncoder ** outEncoder )override ; 41virtual SLANG_NO_THROW void SLANG_MCALL close ()override ; 42virtual SLANG_NO_THROW Result SLANG_MCALL getNativeHandle ( InteropHandle * outHandle) override; 43virtual SLANG_NO_THROW void SLANG_MCALL invalidateDescriptorHeapBinding () override; 44virtual SLANG_NO_THROW void SLANG_MCALL ensureInternalDescriptorHeapsBound () override; 45 46private: 47void checkEncodersClosedBeforeNewEncoder (); 48void checkCommandBufferOpenWhenCreatingEncoder (); 49 50public : 51DebugRootShaderObject rootObject; 52bool isOpen = true; 53}; 54 55} // namespace debug 56} // namespace gfx