Joshua Ashton
8597753b75
steamcompmgr: Fix integer scaling when supersampling
2022-02-25 08:02:18 +00:00
Joshua Ashton
e190d55f65
steamcompmgr: Exclude skip taskbar + page & 1x1 windows & override redirects from reported focusable windows
2022-02-25 06:59:07 +00:00
Joshua Ashton
58a9aa6543
steamcompmgr: Bring back inputFocusMode 2
...
Now we have input split properly, we can have this again.
2022-02-23 23:33:30 +00:00
Simon Ser
7004d98223
drm: add support for DP-MST connectors
...
These are created/destroyed dynamically by the kernel.
2022-02-23 23:07:21 +00:00
Simon Ser
483e2729ec
drm: store connectors in map
...
We'll need to create/destroy connectors for DP-MST. A vector
invalidates pointers/references when new elements are inserted.
2022-02-23 23:07:21 +00:00
Joshua Ashton
d6b6428143
rendervulkan: Support blur for override redirect layer too
...
Essentially just shoves that into the horizontal pass and cleans it out of the normal composite when we go to do vertical and also makes the blur image the same size as the output, which should have been done anwyay to avoid harsh borders.
2022-02-23 23:00:48 +00:00
Joshua Ashton
b7dd42e0b8
steamcompmgr: Remove useless zpos hack
...
Not needed anymore, this got fixed in liftoff
2022-02-23 23:00:48 +00:00
Bas Nieuwenhuizen
46beac1556
Add support for communicating a swapchain override to apps.
...
With matching stuff in mesa to dynamically change the swapchain
to FIFO (or the approximate GL equivalent).
2022-02-23 03:02:55 +00:00
Georg Lehmann
a56b56d401
rendervulkan: Fix half pixel offset (again)
...
Some quick debugging code that I forgot to change properly.
Derp.
2022-02-18 19:53:29 +00:00
Joshua Ashton
ff5d585785
steamcompmgr: Make GAMESCOPE_DYNAMIC_REFRESH control the refresh rate directly
2022-02-18 03:20:37 +00:00
Joshua Ashton
75f3506a1a
steamcompmgr: Add FPS limiting through frame callback timing
2022-02-18 03:20:37 +00:00
Joshua Ashton
aa94b6dec1
steamcompmgr: Add GAMESCOPE_FOCUSED_APP_GFX atom
2022-02-18 02:56:58 +00:00
Georg Lehmann
4153272274
rendervulkan: Reduce blur pipeline count.
2022-02-18 02:44:11 +00:00
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