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

View file

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

View file

@ -197,7 +197,8 @@ public:
// Frame managment // Frame managment
virtual void BeginHostFrame() = 0; virtual void BeginHostFrame() = 0;
virtual void EndHostFrame() = 0; virtual void EndHostFrame() = 0;
virtual void CheckResized() = 0;
virtual void CheckDisplayResized() = 0;
// Draw queue management // Draw queue management
virtual DisplayList* getList(int listid) = 0; 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. // 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"); thin3d->BindFramebufferAsRenderTarget(nullptr, { RPAction::CLEAR, RPAction::DONT_CARE, RPAction::DONT_CARE }, "EmuScreen_Paused");
if (PSP_IsInited()) { if (PSP_IsInited()) {
gpu->CheckResized(); gpu->CheckDisplayResized();
gpu->CopyDisplayToOutput(true); gpu->CopyDisplayToOutput(true);
} }