vfr on wayland (even on nvidia), add uninstall script
This commit is contained in:
parent
de019711d1
commit
8cd0ae0162
@ -41,11 +41,11 @@ If you install GPU Screen Recorder flatpak, which is the gtk gui version then yo
|
||||
|
||||
# Dependencies
|
||||
## AMD
|
||||
`libglvnd (which provides libgl and libegl), mesa, ffmpeg (libavcodec, libavformat, libavutil, libswresample, libavfilter), libx11, libxcomposite, libxrandr, libxfixes, libpulse, libva, libva-mesa-driver, libdrm, libcap, polkit (for pkexec), wayland-client, wayland-egl`.
|
||||
`libglvnd (which provides libgl and libegl), mesa, ffmpeg (libavcodec, libavformat, libavutil, libswresample, libavfilter), libx11, libxcomposite, libxrandr, libxfixes, libpulse, libva, libva-mesa-driver, libdrm, libcap, polkit (for pkexec), wayland-client`.
|
||||
## Intel
|
||||
`libglvnd (which provides libgl and libegl), mesa, ffmpeg (libavcodec, libavformat, libavutil, libswresample, libavfilter), libx11, libxcomposite, libxrandr, libxfixes, libpulse, libva, libva-intel-driver, libdrm, libcap, polkit (for pkexec), wayland-client, wayland-egl`.
|
||||
`libglvnd (which provides libgl and libegl), mesa, ffmpeg (libavcodec, libavformat, libavutil, libswresample, libavfilter), libx11, libxcomposite, libxrandr, libxfixes, libpulse, libva, libva-intel-driver, libdrm, libcap, polkit (for pkexec), wayland-client`.
|
||||
## NVIDIA
|
||||
`libglvnd (which provides libgl and libegl), ffmpeg (libavcodec, libavformat, libavutil, libswresample, libavfilter), libx11, libxcomposite, libxrandr, libxfixes, libpulse, cuda (libnvidia-compute), nvenc (libnvidia-encode), libva, libdrm, libcap, polkit (for pkexec, only on wayland), wayland-client, wayland-egl`. Additionally, you need to have `nvfbc (libnvidia-fbc1)` installed when using nvfbc and `xnvctrl (libxnvctrl0)` when using the `-oc` option.
|
||||
`libglvnd (which provides libgl and libegl), ffmpeg (libavcodec, libavformat, libavutil, libswresample, libavfilter), libx11, libxcomposite, libxrandr, libxfixes, libpulse, cuda runtime (libcuda.so.1) (libnvidia-compute), nvenc (libnvidia-encode), libva, libdrm, libcap, polkit (for pkexec, only on wayland), wayland-client`. Additionally, you need to have `nvfbc (libnvidia-fbc1)` installed when using nvfbc and `xnvctrl (libxnvctrl0)` when using the `-oc` option.
|
||||
|
||||
# How to use
|
||||
Run `gpu-screen-recorder --help` to see all options.
|
||||
|
2
TODO
2
TODO
@ -84,3 +84,5 @@ Capture cursor on amd/intel wayland without xwayland.
|
||||
When nvidia supports hardware cursor then capture the cursor. Right now the cursor is captured because it's a software cursor so it's composed on the dma buf.
|
||||
CPU usage is pretty high on AMD/Intel/(Nvidia(wayland)), why? opening and closing fds, creating egl, cuda association, is slow when done every frame. Test if desktop portal screencast has better performance.
|
||||
Cursor on amd/intel wayland only shows up when the cursor is above xwayland applications.
|
||||
|
||||
Test if everything works fine on amd/intel, if it works fine with kms/wlroots, if it works fine with scaling and finally modify gtk gui to list monitors from wlroots/etc.
|
@ -55,7 +55,6 @@ typedef void (*__eglMustCastToProperFunctionPointerType)(void);
|
||||
#define EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT 0x3444
|
||||
#define EGL_LINUX_DMA_BUF_EXT 0x3270
|
||||
#define EGL_OPENGL_API 0x30A2
|
||||
#define EGL_OPENGL_ES_API 0x30A0
|
||||
#define EGL_RED_SIZE 0x3024
|
||||
#define EGL_ALPHA_SIZE 0x3021
|
||||
#define EGL_BLUE_SIZE 0x3022
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/sh -e
|
||||
|
||||
script_dir=$(dirname "$0")
|
||||
cd "$script_dir"
|
||||
|
@ -249,7 +249,7 @@ static bool gsr_egl_create_window(gsr_egl *self, bool wayland) {
|
||||
}
|
||||
}
|
||||
|
||||
self->eglBindAPI(EGL_OPENGL_ES_API);
|
||||
self->eglBindAPI(EGL_OPENGL_ES2_BIT);
|
||||
|
||||
self->egl_display = self->eglGetDisplay(self->wayland.dpy ? (EGLNativeDisplayType)self->wayland.dpy : (EGLNativeDisplayType)self->x11.dpy);
|
||||
if(!self->egl_display) {
|
||||
|
@ -1326,10 +1326,11 @@ int main(int argc, char **argv) {
|
||||
|
||||
// TODO: Fix constant framerate not working properly on amd/intel because capture framerate gets locked to the same framerate as
|
||||
// game framerate, which doesn't work well when you need to encode multiple duplicate frames (AMD/Intel is slow at encoding!).
|
||||
// It also appears to skip audio frames on nvidia wayland? why? that should be fine, but it causes video stuttering because of audio/video sync.
|
||||
FramerateMode framerate_mode;
|
||||
const char *framerate_mode_str = args["-fm"].value();
|
||||
if(!framerate_mode_str)
|
||||
framerate_mode_str = gpu_inf.vendor == GSR_GPU_VENDOR_NVIDIA ? "cfr" : "vfr";
|
||||
framerate_mode_str = (gpu_inf.vendor == GSR_GPU_VENDOR_NVIDIA && !wayland) ? "cfr" : "vfr";
|
||||
|
||||
if(strcmp(framerate_mode_str, "cfr") == 0) {
|
||||
framerate_mode = FramerateMode::CONSTANT;
|
||||
|
9
uninstall.sh
Executable file
9
uninstall.sh
Executable file
@ -0,0 +1,9 @@
|
||||
#!/bin/sh
|
||||
|
||||
[ $(id -u) -ne 0 ] && echo "You need root privileges to run the uninstall script" && exit 1
|
||||
|
||||
rm -f "/usr/local/bin/gpu-screen-recorder"
|
||||
rm -f "/usr/bin/gsr-kms-server"
|
||||
rm -f "/usr/bin/gpu-screen-recorder"
|
||||
|
||||
echo "Successfully uninstalled gpu-screen-recorder"
|
Loading…
Reference in New Issue
Block a user