mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-15 23:40:29 +02:00
The core no longer sleeps to pace itself: the frontend runs retro_run at its own rate, so the frame throttle, the idle-vblank delay and the real clock sync event (and its core option) are gone, and a stepping CPU hands straight back instead of waiting 2 ms. Waits that polled now park on a lock-free eventcount through Common/Thread/ParkingLot and are woken by whoever changes the state: a paused GL emu thread, which also queues a marker behind its last frame so pausing runs the render queue up to it instead of polling; async I/O results; the software renderer when its queue is full; Vulkan pipeline compiles; and debugger requests once stepping ends. Boot joins the loader thread, cache shutdown joins its read-ahead thread, and the slow-I/O simulation is removed. The path browser, the HTTP and WebSocket servers, the Windows console and the game info cache are left out of the core build. libretro/test gains lrgltest, which drives the GL backend on a surfaceless EGL context through every path that pauses or stops the emu thread; run.sh and the image checks CI job run it on llvmpipe.
29 lines
545 B
C++
29 lines
545 B
C++
#pragma once
|
|
|
|
#include "Common/GPU/thin3d.h"
|
|
|
|
// See big comment in the CPP file.
|
|
|
|
namespace Draw {
|
|
class DrawContext;
|
|
}
|
|
|
|
class FrameTiming {
|
|
public:
|
|
void ComputePresentMode(Draw::DrawContext *draw, bool fastForward);
|
|
|
|
bool FastForwardNeedsSkipFlip() const {
|
|
return fastForwardSkipFlip_;
|
|
}
|
|
Draw::PresentMode PresentMode() const {
|
|
return presentMode_;
|
|
}
|
|
|
|
private:
|
|
// For use on the next Present. These two are set by ComputePresentMode.
|
|
Draw::PresentMode presentMode_;
|
|
bool fastForwardSkipFlip_;
|
|
};
|
|
|
|
extern FrameTiming g_frameTiming;
|