feat(server): Add Intel/AMD GPU support (#84)

## Description

### This is a DRAFT - Changes will be discussed and made upon requests!

In nutshell, this adds support for running Nestri with Intel and AMD
GPU's. Both integrated and dedicated.

It took a few days to find a trick for having output without dummy plugs
or connected displays, but I think I got it.

`gpu-screen-recorder` requires a custom patch to skip the check for
connected displays (as we're using a xrandr workaround which makes them
stay "unconnected")

Most likely fixes #68

### Changes

The NVIDIA sections have been split in their own code branches since
there's some NVIDIA specific things I didn't feel approriate to poke
more than necessary for the goal of this PR.

Added a script with helper functions related to GPU discovery and
gathering some basic info off from them (note: it might be better to
declare the helper script arrays outside it's initially run function).
The helper scripts rely on `lshw`.

NVIDIA code was slightly adjusted to use the bus-id's provided by the
helper functions to have some code re-use.

Cleaned up few things on the side.

---------

Co-authored-by: Kristian Ollikainen <DatCaptainHorse@users.noreply.github.com>
Co-authored-by: Wanjohi <71614375+wanjohiryan@users.noreply.github.com>
This commit is contained in:
Kristian Ollikainen
2024-07-07 11:06:48 +03:00
committed by GitHub
parent b12b26223c
commit cf69f6c93a
5 changed files with 441 additions and 60 deletions

View File

@@ -20,6 +20,7 @@ RUN apt-get update -y \
mangohud \
gamescope \
openbox \
lshw \
&& setcap cap_sys_nice+ep /usr/games/gamescope \
&& rm -rf /var/lib/apt/lists/*
@@ -84,4 +85,4 @@ EXPOSE 8080/udp
WORKDIR /home/${USERNAME}
ENTRYPOINT ["/usr/bin/supervisord"]
ENTRYPOINT ["/usr/bin/supervisord"]