# Juliet\src\Graphics\D3D12\D3D12Synchronization ## Source Files - Header: `Juliet\src\Graphics\D3D12\D3D12Synchronization.h` - Source: `Juliet\src\Graphics\D3D12\D3D12Synchronization.cpp` ## AI Description This C++ component provides synchronization primitives for managing GPU operations in a DirectX 12 environment. It includes functions to wait until the GPU is idle, wait for multiple fences, query fence values, and release fences. The implementation uses a pool of available fences to efficiently manage resources and ensure that commands are executed on the correct GPU. ## Symbols ### Namespace `Juliet::D3D12` #### Classes, Structs & Unions - `struct D3D12Fence` #### Functions & Methods - `extern bool WaitUntilGPUIsIdle(NonNullPtr driver)` - `extern bool Wait(NonNullPtr driver, bool waitForAll, Fence* const* fences, uint32 numFences JULIET_DEBUG_PARAM(String querier))` - `extern bool QueryFence(NonNullPtr driver, NonNullPtr fence)` - `extern void ReleaseFence(NonNullPtr driver, NonNullPtr fence JULIET_DEBUG_PARAM(String querier))` ### Namespace `Juliet::D3D12::Internal` #### Functions & Methods - `extern void ResourceBarrier(NonNullPtr commandList, D3D12_RESOURCE_STATES sourceState, D3D12_RESOURCE_STATES destinationState, ID3D12Resource* resource, uint32 subresourceIndex, bool needsUavBarrier)` - `extern D3D12Fence* AcquireFence(NonNullPtr driver JULIET_DEBUG_PARAM(String querier))` - `extern void DestroyFence(NonNullPtr fence)`