Cameron Gutman
75b19a60c1
Fix build on macOS and keyboard grab bugs
2021-02-06 11:29:18 -06:00
Cameron Gutman
9fc921f49f
Use SDL's keyboard grab support now that it's been upstreamed
2021-02-05 00:13:20 -06:00
Cameron Gutman
36dd6c83e0
Fix assert failure when using v4l2m2m with EGL
2021-02-04 20:38:18 -06:00
Cameron Gutman
c3895f06c0
Fix handling of preferred/compatible pixel formats with EGLRenderer and VAAPI/DRM backends
2021-02-04 19:39:18 -06:00
Cameron Gutman
76e81fa651
Add windowed support for MMAL
2021-02-03 20:57:39 -06:00
Cameron Gutman
d63a1b0eb0
Handle custom hwaccel decoders
2021-02-02 19:45:22 -06:00
Cameron Gutman
4dffac3c78
Ask for NV12 buffers for DRMRenderer
2021-02-02 19:40:06 -06:00
Cameron Gutman
88391b0274
Use the decoder's supported pix_fmts to select a suitable renderer
2021-02-02 19:05:27 -06:00
Cameron Gutman
c3cea0238e
Fix build with old EGL 1.5 headers without EGL_EGL_PROTOTYPES
2021-01-31 21:42:56 -06:00
Cameron Gutman
5bf4266973
Fix build with old Mesa EGL headers
2021-01-31 18:41:53 -06:00
Cameron Gutman
ed57c54d06
Move EGL definitions into renderer.h to try to fix build on Armbian
2021-01-31 17:01:11 -06:00
Cameron Gutman
80137848dc
Add DMA-BUF export compatibility with EGL 1.4
2021-01-31 16:24:31 -06:00
Cameron Gutman
6a66b462ce
Allow DRMRenderer to be used for indirect rendering
2021-01-31 15:19:19 -06:00
Cameron Gutman
1e31f6fe77
Fix initialization of DRM backend with X running
2021-01-31 15:03:40 -06:00
Cameron Gutman
f173b3ff09
Attempt to fix AppImage and Steam Link build errors
2021-01-31 14:48:42 -06:00
Cameron Gutman
baffab62ce
Fix uninitialized variable warning
2021-01-31 12:58:19 -06:00
Cameron Gutman
dbfdc2fd14
Share DRM FD and GBM device with SDL
...
Depends on https://hg.libsdl.org/SDL/rev/d75deb75464a
2021-01-30 21:11:52 -06:00
Cameron Gutman
a97912e297
Print the error when querying EGL_EXTENSIONS fails
2021-01-30 20:13:20 -06:00
Cameron Gutman
cedba501ee
Query the frontend renderer to determine fullscreen-only limitations
2021-01-30 17:57:34 -06:00
Cameron Gutman
ac947d3bda
Add EGLImage export support to DRMRenderer
2021-01-30 17:52:23 -06:00
Cameron Gutman
243ba371b3
Initialize a DRM hardware context for hwaccel usage
2021-01-30 16:33:58 -06:00
Cameron Gutman
1cd66419d4
Remember desired cursor hide state
...
Fixes #511
2021-01-30 11:08:01 -06:00
Cameron Gutman
541784382a
Add support for AV_HWDEVICE_TYPE_DRM hwaccels
2021-01-30 10:00:01 -06:00
Cameron Gutman
2a7fae2c82
Revert "Add logic to try LibreELEC's out-of-tree stateless V4L2 decoders"
...
v4l2request is a hwaccel not a decoder
This reverts commit ed3a5448b1
.
2021-01-29 20:30:01 -06:00
Cameron Gutman
ed3a5448b1
Add logic to try LibreELEC's out-of-tree stateless V4L2 decoders
2021-01-29 20:19:27 -06:00
Cameron Gutman
2eb4769bbc
Only trigger special key combos when all keys are up
2021-01-24 13:02:42 -06:00
Cameron Gutman
02019000df
Ctrl+Alt+Shift+Down Arrow is a reserved key combo on GNOME, so switch to Ctrl+Alt+Shift+D
2021-01-21 23:05:48 -06:00
Cameron Gutman
d38ff5759a
Add Ctrl+Alt+Shift+Down Arrow shortcut to minimize
2021-01-21 19:39:17 -06:00
Cameron Gutman
11d274ff07
Fix X11 keyboard grab when starting in windowed mode
2021-01-15 19:32:38 -06:00
Cameron Gutman
f49d6e15a4
Fix clearing the wrong flag when activating mouse capture
2021-01-14 19:30:30 -06:00
Cameron Gutman
7172cfd889
Properly handle multiple window event flush barriers in flight at once
...
Fixes streaming on macOS Mojave without Metal support
2021-01-14 19:28:21 -06:00
Cameron Gutman
76b4922bbe
Add toggle for system key capture
2021-01-12 20:05:18 -06:00
Cameron Gutman
8e790c4745
Use real full-screen on macOS when capturing keys
2021-01-12 19:57:01 -06:00
Cameron Gutman
c331b180cb
Fix modifier keys being stuck down after key combos when capturing system keys on Windows
2021-01-12 18:40:00 -06:00
Cameron Gutman
30e3b02867
Start implementation of system key capture
2021-01-11 23:43:32 -06:00
Cameron Gutman
7020749987
Change mute on minimize to mute on focus loss
...
Minimization doesn't always happen on focus loss in full-screen mode,
so it could lead to unpredictable behavior.
2021-01-09 17:56:23 -06:00
Cameron Gutman
2d62d090df
Use a barrier to ensure we don't flush important window events
2021-01-09 17:51:25 -06:00
Cameron Gutman
af0921c5b2
Set new hints present in SDL 2.0.15 development builds
2021-01-08 18:14:49 -06:00
Cameron Gutman
137454beff
Use SDL_UpdateNVTexture on SDL 2.0.15+
2021-01-08 18:05:27 -06:00
Cameron Gutman
a0cc93b813
Fix EGL renderer build on SDL 2.0.9 and earlier
2021-01-03 14:24:30 -06:00
Cameron Gutman
390544cd9a
Charge time spent in the decode unit queue to the decoder rather than receive time
2020-12-31 16:10:01 -06:00
Cameron Gutman
8ff9d8123d
Switch VT renderer pacing logic to be enabled by the frame pacing checkbox
2020-12-29 20:26:56 -06:00
Cameron Gutman
bc39c721e3
Add a key combo to toggle cursor display in remote desktop mouse mode
2020-12-26 19:47:00 -06:00
Cameron Gutman
5096ff6496
Add options to invert scroll direction and swap gamepad buttons
...
Fixes #463
Fixes #467
2020-12-25 22:21:20 -06:00
Cameron Gutman
a11f623b17
Add option to mute audio on minimize and background gamepad input
...
Fixes #461
2020-12-25 15:32:11 -06:00
Cameron Gutman
47cad71fcd
Add special error text for an early termination
2020-12-24 11:24:01 -06:00
Cameron Gutman
c414e1a168
Display the failing ports when the connection fails
2020-12-23 13:56:15 -06:00
Cameron Gutman
22bebb6bbc
Maxwell 2 doesn't support 8K HEVC encoding
2020-12-22 18:57:45 -06:00
Cameron Gutman
3defccb6e2
Work around poor video scaling quality on Qualcomm GPUs
2020-12-21 21:00:55 -06:00
Cameron Gutman
9c758f1628
Create power-of-2 overlay surfaces for better performance
...
This lets us take the fast copy path in the DXVA2 renderer.
2020-12-20 17:31:02 -06:00
Cameron Gutman
5f4975ca5c
Fix DXVA2 overlay rendering quality issus
2020-12-20 17:30:06 -06:00
Cameron Gutman
e5bcc793e5
Implement overlay support in EGLRenderer
...
Fixes #405
2020-12-19 23:01:41 -06:00
Cameron Gutman
cd5b0e74e3
Draw background in MMAL renderer on X11
...
Fixes #412
2020-12-19 21:25:20 -06:00
Cameron Gutman
3162d2c17d
Fix aspect ratio of MMAL renderer output
2020-12-19 17:48:36 -06:00
Cameron Gutman
6a54fb649c
Fix synchronization issues between render and overlay update threads in DXVA2
2020-12-18 20:23:52 -06:00
Cameron Gutman
dcbf5affda
Fix use-after-free in VDPAU overlay rendering
2020-12-18 19:39:24 -06:00
Cameron Gutman
027c8dcd41
Add overlay support to VDPAU renderer
2020-12-17 18:35:08 -06:00
Cameron Gutman
94b46a2173
Use a vertex buffer for rendering the DXVA2 overlays
2020-12-16 18:16:35 -06:00
Cameron Gutman
1e7cb7f13e
Replace D3DX9 with SDL_ttf for overlay rendering
2020-12-13 23:43:31 -06:00
Cameron Gutman
d58837421f
Refactor SDL overlay drawing into OverlayManager for sharing with other renderers
2020-12-13 15:51:50 -06:00
Cameron Gutman
a6551c320d
Finish Windows ARM64 bringup
...
SDL2 for ARM64 is not yet checked-in, but I will do that when SDL 2.0.14 is released.
2020-12-12 16:44:41 -06:00
Cameron Gutman
59a73817c8
Don't use AntiHooking.dll or use D3DX9 on ARM64
2020-12-12 13:59:47 -06:00
Cameron Gutman
8381039f97
Remove extra includes
2020-12-06 17:15:30 -06:00
Cameron Gutman
a91c61e5e2
Remove Raspberry Pi PulseAudio avoidance hack
...
Not only is it no longer required (PA works great now), it actually breaks audio with Pi OS's new PA config
2020-12-06 16:58:41 -06:00
Cameron Gutman
6e7a42065c
Translation updates and refactoring
2020-11-21 13:15:54 -06:00
Cameron Gutman
38b59aa1a9
Fix DXVA2 renderer compilation with Qt 6.0
2020-11-21 11:12:40 -06:00
Cameron Gutman
201b59cd4c
Compilation fixes for Qt 6.0 Beta 3
2020-11-07 19:23:23 -06:00
Cameron Gutman
2f3a1a5d79
Work around bug where GLES surface creation repeatedly fails on X11
2020-09-07 23:53:29 -07:00
Cameron Gutman
18654cb011
Work around QSGRenderThread crash on Wayland
2020-09-07 23:07:31 -07:00
Cameron Gutman
b97ae25f93
Flush mouse position before sending a mouse button event
2020-09-05 14:50:38 -07:00
Cameron Gutman
3e9781033a
Create windows with SDL_WINDOW_METAL on macOS
...
This prevents the window from being recreated when initializing a Metal renderer.
2020-09-05 14:06:58 -07:00
Anton
89319dc7aa
Added option to swap left and right mouse buttons
...
Changed the use of SDL buttons to Moonlight buttons definitions
2020-09-05 08:32:00 +02:00
Cameron Gutman
5755afc4ea
Fix app window not hiding when streaming starts
2020-09-04 22:38:54 -07:00
Cameron Gutman
14ccc38f4c
Fix certain CLI options not overriding GUI preferences. Fixes #435
2020-08-30 01:38:26 -07:00
Cameron Gutman
2e87f5ff85
Add warning if no key frames can be received in 10 seconds
2020-08-29 21:02:22 -07:00
Cameron Gutman
eded86bc10
Allow game controllers to be ignored during streaming only
...
STREAM_GAMECONTROLLER_IGNORE_DEVICES and STREAM_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT environment variables provide the same functionality as SDL_GAMECONTROLLER_IGNORE_DEVICES and SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT, with the difference being SDL_* variables take effect at all times (UI and streaming) while STREAM_* variables take place only while streaming.
Fixes #425
2020-08-22 12:02:26 -07:00
Cameron Gutman
5a7a49d1d5
Display resolution and codec in OSD
2020-08-20 20:52:05 -07:00
Cameron Gutman
d09dd90a73
Fix hardcoded tick unit duration which is incorrect on Apple silicon
2020-08-12 18:07:10 -07:00
Cameron Gutman
d3949806f5
Move connection establishment to a separate thread to keep the UI responsive
2020-08-10 22:21:54 -07:00
Cameron Gutman
b81392b818
Add an option to disable the automatic connection testing
2020-08-08 18:29:36 -07:00
Cameron Gutman
ec17623400
Test for blocked ports when a stream fails
2020-08-08 17:59:26 -07:00
Cameron Gutman
8d2cbf806d
Improve message for broken Intel drivers to indicate that users should update their driver
2020-07-12 15:26:38 -07:00
Cameron Gutman
ab5025efbf
Ignore mouse events outside the video region
2020-07-12 15:06:36 -07:00
Cameron Gutman
912e51d863
Synchronize the client and host cursor when starting absolute mode capture
2020-07-12 15:03:08 -07:00
Cameron Gutman
88ed72fdc1
Use regular VSync when enabled because adaptive VSync still tears
2020-06-20 14:44:21 -07:00
Cameron Gutman
586a93d7aa
Use the new EGL renderer for VAAPI by default
2020-06-13 20:21:54 -07:00
Cameron Gutman
f1c459fd6c
Fix leak of renderer when we fail to create a GL context
2020-06-08 20:39:12 -07:00
Cameron Gutman
f00653964e
Batch absolute mouse motion like we do for relative motion
2020-05-31 13:34:50 -07:00
Cameron Gutman
02cfd8d978
Revert "Disable SOPS for streams over 60 FPS for GFE 3.20.3"
...
This reverts commit d6b5c5f63e
.
2020-05-25 18:46:34 -07:00
Cameron Gutman
728377cba3
Set AV_PKT_FLAG_KEY for key frames
2020-05-25 18:31:19 -07:00
Cameron Gutman
994312c212
Force GL to block after the current frame instead during the next frame
2020-05-16 16:25:13 -07:00
Cameron Gutman
5f25e0d4e2
Add limited support for frame pacing to EGLRenderer
2020-05-16 15:59:10 -07:00
Cameron Gutman
4bbe571f5f
Fix build without FFmpeg and with older EGL 1.5 headers
2020-05-16 13:25:10 -07:00
Cameron Gutman
c58d21375c
EGL 1.4 doesn't have EGLAttrib either
2020-05-16 12:20:52 -07:00
Cameron Gutman
ed128c558f
Add support for EGLRenderer on EGL 1.4
2020-05-16 12:13:00 -07:00
Cameron Gutman
42ced309d3
Restore the original GL attributes after EGLRenderer is destroyed
2020-05-15 20:22:11 -07:00
Cameron Gutman
1fcd306879
Fix EGLRenderer when SDL isn't built with X11 or Wayland backends
2020-05-15 20:01:22 -07:00
Cameron Gutman
26c9ad7f06
Use eglGetProcAddress() for all GLES 2.0 extensions
2020-05-15 19:39:41 -07:00
Cameron Gutman
4b7b01ce0a
Fix EGL build
2020-05-15 17:54:45 -07:00
Cameron Gutman
6632154906
Remove some unnecessary headers and definitions
2020-05-15 16:59:29 -07:00
Cameron Gutman
a1b74e1220
Fix vaExportSurfaceHandle() detection with i965 VAAPI driver
2020-05-14 20:56:24 -07:00
Cameron Gutman
01f6188824
Add VAAPI_FORCE_DIRECT and VAAPI_FORCE_INDIRECT env vars to control rendering technique
2020-05-13 19:45:30 -07:00
Cameron Gutman
283f31a734
Test if vaExportSurfaceHandle() works before claiming EGL export is supported
2020-05-13 19:39:45 -07:00
Cameron Gutman
b800ce9ebe
Allow use of VA drivers without VAEntrypointVideoProc
2020-05-13 19:31:25 -07:00
Cameron Gutman
eb9d54465c
Don't use EGLRenderer if not built with SDL 2.0.10+
2020-05-13 19:19:11 -07:00
Cameron Gutman
eb9e1f81d4
Enable the EGLRenderer to use the render thread
2020-05-13 19:09:20 -07:00
Cameron Gutman
51e9ab83ad
Send a null AVFrame to indicate end of stream to allow renderers to do render thread cleanup
2020-05-13 18:55:21 -07:00
Cameron Gutman
5ed7e03b2e
Merge pull request #365 from xdbob/wayland_for_upstream
...
Introduce a new FFMPEG frontend renderer: EGLRenderer
2020-05-13 18:39:18 -07:00
Cameron Gutman
b4548c1af2
Flush all window events after SDL_CreateRenderer()
2020-05-12 18:41:36 -07:00
Antoine Damhet
0a396f3112
Introduce a new FFMPEG frontend renderer: EGLRenderer
...
Right now this renderer works on X11 & Wayland with VAAPI as a backend.
Some rendering latency benchmarks on my `i7-10510U` (with
`intel-media-driver` 20.1.1 which cause a *huge* regression with the
SDL_Renderer):
| | X11 | Wayland |
| Before | 6.78ms | 22.50ms |
| EGLRenderer | 0.76ms | 00.77ms |
Signed-off-by: Antoine Damhet <antoine.damhet@lse.epita.fr>
2020-05-12 11:11:35 +02:00
Cameron Gutman
fc9871b075
Delay mouse capture until after SDL_RecreateWindow() has been called
2020-05-09 19:48:13 -07:00
Cameron Gutman
3cb3c1c6d8
Revert "Use the physical desktop size in pixels rather than the native resolution on macOS"
...
Let's wait until functionality is confirmed on a 5K iMac before doing this.
This reverts commit 8fe3474589
.
2020-05-09 16:52:18 -07:00
Cameron Gutman
8fe3474589
Use the physical desktop size in pixels rather than the native resolution on macOS
...
It seems like some Macs (5K iMacs at least) don't have kDisplayModeNativeFlag set
2020-05-09 16:34:48 -07:00
Cameron Gutman
0428bc8fe3
Generate synthetic mouse button up if the mouse has left the window and the button is raised
2020-05-07 19:26:02 -07:00
Cameron Gutman
514a8575a2
Use the viewport size for computing the overlay position
2020-05-07 18:56:53 -07:00
Cameron Gutman
f30c11ddf4
Properly fix SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH on macOS VTRenderer
2020-05-06 22:20:21 -07:00
Cameron Gutman
51c4ecc879
Revert "Partially unrevert 05e82c24
for macOS which still needs it"
...
This reverts commit 080421f2fb
.
2020-05-06 21:41:57 -07:00
Cameron Gutman
080421f2fb
Partially unrevert 05e82c24
for macOS which still needs it
2020-05-06 21:18:23 -07:00
Cameron Gutman
8cc61ca8b8
Use SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH to get click events on focus gain
2020-05-06 20:43:41 -07:00
Cameron Gutman
400754c5b3
Revert "Pass through focus-gain clicks to the host in absolute mouse mode"
...
This reverts commit 05e82c24f8
.
2020-05-06 20:04:07 -07:00
Cameron Gutman
05e82c24f8
Pass through focus-gain clicks to the host in absolute mouse mode
2020-05-06 18:58:43 -07:00
Cameron Gutman
dfa63297fc
Fix incorrectly scaled output from the SDL renderer on macOS
2020-05-04 17:48:32 -07:00
Cameron Gutman
417aa2815c
Add a friendly error message when no video traffic is received
2020-05-01 21:28:48 -07:00
Cameron Gutman
2fdabe37aa
Raise the window before capturing in relative mode
2020-05-01 18:44:22 -07:00
Cameron Gutman
d8270dfb6a
Capture mouse by default on debug builds too
2020-05-01 18:43:54 -07:00
Cameron Gutman
9bf52eb63a
Improve relative touch deadzone behavior
2020-04-30 21:04:51 -07:00
Cameron Gutman
0c9d72a9a1
Restore the option for relative touch mode
2020-04-30 20:55:15 -07:00
Cameron Gutman
c2c2bd2df6
Split input.cpp into smaller files
2020-04-30 20:22:43 -07:00
Cameron Gutman
78fc594d84
Move input code into a subfolder
2020-04-30 20:09:36 -07:00
Cameron Gutman
96e6750f9c
Don't confine the cursor to the full-screen window when not capturing input
2020-04-28 20:37:00 -07:00
Cameron Gutman
dbafd05a4e
Store a pointer to the window inside the input handler
2020-04-28 20:24:27 -07:00
Cameron Gutman
d7fd578cc3
Don't set MODIFIER_META when meta key is disabled
2020-04-28 20:06:30 -07:00
Cameron Gutman
1852f74e8b
Add missing return statement
2020-04-26 20:42:01 -07:00
Cameron Gutman
55e3e16860
Try radeonsi if other VAAPI drivers fail
2020-04-26 20:18:46 -07:00
Cameron Gutman
7cf2a55b43
Allow radeonsi to direct render on XWayland
2020-04-26 20:13:00 -07:00
Cameron Gutman
c41cbbd2da
Allow the radeonsi VAAPI driver on XWayland
2020-04-26 20:06:53 -07:00
Cameron Gutman
7283bb046b
Disable initial mouse capture on XWayland
2020-04-26 19:33:25 -07:00
Cameron Gutman
aaa112c3f3
Don't use VAAPI drivers that lack VPP support
...
intel-media-va-driver (free) is one example of such a driver which
is apparently missing the shaders to perform colorspace conversion.
2020-04-26 15:38:05 -07:00
Cameron Gutman
f749b38aa2
Warn when starting a game with remote desktop mouse mode enabled
2020-04-25 23:50:12 -07:00
Cameron Gutman
f2d5cf785e
Don't cancel mouse capture on focus loss in absolute mode
2020-04-25 15:42:13 -07:00
Cameron Gutman
f926ad9b5e
Fix inverted capture-by-default setting
2020-04-25 15:41:45 -07:00
Cameron Gutman
68acf969f2
Move focus handling into the input code
2020-04-25 15:37:33 -07:00
Cameron Gutman
65d53e800b
Confine the cursor to the window in full-screen exclusive mode
2020-04-25 13:15:14 -07:00
Cameron Gutman
d1823dd6e1
Capture the mouse by default always on release builds and in absolute mode for debug builds
2020-04-25 13:01:15 -07:00
Cameron Gutman
80bfd3b8e9
Change raw input checkbox to adjust absolute vs relative mouse mode
2020-04-25 13:00:39 -07:00
Cameron Gutman
07128cc7fe
Allow keyboard input when the mouse is not captured
2020-04-24 21:35:38 -07:00
Cameron Gutman
0892f0b0bb
Don't capture the cursor on a touch event
2020-04-24 21:26:59 -07:00
Cameron Gutman
8cf7f3ac08
Fix absolute mouse positioning on SDL renderer
2020-04-24 19:37:15 -07:00
Cameron Gutman
ab2bb51879
Clamp mouse motion to the video region rather than dropping it
2020-04-24 17:35:35 -07:00
Cameron Gutman
8cb98b5365
Rewrite touchscreen support for direct input
2020-04-23 21:34:03 -07:00