renderer: Tearing implementation (#3441)

This commit is contained in:
Vaxry
2023-09-28 21:48:33 +01:00
committed by GitHub
parent 1e513e25d5
commit 88b63a00b6
19 changed files with 231 additions and 61 deletions

View File

@@ -33,6 +33,8 @@ struct SSessionLockSurface;
class CHyprRenderer {
public:
CHyprRenderer();
void renderMonitor(CMonitor* pMonitor);
void outputMgrApplyTest(wlr_output_configuration_v1*, bool);
void arrangeLayersForMonitor(const int&);
@@ -53,6 +55,7 @@ class CHyprRenderer {
void renderLockscreen(CMonitor* pMonitor, timespec* now);
void setOccludedForBackLayers(CRegion& region, CWorkspace* pWorkspace);
bool canSkipBackBufferClear(CMonitor* pMonitor);
void recheckSolitaryForMonitor(CMonitor* pMonitor);
bool m_bWindowRequestedCursorHide = false;
bool m_bBlockSurfaceFeedback = false;
@@ -61,19 +64,22 @@ class CHyprRenderer {
CMonitor* m_pMostHzMonitor = nullptr;
bool m_bDirectScanoutBlocked = false;
bool m_bSoftwareCursorsLocked = false;
bool m_bTearingEnvSatisfied = false;
DAMAGETRACKINGMODES
damageTrackingModeFromStr(const std::string&);
bool attemptDirectScanout(CMonitor*);
void setWindowScanoutMode(CWindow*);
void initiateManualCrash();
bool attemptDirectScanout(CMonitor*);
void setWindowScanoutMode(CWindow*);
void initiateManualCrash();
bool m_bCrashingInProgress = false;
float m_fCrashingDistort = 0.5f;
wl_event_source* m_pCrashingLoop = nullptr;
bool m_bCrashingInProgress = false;
float m_fCrashingDistort = 0.5f;
wl_event_source* m_pCrashingLoop = nullptr;
CTimer m_tRenderTimer;
std::vector<std::unique_ptr<STearingController>> m_vTearingControllers;
CTimer m_tRenderTimer;
private:
void arrangeLayerArray(CMonitor*, const std::vector<std::unique_ptr<SLayerSurface>>&, bool, wlr_box*);