# Juliet\src\Graphics\D3D12\D3D12GraphicsDevice ## Source Files - Header: `Juliet\src\Graphics\D3D12\D3D12GraphicsDevice.h` - Source: `Juliet\src\Graphics\D3D12\D3D12GraphicsDevice.cpp` ## AI Description The provided code snippet is a part of a graphics driver implementation for DirectX 12. It includes functions to initialize and shutdown debugging features for the graphics device. The `InitializeDXGIDebug` function sets up the debug interface for DXGI (DirectX Graphics Infrastructure), while the `InitializeD3D12DebugLayer` function enables the debug layer in D3D12. The `OnD3D12DebugInfoMsg` callback function is used to handle debug messages generated by the graphics driver. It logs these messages at different severity levels, such as ERROR and WARNING, using the `LogWarning` function from the `Log` module. Here's a breakdown of the key functions and their functionalities: 1. **InitializeDXGIDebug**: - Loads the DXGI debug DLL. - Retrieves the IDXGIDebug interface. - Sets up the break-on-severity for different message severities. - Reports live objects to the debug interface. 2. **ShutdownDXGIDebug**: - Releases the IDXGIDebug interface and the debug DLL. 3. **InitializeD3D12DebugLayer**: - Retrieves the ID3D12Debug interface using `D3D12GetDebugInterfaceFunc`. - Enables the debug layer in D3D12. 4. **OnD3D12DebugInfoMsg**: - Registers a message callback for handling debug messages. - Logs debug messages at different severity levels. This setup is crucial for debugging issues related to DirectX 12, such as resource management, shader compilation, and execution errors. ## Symbols ### Namespace `Juliet::D3D12` #### Classes, Structs & Unions - `struct D3D12WindowData` - `struct D3D12Driver` #### Enums - `enum class RootParameters` ### Namespace `Juliet::D3D12::Internal` #### Functions & Methods - `void DisposePendingResourcces(NonNullPtr driver)`