Merge remote-tracking branch 'sunshine/master'
This commit is contained in:
@@ -2,10 +2,12 @@
|
||||
Since not all applications behave the same, we decided to create some examples to help you get started adding games
|
||||
and applications to Sunshine.
|
||||
|
||||
@attention{Throughout these examples, any fields not shown are left blank. You can enhance your experience by
|
||||
adding an image or a log file (via the `Output` field).}
|
||||
> [!TIP]
|
||||
> Throughout these examples, any fields not shown are left blank. You can enhance your experience by
|
||||
> adding an image or a log file (via the `Output` field).
|
||||
|
||||
@note{When a working directory is not specified, it defaults to the folder where the target application resides.}
|
||||
> [!WARNING]
|
||||
> When a working directory is not specified, it defaults to the folder where the target application resides.
|
||||
|
||||
|
||||
## Common Examples
|
||||
@@ -18,8 +20,10 @@ adding an image or a log file (via the `Output` field).}
|
||||
| Image | @code{}desktop.png@endcode |
|
||||
|
||||
### Steam Big Picture
|
||||
@note{Steam is launched as a detached command because Steam starts with a process that self updates itself and the original
|
||||
process is killed.}
|
||||
|
||||
> [!NOTE]
|
||||
> Steam is launched as a detached command because Steam starts with a process that self updates itself and the original
|
||||
> process is killed.
|
||||
|
||||
@tabs{
|
||||
@tab{Linux | <!-- -->
|
||||
@@ -49,7 +53,9 @@ process is killed.}
|
||||
}
|
||||
|
||||
### Epic Game Store game
|
||||
@note{Using URI method will be the most consistent between various games.}
|
||||
|
||||
> [!NOTE]
|
||||
> Using the URI method will be the most consistent between various games.
|
||||
|
||||
#### URI
|
||||
|
||||
@@ -84,7 +90,9 @@ process is killed.}
|
||||
}
|
||||
|
||||
### Steam game
|
||||
@note{Using URI method will be the most consistent between various games.}
|
||||
|
||||
> [!NOTE]
|
||||
> Using the URI method will be the most consistent between various games.
|
||||
|
||||
#### URI
|
||||
|
||||
@@ -169,49 +177,49 @@ process is killed.}
|
||||
| Do | @code{}sh -c "xrandr --output HDMI-1 --mode ${SUNSHINE_CLIENT_WIDTH}x${SUNSHINE_CLIENT_HEIGHT} --rate ${SUNSHINE_CLIENT_FPS}"@endcode |
|
||||
| Undo | @code{}xrandr --output HDMI-1 --mode 3840x2160 --rate 120@endcode |
|
||||
|
||||
@hint{The above only works if the xrandr mode already exists. You will need to create new modes to stream to macOS
|
||||
and iOS devices, since they use non-standard resolutions.
|
||||
|
||||
You can update the ``Do`` command to this:
|
||||
```bash
|
||||
bash -c "${HOME}/scripts/set-custom-res.sh \"${SUNSHINE_CLIENT_WIDTH}\" \"${SUNSHINE_CLIENT_HEIGHT}\" \"${SUNSHINE_CLIENT_FPS}\""
|
||||
```
|
||||
|
||||
The `set-custom-res.sh` will have this content:
|
||||
```bash
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Get params and set any defaults
|
||||
width=${1:-1920}
|
||||
height=${2:-1080}
|
||||
refresh_rate=${3:-60}
|
||||
|
||||
# You may need to adjust the scaling differently so the UI/text isn't too small / big
|
||||
scale=${4:-0.55}
|
||||
|
||||
# Get the name of the active display
|
||||
display_output=$(xrandr | grep " connected" | awk '{ print $1 }')
|
||||
|
||||
# Get the modeline info from the 2nd row in the cvt output
|
||||
modeline=$(cvt ${width} ${height} ${refresh_rate} | awk 'FNR == 2')
|
||||
xrandr_mode_str=${modeline//Modeline \"*\" /}
|
||||
mode_alias="${width}x${height}"
|
||||
|
||||
echo "xrandr setting new mode ${mode_alias} ${xrandr_mode_str}"
|
||||
xrandr --newmode ${mode_alias} ${xrandr_mode_str}
|
||||
xrandr --addmode ${display_output} ${mode_alias}
|
||||
|
||||
# Reset scaling
|
||||
xrandr --output ${display_output} --scale 1
|
||||
|
||||
# Apply new xrandr mode
|
||||
xrandr --output ${display_output} --primary --mode ${mode_alias} --pos 0x0 --rotate normal --scale ${scale}
|
||||
|
||||
# Optional reset your wallpaper to fit to new resolution
|
||||
# xwallpaper --zoom /path/to/wallpaper.png
|
||||
```
|
||||
}
|
||||
> [!TIP]
|
||||
> The above only works if the xrandr mode already exists. You will need to create new modes to stream to macOS
|
||||
> and iOS devices, since they use non-standard resolutions.
|
||||
>
|
||||
> You can update the ``Do`` command to this:
|
||||
> ```bash
|
||||
> bash -c "${HOME}/scripts/set-custom-res.sh \"${SUNSHINE_CLIENT_WIDTH}\" \"${SUNSHINE_CLIENT_HEIGHT}\" \"${SUNSHINE_CLIENT_FPS}\""
|
||||
> ```
|
||||
>
|
||||
> The `set-custom-res.sh` will have this content:
|
||||
> ```bash
|
||||
> #!/bin/bash
|
||||
> set -e
|
||||
>
|
||||
> # Get params and set any defaults
|
||||
> width=${1:-1920}
|
||||
> height=${2:-1080}
|
||||
> refresh_rate=${3:-60}
|
||||
>
|
||||
> # You may need to adjust the scaling differently so the UI/text isn't too small / big
|
||||
> scale=${4:-0.55}
|
||||
>
|
||||
> # Get the name of the active display
|
||||
> display_output=$(xrandr | grep " connected" | awk '{ print $1 }')
|
||||
>
|
||||
> # Get the modeline info from the 2nd row in the cvt output
|
||||
> modeline=$(cvt ${width} ${height} ${refresh_rate} | awk 'FNR == 2')
|
||||
> xrandr_mode_str=${modeline//Modeline \"*\" /}
|
||||
> mode_alias="${width}x${height}"
|
||||
>
|
||||
> echo "xrandr setting new mode ${mode_alias} ${xrandr_mode_str}"
|
||||
> xrandr --newmode ${mode_alias} ${xrandr_mode_str}
|
||||
> xrandr --addmode ${display_output} ${mode_alias}
|
||||
>
|
||||
> # Reset scaling
|
||||
> xrandr --output ${display_output} --scale 1
|
||||
>
|
||||
> # Apply new xrandr mode
|
||||
> xrandr --output ${display_output} --primary --mode ${mode_alias} --pos 0x0 --rotate normal --scale ${scale}
|
||||
>
|
||||
> # Optional reset your wallpaper to fit to new resolution
|
||||
> # xwallpaper --zoom /path/to/wallpaper.png
|
||||
> ```
|
||||
|
||||
###### Wayland (wlroots, e.g. hyprland)
|
||||
|
||||
@@ -220,7 +228,8 @@ xrandr --output ${display_output} --primary --mode ${mode_alias} --pos 0x0 --rot
|
||||
| Do | @code{}sh -c "wlr-xrandr --output HDMI-1 --mode \"${SUNSHINE_CLIENT_WIDTH}x${SUNSHINE_CLIENT_HEIGHT}@${SUNSHINE_CLIENT_FPS}Hz\""@endcode |
|
||||
| Undo | @code{}wlr-xrandr --output HDMI-1 --mode 3840x2160@120Hz@endcode |
|
||||
|
||||
@hint{`wlr-xrandr` only works with wlroots-based compositors.}
|
||||
> [!TIP]
|
||||
> `wlr-xrandr` only works with wlroots-based compositors.
|
||||
|
||||
###### Gnome (X11)
|
||||
|
||||
@@ -240,12 +249,12 @@ Installation instructions for displayconfig-mutter can be [found here](https://g
|
||||
[gnome-randr-rust](https://github.com/maxwellainatchi/gnome-randr-rust) and [gnome-randr.py](https://gitlab.com/Oschowa/gnome-randr), but both of those are
|
||||
unmaintained and do not support newer Mutter features such as HDR and VRR.
|
||||
|
||||
@hint{HDR support has been added to Gnome 48, to check if your display supports it you can run this:
|
||||
```
|
||||
displayconfig-mutter list
|
||||
```
|
||||
If it doesn't, then remove ``--hdr`` flag from both ``Do`` and ``Undo`` steps.
|
||||
}
|
||||
> [!TIP]
|
||||
> HDR support has been added to Gnome 48, to check if your display supports it, you can run this:
|
||||
> ```
|
||||
> displayconfig-mutter list
|
||||
> ```
|
||||
> If it doesn't, then remove ``--hdr`` flag from both ``Do`` and ``Undo`` steps.
|
||||
|
||||
###### KDE Plasma (Wayland, X11)
|
||||
|
||||
@@ -254,22 +263,22 @@ If it doesn't, then remove ``--hdr`` flag from both ``Do`` and ``Undo`` steps.
|
||||
| Do | @code{}sh -c "kscreen-doctor output.HDMI-A-1.mode.${SUNSHINE_CLIENT_WIDTH}x${SUNSHINE_CLIENT_HEIGHT}@${SUNSHINE_CLIENT_FPS}"@endcode |
|
||||
| Undo | @code{}kscreen-doctor output.HDMI-A-1.mode.3840x2160@120@endcode |
|
||||
|
||||
@attention{The names of your displays will differ between X11 and Wayland.
|
||||
Be sure to use the correct name, depending on your session manager.
|
||||
e.g. On X11, the monitor may be called ``HDMI-A-0``, but on Wayland, it may be called ``HDMI-A-1``.
|
||||
}
|
||||
> [!CAUTION]
|
||||
> The names of your displays will differ between X11 and Wayland.
|
||||
> Be sure to use the correct name, depending on your session manager.
|
||||
> e.g., On X11, the monitor may be called ``HDMI-A-0``, but on Wayland, it may be called ``HDMI-A-1``.
|
||||
|
||||
@hint{Replace ``HDMI-A-1`` with the display name of the monitor you would like to use for Moonlight.
|
||||
You can list the monitors available to you with:
|
||||
```
|
||||
kscreen-doctor -o
|
||||
```
|
||||
|
||||
These will also give you the supported display properties for each monitor. You can select them either by
|
||||
hard-coding their corresponding number (e.g. ``kscreen-doctor output.HDMI-A1.mode.0``) or using the above
|
||||
``do`` command to fetch the resolution requested by your Moonlight client
|
||||
(which has a chance of not being supported by your monitor).
|
||||
}
|
||||
> [!TIP]
|
||||
> Replace ``HDMI-A-1`` with the display name of the monitor you would like to use for Moonlight.
|
||||
> You can list the monitors available to you with:
|
||||
> ```
|
||||
> kscreen-doctor -o
|
||||
> ```
|
||||
>
|
||||
> These will also give you the supported display properties for each monitor. You can select them either by
|
||||
> hard-coding their corresponding number (e.g. ``kscreen-doctor output.HDMI-A1.mode.0``) or using the above
|
||||
> ``do`` command to fetch the resolution requested by your Moonlight client
|
||||
> (which has a chance of not being supported by your monitor).
|
||||
|
||||
###### NVIDIA
|
||||
|
||||
@@ -281,9 +290,11 @@ hard-coding their corresponding number (e.g. ``kscreen-doctor output.HDMI-A1.mod
|
||||
##### macOS
|
||||
|
||||
###### displayplacer
|
||||
@note{This example uses the `displayplacer` tool to change the resolution.
|
||||
This tool can be installed following instructions in their
|
||||
[GitHub repository](https://github.com/jakehilborn/displayplacer)}.
|
||||
|
||||
> [!NOTE]
|
||||
> This example uses the `displayplacer` tool to change the resolution.
|
||||
> This tool can be installed following instructions in their
|
||||
> [GitHub repository](https://github.com/jakehilborn/displayplacer).
|
||||
|
||||
| Prep Step | Command |
|
||||
|-----------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
@@ -295,8 +306,10 @@ Sunshine has built-in support for changing the resolution and refresh rate on Wi
|
||||
third-party tool, you can use *QRes* as an example.
|
||||
|
||||
###### QRes
|
||||
@note{This example uses the *QRes* tool to change the resolution and refresh rate.
|
||||
This tool can be downloaded from their [SourceForge repository](https://sourceforge.net/projects/qres).}
|
||||
|
||||
> [!NOTE]
|
||||
> This example uses the *QRes* tool to change the resolution and refresh rate.
|
||||
> This tool can be downloaded from their [SourceForge repository](https://sourceforge.net/projects/qres).
|
||||
|
||||
| Prep Step | Command |
|
||||
|-----------|---------------------------------------------------------------------------------------------------------------------------|
|
||||
@@ -306,8 +319,10 @@ This tool can be downloaded from their [SourceForge repository](https://sourcefo
|
||||
### Additional Considerations
|
||||
|
||||
#### Linux (Flatpak)
|
||||
@attention{Because Flatpak packages run in a sandboxed environment and do not normally have access to the
|
||||
host, the Flatpak of Sunshine requires commands to be prefixed with `flatpak-spawn --host`.}
|
||||
|
||||
> [!CAUTION]
|
||||
> Because Flatpak packages run in a sandboxed environment and do not normally have access to the
|
||||
> host, the Flatpak of Sunshine requires commands to be prefixed with `flatpak-spawn --host`.
|
||||
|
||||
#### Windows
|
||||
**Elevating Commands (Windows)**
|
||||
|
||||
@@ -3,6 +3,15 @@ Sunshine binaries are built using [CMake](https://cmake.org) and requires `cmake
|
||||
|
||||
## Building Locally
|
||||
|
||||
### Compiler
|
||||
It is recommended to use one of the following compilers:
|
||||
|
||||
| Compiler | Version |
|
||||
|:------------|:--------|
|
||||
| GCC | 13+ |
|
||||
| Clang | 17+ |
|
||||
| Apple Clang | 15+ |
|
||||
|
||||
### Dependencies
|
||||
|
||||
#### Linux
|
||||
@@ -16,11 +25,12 @@ Sunshine requires CUDA Toolkit for NVFBC capture. There are two caveats to CUDA:
|
||||
|
||||
1. The version installed depends on the version of GCC.
|
||||
2. The version of CUDA you use will determine compatibility with various GPU generations.
|
||||
At the time of writing, the recommended version to use is CUDA ~11.8.
|
||||
At the time of writing, the recommended version to use is CUDA ~12.9.
|
||||
See [CUDA compatibility](https://docs.nvidia.com/deploy/cuda-compatibility/index.html) for more info.
|
||||
|
||||
@tip{To install older versions, select the appropriate run file based on your desired CUDA version and architecture
|
||||
according to [CUDA Toolkit Archive](https://developer.nvidia.com/cuda-toolkit-archive)}
|
||||
> [!NOTE]
|
||||
> To install older versions, select the appropriate run file based on your desired CUDA version and architecture
|
||||
> according to [CUDA Toolkit Archive](https://developer.nvidia.com/cuda-toolkit-archive)
|
||||
|
||||
#### macOS
|
||||
You can either use [Homebrew](https://brew.sh) or [MacPorts](https://www.macports.org) to install dependencies.
|
||||
@@ -119,8 +129,9 @@ cmake -B build -G Ninja -S .
|
||||
ninja -C build
|
||||
```
|
||||
|
||||
@tip{Available build options can be found in
|
||||
[options.cmake](https://github.com/LizardByte/Sunshine/blob/master/cmake/prep/options.cmake).}
|
||||
> [!TIP]
|
||||
> Available build options can be found in
|
||||
> [options.cmake](https://github.com/LizardByte/Sunshine/blob/master/cmake/prep/options.cmake).
|
||||
|
||||
### Package
|
||||
|
||||
|
||||
@@ -261,6 +261,29 @@ editing the `conf` file in a text editor. Use the examples as reference.
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
### system_tray
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>Description</td>
|
||||
<td colspan="2">
|
||||
Show icon in system tray and display desktop notifications
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Default</td>
|
||||
<td colspan="2">@code{}
|
||||
enabled
|
||||
@endcode</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Example</td>
|
||||
<td colspan="2">@code{}
|
||||
system_tray = enabled
|
||||
@endcode</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Input
|
||||
|
||||
### controller
|
||||
@@ -416,6 +439,30 @@ editing the `conf` file in a text editor. Use the examples as reference.
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
### ds5_inputtino_randomize_mac
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>Description</td>
|
||||
<td colspan="2">
|
||||
Randomize the MAC-Address for the generated virtual controller.
|
||||
@hint{Only applies on linux for gamepads created as PS5-style controllers}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Default</td>
|
||||
<td colspan="2">@code{}
|
||||
enabled
|
||||
@endcode</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Example</td>
|
||||
<td colspan="2">@code{}
|
||||
ds5_inputtino_randomize_mac = enabled
|
||||
@endcode</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
### back_button_timeout
|
||||
|
||||
<table>
|
||||
|
||||
@@ -73,13 +73,15 @@ The following is a simple example of how to use it.
|
||||
}
|
||||
```
|
||||
|
||||
@note{The json keys should be sorted alphabetically. You can use [jsonabc](https://novicelab.org/jsonabc)
|
||||
to sort the keys.}
|
||||
> [!NOTE]
|
||||
> The JSON keys should be sorted alphabetically. You can use [jsonabc](https://novicelab.org/jsonabc)
|
||||
> to sort the keys.
|
||||
|
||||
@attention{Due to the integration with Crowdin, it is important to only add strings to the *en.json* file,
|
||||
and to not modify any other language files. After the PR is merged, the translations can take place
|
||||
on [CrowdIn][crowdin-url]. Once the translations are complete, a PR will be made
|
||||
to merge the translations into Sunshine.}
|
||||
> [!IMPORTANT]
|
||||
> Due to the integration with Crowdin, it is important to only add strings to the *en.json* file,
|
||||
> and to not modify any other language files. After the PR is merged, the translations can take place
|
||||
> on [CrowdIn][crowdin-url]. Once the translations are complete, a PR will be made
|
||||
> to merge the translations into Sunshine.
|
||||
|
||||
* Use the string in the Vue component.
|
||||
```html
|
||||
@@ -90,8 +92,9 @@ The following is a simple example of how to use it.
|
||||
</template>
|
||||
```
|
||||
|
||||
@tip{More formatting examples can be found in the
|
||||
[Vue I18n guide](https://kazupon.github.io/vue-i18n/guide/formatting.html).}
|
||||
> [!TIP]
|
||||
> More formatting examples can be found in the
|
||||
> [Vue I18n guide](https://kazupon.github.io/vue-i18n/guide/formatting.html).
|
||||
|
||||
##### C++
|
||||
|
||||
@@ -106,11 +109,13 @@ some situations. For example the system tray icon could be localized as it is us
|
||||
std::string msg = boost::locale::translate("Hello world!");
|
||||
```
|
||||
|
||||
@tip{More examples can be found in the documentation for
|
||||
[boost locale](https://www.boost.org/doc/libs/1_70_0/libs/locale/doc/html/messages_formatting.html).}
|
||||
> [!TIP]
|
||||
> More examples can be found in the documentation for
|
||||
> [boost locale](https://www.boost.org/doc/libs/1_70_0/libs/locale/doc/html/messages_formatting.html).
|
||||
|
||||
@warning{The below is for information only. Contributors should never include manually updated template files, or
|
||||
manually compiled language files in Pull Requests.}
|
||||
> [!WARNING]
|
||||
> The below is for information only. Contributors should never include manually updated template files, or
|
||||
> manually compiled language files in Pull Requests.
|
||||
|
||||
Strings are automatically extracted from the code to the `locale/sunshine.po` template file. The generated file is
|
||||
used by CrowdIn to generate language specific template files. The file is generated using the
|
||||
@@ -135,10 +140,11 @@ required for this, along with the python dependencies in the `./scripts/requirem
|
||||
python ./scripts/_locale.py --compile
|
||||
```
|
||||
|
||||
@attention{Due to the integration with CrowdIn, it is important to not include any extracted or compiled files in
|
||||
Pull Requests. The files are automatically generated and updated by the workflow. Once the PR is merged, the
|
||||
translations can take place on [CrowdIn][crowdin-url]. Once the translations are
|
||||
complete, a PR will be made to merge the translations into Sunshine.}
|
||||
> [!IMPORTANT]
|
||||
> Due to the integration with CrowdIn, it is important to not include any extracted or compiled files in
|
||||
> Pull Requests. The files are automatically generated and updated by the workflow. Once the PR is merged, the
|
||||
> translations can take place on [CrowdIn][crowdin-url]. Once the translations are
|
||||
> complete, a PR will be made to merge the translations into Sunshine.
|
||||
|
||||
### Testing
|
||||
|
||||
@@ -175,8 +181,8 @@ To see all available options, run the tests with the `--help` flag.
|
||||
./build/tests/test_sunshine --help
|
||||
```
|
||||
|
||||
@tip{See the googletest [FAQ](https://google.github.io/googletest/faq.html) for more information on how to use
|
||||
Google Test.}
|
||||
> [!TIP]
|
||||
> See the googletest [FAQ](https://google.github.io/googletest/faq.html) for more information on how to use Google Test.
|
||||
|
||||
We use [gcovr](https://www.gcovr.com) to generate code coverage reports,
|
||||
and [Codecov](https://about.codecov.io) to analyze the reports for all PRs and commits.
|
||||
|
||||
@@ -13,14 +13,15 @@ to a specified directory.
|
||||
If you are using the Moonlight Internet Hosting Tool, you can remove it from your system when you migrate to Sunshine.
|
||||
To stream over the Internet with Sunshine and a UPnP-capable router, enable the UPnP option in the Sunshine Web UI.
|
||||
|
||||
@note{Running Sunshine together with versions of the Moonlight Internet Hosting Tool prior to v5.6 will cause UPnP
|
||||
port forwarding to become unreliable. Either uninstall the tool entirely or update it to v5.6 or later.}
|
||||
> [!NOTE]
|
||||
> Running Sunshine together with versions of the Moonlight Internet Hosting Tool prior to v5.6 will cause UPnP
|
||||
> port forwarding to become unreliable. Either uninstall the tool entirely or update it to v5.6 or later.
|
||||
|
||||
## Limitations
|
||||
Sunshine does have some limitations, as compared to Nvidia GameStream.
|
||||
|
||||
* Automatic game/application list.
|
||||
* Changing game settings automatically, to optimize streaming.
|
||||
* Changing game settings automatically to optimize streaming.
|
||||
|
||||
<div class="section_buttons">
|
||||
|
||||
|
||||
@@ -11,14 +11,17 @@ and release artifacts may be missing when merging changes on a faster cadence.
|
||||
Binaries of Sunshine are created for each release. They are available for Linux, macOS, and Windows.
|
||||
Binaries can be found in the [latest release][latest-release].
|
||||
|
||||
@tip{Some third party packages also exist.
|
||||
See [Third Party Packages](third_party_packages.md) for more information.
|
||||
No support will be provided for third party packages!}
|
||||
> [!NOTE]
|
||||
> Some third party packages also exist.
|
||||
> See [Third Party Packages](third_party_packages.md) for more information.
|
||||
> No support will be provided for third party packages!
|
||||
|
||||
## Install
|
||||
|
||||
### Docker
|
||||
@warning{The Docker images are not recommended for most users.}
|
||||
|
||||
> [!WARNING]
|
||||
> The Docker images are not recommended for most users.
|
||||
|
||||
Docker images are available on [Dockerhub.io](https://hub.docker.com/repository/docker/lizardbyte/sunshine)
|
||||
and [ghcr.io](https://github.com/orgs/LizardByte/packages?repo_name=sunshine).
|
||||
@@ -30,9 +33,10 @@ See [Docker](../DOCKER_README.md) for more information.
|
||||
|
||||
CUDA is used for NVFBC capture.
|
||||
|
||||
@tip{See [CUDA GPUS](https://developer.nvidia.com/cuda-gpus) to cross-reference Compute Capability to your GPU.
|
||||
The table below applies to packages provided by LizardByte. If you use an official LizardByte package then you do not
|
||||
need to install CUDA.}
|
||||
> [!NOTE]
|
||||
> See [CUDA GPUS](https://developer.nvidia.com/cuda-gpus) to cross-reference Compute Capability to your GPU.
|
||||
> The table below applies to packages provided by LizardByte. If you use an official LizardByte package, then you do not
|
||||
> need to install CUDA.
|
||||
|
||||
<table>
|
||||
<caption>CUDA Compatibility</caption>
|
||||
@@ -43,9 +47,9 @@ need to install CUDA.}
|
||||
<th>Package</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan="3">11.8.0</td>
|
||||
<td rowspan="3">450.80.02</td>
|
||||
<td rowspan="3">35;50;52;60;61;62;70;72;75;80;86;87;89;90</td>
|
||||
<td rowspan="8">12.9.1</td>
|
||||
<td rowspan="8">575.57.08</td>
|
||||
<td rowspan="8">50;52;60;61;62;70;72;75;80;86;87;89;90;100;101;103;120;121</td>
|
||||
<td>sunshine.AppImage</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -55,33 +59,26 @@ need to install CUDA.}
|
||||
<td>sunshine-ubuntu-24.04-{arch}.deb</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan="1">12.0.0</td>
|
||||
<td rowspan="1">525.60.13</td>
|
||||
<td rowspan="5">50;52;60;61;62;70;72;75;80;86;87;89;90</td>
|
||||
<td>sunshine-debian-bookworm-{arch}.deb</td>
|
||||
<td>sunshine-debian-trixie-{arch}.deb</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan="2">12.6.2</td>
|
||||
<td rowspan="2">560.35.03</td>
|
||||
<td>sunshine_{arch}.flatpak</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Sunshine (copr - Fedora 41)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan="1">12.8.1</td>
|
||||
<td rowspan="1">570.124.06</td>
|
||||
<td>Sunshine (copr - Fedora 42)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan="1">12.9.1</td>
|
||||
<td rowspan="1">575.57.08</td>
|
||||
<td>sunshine.pkg.tar.zst</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
#### AppImage
|
||||
@caution{Use distro-specific packages instead of the AppImage if they are available.}
|
||||
|
||||
> [!CAUTION]
|
||||
> Use distro-specific packages instead of the AppImage if they are available.
|
||||
|
||||
According to AppImageLint the supported distro matrix of the AppImage is below.
|
||||
|
||||
@@ -89,13 +86,15 @@ According to AppImageLint the supported distro matrix of the AppImage is below.
|
||||
- ✔ Debian bookworm
|
||||
- ✔ Debian trixie
|
||||
- ✔ Debian sid
|
||||
- ✔ Ubuntu plucky
|
||||
- ✔ Ubuntu noble
|
||||
- ✔ Ubuntu jammy
|
||||
- ✖ Ubuntu focal
|
||||
- ✖ Ubuntu bionic
|
||||
- ✖ Ubuntu xenial
|
||||
- ✖ Ubuntu trusty
|
||||
- ✖ CentOS 7
|
||||
- ✖ Rocky Linux 8
|
||||
- ✖ Rocky Linux 9
|
||||
|
||||
##### Install
|
||||
1. Download [sunshine.AppImage](https://github.com/LizardByte/Sunshine/releases/latest/download/sunshine.AppImage)
|
||||
@@ -120,7 +119,9 @@ According to AppImageLint the supported distro matrix of the AppImage is below.
|
||||
```
|
||||
|
||||
#### ArchLinux
|
||||
@warning{We do not provide support for any AUR packages.}
|
||||
|
||||
> [!CAUTION]
|
||||
> Use AUR packages at your own risk.
|
||||
|
||||
##### Install Prebuilt Packages
|
||||
Follow the instructions at LizardByte's [pacman-repo](https://github.com/LizardByte/pacman-repo) to add
|
||||
@@ -155,10 +156,12 @@ Download `sunshine-{distro}-{distro-version}-{arch}.deb` and run the following c
|
||||
sudo dpkg -i ./sunshine-{distro}-{distro-version}-{arch}.deb
|
||||
```
|
||||
|
||||
@note{The `{distro-version}` is the version of the distro we built the package on. The `{arch}` is the
|
||||
architecture of your operating system.}
|
||||
> [!NOTE]
|
||||
> The `{distro-version}` is the version of the distro we built the package on. The `{arch}` is the
|
||||
> architecture of your operating system.
|
||||
|
||||
@tip{You can double-click the deb file to see details about the package and begin installation.}
|
||||
> [!TIP]
|
||||
> You can double-click the deb file to see details about the package and begin installation.
|
||||
|
||||
##### Uninstall
|
||||
```bash
|
||||
@@ -166,7 +169,9 @@ sudo apt remove sunshine
|
||||
```
|
||||
|
||||
#### Fedora
|
||||
@tip{The package name is case-sensitive.}
|
||||
|
||||
> [!TIP]
|
||||
> The package name is case-sensitive.
|
||||
|
||||
##### Install
|
||||
1. Enable copr repository.
|
||||
@@ -190,13 +195,17 @@ sudo dnf remove Sunshine
|
||||
```
|
||||
|
||||
#### Flatpak
|
||||
@caution{Use distro-specific packages instead of the Flatpak if they are available.}
|
||||
|
||||
> [!CAUTION]
|
||||
> Use distro-specific packages instead of the Flatpak if they are available.
|
||||
|
||||
Using this package requires that you have [Flatpak](https://flatpak.org/setup) installed.
|
||||
|
||||
##### Download (local option)
|
||||
1. Download `sunshine_{arch}.flatpak` and run the following command.
|
||||
@note{Replace `{arch}` with your system architecture.}
|
||||
|
||||
> [!NOTE]
|
||||
> Replace `{arch}` with your system architecture.
|
||||
|
||||
##### Install (system level)
|
||||
**Flathub**
|
||||
@@ -242,7 +251,9 @@ flatpak uninstall --delete-data dev.lizardbyte.app.Sunshine
|
||||
```
|
||||
|
||||
#### Homebrew
|
||||
@important{The Homebrew package is experimental on Linux.}
|
||||
|
||||
> [!IMPORTANT]
|
||||
> The Homebrew package is experimental on Linux.
|
||||
|
||||
This package requires that you have [Homebrew](https://docs.brew.sh/Installation) installed.
|
||||
|
||||
@@ -261,7 +272,8 @@ brew uninstall sunshine
|
||||
|
||||
### macOS
|
||||
|
||||
@important{Sunshine on macOS is experimental. Gamepads do not work.}
|
||||
> [!IMPORTANT]
|
||||
> Sunshine on macOS is experimental. Gamepads do not work.
|
||||
|
||||
#### Homebrew
|
||||
This package requires that you have [Homebrew](https://docs.brew.sh/Installation) installed.
|
||||
@@ -277,7 +289,8 @@ brew install sunshine
|
||||
brew uninstall sunshine
|
||||
```
|
||||
|
||||
@tip{For beta you can replace `sunshine` with `sunshine-beta` in the above commands.}
|
||||
> [!TIP]
|
||||
> For beta you can replace `sunshine` with `sunshine-beta` in the above commands.
|
||||
|
||||
### Windows
|
||||
|
||||
@@ -286,16 +299,18 @@ brew uninstall sunshine
|
||||
1. Download and install
|
||||
[Sunshine-Windows-AMD64-installer.exe](https://github.com/LizardByte/Sunshine/releases/latest/download/Sunshine-Windows-AMD64-installer.exe)
|
||||
|
||||
@attention{You should carefully select or unselect the options you want to install. Do not blindly install or
|
||||
enable features.}
|
||||
> [!CAUTION]
|
||||
> You should carefully select or unselect the options you want to install. Do not blindly install or
|
||||
> enable features.
|
||||
|
||||
To uninstall, find Sunshine in the list <a href="ms-settings:installed-apps">here</a> and select "Uninstall" from the
|
||||
overflow menu. Different versions of Windows may provide slightly different steps for uninstall.
|
||||
|
||||
#### Standalone (lite version)
|
||||
|
||||
@warning{By using this package instead of the installer, performance will be reduced. This package is not
|
||||
recommended for most users. No support will be provided!}
|
||||
> [!WARNING]
|
||||
> By using this package instead of the installer, performance will be reduced. This package is not
|
||||
> recommended for most users. No support will be provided!
|
||||
|
||||
1. Download and extract
|
||||
[Sunshine-Windows-AMD64-portable.zip](https://github.com/LizardByte/Sunshine/releases/latest/download/Sunshine-Windows-AMD64-portable.zip)
|
||||
@@ -349,9 +364,13 @@ After installation, some initial setup is required.
|
||||
### Linux
|
||||
|
||||
#### KMS Capture
|
||||
@warning{Capture of most Wayland-based desktop environments will fail unless this step is performed.}
|
||||
@note{`cap_sys_admin` may as well be root, except you don't need to be root to run the program. This is necessary to
|
||||
allow Sunshine to use KMS capture.}
|
||||
|
||||
> [!WARNING]
|
||||
> Capture of most Wayland-based desktop environments will fail unless this step is performed.
|
||||
|
||||
> [!NOTE]
|
||||
> `cap_sys_admin` may as well be root, except you don't need to be root to run the program. This is necessary to
|
||||
> allow Sunshine to use KMS capture.
|
||||
|
||||
##### Enable
|
||||
```bash
|
||||
@@ -384,8 +403,11 @@ Sunshine can only access microphones on macOS due to system limitations. To stre
|
||||
[Soundflower](https://github.com/mattingalls/Soundflower) or
|
||||
[BlackHole](https://github.com/ExistentialAudio/BlackHole).
|
||||
|
||||
@note{Command Keys are not forwarded by Moonlight. Right Option-Key is mapped to CMD-Key.}
|
||||
@caution{Gamepads are not currently supported.}
|
||||
> [!NOTE]
|
||||
> Command Keys are not forwarded by Moonlight. Right Option-Key is mapped to CMD-Key.
|
||||
|
||||
> [!CAUTION]
|
||||
> Gamepads are not currently supported.
|
||||
|
||||
## Usage
|
||||
|
||||
@@ -393,8 +415,9 @@ Sunshine can only access microphones on macOS due to system limitations. To stre
|
||||
If Sunshine is not installed/running as a service, then start Sunshine with the following command, unless a start
|
||||
command is listed in the specified package [install](#install) instructions above.
|
||||
|
||||
@note{A service is a process that runs in the background. This is the default when installing Sunshine from the
|
||||
Windows installer. Running multiple instances of Sunshine is not advised.}
|
||||
> [!NOTE]
|
||||
> A service is a process that runs in the background. This is the default when installing Sunshine from the
|
||||
> Windows installer. Running multiple instances of Sunshine is not advised.
|
||||
|
||||
```bash
|
||||
sunshine
|
||||
@@ -405,9 +428,11 @@ sunshine
|
||||
sunshine <directory of conf file>/sunshine.conf
|
||||
```
|
||||
|
||||
@note{You do not need to specify a config file. If no config file is entered the default location will be used.}
|
||||
> [!NOTE]
|
||||
> You do not need to specify a config file. If no config file is entered, the default location will be used.
|
||||
|
||||
@attention{The configuration file specified will be created if it doesn't exist.}
|
||||
> [!TIP]
|
||||
> The configuration file specified will be created if it doesn't exist.
|
||||
|
||||
### Start Sunshine over SSH (Linux/X11)
|
||||
Assuming you are already logged into the host, you can use this command
|
||||
@@ -424,9 +449,10 @@ be ready.
|
||||
ssh <user>@<ip_address> 'startx &; export DISPLAY=:0; sunshine'
|
||||
```
|
||||
|
||||
@tip{You could also utilize the `~/.bash_profile` or `~/.bashrc` files to set up the `DISPLAY` variable.}
|
||||
> [!TIP]
|
||||
> You could also use the `~/.bash_profile` or `~/.bashrc` files to set up the `DISPLAY` variable.
|
||||
|
||||
@seealso{ See [Remote SSH Headless Setup](https://app.lizardbyte.dev/2023-09-14-remote-ssh-headless-sunshine-setup)
|
||||
@seealso{See [Remote SSH Headless Setup](https://app.lizardbyte.dev/2023-09-14-remote-ssh-headless-sunshine-setup)
|
||||
on how to set up a headless streaming server without autologin and dummy plugs (X11 + NVidia GPUs)}
|
||||
|
||||
### Configuration
|
||||
@@ -434,10 +460,12 @@ on how to set up a headless streaming server without autologin and dummy plugs (
|
||||
Sunshine is configured via the web ui, which is available on [https://localhost:47990](https://localhost:47990)
|
||||
by default. You may replace *localhost* with your internal ip address.
|
||||
|
||||
@attention{Ignore any warning given by your browser about "insecure website". This is due to the SSL certificate
|
||||
being self-signed.}
|
||||
> [!NOTE]
|
||||
> Ignore any warning given by your browser about "insecure website". This is due to the SSL certificate
|
||||
> being self-signed.
|
||||
|
||||
@caution{If running for the first time, make sure to note the username and password that you created.}
|
||||
> [!CAUTION]
|
||||
> If running for the first time, make sure to note the username and password that you created.
|
||||
|
||||
1. Add games and applications.
|
||||
2. Adjust any configuration settings as needed.
|
||||
@@ -453,15 +481,15 @@ being self-signed.}
|
||||
To get a list of available arguments, run the following command.
|
||||
|
||||
@tabs{
|
||||
@tab{ General | @code{.bash}
|
||||
@tab{ General | ```bash
|
||||
sunshine --help
|
||||
@endcode }
|
||||
@tab{ AppImage | @code{.bash}
|
||||
```}
|
||||
@tab{ AppImage | ```bash
|
||||
./sunshine.AppImage --help
|
||||
@endcode }
|
||||
@tab{ Flatpak | @code{.bash}
|
||||
```}
|
||||
@tab{ Flatpak | ```bash
|
||||
flatpak run --command=sunshine dev.lizardbyte.app.Sunshine --help
|
||||
@endcode }
|
||||
```}
|
||||
}
|
||||
|
||||
### Shortcuts
|
||||
@@ -513,25 +541,25 @@ Streaming HDR content is officially supported on Windows hosts and experimentall
|
||||
* Some GPUs video encoders can produce lower image quality or encoding performance when streaming in HDR compared
|
||||
to SDR.
|
||||
|
||||
* Additional information:
|
||||
Additional information:
|
||||
|
||||
@tabs{
|
||||
@tab{ Windows |
|
||||
- HDR streaming is supported for Intel, AMD, and NVIDIA GPUs that support encoding HEVC Main 10 or AV1 10-bit profiles.
|
||||
- We recommend calibrating the display by streaming the Windows HDR Calibration app to your client device and saving an HDR calibration profile to use while streaming.
|
||||
- Older games that use NVIDIA-specific NVAPI HDR rather than native Windows HDR support may not display properly in HDR.
|
||||
}
|
||||
|
||||
@tab{ Linux |
|
||||
- HDR streaming is supported for Intel and AMD GPUs that support encoding HEVC Main 10 or AV1 10-bit profiles using VAAPI.
|
||||
- The KMS capture backend is required for HDR capture. Other capture methods, like NvFBC or X11, do not support HDR.
|
||||
- You will need a desktop environment with a compositor that supports HDR rendering, such as Gamescope or KDE Plasma 6.
|
||||
|
||||
@seealso{[Arch wiki on HDR Support for Linux](https://wiki.archlinux.org/title/HDR_monitor_support) and
|
||||
[Reddit Guide for HDR Support for AMD GPUs](https://www.reddit.com/r/linux_gaming/comments/10m2gyx/guide_alpha_test_hdr_on_linux)}
|
||||
}
|
||||
@tabs{
|
||||
@tab{ Windows |
|
||||
- HDR streaming is supported for Intel, AMD, and NVIDIA GPUs that support encoding HEVC Main 10 or AV1 10-bit profiles.
|
||||
- We recommend calibrating the display by streaming the Windows HDR Calibration app to your client device and saving an HDR calibration profile to use while streaming.
|
||||
- Older games that use NVIDIA-specific NVAPI HDR rather than native Windows HDR support may not display properly in HDR.
|
||||
}
|
||||
|
||||
@tab{ Linux |
|
||||
- HDR streaming is supported for Intel and AMD GPUs that support encoding HEVC Main 10 or AV1 10-bit profiles using VAAPI.
|
||||
- The KMS capture backend is required for HDR capture. Other capture methods, like NvFBC or X11, do not support HDR.
|
||||
- You will need a desktop environment with a compositor that supports HDR rendering, such as Gamescope or KDE Plasma 6.
|
||||
|
||||
@seealso{[Arch wiki on HDR Support for Linux](https://wiki.archlinux.org/title/HDR_monitor_support) and
|
||||
[Reddit Guide for HDR Support for AMD GPUs](https://www.reddit.com/r/linux_gaming/comments/10m2gyx/guide_alpha_test_hdr_on_linux)}
|
||||
}
|
||||
}
|
||||
|
||||
### Tutorials and Guides
|
||||
Tutorial videos are available [here](https://www.youtube.com/playlist?list=PLMYr5_xSeuXAbhxYHz86hA1eCDugoxXY0).
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# Legal
|
||||
@attention{This documentation is for informational purposes only and is not intended as legal advice. If you have
|
||||
any legal questions or concerns about using Sunshine, we recommend consulting with a lawyer.}
|
||||
|
||||
> [!CAUTION]
|
||||
> This documentation is for informational purposes only and is not intended as legal advice. If you have
|
||||
> any legal questions or concerns about using Sunshine, we recommend consulting with a lawyer.
|
||||
|
||||
Sunshine is licensed under the GPL-3.0 license, which allows for free use and modification of the software.
|
||||
The full text of the license can be reviewed [here](https://github.com/LizardByte/Sunshine/blob/master/LICENSE).
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Third-Party Packages
|
||||
|
||||
@danger{These packages are not maintained by LizardByte. Use at your own risk.}
|
||||
> [!WARNING]
|
||||
> These packages are not maintained by LizardByte. Use at your own risk.
|
||||
|
||||
## Chocolatey
|
||||
[](https://community.chocolatey.org/packages/sunshine)
|
||||
|
||||
@@ -20,8 +20,9 @@ If you forgot your credentials to the web UI, try this.
|
||||
}
|
||||
}
|
||||
|
||||
@tip{Don't forget to replace `{new-username}` and `{new-password}` with your new credentials.
|
||||
Do not include the curly braces.}
|
||||
> [!TIP]
|
||||
> Remember to replace `{new-username}` and `{new-password}` with your new credentials.
|
||||
> Do not include the curly braces.
|
||||
|
||||
### Unusual Mouse Behavior
|
||||
If you experience unusual mouse behavior, try attaching a physical mouse to the Sunshine host.
|
||||
@@ -32,11 +33,11 @@ Can't access the web UI?
|
||||
1. Check firewall rules.
|
||||
|
||||
### Controller works on Steam but not in games
|
||||
One trick might be to change Steam settings and check or uncheck the configuration to support Xbox/Playstation
|
||||
One trick might be to change Steam settings and check or uncheck the configuration to support Xbox/PlayStation
|
||||
controllers and leave only support for Generic controllers.
|
||||
|
||||
Also, if you have many controllers already directly connected to the host, it might help to disable them so that the
|
||||
Sunshine provided controller (connected to the guest) is the "first" one. In Linux this can be accomplished on USB
|
||||
Sunshine-provided controller (connected to the guest) is the "first" one. In Linux this can be achieved on USB
|
||||
devices by finding the device in `/sys/bus/usb/devices/` and writing `0` to the `authorized` file.
|
||||
|
||||
### Network performance test
|
||||
@@ -53,7 +54,7 @@ On the Sunshine host `iperf3` is started in server mode:
|
||||
iperf3 -s
|
||||
```
|
||||
|
||||
On the client device iperf3 is asked to perform a 60-second UDP test in reverse
|
||||
On the client device iperf3 is asked to perform a 60-second UDP test in a reverse
|
||||
direction (from server to client) at a given bitrate (e.g. 50 Mbps):
|
||||
|
||||
```bash
|
||||
@@ -61,31 +62,31 @@ iperf3 -c {HostIpAddress} -t 60 -u -R -b 50M
|
||||
```
|
||||
|
||||
Watch the output on the client for packet loss and jitter values. Both should be
|
||||
(very) low. Ideally packet loss remains less than 5% and jitter below 1ms.
|
||||
(very) low. Ideally, packet loss remains less than 5% and jitter below 1 ms.
|
||||
|
||||
For Android clients use
|
||||
[PingMaster](https://play.google.com/store/apps/details?id=com.appplanex.pingmasternetworktools).
|
||||
|
||||
For iOS clients use [HE.NET Network Tools](https://apps.apple.com/us/app/he-net-network-tools/id858241710).
|
||||
|
||||
If you are testing a remote connection (over the internet) you will need to
|
||||
If you are testing a remote connection (over the internet), you will need to
|
||||
forward the port 5201 (TCP and UDP) from your host.
|
||||
|
||||
### Packet loss (Buffer overrun)
|
||||
If the host PC (running Sunshine) has a much faster connection to the network
|
||||
than the slowest segment of the network path to the client device (running
|
||||
Moonlight), massive packet loss can occur: Sunshine emits its stream in bursts
|
||||
every 16ms (for 60fps) but those bursts can't be passed on fast enough to the
|
||||
every 16 ms (for 60 fps), but those bursts can't be passed on fast enough to the
|
||||
client and must be buffered by one of the network devices inbetween. If the
|
||||
bitrate is high enough, these buffers will overflow and data will be discarded.
|
||||
|
||||
This can easily happen if e.g. the host has a 2.5 Gbit/s connection and the
|
||||
This can easily happen if e.g., the host has a 2.5 Gbit/s connection and the
|
||||
client only 1 Gbit/s or Wi-Fi. Similarly, a 1 Gbps host may be too fast for a
|
||||
client having only a 100 Mbps interface.
|
||||
|
||||
As a workaround the transmission speed of the host NIC can be reduced: 1 Gbps
|
||||
instead of 2.5 or 100 Mbps instead of 1 Gbps. A technically more advanced
|
||||
solution would be to configure traffic shaping rules at the OS-level, so that
|
||||
solution would be to configure traffic shaping rules at the OS level, so that
|
||||
only Sunshine's traffic is slowed down.
|
||||
|
||||
Such a solution on Linux could look like that:
|
||||
@@ -112,7 +113,7 @@ sudo tc filter add dev <NIC> protocol ip parent 1: prio 1 \
|
||||
```
|
||||
|
||||
In that way only the Sunshine traffic is limited by 1 Gbit. This is not persistent on reboots.
|
||||
If you use a different port for the game stream you need to adjust the last command.
|
||||
If you use a different port for the game stream, you need to adjust the last command.
|
||||
|
||||
Sunshine versions > 0.23.1 include improved networking code that should
|
||||
alleviate or even solve this issue (without reducing the NIC speed).
|
||||
@@ -120,7 +121,7 @@ alleviate or even solve this issue (without reducing the NIC speed).
|
||||
### Packet loss (MTU)
|
||||
Although unlikely, some guests might work better with a lower
|
||||
[MTU](https://en.wikipedia.org/wiki/Maximum_transmission_unit) from the host.
|
||||
For example, a LG TV was found to have 30-60% packet loss when the host had MTU
|
||||
For example, an LG TV was found to have 30–60% packet loss when the host had MTU
|
||||
set to 1500 and 1472, but 0% packet loss with a MTU of 1428 set in the network card
|
||||
serving the stream (a Linux PC). It's unclear how that helped precisely, so it's a last
|
||||
resort suggestion.
|
||||
@@ -134,19 +135,23 @@ Due to legal concerns, Mesa has disabled hardware decoding and encoding by defau
|
||||
Error: Could not open codec [h264_vaapi]: Function not implemented
|
||||
```
|
||||
|
||||
If you see the above error in the Sunshine logs, compiling *Mesa* manually, may be required. See the official Mesa3D
|
||||
If you see the above error in the Sunshine logs, compiling *Mesa* manually may be required. See the official Mesa3D
|
||||
[Compiling and Installing](https://docs.mesa3d.org/install.html) documentation for instructions.
|
||||
|
||||
@important{You must re-enable the disabled encoders. You can do so, by passing the following argument to the build
|
||||
system. You may also want to enable decoders, however that is not required for Sunshine and is not covered here.
|
||||
```bash
|
||||
-Dvideo-codecs=h264enc,h265enc
|
||||
```
|
||||
}
|
||||
> [!IMPORTANT]
|
||||
> You must re-enable the disabled encoders. You can do so by passing the following argument to the build
|
||||
> system. You may also want to enable decoders, however, that is not required for Sunshine and is not covered here.
|
||||
> ```bash
|
||||
> -Dvideo-codecs=h264enc,h265enc
|
||||
> ```
|
||||
|
||||
> [!NOTE]
|
||||
> Other build options are listed in the
|
||||
> [meson options](https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/meson_options.txt) file.
|
||||
|
||||
### Input not working
|
||||
After installation, the `udev` rules need to be reloaded. Our post-install script tries to do this for you
|
||||
automatically, but if it fails you may need to restart your system.
|
||||
automatically, but if it fails, you may need to restart your system.
|
||||
|
||||
If the input is still not working, you may need to add your user to the `input` group.
|
||||
|
||||
@@ -154,9 +159,6 @@ If the input is still not working, you may need to add your user to the `input`
|
||||
sudo usermod -aG input $USER
|
||||
```
|
||||
|
||||
@note{Other build options are listed in the
|
||||
[meson options](https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/meson_options.txt) file.}
|
||||
|
||||
### KMS Streaming fails
|
||||
If screencasting fails with KMS, you may need to run the following to force unprivileged screencasting.
|
||||
|
||||
@@ -164,9 +166,10 @@ If screencasting fails with KMS, you may need to run the following to force unpr
|
||||
sudo setcap -r $(readlink -f $(which sunshine))
|
||||
```
|
||||
|
||||
@note{The above command will not work with the AppImage or Flatpak packages. Please refer to the
|
||||
[AppImage setup](md_docs_2getting__started.html#appimage) or
|
||||
[Flatpak setup](md_docs_2getting__started.html#flatpak) for more specific instructions.}
|
||||
> [!NOTE]
|
||||
> The above command will not work with the AppImage or Flatpak packages. Please refer to the
|
||||
> [AppImage setup](md_docs_2getting__started.html#appimage) or
|
||||
> [Flatpak setup](md_docs_2getting__started.html#flatpak) for more specific instructions.
|
||||
|
||||
### KMS streaming fails on Nvidia GPUs
|
||||
If KMS screen capture results in a black screen being streamed, you may need to
|
||||
@@ -181,12 +184,12 @@ Consult your distribution's documentation for details on how to do this. (Most
|
||||
often grub is used to load the kernel and set its command line.)
|
||||
|
||||
### AMD encoding latency issues
|
||||
If you notice unexpectedly high encoding latencies (e.g. in Moonlight's
|
||||
If you notice unexpectedly high encoding latencies (e.g., in Moonlight's
|
||||
performance overlay) or strong fluctuations thereof, your system's Mesa
|
||||
libraries are outdated (<24.2). This is particularly problematic at higher
|
||||
resolutions (4K).
|
||||
|
||||
Starting with Mesa-24.2 applications can request a
|
||||
Starting with Mesa-24.2, applications can request a
|
||||
[low-latency mode](https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30039)
|
||||
by running them with a special
|
||||
[environment variable](https://docs.mesa3d.org/envvars.html#envvar-AMD_DEBUG):
|
||||
@@ -224,7 +227,7 @@ Verify that you've installed [Nefarius Virtual Gamepad](https://github.com/nefar
|
||||
|
||||
### Permission denied
|
||||
Since Sunshine runs as a service on Windows, it may not have the same level of access that your regular user account
|
||||
has. You may get permission denied errors when attempting to launch a game or application from a non system drive.
|
||||
has. You may get permission denied errors when attempting to launch a game or application from a non-system drive.
|
||||
|
||||
You will need to modify the security permissions on your disk. Ensure that user/principal SYSTEM has full
|
||||
permissions on the disk.
|
||||
|
||||
Reference in New Issue
Block a user