mirror of
https://github.com/hrydgard/ppsspp.git
synced 2024-11-27 07:20:49 +00:00
Merge pull request #12602 from hrydgard/frame-duplication
Add option to improve frame pacing through duplicate frames if below 60hz.
This commit is contained in:
commit
eeff56cdbf
@ -776,6 +776,7 @@ static ConfigSetting graphicsSettings[] = {
|
||||
ConfigSetting("LogFrameDrops", &g_Config.bLogFrameDrops, false, true, false),
|
||||
|
||||
ConfigSetting("InflightFrames", &g_Config.iInflightFrames, 3, true, false),
|
||||
ConfigSetting("RenderDuplicateFrames", &g_Config.bRenderDuplicateFrames, false, true, true),
|
||||
|
||||
ConfigSetting(false),
|
||||
};
|
||||
|
@ -207,6 +207,7 @@ public:
|
||||
bool bGfxDebugOutput;
|
||||
bool bGfxDebugSplitSubmit;
|
||||
int iInflightFrames;
|
||||
bool bRenderDuplicateFrames;
|
||||
|
||||
// Sound
|
||||
bool bEnableSound;
|
||||
|
@ -754,9 +754,11 @@ void __DisplayFlip(int cyclesLate) {
|
||||
// Also let's always flip for animated shaders.
|
||||
const ShaderInfo *shaderInfo = g_Config.sPostShaderName == "Off" ? nullptr : GetPostShaderInfo(g_Config.sPostShaderName);
|
||||
bool postEffectRequiresFlip = false;
|
||||
// postEffectRequiresFlip is not compatible with frameskip unthrottling, see #12325.
|
||||
if (shaderInfo && g_Config.iRenderingMode != FB_NON_BUFFERED_MODE)
|
||||
postEffectRequiresFlip = shaderInfo->requires60fps;
|
||||
postEffectRequiresFlip = (shaderInfo->requires60fps || g_Config.bRenderDuplicateFrames) && !(g_Config.bFrameSkipUnthrottle && !FrameTimingThrottled());
|
||||
const bool fbDirty = gpu->FramebufferDirty();
|
||||
|
||||
if (fbDirty || noRecentFlip || postEffectRequiresFlip) {
|
||||
int frameSleepPos = frameTimeHistoryPos;
|
||||
CalculateFPS();
|
||||
|
@ -343,6 +343,11 @@ void GameSettingsScreen::CreateViews() {
|
||||
return UI::EVENT_CONTINUE;
|
||||
});
|
||||
#endif
|
||||
CheckBox *frameDuplication = graphicsSettings->Add(new CheckBox(&g_Config.bRenderDuplicateFrames, gr->T("Render duplicate frames to 60hz")));
|
||||
frameDuplication->OnClick.Add([=](EventParams &e) {
|
||||
settingInfo_->Show(gr->T("RenderDuplicateFrames Tip", "Can make framerate smoother in games that run at lower framerates"), e.v);
|
||||
return UI::EVENT_CONTINUE;
|
||||
});
|
||||
|
||||
if (GetGPUBackend() == GPUBackend::VULKAN || GetGPUBackend() == GPUBackend::OPENGL) {
|
||||
static const char *bufferOptions[] = { "No buffer", "Up to 1", "Up to 2" };
|
||||
|
Loading…
Reference in New Issue
Block a user