Cameron Gutman
d722bf10b9
Don't use glFinish() with KMSDRM backend
2021-03-07 11:23:31 -06:00
Cameron Gutman
1ebb5fefb1
Address Clazy warnings
2021-03-02 18:14:15 -06:00
Cameron Gutman
164b3edd41
Fix viewport size on High DPI Wayland systems
...
Fixes #533
2021-03-01 22:47:14 -06:00
Cameron Gutman
93d21a0d1d
Fix EGLImage leak when not using a hwaccel backend
2021-02-06 17:59:05 -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
4dffac3c78
Ask for NV12 buffers for DRMRenderer
2021-02-02 19:40:06 -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
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
2d62d090df
Use a barrier to ensure we don't flush important window events
2021-01-09 17:51:25 -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
8ff9d8123d
Switch VT renderer pacing logic to be enabled by the frame pacing checkbox
2020-12-29 20:26:56 -06:00
Cameron Gutman
3defccb6e2
Work around poor video scaling quality on Qualcomm GPUs
2020-12-21 21:00:55 -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
59a73817c8
Don't use AntiHooking.dll or use D3DX9 on ARM64
2020-12-12 13:59:47 -06:00
Cameron Gutman
38b59aa1a9
Fix DXVA2 renderer compilation with Qt 6.0
2020-11-21 11:12:40 -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
d09dd90a73
Fix hardcoded tick unit duration which is incorrect on Apple silicon
2020-08-12 18:07:10 -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
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
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
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
dfa63297fc
Fix incorrectly scaled output from the SDL renderer on macOS
2020-05-04 17:48:32 -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
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
8cf7f3ac08
Fix absolute mouse positioning on SDL renderer
2020-04-24 19:37:15 -07:00
Cameron Gutman
e56329d05a
Don't render with vaPutSurface() on XWayland
2020-03-27 19:11:03 -07:00
Cameron Gutman
2452e80e57
Add VDPAU driver path fallbacks for AppImage
2020-03-26 19:06:24 -07:00
Cameron Gutman
b9019831a9
Fix failure to try the default VAAPI driver with the modified LIBVA_DRIVERS_PATH
2020-03-26 18:25:52 -07:00
Cameron Gutman
b3b49b440e
Add VAAPI driver path fallbacks for AppImage
2020-03-24 00:09:03 -07:00
Cameron Gutman
ba2488b6e2
Try the iHD VA driver as a fallback to fix Comet Lake and later
2020-03-18 18:39:43 -07:00
Cameron Gutman
4e7e0d67e5
Add a workaround for Mesa Iris returning the wrong VA driver
2020-03-17 17:34:35 -07:00
Cameron Gutman
81221336f4
Rec 601 seems to be a bit more accurate on macOS
2020-03-10 23:21:00 -07:00
Cameron Gutman
ecfc758ce4
Attach colorspace data to CVPixelBuffer. Fixes #323
2020-03-10 22:21:09 -07:00
Cameron Gutman
7ee323f0d5
Fix deprecation warning on macOS
2020-02-29 15:54:10 -08:00
Cameron Gutman
979de190dc
Cap resolution options at 1080p on Steam Link and Raspberry Pi due to hardware limitations
2020-02-23 00:43:43 -08:00
Cameron Gutman
46bcbda972
MMAL is always full-screen
2020-02-23 00:25:01 -08:00
Cameron Gutman
43bdc353fb
Fix 720p streaming on MMAL
2020-02-23 00:22:44 -08:00
Cameron Gutman
57a1c5eb76
Disable the window mode options for always full-screen renderers
2020-02-09 11:35:05 -08:00
Cameron Gutman
77386f8dfc
Reduce buffering for MMAL to avoid requiring 128 MB VRAM split
2020-02-08 17:56:30 -08:00
Cameron Gutman
529fdf0341
Add decoder options dictionary to prepareDecoderContext()
2020-02-08 17:47:26 -08:00
Cameron Gutman
b9463b3c0e
Allow NV12 and NV21 to be selected for non-hwaccel decoders using the SDL renderer
2020-01-26 15:02:29 -08:00
Cameron Gutman
956e6e3638
Avoid slicing for hardware decoders that use SDL as the renderer
2020-01-26 14:13:42 -08:00
Cameron Gutman
a0151fbc04
Fix memory leak if 10-bit color is not supported
2020-01-15 17:56:11 -08:00
Cameron Gutman
c6638a7154
Add support for 10-bit output in full-screen with DXVA2
2020-01-14 17:12:55 -08:00
Cameron Gutman
e1603f0808
Explicitly use Rec 601 for VDPAU
2019-12-16 18:02:28 -08:00
Cameron Gutman
d4c2350d63
Fix DXVA2 rendering with the wrong colorspace on AMD GPUs
2019-12-15 13:29:19 -08:00
Cameron Gutman
6230a99360
Fix colorspace conversion with SDL as frontend renderer
2019-12-14 17:17:29 -08:00
Cameron Gutman
801adb6af7
Add colorspace support to VAAPI renderer
2019-12-14 16:58:04 -08:00
Cameron Gutman
8b9b96f422
Only enable slicing when CPU decoding
2019-12-14 15:34:48 -08:00
Cameron Gutman
160684f23e
Allow decoders to choose a desired colorspace
2019-12-14 15:25:56 -08:00
Cameron Gutman
af6b8c9b88
Update common-c with colorspace configuration support
2019-12-14 14:40:02 -08:00
Cameron Gutman
de7b973239
Plumb presentation time from server into AVFrame.pts field
2019-11-11 18:03:47 -08:00
Cameron Gutman
c20daa8867
Add compatibility checks for HEVC Main10 in VT backend
2019-11-05 18:36:43 -08:00
Cameron Gutman
5e57a7d5c0
Prevent SDL renderer from trying to render 10-bit output
2019-11-05 17:29:21 -08:00
Cameron Gutman
7c8d27700e
Add 10-bit output support to VDPAU renderer
2019-11-05 17:09:44 -08:00
Cameron Gutman
ca26fa2dd0
Add basic HEVC Main10 support in DXVA2 renderer
2019-11-04 22:57:12 -08:00
Cameron Gutman
dbf98ce3a6
Require keyframes even for software H.264 decoding
2019-08-07 22:38:31 -07:00
Cameron Gutman
bcbd1a5b4b
Fix subsystem print in VAAPI
2019-07-07 15:41:26 -07:00
Cameron Gutman
6468efd7e4
Add VAAPI DRM support
2019-07-07 15:32:38 -07:00
Cameron Gutman
612b738968
Use the preferred sw_format when reading frames back
2019-06-26 21:25:41 -07:00
Cameron Gutman
87356ef594
Add CUDA acceleration support
2019-06-26 21:02:33 -07:00
Cameron Gutman
4f74fd5354
Fix uninitialized variables and a race condition with CVDisplayLinkStart()
2019-05-21 09:09:16 -07:00
Cameron Gutman
97fb30cdf1
Fix a few bugs in CVDisplayLink integration in VTRenderer
2019-05-19 09:52:59 -07:00
Cameron Gutman
c2b12868bb
Move DisplayLinkVsyncSource back into VTRenderer to reduce latency
2019-05-11 18:33:12 -07:00
Cameron Gutman
53138d7c16
Name threads for easier debugging
2019-05-03 21:18:58 -07:00
Cameron Gutman
99d9de35de
Add NV21 pixel format support to SDL renderer
2019-05-02 22:51:28 -07:00
Cameron Gutman
4e936193c7
Request a test frame for MMAL decoder
2019-04-24 21:31:52 -07:00
Cameron Gutman
8878c4a136
Use VAAPI decoder for AMD on Wayland
2019-04-21 15:33:21 -07:00
Cameron Gutman
00926bac81
Fix build warning in SDL renderer
2019-04-21 11:09:11 -07:00
Cameron Gutman
dba479774b
Add DRM renderer for Rockchip devices
2019-04-21 05:22:37 +00:00
Cameron Gutman
5c8a1e632b
Add support for rendering NV12 hwframes with SDL
2019-04-19 22:16:06 -07:00
Cameron Gutman
9c76700f74
Add MMAL renderer for Raspberry Pi
2019-04-16 01:20:21 -07:00
Cameron Gutman
773b1af6f1
Minor refactoring in preparation for non-hwaccel decoder support
2019-04-15 21:56:01 -07:00
Cameron Gutman
b8b633a6cc
Use SDL to render on Wayland for VAAPI
2019-04-12 22:54:21 -07:00
Cameron Gutman
ada2270bd1
Reduce code duplication in renderers
2019-04-12 22:12:53 -07:00
Cameron Gutman
25e5175c54
Refactor parameter passing to decoders and split backend/decode-only and frontend renderers
2019-04-11 22:27:20 -07:00
Cameron Gutman
859a5a5e0c
Allow a renderer to opt-out of the render thread and use that for SDL on OGL
2019-04-09 21:46:14 -07:00
Cameron Gutman
6783cf57da
TTF_OpenFontRW retains the SDL_RWops on success, so we must keep the font data around to back it
2019-04-09 21:26:47 -07:00
Cameron Gutman
54383b84ec
Fix random deadlocks on window resize with the software decoder due to processing window messages off the render thread
2019-04-03 20:44:50 -07:00
Cameron Gutman
cabbba2448
Move status update overlay to bottom left for SDL
2019-03-23 21:14:21 -07:00
Cameron Gutman
c48ed7bb0d
Fix undefined variable usage after 2703efedef
2019-03-23 20:25:19 -07:00
Cameron Gutman
c313f1a20b
Embed our data files inside the binary with QRC
2019-03-23 10:45:44 -07:00
Cameron Gutman
e95ff989b1
Allow DXVA2 renderer blacklists to be bypassed
2019-03-21 20:44:30 -07:00
Cameron Gutman
018e8999e2
Add connection status overlay for the VT renderer
2019-03-18 20:56:53 -07:00
Cameron Gutman
202a643e5a
Fix size of the status update overlay on DXVA2
2019-03-17 15:12:25 -07:00
Cameron Gutman
c75b9c9221
Add connection status overlay for DXVA2 and SDL
2019-03-17 15:08:21 -07:00
Cameron Gutman
052194714a
Adjust thread priorities based on recent refactoring
2019-03-17 00:45:31 -07:00
Cameron Gutman
bf5d43d0cf
Use SDL_HINT_OVERRIDE for critical hints
2019-03-17 00:18:15 -07:00
Cameron Gutman
f2ac570949
Rebuild SDL2 (5dc13016cf) with USE_D3D9EX
2019-03-16 23:52:40 -07:00
Cameron Gutman
e5a8b49c93
Limit the number of queued frames in Pacer to prevent excessive memory consumption if the renderer gets blocked for a while
2019-02-18 12:13:45 -08:00
Cameron Gutman
80a40ac5f9
Increase frame drop threshold
2019-02-16 23:13:35 -08:00
Cameron Gutman
ab4127f940
Use presence of a frame after rendering rather than render time for frame dropping
2019-02-15 22:44:52 -08:00
Cameron Gutman
f03d12b677
Use a separate render thread even with a V-Sync source
2019-02-15 22:09:50 -08:00
Cameron Gutman
81c6202582
Rename renderFrameAtVsync() to renderFrame() in preparation for further refactoring
2019-02-15 21:07:02 -08:00
Cameron Gutman
6cab2bec61
Don't trust VT to tell us whether decode is supported
2019-02-15 19:10:21 -08:00
Cameron Gutman
b1799009b3
Use the Path class to lookup ModeSeven.ttf
2019-02-15 18:13:36 -08:00
Cameron Gutman
aba806bc32
Implement debug overlay for VideoToolbox renderer
2019-02-13 20:55:52 -08:00
Cameron Gutman
f83853c2fb
OverlayManager now manages font size for the overlays
2019-02-12 22:36:56 -08:00
Cameron Gutman
46bd8ad83d
Add debug overlay for SDL renderer
2019-02-12 21:55:15 -08:00
Cameron Gutman
5788fa7204
Make OverlayManager own the overlay color setting
2019-02-12 20:39:10 -08:00
Cameron Gutman
d077c6450f
Split SdlRenderer from renderer.h
2019-02-12 19:58:36 -08:00
Cameron Gutman
6ed512e762
Provide a renderer callback when the overlay data changes
2019-02-12 18:43:38 -08:00
Cameron Gutman
1fd099db70
Log when StretchRect() fails
2019-02-09 18:47:57 -08:00