From 9ad6a5d4315db909b240ba43a0907895bdd11dc9 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 21 Dec 2022 17:05:09 +0000 Subject: [PATCH] Abort early if a fatal error is encountered during load --- renderdoc/driver/d3d12/d3d12_commands.cpp | 3 +++ renderdoc/driver/d3d12/d3d12_device.cpp | 3 +++ renderdoc/driver/vulkan/vk_core.cpp | 6 ++++++ 3 files changed, 12 insertions(+) diff --git a/renderdoc/driver/d3d12/d3d12_commands.cpp b/renderdoc/driver/d3d12/d3d12_commands.cpp index 9cc1a1f06..a4c3f03e9 100644 --- a/renderdoc/driver/d3d12/d3d12_commands.cpp +++ b/renderdoc/driver/d3d12/d3d12_commands.cpp @@ -1070,6 +1070,9 @@ RDResult WrappedID3D12CommandQueue::ReplayLog(CaptureState readType, uint32_t st return m_Cmd.m_FailedReplayResult; } + if(m_pDevice->HasFatalError()) + return ResultCode::Succeeded; + RenderDoc::Inst().SetProgress( LoadProgress::FrameEventsRead, float(m_Cmd.m_CurChunkOffset - startOffset) / float(ser.GetReader()->GetSize())); diff --git a/renderdoc/driver/d3d12/d3d12_device.cpp b/renderdoc/driver/d3d12/d3d12_device.cpp index 0fa0bd7ec..a21af2c0c 100644 --- a/renderdoc/driver/d3d12/d3d12_device.cpp +++ b/renderdoc/driver/d3d12/d3d12_device.cpp @@ -4246,6 +4246,9 @@ RDResult WrappedID3D12Device::ReadLogInitialisation(RDCFile *rdc, bool storeStru return m_FailedReplayResult; } + if(m_FatalError != ResultCode::Succeeded) + return m_FatalError; + uint64_t offsetEnd = reader->GetOffset(); RenderDoc::Inst().SetProgress(LoadProgress::FileInitialRead, diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index c586191ab..5963bf615 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -2705,6 +2705,9 @@ RDResult WrappedVulkan::ReadLogInitialisation(RDCFile *rdc, bool storeStructured return m_FailedReplayResult; } + if(m_FatalError != ResultCode::Succeeded) + return m_FatalError; + uint64_t offsetEnd = reader->GetOffset(); // only set progress after we've initialised the debug manager, to prevent progress jumping @@ -2972,6 +2975,9 @@ RDResult WrappedVulkan::ContextReplayLog(CaptureState readType, uint32_t startEv return m_FailedReplayResult; } + if(m_FatalError != ResultCode::Succeeded) + return m_FatalError; + RenderDoc::Inst().SetProgress( LoadProgress::FrameEventsRead, float(m_CurChunkOffset - startOffset) / float(ser.GetReader()->GetSize()));