#include "D3D12HostDevice.h" namespace XCEngine::UI::Editor::Host { bool D3D12HostDevice::InitializeFrameCompletionFence() { ReleaseFrameCompletionFence(); ID3D12Device* device = GetDevice(); if (device == nullptr) { return false; } const HRESULT hr = device->CreateFence( 0u, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(m_frameCompletionFence.ReleaseAndGetAddressOf())); if (FAILED(hr)) { return false; } m_frameCompletionEvent = CreateEventW(nullptr, FALSE, FALSE, nullptr); if (m_frameCompletionEvent == nullptr) { m_frameCompletionFence.Reset(); return false; } m_lastSubmittedFrameValue = 0u; return true; } void D3D12HostDevice::ReleaseFrameCompletionFence() { if (m_frameCompletionEvent != nullptr) { CloseHandle(m_frameCompletionEvent); m_frameCompletionEvent = nullptr; } m_frameCompletionFence.Reset(); m_frameFenceValues.fill(0u); m_lastSubmittedFrameValue = 0u; } } // namespace XCEngine::UI::Editor::Host