Files
XCEngine/new_editor/app/Rendering/D3D12/D3D12HostDeviceFence.cpp

43 lines
1.0 KiB
C++

#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