Only check for display resized in emuscreen-under-pause-screen, not the other changes.

This commit is contained in:
Henrik Rydgård 2022-11-21 17:59:56 +01:00
parent ce5a1b8b7e
commit c3604428b9
4 changed files with 16 additions and 5 deletions

View file

@ -484,7 +484,9 @@ void GPUCommon::BeginHostFrame() {
gstate_c.Dirty(DIRTY_ALL);
UpdateCmdInfo();
CheckResized();
CheckConfigChanged();
CheckDisplayResized();
CheckRenderResized();
}
void GPUCommon::EndHostFrame() {
@ -625,7 +627,7 @@ void GPUCommon::NotifyDisplayResized() {
// Called once per frame. Might also get called during the pause screen
// if "transparent".
void GPUCommon::CheckResized() {
void GPUCommon::CheckConfigChanged() {
if (configChanged_) {
ClearCacheNextFrame();
gstate_c.useFlags = CheckGPUFeatures();
@ -635,12 +637,16 @@ void GPUCommon::CheckResized() {
BuildReportingInfo();
configChanged_ = false;
}
}
void GPUCommon::CheckDisplayResized() {
if (displayResized_) {
framebufferManager_->NotifyDisplayResized();
displayResized_ = false;
}
}
void GPUCommon::CheckRenderResized() {
if (renderResized_) {
framebufferManager_->NotifyRenderResized();
renderResized_ = false;

View file

@ -77,7 +77,8 @@ public:
return draw_;
}
virtual u32 CheckGPUFeatures() const;
void CheckResized() override;
void CheckDisplayResized() override;
void UpdateCmdInfo();
@ -265,6 +266,9 @@ protected:
void DeviceLost() override;
void DeviceRestore() override;
void CheckConfigChanged();
void CheckRenderResized();
// Add additional common features dependent on other features, which may be backend-determined.
u32 CheckGPUFeaturesLate(u32 features) const;

View file

@ -197,7 +197,8 @@ public:
// Frame managment
virtual void BeginHostFrame() = 0;
virtual void EndHostFrame() = 0;
virtual void CheckResized() = 0;
virtual void CheckDisplayResized() = 0;
// Draw queue management
virtual DisplayList* getList(int listid) = 0;

View file

@ -1398,7 +1398,7 @@ void EmuScreen::render() {
// If we're paused and PauseScreen is transparent (will only be in buffered rendering mode), we just copy display to output.
thin3d->BindFramebufferAsRenderTarget(nullptr, { RPAction::CLEAR, RPAction::DONT_CARE, RPAction::DONT_CARE }, "EmuScreen_Paused");
if (PSP_IsInited()) {
gpu->CheckResized();
gpu->CheckDisplayResized();
gpu->CopyDisplayToOutput(true);
}