Commit graph

1040 commits

Author SHA1 Message Date
Georg Lehmann
7708d62801 rendervulkan: Layer 0 blur support. 2022-02-18 02:44:08 +00:00
Joshua Ashton
4ed0c26364 vblankmanager: Nuke FPS limiter code for now
Not baked enough right now, needs a rework for several reasons.

Keeps dynamic refresh.
2022-02-17 21:58:14 +00:00
Simon Ser
c82cefbdee mangoapp: fix msgsnd size arg
The size argument must not include the `long msg_type` field.

Fixes the following ASan error:

    =================================================================
    ==25745==ERROR: AddressSanitizer: global-buffer-overflow on address 0x55cb6beea08a at pc 0x7f118e89525d bp
     0x7f117620a8a0 sp 0x7f117620a048
    READ of size 50 at 0x55cb6beea08a thread T10

        #0 0x7f118e89525c in __interceptor_msgsnd /usr/src/debug/gcc/libsanitizer/sanitizer_common/sanitizer_c
    ommon_interceptors.inc:3138
        #1 0x55cb6b6518ed in mangoapp_update(unsigned long, unsigned long, unsigned long) ../src/mangoapp.cpp:
    48
        #2 0x55cb6b484dde in imageWaitThreadMain() ../src/steamcompmgr.cpp:521
        #3 0x55cb6b538298 in void std::__invoke_impl<void, void (*)()>(std::__invoke_other, void (*&&)()) /usr
    /include/c++/11.2.0/bits/invoke.h:61
        #4 0x55cb6b5381b3 in std::__invoke_result<void (*)()>::type std::__invoke<void (*)()>(void (*&&)()) /u
    sr/include/c++/11.2.0/bits/invoke.h:96
        #5 0x55cb6b538063 in void std:🧵:_Invoker<std::tuple<void (*)()> >::_M_invoke<0ul>(std::_Index_t
    uple<0ul>) /usr/include/c++/11.2.0/bits/std_thread.h:253
        #6 0x55cb6b537f23 in std:🧵:_Invoker<std::tuple<void (*)()> >::operator()() /usr/include/c++/11.
    2.0/bits/std_thread.h:260
        #7 0x55cb6b537ae9 in std:🧵:_State_impl<std:🧵:_Invoker<std::tuple<void (*)()> > >::_M_run
    () /usr/include/c++/11.2.0/bits/std_thread.h:211
        #8 0x7f118e0a34d3 in execute_native_thread_routine /usr/src/debug/gcc/libstdc++-v3/src/c++11/thread.cc
    :82
        #9 0x7f118d3d75c1 in start_thread (/usr/lib/libc.so.6+0x8d5c1)
        #10 0x7f118d45c583 in __clone (/usr/lib/libc.so.6+0x112583)

    0x55cb6beea08a is located 0 bytes to the right of global variable 'mangoapp_msg_v1' defined in '../src/mangoapp.cpp:27:27' (0x55cb6beea060) of size 42
2022-02-16 12:54:49 +00:00
Simon Ser
5f8fa27029 steamcompmgr: cleanup on X11 error
The cleanup sequence run on X11 I/O error was incomplete. Let's
extract it to a function to make sure it doesn't go out-of-sync
again.
2022-02-15 17:55:51 -08:00
Joshua Ashton
fd3e8182fd vblankmanager: Rework fps limiter a bunch
Tracks consecutive missed frames much better, handles latent buffers much better.

Disable mangoapp hack for now -- it's obscuring useful data, need a better solution.

Disable low latency by default, still controlable by atom.
2022-02-16 00:55:21 +00:00
Joshua Ashton
b471a05d8a steamcompmgr: Don't yank input focus from subwindows when dirtying focus for no reason 2022-02-15 02:46:35 +00:00
Joshua Ashton
367a92833d steamcompmgr: Only reset to corner if we change real input focus focus 2022-02-15 02:15:40 +00:00
Joshua Ashton
a44c0dbc43 steamcompmgr: Handle dropdown positioning if the main window is the current output width & height 2022-02-15 02:02:09 +00:00
Joshua Ashton
82c098f117 pipewire, steamcompmgr: Fix odr violations for event_type 2022-02-14 23:50:31 +00:00
Joshua Ashton
ddf468a8e6 modegen: Add tuned clocks for Steam Deck's display 2022-02-14 22:50:15 +00:00
Georg Lehmann
ada1c7f89d rendervulkan: Do rcas opacity in the correct colorspace if we calculate it anyway. 2022-02-14 21:48:40 +00:00
Georg Lehmann
2d537df252 rendervulkan: Don't calculate a garbage alpha value. 2022-02-14 21:48:40 +00:00
Georg Lehmann
35b381ce51 rendervulkan: Don't use clock for random debug output.
Not supported on turnip.
2022-02-14 21:48:40 +00:00
Joshua Ashton
ecdf214130 vblankmanager: Fix offsetting by vblank time -- use 0 for min sleepy time 2022-02-14 20:08:19 +00:00
Joshua Ashton
a8d59607b3 vblankmanager: Don't resize latency graph when misaligned from vblank + latent frames 2022-02-14 19:54:21 +00:00
Joshua Ashton
f65339de0f vblankmanager: Don't disable latency graph when latent
Causes a bunch of mangoapp resizing which affects frametime, just make it 0 if we don't know.
2022-02-14 19:51:29 +00:00
Joshua Ashton
6c541f184c steamcompmgr: Fix compile on clang 2022-02-14 19:48:19 +00:00
Joshua Ashton
a59c89d2ec steamcompmgr: Handle X11 errors for other displays
Closes: #382
2022-02-14 19:33:28 +00:00
Joshua Ashton
7ec498af0a vblankmanager: Track latent frames 2022-02-14 19:15:52 +00:00
Joshua Ashton
765ddd74b1 Revert "vblankmanager: Make min sleepy time 0"
This reverts commit 0c3eb8f83d.
2022-02-14 15:01:07 +00:00
Joshua Ashton
0c3eb8f83d vblankmanager: Make min sleepy time 0 2022-02-14 14:56:54 +00:00
Joshua Ashton
82d372e95d vblankmanager: Change sleepyTime min values
Allows us to be more consistent at high GPU loads
2022-02-14 14:45:48 +00:00
Joshua Ashton
392a63d62b steamcompmgr: Add GAMESCOPE_LOW_LATENCY atom 2022-02-14 14:13:47 +00:00
Joshua Ashton
7f2696f51a vblankmanager: Be more aggressive about ramping back up 2022-02-14 14:11:18 +00:00
Joshua Ashton
561d7c4552 vblankmanager: Tune vblank redzone values
Couldn't do the other thing, causes some wackiness when compositing.
2022-02-14 13:48:12 +00:00
Joshua Ashton
fde42a4323 vblankmanager: Fix mangoapp latency value when late frame 2022-02-14 12:52:48 +00:00
Joshua Ashton
a2e01b5701 mangoapp: Handle frametimes from fps limiting better
Also logs latency and app's real frametime
2022-02-14 10:19:10 +00:00
Joshua Ashton
d3b5a758d1 vblankmanager: Put some of the vblank redzone into a min value
Just matters that we call drmAtomicCommit before 1.6ms, we can keep this value more stable for 99% of cases this way.
2022-02-13 18:35:59 +00:00
Joshua Ashton
12ee4304ec vblankmanager: Use vblank offset for alignment in FPS limiter 2022-02-13 10:38:41 +00:00
Joshua Ashton
555bf125c6 vblankmanager: Fix leftover FPS_LIMIT_DEBUG 2022-02-13 09:40:17 +00:00
Joshua Ashton
40fba97cea vblankmanager: Fix targeting framerates less than current with FPS limiter 2022-02-13 09:36:28 +00:00
Joshua Ashton
1594e02c84 vblankmanager: Discard first non-missed frames after a missed frame
Additionally fix some vblank limiting stuff for FSR at 4K.

This is our late frame.
2022-02-13 09:16:10 +00:00
Joshua Ashton
8fe9322578 vblankmanager: Explain divergence situation in a comment 2022-02-12 18:24:12 +00:00
Joshua Ashton
e690b00f7b vblankmanager: Allow going back in time by fixed redzones
Going back a little bit okay, it's when we use varying values to go back, we become divergent from target over time with varying clocks
2022-02-12 18:13:45 +00:00
Joshua Ashton
f156763458 vblankmanager: Don't sleep back in time
Fixes getting stuck in a feedback loop with high variance
2022-02-12 17:59:20 +00:00
Joshua Ashton
2cac416000 vblankmanager: When calculating fps limiter sleep time, take the min of the rolling max frame time against target interval - redzone
We account for redzone later, and don't want to go over vblank time and preceed into previous vblank or whatever here.
2022-02-12 13:46:36 +00:00
Joshua Ashton
0862a2b896 steamcompmgr: Only free all buffers on setting target fps if disabling 2022-02-12 13:25:38 +00:00
Joshua Ashton
29060cc87c steamcompmgr: Detect stalls in fps limiter latent buffer heuristic 2022-02-12 12:11:00 +00:00
Joshua Ashton
a5c660e54f vblankmanager: More value tuning
Based on some rough data across a variety of games that are both GPU bound and also ones that are very not and cause GPU clocks to vary wildly
2022-02-12 11:54:51 +00:00
Joshua Ashton
70442294c0 steamcompmgr: Only allow one latent buffer when falling behind 2022-02-12 09:10:55 +00:00
Joshua Ashton
a1fa55c3a3 steamcompmgr: Add FSR active feedback
Also use this for mangoapp
2022-02-12 08:50:52 +00:00
Joshua Ashton
1df5c3a147 modegen: Always ceil clocks for fixed modes
Some modes like 55Hz end up off by one at 54 like we had with 30 before.
2022-02-11 09:35:48 +00:00
Joshua Ashton
e53f986048 vblankmanager: Tune FPS limiter and dynamic vblank heuristics 2022-02-11 05:28:03 +00:00
Joshua Ashton
8a94186522 steamcompmgr: Release all on IO error 2022-02-10 02:34:38 +00:00
Joshua Ashton
d759bd5efd vblankmanager: Fix shutting down fps limiter thread
Closes: #406
2022-02-10 02:34:03 +00:00
Joshua Ashton
30e91fc24f steamcompmgr: Don't hide cursor when going from dropdown->focus window and vice versa 2022-02-10 02:25:42 +00:00
Joshua Ashton
291d788b4f steamcompmgr: Show cursor on tap always 2022-02-10 02:19:08 +00:00
Joshua Ashton
15c254fd7f steamcompmgr: Hide new cursor when transitioning our global input focus
Fixes going from QAM -> game and keeping the cursor from the game.
2022-02-10 02:04:36 +00:00
Joshua Ashton
bf427b8156 steamcompmgr: Fix dynamic refresh crash if no focus window 2022-02-09 02:45:31 +00:00
Joshua Ashton
e5c3a1e1da steamcompmgr: Prefer non-dialog override redirects
Prefers dropdowns over popups.

Fixes dropdowns in Zwei: The Ilvard Insurrection (427700) where when you
tap on a dropdown, it'd immediately start preferring to show a popup with a hint
that you get from hovering.
2022-02-09 01:30:56 +00:00