## 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>
## Description
**What issue are you solving (or what feature are you adding) and how
are you doing it?**
This PR is the first in a series of PRs trying to solve the issue #48 by
renaming `Netris` to `Nestri` to avoid Trademark legal issues.
## Description
**What issue are you solving (or what feature are you adding) and how
are you doing it?**
This is a catch all PR that tries to smooth out the creases found while
playing using Netris.
What i have found so far:
1. Change `NAME` environment to `SESSION_ID` for warp server.
2. Run `entrypoint.sh` and `warp-input` as user `netris`
3. Netris-proton is broken, it quits prematurely. I think it has to be a
problem with a missing wine installation
## Description
**What issue are you solving (or what feature are you adding) and how
are you doing it?**
We need to remove the inputtino server, and replace it with `warp-input`
server, which is developed in-house and it works.
## Description
**What issue are you solving (or what feature are you adding) and how
are you doing it?**
We start the container using supervisord, which is limiting as the user
has no way of telling the container what game to run. So, the idea is to
run like so: `docker run... ghcr.io/netrisdotme/netris/server:<tag>
netris-proton /game/yourgame.exe`
Co-authored by @djpremier
## Description
**What issue are you solving (or what feature are you adding) and how
are you doing it?**
With help from @djpremier, rename `/usr/bin/netris/proton` as "the
script cannot be found in bash `(eg.: $ proton -r /games/AlanWake.exe)`
if it is in the subdirectory of /usr/bin, probably because it is found
in a subdir inside `/usr/bin` "
## Description
**What(what issue does this code solve/what feature does it add):**
**How(how does it solve it):**
## Required Checklist:
- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts
## Further comments
## Description
**What(what issue does this code solve/what feature does it add):**
We need to support feedback for mouse and keyboard.
**How(how does it solve it):**
## Required Checklist:
- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts
## Further comments
## Description
**What(what issue does this code solve/what feature does it add):**
**How(how does it solve it):**
## Required Checklist:
- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts
## Further comments
## Description
**What(what issue does this code solve/what feature does it add):**
**How(how does it solve it):**
## Required Checklist:
- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts
## Further comments
## Description
**What(what issue does this code solve/what feature does it add):**
Build times for netris:server are way too long. so the idea is to move
warp into it's own container then build from there.
Later on first release we might drop this for a better solution.
**How(how does it solve it):**
1. Added the very own netris:warp
## Required Checklist:
- [x] I have added any necessary documentation and comments in my code
(where appropriate)
- [x] I have added tests to make sure my code runs in all contexts
## Further comments
## Description
**What(what issue does this code solve/what feature does it add):**
Docker build server fails because `supervisord.conf` is getting copied
to a different directory other than `/etc`
**How(how does it solve it):**
## Required Checklist:
- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts
## Further comments
## Description
**What(what issue does this code solve/what feature does it add):**
**How(how does it solve it):**
## Required Checklist:
- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts
## Further comments
## Description
**What(what issue does this code solve/what feature does it add):**
We do not need the ffmpeg and recorder all sitting differently, as this
will increase our docker image size
**How(how does it solve it):**
## Required Checklist:
- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts
## Further comments
## Description
**What(what issue does this code solve/what feature does it add):**
**How(how does it solve it):**
## Required Checklist:
- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts
## Further comments
## Description
**What(what issue does this code solve/what feature does it add):**
We succesfully built the gpu-screen-recorder in a separate container...
now we need to add it into the main container
**How(how does it solve it):**
1. Copy the relevant user/bin files from the separate docker image
2.
## Required Checklist:
- [x] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts
## Further comments
## Description
**What(what issue does this code solve/what feature does it add):**
We do not have a way to capture sound inside the container.
**How(how does it solve it):**
1. Install pulseaudio inside the container
2. Add an entrypoint.sh where we start the pulseaudio
## Required Checklist:
- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts
## Further comments
## Description
**What(what issue does this code solve/what feature does it add):**
So, we have our simple compositor (`gamescope`), now we need a way to
capture audio and video.
And i have found this "performant" **_citation needed_ ** and minimal
screen recorder, which has the capability to even capture 30 second
screen snippets.
**How(how does it solve it):**
1. Add a minimal step inside the DockerFile to build and install the
gpu-screen-recorder
## Required Checklist:
- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts
## Further comments
## Description
**What(what issue does this code solve/what feature does it add):**
We are adding mangohud (to show GPU usage), gamemode (for optimisations)
and gamescope (as our compositor)
**How(how does it solve it):**
1. Apt install mangohud
2. Install gamescope from flatpak
3. And then build gamemode
## Required Checklist:
- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts
## Further comments
## Description
**What(what issue does this code solve/what feature does it add):**
We have no display server inside the container, nor Vulkan which will
later be required by dxvk/d3d11/d3d12 in order to play games using
Proton.
**How(how does it solve it):**
1. We added vulkan and Xwayland packages into `server.Dockerfile` , then
tested with running `vkcube` and `vulkaninfo` after running an
interactive bash shell inside the container.
## Required Checklist:
- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts
## Further comments
## Description
**What(what issue does this code solve/what feature does it add):**
Currently on `docker run --gpus 1 netris:server` and run `nvidia-smi`
you get an error.
**How(how does it solve it):**
We add the relevant NVIDIA_* env variables to allow for gpu passthrough.
## Required Checklist:
- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts
## Further comments
Co-authored-by: Wanjohi <71614375+wanjohiryan@usersnoreply.github.com>
## Description
**What(what issue does this code solve/what feature does it add):**
We are adding the `Dockerfile` with all the scripts and programs to run
our games in.
**How(how does it solve it):**
1. Add `serverDockerfile` which contains all the docker code.
2. Add `.scripts` folder where we will store all the scripts; for
example in our case, where proton installation script will reside.
## Required Checklist:
- [ ] I have added any necessary documentation and comments in my code
(where appropriate)
- [ ] I have added tests to make sure my code runs in all contexts
## Further comments