From 858f37b8fc084ba93f15df2d811a325818235a86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Thu, 17 Oct 2024 21:01:58 +0200 Subject: [PATCH] Add a couple of asserts (to make things error out earlier) --- Common/GPU/Vulkan/VulkanRenderManager.h | 4 ++++ Core/SaveState.cpp | 2 +- GPU/Common/DrawEngineCommon.h | 4 ++++ GPU/Vulkan/DrawEngineVulkan.cpp | 6 ++++++ 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/Common/GPU/Vulkan/VulkanRenderManager.h b/Common/GPU/Vulkan/VulkanRenderManager.h index 29fda811e7..1f7dad7f53 100644 --- a/Common/GPU/Vulkan/VulkanRenderManager.h +++ b/Common/GPU/Vulkan/VulkanRenderManager.h @@ -290,6 +290,10 @@ public: compileMutex_.unlock(); } + void AssertInRenderPass() const { + _dbg_assert_(curRenderStep_ && curRenderStep_->stepType == VKRStepType::RENDER); + } + // This is the first call in a draw operation. Instead of asserting like we used to, you can now check the // return value and skip the draw if we're in a bad state. In that case, call ReportBadState. // The old assert wasn't very helpful in figuring out what caused it anyway... diff --git a/Core/SaveState.cpp b/Core/SaveState.cpp index 49ac73c0af..9b713943c3 100644 --- a/Core/SaveState.cpp +++ b/Core/SaveState.cpp @@ -984,7 +984,7 @@ namespace SaveState break; case SAVESTATE_SAVE: - INFO_LOG(Log::SaveState, "Saving state to %s", op.filename.c_str()); + INFO_LOG(Log::SaveState, "Saving state to '%s'", op.filename.c_str()); title = g_paramSFO.GetValueString("TITLE"); if (title.empty()) { // Homebrew title diff --git a/GPU/Common/DrawEngineCommon.h b/GPU/Common/DrawEngineCommon.h index 4ee167a1b5..1d9532155b 100644 --- a/GPU/Common/DrawEngineCommon.h +++ b/GPU/Common/DrawEngineCommon.h @@ -147,6 +147,10 @@ public: virtual void ClearTrackedVertexArrays() {} + void AssertEmpty() { + _dbg_assert_(numDrawVerts_ == 0 && numDrawInds_ == 0); + } + protected: virtual bool UpdateUseHWTessellation(bool enabled) const { return enabled; } void UpdatePlanes(); diff --git a/GPU/Vulkan/DrawEngineVulkan.cpp b/GPU/Vulkan/DrawEngineVulkan.cpp index b03a8556a0..e20c5d0535 100644 --- a/GPU/Vulkan/DrawEngineVulkan.cpp +++ b/GPU/Vulkan/DrawEngineVulkan.cpp @@ -174,11 +174,15 @@ void DrawEngineVulkan::BeginFrame() { tessDataTransferVulkan->SetPushPool(pushUBO_); DirtyAllUBOs(); + + AssertEmpty(); } void DrawEngineVulkan::EndFrame() { stats_.pushVertexSpaceUsed = (int)pushVertex_->GetUsedThisFrame(); stats_.pushIndexSpaceUsed = (int)pushIndex_->GetUsedThisFrame(); + + AssertEmpty(); } void DrawEngineVulkan::DirtyAllUBOs() { @@ -212,6 +216,8 @@ void DrawEngineVulkan::Invalidate(InvalidationCallbackFlags flags) { void DrawEngineVulkan::DoFlush() { VulkanRenderManager *renderManager = (VulkanRenderManager *)draw_->GetNativeObject(Draw::NativeObject::RENDER_MANAGER); + renderManager->AssertInRenderPass(); + PROFILE_THIS_SCOPE("Flush"); bool tess = gstate_c.submitType == SubmitType::HW_BEZIER || gstate_c.submitType == SubmitType::HW_SPLINE;