yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
f65d756bf
master
1// simple-render-pass-layout.h 2#pragma once 3 4// Provide a simple no-op implementation for `ITransientResourceHeap` for targets that 5// already support version management. 6 7#include "renderer-shared.h" 8#include "slang-gfx.h" 9 10namespace gfx 11{ 12template < typename TDevice ,typename TCommandBuffer > 13class SimpleTransientResourceHeap :public TransientResourceHeapBase 14{ 15public : 16Slang ::RefPtr < TDevice > m_device ; 17Slang ::ComPtr < IBufferResource > m_constantBuffer ; 18 19public : 20Result init (TDevice * device ,const ITransientResourceHeap ::Desc & desc ) 21 { 22m_device = device ; 23IBufferResource ::Desc bufferDesc = {}; 24bufferDesc .type = IResource ::Type ::Buffer ; 25bufferDesc .allowedStates = 26ResourceStateSet (ResourceState ::ConstantBuffer ,ResourceState ::CopyDestination ); 27bufferDesc .defaultState = ResourceState ::ConstantBuffer ; 28bufferDesc .sizeInBytes = desc .constantBufferSize ; 29bufferDesc .memoryType = MemoryType ::Upload ; 30SLANG_RETURN_ON_FAIL ( 31device -> createBufferResource (bufferDesc ,nullptr ,m_constantBuffer .writeRef ())); 32return SLANG_OK ; 33 } 34virtual SLANG_NO_THROW Result SLANG_MCALL 35createCommandBuffer (ICommandBuffer ** outCommandBuffer )override 36 { 37Slang ::RefPtr < TCommandBuffer > newCmdBuffer = new TCommandBuffer (); 38newCmdBuffer -> init (m_device ,this ); 39returnComPtr (outCommandBuffer ,newCmdBuffer ); 40return SLANG_OK ; 41 } 42 43virtual SLANG_NO_THROW Result SLANG_MCALL synchronizeAndReset ()override 44 { 45++ getVersionCounter (); 46return SLANG_OK ; 47 } 48}; 49}// namespace gfx