diff --git a/engine/include/XCEngine/RHI/D3D12/D3D12Fence.h b/engine/include/XCEngine/RHI/D3D12/D3D12Fence.h index fb4a6348..b7f55d38 100644 --- a/engine/include/XCEngine/RHI/D3D12/D3D12Fence.h +++ b/engine/include/XCEngine/RHI/D3D12/D3D12Fence.h @@ -22,7 +22,7 @@ public: void Signal(uint64_t value) override; void Wait(uint64_t value) override; uint64_t GetCompletedValue() const override; - bool IsSignaled() const override { return GetCompletedValue() > 0; } + bool IsSignaled() const override { return m_fence->GetCompletedValue() >= m_signalValue; } void* GetEventHandle() { return m_eventHandle; } void* GetNativeHandle() override { return m_fence.Get(); } @@ -31,6 +31,7 @@ public: private: ComPtr m_fence; void* m_eventHandle; + uint64_t m_signalValue = 0; }; } // namespace RHI diff --git a/engine/src/RHI/D3D12/D3D12Fence.cpp b/engine/src/RHI/D3D12/D3D12Fence.cpp index 188bb17e..abcb86c1 100644 --- a/engine/src/RHI/D3D12/D3D12Fence.cpp +++ b/engine/src/RHI/D3D12/D3D12Fence.cpp @@ -38,6 +38,7 @@ void D3D12Fence::Signal() { } void D3D12Fence::Signal(uint64_t value) { + m_signalValue = value; m_fence->Signal(value); }