Commit graph

809 commits

Author SHA1 Message Date
Joshua Ashton
6402b5cd40 steamcompmgr: Fix child window cursor barrier
If our input focus is ever a child window, we need to account for its X/Y offset in the check for warping it.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
2021-11-22 21:43:32 -08:00
Joshua Ashton
7fd1f3c930 steamcompmgr: Implement support for override redirect windows 2021-11-22 21:43:32 -08:00
Joshua Ashton
dbdf1095f8 rendervulkan: Add --composite-debug
Adds a --composite-debug flag for displaying frame markers on alternating corners of the screen or rotating in a localized square when compositing.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
2021-11-22 21:40:10 -08:00
Simon Ser
8be45451d9 Introduce --generate-drm-mode 2021-11-20 16:01:39 -08:00
Joshua Ashton
10dd0322d4 steamcompmgr: Resolve transient links before determining input focus
Helps with launchers like FO:NV and other games where we end up having the visuals disjoint from what we actually want to input to.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
2021-11-20 16:00:21 -08:00
Simon Ser
e8dab4efe0 Drop unnecessary typedef 2021-11-10 18:30:47 +01:00
Pierre-Loup A. Griffais
6831e6df2c steamcompmgr: don't repaint on focus change
This'll repaint an empty texture we don't want in a lot of cases.

Reverts part of 7796ffc130.
2021-11-07 22:46:26 -08:00
Pierre-Loup A. Griffais
5e7dcd30f8 steamcompmgr: don't focus random windows
If we don't have -e, everything will have a fake gameID to get focus.
2021-11-07 21:01:56 -08:00
Simon Ser
b3b8d60c00 Disable Xwayland touch pointer emulation
Depends on https://github.com/swaywm/wlroots/pull/3289
2021-11-02 12:21:12 +01:00
Simon Ser
78a2496386 pipewire: set CORRUPTED flag when buffer params mismatch 2021-11-01 14:51:03 +01:00
Simon Ser
6be82ccabb Copy Vulkan textures in PipeWire thread 2021-11-01 10:01:32 +01:00
Simon Ser
e80e4393de Add CVulkanTexture::{m_width,m_height} 2021-11-01 09:56:08 +01:00
Simon Ser
49fb59ac56 Don't use std::unique_ptr for screenshot textures
We need to keep the screneshot textures around if they are still
ref'ed when we re-make the swapchain. std::unique_ptr makes this
impossible. Switch to std::shared_ptr, and get rid of the nLockRefs
field.
2021-11-01 09:44:51 +01:00
Simon Ser
1b9c554f32 Set name for screenshot thread 2021-10-29 17:03:37 +02:00
Joshua Ashton
c7a22d4777 Add error handling to screenshot saving 2021-10-29 13:13:23 +02:00
Joshua Ashton
0aa6761157 Introduce screenshot saving thread
Fixes hangs/stutters when taking screenshots.

Should be trivial to extend to pipewire too.
2021-10-29 13:13:23 +02:00
Joshua Ashton
dd5de82c7e Use PNG for screenshots
Closes: #291
2021-10-29 13:13:23 +02:00
Simon Ser
f3865a73bd Name our threads
Unfortunately the name length is limited to 15 characters, and the
executable name is dropped from the name if we don't include it.
2021-10-27 17:18:29 +02:00
Simon Ser
cabba8c921 drm: set mode type to USERDEF
Makes it easier to spot it in drm_info, among other things.
2021-10-26 16:29:20 +02:00
Simon Ser
d3496fd719 drm: fix drm_set_refresh when rotated 2021-10-19 16:08:03 +02:00
Bas Nieuwenhuizen
7796ffc130 Force a redraw if the window focus changes.
Otherwise if all of the windows in the new situation never redraw
we never update to show the new focus configuration.

This change avoids things like stuck overlays and notification
windows if the underlying game is stuck.
2021-10-18 14:39:18 +02:00
Pierre-Loup A. Griffais
26aeebf11d steamcompmgr: publish input change count 2021-10-17 20:17:30 -07:00
Simon Ser
ba32e4df21 ime: add support for actions 2021-10-08 22:55:01 -07:00
Simon Ser
a3ec65ef06 Switch to vendored protocol
We'll implement some more features on top of input-method, so let's
incubate our own protocol for now. We'll give feedback upstream
once we've experimented a bit with this approach.

The protocol is minimal: it just includes the features needed for
gamescope. It's always easier to add new requests/events than to
change existing ones.
2021-10-08 22:55:01 -07:00
Simon Ser
ad26899b20 ime: reset keymap after sending emulated key events
This fixes SteamOS' virtual keyboard.
2021-10-08 22:55:01 -07:00
Simon Ser
6d2b53197e ime: introduce keycode allow-list
Some clients (Chromium…) assume keycodes are always coming from
evdev, and interpret e.g. KEY_ESC directly without using the keymap.
2021-10-08 22:55:01 -07:00
Simon Ser
2ba6eefad8 ime: check for xkb_keysym_get_name errors 2021-10-08 22:55:01 -07:00
Simon Ser
6f26dae77e ime: send void keysym before key sequence
This works around Chromium issues.
2021-10-08 22:55:01 -07:00
Simon Ser
880c87f4c5 ime: disable key repeat
Just in case.
2021-10-08 22:55:01 -07:00
Simon Ser
97623694dc ime: remove unicode keysym name workaround
It seems like xkb_keysym_get_name behaves as expected now.
2021-10-08 22:55:01 -07:00
Simon Ser
49da53db55 Implement a subset of input-method-unstable-v2
This allows a Wayland client to send arbitrary UTF-8 text to the
currently focused X11 client. Useful for virtual keyboards.

We generate a keymap on-the-fly suitable for the text to type.
2021-10-08 22:55:01 -07:00
Simon Ser
c87dd2ef5c Drop loadargbcursor
This is now built-in in gamescope.
2021-10-06 18:48:47 +02:00
Pierre-Loup A. Griffais
39c9e93e0c Make default touch mode configurable. 2021-10-04 15:00:29 -07:00
Simon Ser
a5a31d46e3 Upgrade libliftoff 2021-09-30 11:22:40 +02:00
Simon Ser
21b263768f rendervulkan: order formats with alpha first
This allows the cursor to be exported as an ARGB8888 buffer suitable
for the cursor plane.
2021-09-29 19:02:18 +02:00
Simon Ser
f55106a344 drm: reset alpha prop on shutdown 2021-09-27 12:42:33 +02:00
Simon Ser
e29e375904 sdlwindow: make most variables static 2021-09-21 11:00:51 +02:00
Joshua Ashton
50f695591d rendervulkan: Force nearest filtering for non-scaled and integer offset things
No reason to do linear filtering otherwise.
2021-09-15 10:58:38 -07:00
Joshua Ashton
b46cc14025 rendervulkan: Use textureLod()
May as well.
2021-09-15 10:58:38 -07:00
Joshua Ashton
320a23220a rendervulkan: Sample at texel centers
I missed adding this back in when I did the PR that was meant to fix this when I was debugging... Oops.
2021-09-15 10:58:38 -07:00
Jan Beich
12bff15700 wlserver: hide remaining pipewire stuff with -Dpipewire=disabled
src/wlserver.cpp:511:13: warning: unused function 'create_gamescope_pipewire' [-Wunused-function]
static void create_gamescope_pipewire( void )
            ^
2021-09-15 18:42:12 +02:00
Jan Beich
5548b29521 wlserver: compare using larger type on 32-bit architectures
src/wlserver.cpp:430:16: warning: comparison of integers of different signs: 'long' and 'uint32_t' (aka 'unsigned int') [-Wsign-compare]
                if (s->wl_id == id && s->wlr == nullptr)
                    ~~~~~~~~ ^  ~~
2021-09-15 18:42:12 +02:00
Jan Beich
04fd7ed5b7 drm: adjust printf format modifiers for 32-bit architectures
src/drm.cpp:187:50: warning: format specifies type 'unsigned long' but the argument has type 'uint64_t' (aka 'unsigned long long') [-Wformat]
        drm_verbose_log.debugf("page_flip_handler %lu", flipcount);
                                                  ~~~   ^~~~~~~~~
                                                  %llu
src/drm.cpp:777:44: warning: format specifies type 'unsigned long' but the argument has type 'uint64_t' (aka 'unsigned long long') [-Wformat]
        drm_verbose_log.debugf("flip commit %lu", (uint64_t)g_DRM.flipcount);
                                            ~~~   ^~~~~~~~~~~~~~~~~~~~~~~~~
                                            %llu
2021-09-15 18:42:12 +02:00
Simon Ser
7d108448b1 Improve unknown option error message
The stdlib will already print an error message. Let's just mention
--help.
2021-09-15 13:40:59 +02:00
Simon Ser
5849b6c14e Forbid duplicate short options
Just make sure we don't define two flags with the same letter.
2021-09-15 13:38:38 +02:00
Simon Ser
27cff4e41b wlserver: drop headless backend
Saves us the GLES2 renderer init.
2021-09-15 13:35:42 +02:00
Simon Ser
a480fe81fe Drop VulkanRenderer_t.parent
We don't need the wlroots parent GLES2 renderer anymore.
2021-09-15 13:35:42 +02:00
Simon Ser
2772a17f22 Implement wlr_renderer_impl.get_drm_fd
This depends on VK_EXT_physical_device_drm.
2021-09-15 13:35:42 +02:00
Simon Ser
92c6823897 wlserver: let wlr_renderer init the DMA-BUF Wayland protocols
wlr_renderer_init_wl_display will automatically init the suitable
Wayland protocols.
2021-09-15 13:35:42 +02:00
Simon Ser
ae7fcc5ba7 wlserver: get wlr_buffer from VulkanWlrTexture_t
This side-steps wlr_client_buffer and ensures we get access to the
underlying buffer. This allows us to call
wlr_buffer_begin_data_ptr_access to upload shm textures.
2021-09-15 13:35:42 +02:00
Simon Ser
0bbecd7e90 Extract fence from Vulkan texture if buffer is shm 2021-09-15 13:35:42 +02:00
Simon Ser
118d8213e4 rendervulkan: implement wlr_renderer_impl.texture_from_buffer 2021-09-15 13:35:42 +02:00
Simon Ser
db1ffbe2e4 rendervulkan: remove wlr_renderer_impl.init_wl_display
We don't need EGL_bind_wayland_display anymore.
2021-09-15 13:35:42 +02:00
Simon Ser
6fbabb94b3 rendervulkan: build list of supported wl_shm formats 2021-09-15 13:35:42 +02:00
Simon Ser
a325cf193b Use wlroots' wl_drm implementation
wl_drm is not available on Vulkan.

References: https://github.com/swaywm/wlroots/pull/2708
2021-09-15 13:35:42 +02:00
Simon Ser
123df9006f rendervulkan: implement wlr_renderer_impl.get_render_buffer_caps 2021-09-15 13:35:42 +02:00
Simon Ser
d13d19981b rendervulkan: drop wlr_renderer_impl.render_ellipse_with_matrix stub
This has been removed from wlroots upstream.
2021-09-15 13:35:42 +02:00
Simon Ser
332f261c35 drm: generalize find_drm_node_by_devid for render nodes
We'll use this to open the DRM render node from a VkPhysicalDevice.
2021-09-15 12:12:06 +02:00
Bas Nieuwenhuizen
83eae082fa Warning fix 2021-09-14 17:29:51 -07:00
Bas Nieuwenhuizen
e510af1b7e Add a proper release barrier for modifier based images when not nested.
RADV does retiling in that barrier. Still hinky overall but this fixes
using compositing with DCC compressed images on RADV.
2021-09-14 17:22:07 -07:00
Joshua Ashton
143176acb1 Fix return value when SDL fails initialization 2021-09-14 17:01:42 -07:00
Joshua Ashton
ce87bf1b76 Init format info after initializing DRM
Otherwise all our modifiers/formats and stuff are garbage.

Fixes: #269
2021-09-14 17:01:42 -07:00
Pierre-Loup A. Griffais
8e75287454 steamcompmgr: more GAMESCOPECTRL work 2021-09-14 16:29:42 -07:00
Simon Ser
2eb520bc17 Fix BIsNested return type 2021-09-14 18:36:27 +02:00
Simon Ser
5a93c4ed13 Minor style fixup 2021-09-14 18:33:05 +02:00
Simon Ser
eed360ce09 sdlwindow: ignore key repeat events
Wayland clients (incl. Xwayland) handle this.
2021-09-14 18:25:56 +02:00
Simon Ser
0d43e3472a sdlwindow: get mod from key event
No need to call SDL_GetModState, the event already carries this
information.
2021-09-14 18:23:30 +02:00
Simon Ser
e5faeaed68 Open DRM device from Vulkan physical device
Initialize Vulkan first to pick a physical device, then initialize
DRM or SDL. That way, DRM can open its own device depending on what
Vulkan is using. This avoids picking the wrong GPU on multi-GPU
setups.

This required rejiggering how initialization happens. In particular,
we need to get the SDL Vulkan instance extension list early. This is
supported since SDL 2.0.9 (by omitting the window in
SDL_Vulkan_GetInstanceExtensions).
2021-09-14 18:16:53 +02:00
Simon Ser
1fca3896b1 wlserver: remove wlserver_init args
argc and argv are unused, bIsNested can be fetched from globals.
2021-09-14 17:03:52 +02:00
Simon Ser
7198851e98 Unify init functions return types a bit
We had both int and bool, let's try to end up with only bools.
2021-09-14 16:59:46 +02:00
Simon Ser
1d528be605 Untangle preferred mode and current mode
g_nOutput* stored two different values: preferred values taken from
the CLI at init-time, then current values after init. This results
in some tricky logic because depending on when code is executed it'd
access one or the other.

Introduce two separate sets of variables instead. DRM reads from the
preferred values, decides which DRM mode to enable, then writes to
the current values. SDL reads from the preferred values and makes
them current immediately.

This changes gamescope's behaviour so that native DRM modes are
picked when -w/-h isn't specified on the command line. When -w/-h are
specified, the DRM logic will try to pick a mode which matches.

When nested, the default output size still defaults to 720p, but
changes when the user resizes the window.

Closes: https://github.com/Plagman/gamescope/issues/258
2021-09-14 16:45:23 +02:00
Simon Ser
54e6614e2c wlserver: stop setting keyboard in wlserver_new_input
This avoids messing up with the current keyboard settings when a
new one is plugged in.
2021-09-14 13:56:33 +02:00
Simon Ser
f10e2248fd wlserver: set keyboard in wlserver_key
This ensures clients see the right keymap/modifiers/etc when
handling a keyboard event.
2021-09-14 13:47:55 +02:00
Simon Ser
1694e0c4f7 wlserver: handle null keyboard in wlserver_keyboardfocus 2021-09-14 13:44:35 +02:00
Simon Ser
16211ba7ca wlserver: expose nested refresh if set
Instead of faking an output with the KMS mode's refresh rate,
expose the nested refresh rate when -r is set.
2021-09-14 08:24:07 +02:00
Valentin David
5672737093 wlserver: Add support for mouse wheels 2021-09-13 23:17:34 +02:00
Simon Ser
90f3a13c13 Drop trailing spaces 2021-09-13 23:14:57 +02:00
Valentin David
a8ba73b8ae wlserver: Force reading XKB_DEFAULT_* variables
When gamescope has cap_sys_nice capability, then `secure_getenv` used
by libxkbcommon does not load the keymap configuration from
environment. So the environment variables have to be manually read from
gamescope.

Without `XKB_DEFAULT_LAYOUT` it is not possible to load other keymaps
than US.
2021-09-13 23:06:37 +02:00
Simon Ser
5ac5a1ea29 drm: don't use globals as inputs for find_mode
These globals are overwritten by drm_set_mode. Save the globals at
init time to remember what the user preference is.
2021-09-13 18:34:27 +02:00
Simon Ser
3504fb2613 steamcompmgr: fix mouseMoved type 2021-09-13 10:01:28 +02:00
Simon Ser
af836736bf steamcompmgr: unify function call code style a bit 2021-09-13 09:25:57 +02:00
Simon Ser
d237cf387f steamcompmgr: switch to stdbool 2021-09-13 09:16:58 +02:00
Pierre-Loup A. Griffais
66064b23cf steamcompmgr: don't always warp cursor on mouse input focus change 2021-09-12 23:39:34 -07:00
Pierre-Loup A. Griffais
3db90edd75 steamcompmgr: don't allow giving an overlay layer keyboard focus
The main plane app rarely lets it go without making visible trouble.

We can reinstate this feature when we have a way to lie about it.
2021-09-12 23:30:51 -07:00
Pierre-Loup A. Griffais
ab72155ce0 steamcompmgr: some cursor hiding improvements
Absorb 5 moves for auto-hide purposes instead of 3. Our nudge is 2 moves,
and we can warp on top of that, so we weren't counting everything.

Hide before changing mouse input focus and the warp that ensues.

Re-arm warp count when changing mouse input focus, so doing it repeatedly
with the same window doesn't eventually unhide despite no input.
2021-09-12 23:21:35 -07:00
Joshua Ashton
805e3c5801 rendervulkan: Set addressModeW for samplers
Technically, YCbCr has a hard requirement of everything being CLAMP_TO_EDGE here and validation moans about it. Better just to set it.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
2021-09-12 18:21:44 -07:00
Joshua Ashton
249708fedd rendervulkan: Enable VK_KHR_image_format_list if we use modifiers
This extension is required for whatever reason. Validation complains about it.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
2021-09-12 18:21:44 -07:00
Joshua Ashton
5a1f28d8bc rendervulkan: Use push constants for composite data
We can just bung this in here and avoid needing to deal with a buffer.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
2021-09-12 18:21:44 -07:00
Joshua Ashton
3e1ebd7241 rendervulkan: Replace border color with CLAMP_TO_EDGE + bounds check
We can't use normal border colors if we are doing linear filtering as we will sample slightly outside on the edges and blend to the border color.

Replace this with a way to push an arbitrary layer alpha and return that in the OOB case, and when sampling, clamp to edge.

This also may be more efficient to avoid sampling OOB a lot of the time in some cases.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
2021-09-12 18:21:44 -07:00
Simon Ser
1e707d7947 Fix typo in usage message 2021-09-11 20:51:51 +02:00
Simon Ser
b5001aa00c Simplify build_optstring for long-only options 2021-09-11 02:59:48 +02:00
Joshua Ashton
2cea675db0 meta: Use wrap file for STB rather than submodule
Allows us to use this as a Meson subproject which means that recursive cloning doesn't matter (Meson resolves it for subprojects).

Given this subproject doesn't have a meson file, doing subproject() on it would fail, so:
Make a wrap file with an overlay that declares a proper dependency.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
2021-09-11 02:55:21 +02:00
Pierre-Loup A. Griffais
21d631590a Fix build_optstring bug with long-only options requiring argument. 2021-09-10 17:46:00 -07:00
Simon Ser
fb4ec7cb4e Drop short option for --cursor 2021-09-10 14:25:19 +02:00
Simon Ser
f8e251962c Add --help 2021-09-10 14:21:59 +02:00
Simon Ser
94f78d1b3c steamcompmgr: use log scope 2021-09-10 12:04:20 +02:00
Simon Ser
d926ea0b33 steamcompmgr: init g_nudgePipe to invalid FDs
Make sure we don't wrongly read from stdin or something.
2021-09-10 11:49:14 +02:00
Simon Ser
97746c609f steamcompmgr: remove unused environ 2021-09-10 11:48:10 +02:00
Simon Ser
ba9c46cea2 drm: disable all KMS resources at exit 2021-09-10 11:42:43 +02:00
Simon Ser
ff8c0b183b Introduce finish_drm
For now it just closes the DRM FD, but will do more soon.
2021-09-10 11:05:09 +02:00
Simon Ser
fc748ebd78 wlserver: remove wlserver_run return value
It always returns 0.
2021-09-10 11:01:54 +02:00
Simon Ser
cd0e12d050 Wait for steamcompmgr when exiting
This allows steamcompmgr to perform cleanup actions without being
hard-terminated.
2021-09-10 11:00:18 +02:00
Simon Ser
1e163fa358 steamcompmgr: check for XNextEvent errors 2021-09-09 19:56:50 +02:00
Simon Ser
597fc8fa48 Move signal handler to main 2021-09-09 19:49:31 +02:00
Simon Ser
1989c291ee Avoid double-closing GEM handles 2021-09-04 17:30:13 +02:00
Simon Ser
4330ec5433 drm: clean up buffer handles
Closes: https://github.com/Plagman/gamescope/issues/60
2021-09-04 16:43:22 +02:00
Pierre-Loup A. Griffais
5d3a0eb078 Repaint on possible connector hotplug 2021-09-02 17:18:13 -07:00
Pierre-Loup A. Griffais
8782dc2cd1 drm: Always explicitly set rotation property
This allows to transition in and out of rotation based on connector hotplug.
2021-09-02 14:43:16 -07:00
Simon Ser
5e66e9cee0 Option -O takes one arg 2021-09-02 23:29:01 +02:00
Simon Ser
268b625655 Remove short notation for some debug options
These should be only used during development, so don't deserve a
short option.
2021-09-02 22:10:55 +02:00
Simon Ser
ae785b25bf Remove -s and -N options
These were unused.
2021-09-02 21:51:32 +02:00
Simon Ser
3df6fa58bd Rename -S to --synchronous-x11 2021-09-02 21:48:43 +02:00
Joshua Ashton
ffa970ef7e Add --cursor argument 2021-09-01 18:33:57 +02:00
Joshua Ashton
0b5764195e Add setCursorImage to MouseCursor 2021-09-01 18:33:57 +02:00
Simon Ser
22323418ac wlserver: set wlroots log handler 2021-09-01 18:31:45 +02:00
Simon Ser
c034ac1f99 wlserver: use log scope 2021-09-01 18:25:24 +02:00
Simon Ser
0536dc0bb0 Repaint when taking screenshot
Closes: https://github.com/Plagman/gamescope/issues/247
2021-09-01 17:26:38 +02:00
Joshua Ashton
7812e0a726 Check correct channel for no cursor check
This was checking if the cursor has no blue before, when it should be checking the alpha.
2021-09-01 17:09:09 +02:00
Joshua Ashton
76292f01cb Fix RGB/BGR of the cursor's Vulkan image
This was ABGR before, when it should be ARGB.
2021-09-01 17:09:09 +02:00
Simon Ser
39c44a9e3c Sort options by embedded/nested mode 2021-09-01 16:08:20 +02:00
Simon Ser
5904078b2c Build optstring on the fly
Instead of having to maintain two lists of options, just generate
one from the other.
2021-09-01 15:14:08 +02:00
Simon Ser
13f792ab15 Add long options
This will allow us to introduce new long options which don't have
any short option equivalent.
2021-09-01 14:51:23 +02:00
Simon Ser
f36d436a71 Enable getopt error messages
These print something like "invalid option 'foo'". Previously
disabled because of the split main/steamcompmgr option handling.
2021-09-01 14:35:47 +02:00
Simon Ser
38b65a8b22 Error out on unknown option 2021-09-01 14:05:18 +02:00
Simon Ser
f18723d489 drm: compute per-connector CRTC mask 2021-09-01 13:23:12 +02:00
Simon Ser
b230ec29ab drm: fix crash when -O isn't provided
Closes: https://github.com/Plagman/gamescope/issues/241
2021-09-01 12:06:11 +02:00
Simon Ser
b2679838ab pipewire: add doc comments for {in,out}_buffer 2021-08-31 17:12:17 +02:00
Simon Ser
3c11ea20c3 pipewire: check pw_stream_queue_buffer return value 2021-08-31 17:12:17 +02:00
Simon Ser
56d3629b9b pipewire: add doc comment for pipewire_buffer 2021-08-31 17:12:17 +02:00
Simon Ser
fad2b9d42c pipewire: don't destroy buffers immediately when copying
When a buffer is being copied by the steamcompmgr thread, we
shouldn't destroy it immediately in the remove_buffer hook.
2021-08-31 17:12:17 +02:00
Simon Ser
5c42a6ee60 pipewire: re-use struct pipewire_buffer 2021-08-31 17:12:17 +02:00
Simon Ser
030fab39c9 pipewire: allocate our own buffers 2021-08-31 17:12:17 +02:00
Simon Ser
4b7890594a pipewire: switch to logger 2021-08-31 17:06:49 +02:00
Simon Ser
ef64b60cec Add gamescope-pipewire protocol
Can be tested with:

https://git.sr.ht/~emersion/gamescope-pipewire-demo
2021-08-31 17:06:49 +02:00
Simon Ser
59e8aa4abc pipewire: add stream process handler
This allows detecting when a buffer becomes available if we've
run out of buffers.
2021-08-31 17:06:49 +02:00
Simon Ser
5f4e6fb980 pipewire: renegotiate stream params on resize 2021-08-31 17:06:49 +02:00
Simon Ser
d6510dd931 pipewire: pump frames out of steamcompmgr 2021-08-31 17:06:49 +02:00
Simon Ser
82ef0372d5 Introduce thread-safe take_screenshot 2021-08-31 17:06:49 +02:00
Simon Ser
501eff233e Move screenshot saving out of vulkan_composite
We'll re-use the same logic for PipeWire.
2021-08-31 17:06:49 +02:00
Simon Ser
d2befe211a pipewire: handle params changed 2021-08-31 17:06:49 +02:00
Simon Ser
bb3d5a4edb pipewire: initialize stream 2021-08-31 17:06:49 +02:00
Joshua Ashton
c41dd74ef5 Add integer scale option 2021-08-30 17:15:57 -07:00
Joshua Ashton
5422061746 Add a max scale parameter 2021-08-30 17:15:57 -07:00
Simon Ser
3b14c21afc Simplify errorf_errno a bit 2021-08-25 18:16:44 +02:00
Simon Ser
c3079f7f6c rendervulkan: use log scopes 2021-08-25 18:09:39 +02:00
Simon Ser
c876abfa75 drm: replace s_drm_log with logging scope 2021-08-25 17:33:16 +02:00
Simon Ser
7cee212085 drm: use logging module 2021-08-25 17:20:23 +02:00
Simon Ser
a54b5c9ee0 Introduce basic logging module 2021-08-25 17:20:11 +02:00
Simon Ser
cba189d389 drm: allow wildcard in connector priority list 2021-08-25 16:22:14 +02:00
Simon Ser
51cfc0df06 Implement priority list for -O
e.g. `-O DP-1,VGA-1` will use DP-1 if possible, then fallback to
VGA-1, then to any other connector.
2021-08-25 16:22:14 +02:00