Go to the documentation of this file.
38 class RenderDeviceD3D12Impl;
47 D3D12_GPU_VIRTUAL_ADDRESS _GPUAddress
48 #ifdef DILIGENT_DEVELOPMENT
59 #ifdef DILIGENT_DEVELOPMENT
60 , DvpCtxFrameNumber(_DvpCtxFrameNumber)
70 #ifdef DILIGENT_DEVELOPMENT
92 return reinterpret_cast<Uint8*
>(m_CPUVirtualAddress) + Offset;
99 return m_GPUVirtualAddress + Offset;
104 return m_pd3d12Buffer;
110 return m_pd3d12Buffer->GetDesc().Width;
113 bool IsValid()
const {
return m_pd3d12Buffer !=
nullptr; }
116 CComPtr<ID3D12Resource> m_pd3d12Buffer;
117 void* m_CPUVirtualAddress =
nullptr;
118 D3D12_GPU_VIRTUAL_ADDRESS m_GPUVirtualAddress = 0;
144 #ifdef DILIGENT_DEVELOPMENT
145 int32_t GetAllocatedPageCounter()
const
147 return m_AllocatedPageCounter;
154 std::mutex m_AvailablePagesMtx;
155 using AvailablePagesMapElemType = std::pair<const Uint64, D3D12DynamicPage>;
158 #ifdef DILIGENT_DEVELOPMENT
159 std::atomic_int32_t m_AllocatedPageCounter = 0;
168 m_GlobalDynamicMemMgr{DynamicMemMgr},
169 m_HeapName{std::move(HeapName)},
191 const std::string m_HeapName;
193 std::vector<D3D12DynamicPage> m_AllocatedPages;
198 Uint64 m_AvailableSize = 0;
200 Uint64 m_CurrAllocatedSize = 0;
201 Uint64 m_CurrUsedSize = 0;
202 Uint64 m_CurrAlignedSize = 0;
203 Uint64 m_PeakAllocatedSize = 0;
204 Uint64 m_PeakUsedSize = 0;
205 Uint64 m_PeakAlignedSize = 0;
D3D12DynamicMemoryManager & operator=(const D3D12DynamicMemoryManager &)=delete
D3D12DynamicAllocation(ID3D12Resource *pBuff, Uint64 _Offset, Uint64 _Size, void *_CPUAddress, D3D12_GPU_VIRTUAL_ADDRESS _GPUAddress) noexcept
Definition: D3D12DynamicHeap.hpp:43
~D3D12DynamicMemoryManager()
Definition: D3D12DynamicHeap.cpp:172
uint64_t Uint64
64-bit unsigned integer
Definition: BasicTypes.h:50
D3D12_GPU_VIRTUAL_ADDRESS GetGPUAddress(Uint64 Offset)
Definition: D3D12DynamicHeap.hpp:95
Definition: D3D12DynamicHeap.hpp:164
bool IsValid() const
Definition: D3D12DynamicHeap.hpp:113
D3D12DynamicPage & operator=(const D3D12DynamicPage &)=delete
Definition: D3D12DynamicHeap.hpp:122
Definition: STDAllocator.hpp:53
Definition: D3D12DynamicHeap.hpp:76
size_t GetAllocatedPagesCount() const
Definition: D3D12DynamicHeap.hpp:187
Render device implementation in Direct3D12 backend.
Definition: RenderDeviceD3D12Impl.hpp:70
D3D12DynamicHeap & operator=(const D3D12DynamicHeap &)=delete
D3D12DynamicPage AllocatePage(Uint64 SizeInBytes)
Definition: D3D12DynamicHeap.cpp:93
ID3D12Resource * GetD3D12Buffer()
Definition: D3D12DynamicHeap.hpp:102
static constexpr Uint64 InvalidOffset
Definition: D3D12DynamicHeap.hpp:185
D3D12DynamicMemoryManager(IMemoryAllocator &Allocator, RenderDeviceD3D12Impl &DeviceD3D12Impl, Uint32 NumPagesToReserve, Uint64 PageSize)
Definition: D3D12DynamicHeap.cpp:78
uint32_t Uint32
32-bit unsigned integer
Definition: BasicTypes.h:51
~D3D12DynamicHeap()
Definition: D3D12DynamicHeap.cpp:179
D3D12DynamicAllocation Allocate(Uint64 SizeInBytes, Uint64 Alignment, Uint64 DvpCtxFrameNumber)
Definition: D3D12DynamicHeap.cpp:195
void ReleasePages(std::vector< D3D12DynamicPage > &Pages, Uint64 QueueMask)
Definition: D3D12DynamicHeap.cpp:113
Base interface for a raw memory allocator.
Definition: MemoryAllocator.h:41
D3D12DynamicHeap(D3D12DynamicMemoryManager &DynamicMemMgr, std::string HeapName, Uint64 PageSize)
Definition: D3D12DynamicHeap.hpp:167
D3D12DynamicPage(ID3D12Device *pd3d12Device, Uint64 Size)
Definition: D3D12DynamicHeap.cpp:35
void * CPUAddress
Definition: D3D12DynamicHeap.hpp:68
ID3D12Resource * pBuffer
Definition: D3D12DynamicHeap.hpp:65
uint8_t Uint8
8-bit unsigned integer
Definition: BasicTypes.h:53
Uint64 Offset
Definition: D3D12DynamicHeap.hpp:66
#define VERIFY_EXPR(...)
Definition: DebugUtilities.hpp:79
#define VERIFY(...)
Definition: DebugUtilities.hpp:76
Uint64 GetSize() const
Definition: D3D12DynamicHeap.hpp:107
Definition: D3D12DynamicHeap.hpp:40
D3D12_GPU_VIRTUAL_ADDRESS GPUAddress
Definition: D3D12DynamicHeap.hpp:69
void Destroy()
Definition: D3D12DynamicHeap.cpp:158
void * GetCPUAddress(Uint64 Offset)
Definition: D3D12DynamicHeap.hpp:88
Uint64 Size
Definition: D3D12DynamicHeap.hpp:67
void ReleaseAllocatedPages(Uint64 QueueMask)
Definition: D3D12DynamicHeap.cpp:252
The library uses Direct3D-style math:
Definition: AdvancedMath.hpp:37
D3D12DynamicAllocation() noexcept
Definition: D3D12DynamicHeap.hpp:42