diff --git a/Common/VR/PPSSPPVR.cpp b/Common/VR/PPSSPPVR.cpp index 9741d197ac..d592f4f70b 100644 --- a/Common/VR/PPSSPPVR.cpp +++ b/Common/VR/PPSSPPVR.cpp @@ -684,7 +684,6 @@ bool StartVRRender() { vrCompat[VR_COMPAT_SKYPLANE] = PSP_CoreParameter().compat.vrCompat().Skyplane; // Set customizations - g_Config.iDisplayRefreshRate = g_Config.bForce72Hz ? 72 : 60; VR_SetConfigFloat(VR_CONFIG_CANVAS_DISTANCE, vrScene && (appMode == VR_GAME_MODE) ? g_Config.fCanvas3DDistance : g_Config.fCanvasDistance); VR_SetConfig(VR_CONFIG_PASSTHROUGH, g_Config.bPassthrough); return true; diff --git a/Core/HLE/sceDisplay.cpp b/Core/HLE/sceDisplay.cpp index 62f5390989..5bcbcd4cf7 100644 --- a/Core/HLE/sceDisplay.cpp +++ b/Core/HLE/sceDisplay.cpp @@ -152,7 +152,7 @@ void __DisplayVblankBeginCallback(SceUID threadID, SceUID prevCallbackId); void __DisplayVblankEndCallback(SceUID threadID, SceUID prevCallbackId); void __DisplayFlip(int cyclesLate); -static void __DisplaySetFramerate(int value); +static void __DisplaySetFramerate(void); static bool UseLagSync() { return g_Config.bForceLagSync && !g_Config.bAutoFrameSkip; @@ -563,8 +563,7 @@ static void NotifyUserIfSlow() { } void __DisplayFlip(int cyclesLate) { - if (g_Config.iDisplayRefreshRate != framerate) - __DisplaySetFramerate(g_Config.iDisplayRefreshRate); + __DisplaySetFramerate(); flippedThisFrame = true; // We flip only if the framebuffer was dirty. This eliminates flicker when using @@ -1130,8 +1129,12 @@ void Register_sceDisplay_driver() { RegisterModule("sceDisplay_driver", ARRAY_SIZE(sceDisplay), sceDisplay); } -static void __DisplaySetFramerate(int value) { - framerate = value; +static void __DisplaySetFramerate(void) { + if (System_GetPropertyInt(SYSPROP_DEVICE_TYPE) == DEVICE_TYPE_VR) + framerate = g_Config.bForce72Hz ? 72 : 60; + else + framerate = g_Config.iDisplayRefreshRate; + timePerVblank = 1.001 / (double)framerate; frameMs = 1001.0 / (double)framerate; }