yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
f65d756bf
master
1// d3d12-resource-views.h 2#pragma once 3 4#include "../d3d/d3d-util.h" 5#include "d3d12-base.h" 6#include "d3d12-buffer.h" 7 8namespace gfx 9{ 10namespace d3d12 11{ 12 13using namespace Slang ; 14 15class ResourceViewImpl ; 16 17class ResourceViewInternalImpl 18{ 19public : 20// The default descriptor for the view. 21D3D12Descriptor m_descriptor ; 22 23// StructuredBuffer descriptors for different strides. 24Dictionary < uint32_t ,D3D12Descriptor > m_mapBufferStrideToDescriptor ; 25 26RefPtr < D3D12GeneralExpandingDescriptorHeap > m_allocator ; 27 28 ~ResourceViewInternalImpl (); 29 30// Get a d3d12 descriptor from the buffer view with the given buffer element stride. 31SlangResult getBufferDescriptorForBinding ( 32DeviceImpl * device , 33ResourceViewImpl * view , 34uint32_t bufferStride , 35D3D12Descriptor & outDescriptor ); 36}; 37 38SlangResult createD3D12BufferDescriptor ( 39BufferResourceImpl * buffer , 40BufferResourceImpl * counterBuffer , 41IResourceView ::Desc const & desc , 42uint32_t bufferStride , 43DeviceImpl * device , 44D3D12GeneralExpandingDescriptorHeap * descriptorHeap , 45D3D12Descriptor * outDescriptor ); 46 47class ResourceViewImpl :public ResourceViewBase ,public ResourceViewInternalImpl 48{ 49public : 50Slang ::RefPtr < Resource > m_resource ; 51// null, unless this is a structuredbuffer with a separate counter buffer 52Slang ::RefPtr < Resource > m_counterResource ; 53virtual SLANG_NO_THROW Result SLANG_MCALL getNativeHandle (InteropHandle * outHandle )override ; 54}; 55 56#if SLANG_GFX_HAS_DXR_SUPPORT 57 58class AccelerationStructureImpl :public AccelerationStructureBase ,public ResourceViewInternalImpl 59{ 60public : 61RefPtr < BufferResourceImpl > m_buffer ; 62uint64_t m_offset ; 63uint64_t m_size ; 64ComPtr < ID3D12Device5 > m_device5 ; 65 66public : 67virtual SLANG_NO_THROW DeviceAddress SLANG_MCALL getDeviceAddress ()override ; 68virtual SLANG_NO_THROW Result SLANG_MCALL getNativeHandle ( InteropHandle * outHandle) override; 69}; 70 71#endif 72 73} // namespace d3d12 74} // namespace gfx