From 08acc3144cd41e6ddf7e1ad4a78bf8f1d3ce6c4b Mon Sep 17 00:00:00 2001 From: Stenzek Date: Thu, 24 Aug 2023 18:03:14 +1000 Subject: [PATCH] Host: Avoid leaving GPU state unbound after represent --- src/core/host.cpp | 4 ++++ src/core/system.cpp | 7 ------- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/core/host.cpp b/src/core/host.cpp index ecf4508e6..c9f21b291 100644 --- a/src/core/host.cpp +++ b/src/core/host.cpp @@ -3,6 +3,7 @@ #include "host.h" #include "fullscreen_ui.h" +#include "gpu.h" #include "imgui_overlays.h" #include "shader_cache_version.h" #include "system.h" @@ -490,6 +491,9 @@ void Host::RenderDisplay(bool skip_present) g_gpu_device->Render(skip_present); ImGuiManager::NewFrame(); + + if (g_gpu) + g_gpu->RestoreGraphicsAPIState(); } void Host::InvalidateDisplay() diff --git a/src/core/system.cpp b/src/core/system.cpp index 26c12a1eb..2946197c1 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -1167,7 +1167,6 @@ bool System::LoadState(const char* filename) ResetPerformanceCounters(); ResetThrottler(); Host::RenderDisplay(false); - g_gpu->RestoreGraphicsAPIState(); Log_VerbosePrintf("Loading state took %.2f msec", load_timer.GetTimeMilliseconds()); return true; } @@ -1832,8 +1831,6 @@ void System::FrameDone() s_accumulated_gpu_time += g_gpu_device->GetAndResetAccumulatedGPUTime(); s_presents_since_last_update++; } - - g_gpu->RestoreGraphicsAPIState(); } else if (current_time >= s_next_frame_time) { @@ -2184,8 +2181,6 @@ void System::InternalReset() if (IsShutdown()) return; - g_gpu->RestoreGraphicsAPIState(); - CPU::Reset(); CPU::CodeCache::Flush(); if (g_settings.gpu_pgxp_enable) @@ -3918,8 +3913,6 @@ void System::DoRewind() s_next_frame_time += s_frame_period; Host::RenderDisplay(false); - g_gpu->RestoreGraphicsAPIState(); - Host::PumpMessagesOnCPUThread(); Throttle();