From cb59480be00a28bbd7462df6abd17d4c752121f0 Mon Sep 17 00:00:00 2001 From: Joshua Ashton Date: Wed, 17 Aug 2022 02:01:46 +0000 Subject: [PATCH] drm: Add backdoor to disable liftoff caching for debugging --- src/drm.cpp | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/drm.cpp b/src/drm.cpp index afba0f3..93d826e 100644 --- a/src/drm.cpp +++ b/src/drm.cpp @@ -1445,6 +1445,20 @@ LiftoffStateCacheEntry FrameInfoToLiftoffStateCacheEntry( const FrameInfo_t *fra return entry; } +static bool env_to_bool(const char *env) +{ + if (!env || !*env) + return false; + + return !!atoi(env); +} + +static bool is_liftoff_caching_enabled() +{ + static bool disabled = env_to_bool(getenv("GAMESCOPE_LIFTOFF_CACHE_DISABLE")); + return !disabled; +} + static int drm_prepare_liftoff( struct drm_t *drm, const struct FrameInfo_t *frameInfo, bool needs_modeset ) { @@ -1456,8 +1470,11 @@ drm_prepare_liftoff( struct drm_t *drm, const struct FrameInfo_t *frameInfo, boo if (needs_modeset) g_LiftoffStateCache.clear(); - if (g_LiftoffStateCache.count(entry) != 0) - return -EINVAL; + if (is_liftoff_caching_enabled()) + { + if (g_LiftoffStateCache.count(entry) != 0) + return -EINVAL; + } for ( int i = 0; i < k_nMaxLayers; i++ ) {