# Juliet\src\Graphics\D3D12\D3D12DescriptorHeap ## Source Files - Header: `Juliet\src\Graphics\D3D12\D3D12DescriptorHeap.h` - Source: `Juliet\src\Graphics\D3D12\D3D12DescriptorHeap.cpp` ## AI Description This C++ component is designed to manage descriptor heaps in a DirectX 12 graphics environment. It includes functions for creating, destroying, and managing descriptor heaps, including CPU and GPU heaps. The component uses an arena-based memory allocator to efficiently allocate and deallocate descriptors, ensuring that the heap management is both efficient and easy to use. The component also provides functions for acquiring and releasing sampler heaps from a pool, which helps in optimizing resource usage by reusing descriptor heaps. ## Symbols ### Namespace `Juliet::D3D12::Internal` #### Classes, Structs & Unions - `struct D3D12DescriptorHeap` - `struct D3D12Descriptor` - `struct D3D12DescriptorHeapPool` #### Functions & Methods - `extern void CreateDescriptorHeapPool(NonNullPtr driver, D3D12DescriptorHeapPool& heapPool, D3D12_DESCRIPTOR_HEAP_TYPE type, uint32 count)` - `extern void DestroyDescriptorHeapPool(D3D12DescriptorHeapPool& pool)` - `extern D3D12DescriptorHeap* CreateDescriptorHeap(NonNullPtr driver, NonNullPtr arena, D3D12_DESCRIPTOR_HEAP_TYPE type, uint32 count, bool isStaging)` - `extern void DestroyDescriptorHeap(NonNullPtr heap)` - `extern D3D12DescriptorHeap* AcquireSamplerHeapFromPool(NonNullPtr d3d12Driver)` - `extern void ReturnSamplerHeapToPool(NonNullPtr d3d12Driver, NonNullPtr heap)` - `extern bool AssignDescriptor(D3D12DescriptorHeap* heap, D3D12Descriptor& outDescriptor)` - `extern void ReleaseDescriptor(const D3D12Descriptor& descriptor)`