# 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 manages DirectX 12 descriptor heaps for efficient GPU resource binding. It provides structures and functions to create pools of reusable descriptor stacks, handle allocation from free lists or creation via the driver, and release resources back to memory while tracking usage indices. The design includes internal arena management and type-specific initialization flags like shader visibility to optimize performance in gaming contexts within a larger framework architecture. ## 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)`