Cameron Gutman
36218b54f8
Don't hardcode /dev/dri/card0 and /dev/dri/renderD128
2022-06-30 19:25:33 -05:00
Cameron Gutman
be2f4433db
Avoid hardcoding VIDEO_FORMAT_H265_MAIN10 for HDR/10-bit color
2022-06-26 16:22:05 -05:00
Cameron Gutman
1b96b18bc0
Fix handling of colorspace changes when using CUDA+SDL
2022-05-28 22:55:55 -05:00
Cameron Gutman
e9edad6f8c
Fix surface leak if SDLVideo_CreateOverlay() fails
2022-05-28 22:48:49 -05:00
Cameron Gutman
f8a6012c3a
Improve overlay format handling
2022-05-28 22:48:23 -05:00
Cameron Gutman
e103f6c9b6
Avoid holding the overlay lock during vaPutSurface
2022-05-28 22:28:17 -05:00
Cameron Gutman
9daf7b5a36
Fix modesetting for non-EGL HEVC streams
2022-05-28 21:42:27 -05:00
Cameron Gutman
b9c73df488
Draw the black background even for the KMSDRM backend to fix modesetting
2022-05-24 19:41:37 -05:00
Cameron Gutman
f99f1f6441
Disable EGL renderer on RPi due to very poor performance
2022-05-23 23:05:07 -05:00
Cameron Gutman
1ec1f5d3be
Switch to D3D11VA by default on Windows ARM64
...
It performs much better at 4K on Surface Pro X
2022-05-22 22:29:18 -05:00
Cameron Gutman
c2d7b835fb
Try moving session.h prior to vaapi.h
2022-05-21 16:58:28 -05:00
Cameron Gutman
f72888ce6f
Attempt to fix build error with older Qt headers
2022-05-21 16:52:04 -05:00
Cameron Gutman
216f274a92
Fix UAF in SLVideo overlay update
2022-05-21 00:30:07 -05:00
Cameron Gutman
5ea79efe4b
Work around broken overlay state restoration in Qt GUI
2022-05-21 00:20:36 -05:00
Cameron Gutman
197c1ba21b
Add support for the status overlay on Steam Link
2022-05-21 00:10:49 -05:00
Cameron Gutman
95c4a24d99
Destroy subpictures before the associated image
2022-05-20 21:46:40 -05:00
Cameron Gutman
f5f23a7c22
Implement overlay support for the VAAPI direct renderer
2022-05-20 21:40:37 -05:00
Cameron Gutman
56f184393f
Allow the cursor lock toggle to work in full-screen mode
...
Fixes #793
2022-05-19 19:14:55 -05:00
Cameron Gutman
c750ec3cc7
Add workaround for macOS scrolling acceleration
...
See #778
2022-05-18 00:24:58 -05:00
Cameron Gutman
c75b781d3f
Use SDL_WINDOWEVENT_DISPLAY_CHANGED on SDL 2.0.18+
2022-05-17 17:13:07 -05:00
Cameron Gutman
8aa42ff1d9
Reset the EGL renderer when specialization fails
2022-05-17 17:10:40 -05:00
Cameron Gutman
63a5bc5e12
Only force pacing in true full-screen mode to be consistent with DXVA2
2022-05-15 13:38:58 -05:00
Cameron Gutman
e0b7b6dc3d
Fix DXGI_FEATURE_PRESENT_ALLOW_TEARING feature check
2022-05-11 22:48:15 -05:00
Cameron Gutman
3d7ecf98c2
Fix HEVC Main10 support check on macOS GPUFamily1 GPUs
2022-05-11 22:00:34 -05:00
Cameron Gutman
ad5581c620
Use DWM MMCSS for D3D11VA like DXVA2 does
2022-05-09 23:52:13 -05:00
Cameron Gutman
69af991772
Improve DXVA2 performance in borderless windowed on AMD hardware
2022-05-09 22:55:58 -05:00
Cameron Gutman
2bb2745f91
Enhance frame pacing logic for HDR renderers
2022-05-07 16:21:17 -05:00
Cameron Gutman
5f682bb45f
Revert addition of D3DCREATE_NOWINDOWCHANGES
...
This flag breaks Alt+Tab in full-screen exclusive mode
2022-05-07 16:21:04 -05:00
Cameron Gutman
2480849f39
Clean up DXGI adapter enumeration code
2022-05-02 19:05:00 -05:00
Cameron Gutman
a1c350a537
Fix WARP device leak
2022-04-26 23:29:04 -05:00
Cameron Gutman
f732b1978e
Require a test frame with D3D11VA
2022-04-26 23:04:31 -05:00
Cameron Gutman
d3a542bac4
Try all available GPUs in D3D11VA decoder
2022-04-26 22:49:46 -05:00
Cameron Gutman
b12724db02
Reduce log spam when choosing a resolution
2022-04-24 17:11:10 -05:00
Cameron Gutman
f8f5e8e869
Don't discard all excess frames before rendering
...
This prevents the render queue's pacing logic from working and
interferes with renderers that take a full v-sync period between
their waitToRender() and renderFrame() callbacks.
2022-04-24 17:04:32 -05:00
Cameron Gutman
6fdaa6ee8a
Avoid modesetting if the display didn't change
2022-04-24 16:48:21 -05:00
Cameron Gutman
f10b547a49
Partially revert "Rework window management to fix issues restoring window state between windowed and full-screen"
...
This exposes all sorts of issues with full-screen transitions on Windows and macOS:
- Loss of proper window decorations when transitioning from full-screen to windowed on Windows
- Improper sizing when transitioning from true full-screen to windowed on macOS
This reverts commit 38396b2691
.
2022-04-24 16:40:19 -05:00
Cameron Gutman
38396b2691
Rework window management to fix issues restoring window state between windowed and full-screen
2022-04-24 16:22:17 -05:00
Cameron Gutman
220f50ebe4
Revert "Allow renderers to apply size and display changes seamlessly"
...
This reverts commit c989133d27
.
2022-04-24 16:12:12 -05:00
Cameron Gutman
c989133d27
Allow renderers to apply size and display changes seamlessly
2022-04-24 15:42:08 -05:00
Cameron Gutman
6c339551eb
Allow resolution changes on all platforms
...
Take aspect ratio into account when making the choice too.
2022-04-21 23:57:17 -05:00
Cameron Gutman
ef23a80b16
Fix EGL build when using EGL 1.4 or earlier headers
2022-04-21 21:13:39 -05:00
Cameron Gutman
747d3eedf1
Cleanup D3D11VA renderer by removing unnecessary codepaths
...
Waitable swapchains seem to be worse than our existing DXVsyncSource for synchronizing with VBlank.
Full-screen exclusive mode isn't beneficial vs Independent Flip on modern Win10/Win11 systems.
2022-04-15 23:26:32 -05:00
Cameron Gutman
fd563726f0
Fix blocking presents in borderless windowed flip modes
2022-04-15 23:21:52 -05:00
Cameron Gutman
62136a1a96
Increase buffer count to prevent starvation on AMD GPUs
2022-04-14 23:21:32 -05:00
Cameron Gutman
cf16c31d38
Improve performance and latency of D3D11VA renderer
2022-04-14 22:46:13 -05:00
Cameron Gutman
0f5d4aa72f
Enhance EGLRenderer's waitForRender() implementation
2022-04-10 20:20:44 -05:00
Cameron Gutman
d8dbe77427
Tiny EGL code cleanup
2022-04-10 19:35:29 -05:00
Cameron Gutman
e3a7b54f90
Use EGL fences to reduce video latency
2022-04-08 19:28:22 -05:00
Cameron Gutman
81d5e7f014
Wait for the VDPAU output surface to be idle in waitToRender()
2022-04-07 22:16:52 -05:00
Cameron Gutman
9790c218dc
Wait on the display link callback before rendering to reduce latency
2022-04-07 22:08:43 -05:00
Cameron Gutman
6d3d51553b
Wait on our D3D11 swapchain before rendering to reduce latency
2022-04-07 21:46:48 -05:00
Cameron Gutman
474591c6a5
Use a separate callback to indicate EOS instead of renderFrame()
2022-04-07 21:30:20 -05:00
Cameron Gutman
4291e15b60
Use NDC helpers in D3D11VA renderer
2022-04-05 00:57:14 -05:00
Cameron Gutman
940ae6406b
Add helper functions to perform NDC transformations
2022-04-05 00:50:04 -05:00
Cameron Gutman
6a0cf4bfd3
Fix some #if -> #ifdefs
2022-04-05 00:26:13 -05:00
Cameron Gutman
fee6f75223
Fix VAAPIRenderer build error with neither HAVE_EGL nor HAVE_DRM defined
2022-04-05 00:24:00 -05:00
Cameron Gutman
8c93b2d54c
Fix VAAPIRenderer build error with HAVE_DRM but not HAVE_EGL
2022-04-04 19:40:31 -05:00
Cameron Gutman
09ed82db65
Fix build with HAVE_MMAL
2022-04-02 16:16:40 -05:00
Cameron Gutman
a56cb0e88a
Don't waste time retrying the same renderer again
2022-04-02 16:14:04 -05:00
Cameron Gutman
9acf5ff0ef
Update workaround to prevent deadlock with h264_mmal
2022-04-02 16:06:39 -05:00
Cameron Gutman
9a5134ffcf
Use QString not QByteArray for string equality
2022-04-02 15:49:07 -05:00
Cameron Gutman
055cae90b8
Only apply the AMD color range workaround to new drivers
...
Applying it to older drivers introduces the very same issues it's meant to fix
2022-03-30 22:43:08 -05:00
Cameron Gutman
6972573a6e
Add pointer lock key combo
...
Fixes #737
2022-03-29 18:26:09 -05:00
Cameron Gutman
742f1b1283
Prefer hevc_nvv4l2 over hevc_nvmpi
2022-03-26 22:54:54 -05:00
The Great Wizard Azkali
0b127a2f3b
Add support for h264_nvv4l2 and hevc_nvv4l2 ( #745 )
...
* Add support for h264_nvv4l2
A new implementation of nvv4l2 decoder has been made by @CTCaer and will be released in thr next switchroot (Linux for Nintendo Switch) update. This implementation of ffmpeg can also be used by other Jetson boards. A repository will be soon hosted so Jetson users can install it.
Prior to the new implementation distribution, we add it to the project who currently use nvmpi implementation.
* Add support for hevc_nvv4l2
Following previous PR, add hevc support as well.
2022-03-26 22:02:00 -05:00
Cameron Gutman
2fc1dda232
Partially revert e64b15d
and b85d5b8
...
These changes cause excessive window recreation using the Flatpak on Nvidia with Wayland
2022-03-19 14:50:38 -05:00
Cameron Gutman
99495cff90
Add logging for cases where color range/encoding cannot be set
2022-03-19 13:12:41 -05:00
Cameron Gutman
ce2a01fc59
Allow the screensaver toggle to work even if running on an embedded platform
2022-03-16 21:57:03 -05:00
Cameron Gutman
97d8274911
Add option to allow PC to sleep while streaming
2022-03-16 21:48:56 -05:00
Cameron Gutman
e078a8b7b6
Don't recreate the decoder while the window is minimized
...
Fixes #726
2022-03-06 15:21:43 -06:00
Cameron Gutman
a6395b9025
Fix short UI hang when manually stopping the stream after losing connection with the host
2022-03-06 13:11:36 -06:00
Cameron Gutman
6c0983d77c
Reset the audio device if it enters a failed state
...
Fixes #734
2022-03-05 16:50:06 -06:00
Cameron Gutman
4ae39f2bd5
Properly synchronize rumble with gamepad removal
2022-03-05 13:32:38 -06:00
Cameron Gutman
4b83b022d3
Remove unnecessary assert
2022-02-25 22:47:20 -06:00
Cameron Gutman
93c02fb43a
Print GPU info in D3D11VA renderer
2022-02-20 22:10:18 -06:00
Cameron Gutman
9add6b3696
Add DXVA2 quirk for AMD GPUs to fix color range on the latest drivers
2022-02-17 00:35:33 -06:00
Cameron Gutman
ef037e18d0
Add colorspace and color range override options
2022-02-17 00:26:56 -06:00
Cameron Gutman
36db791516
Refactor D3D11 shaders to reduce duplicated code
2022-02-16 19:38:18 -06:00
Cameron Gutman
9a64c026ea
Use optimized pixel shaders for the normal SDR and HDR colorspaces
2022-02-09 20:46:02 -06:00
Cameron Gutman
be2af1d17a
Add environment variables to configure DXVA2 and D3D11VA options
2022-02-08 22:27:27 -06:00
Cameron Gutman
b96cb1abaf
Remove per-app HDR support check
...
It doesn't seem to make a difference anymore whether it's supported or not.
GFE seems happy to enter HDR mode anyway.
2022-02-07 20:02:19 -06:00
Cameron Gutman
1d79bcc657
Disable waitable swapchains in full-screen mode
2022-02-06 00:28:59 -06:00
Cameron Gutman
e8b4494fc3
Add an extra buffer for DirectFlip
2022-02-05 23:22:07 -06:00
Cameron Gutman
2518208c5c
Don't set fullScreenDesc fields to prevent entering "proxy" full-screen mode
2022-02-05 19:32:05 -06:00
Cameron Gutman
918fea7d4b
Precompute the aspect ratio stretch to avoid having to change viewports twice each frame
2022-02-05 15:44:37 -06:00
Cameron Gutman
4dc07bf63f
Don't render the alignment padding area
2022-02-05 15:23:29 -06:00
Cameron Gutman
04a0aca221
Create SRVs for all textures in the pool during initialization
2022-02-05 14:49:08 -06:00
Cameron Gutman
1942e72474
Only bind the constant buffer once
2022-02-05 14:15:35 -06:00
Cameron Gutman
f256407789
Implement D3D11VA video rendering
2022-02-04 21:51:34 -06:00
Cameron Gutman
67612f607e
WIP: D3D11VA support
...
Overlays work, but drawing the actual video is unimplemented
2022-02-03 19:45:07 -06:00
Cameron Gutman
76bd4a1c7b
Don't set the HDR metadata blob if we don't have one
2022-01-30 22:57:53 -06:00
Cameron Gutman
13dbad6f35
Fix build with old libdrm headers
2022-01-30 22:56:22 -06:00
Cameron Gutman
cf089fdfe9
Add support for HDR with VAAPI using DRM frontend renderer
2022-01-29 18:16:39 -06:00
Cameron Gutman
9755e31fa2
Refactor VAAPI surface export check into separate function
2022-01-29 17:45:36 -06:00
Cameron Gutman
3fcf31d009
Improve robustness of EGL retry logic for 10-bit color
2022-01-29 01:12:38 -06:00
Cameron Gutman
1cbdd0e675
Display the HDR option if the platform has a decoder that supports it
2022-01-29 00:59:04 -06:00
Cameron Gutman
e0fd84d6f5
Fix build with old libdrm headers
2022-01-29 00:28:46 -06:00
Cameron Gutman
443720c3de
Plumb HDR metadata into DRM renderer
2022-01-28 22:40:07 -06:00
Cameron Gutman
254526a213
Plumb HDR mode information to the decoders
2022-01-28 22:10:50 -06:00
Cameron Gutman
ad0afb5fc9
Prefer direct rendering when using HDR
2022-01-27 22:36:49 -06:00