This commit is contained in:
dec05eba 2023-07-24 13:00:15 +02:00
parent 64a301a279
commit 44f84748f8
3 changed files with 7 additions and 2 deletions

View File

@ -8,7 +8,9 @@ where only the last few seconds are saved.
## Note
This software works with x11 and wayland, but when using AMD/Intel or Wayland then only monitors can be recorded and root access is required. An authentication window will show up automatically if you have a polkit agent running and pkexec installed.\
If you are using a variable refresh rate monitor on nvidia on x11 then choose to record "screen-direct-force". This will allow variable refresh rate to work when recording fullscreen applications. Note that some applications such as mpv will not work in fullscreen mode. A fix is being developed for this.\
GPU Screen Recorder only supports h264 and hevc codecs at the moment which means that webm files are not supported.
GPU Screen Recorder only supports h264 and hevc codecs at the moment which means that webm files are not supported.\
CPU usage is much higher on wayland than on x11 when using nvidia. This is likely a nvidia driver issue. GPU Screen Recorder is still the fastest
screen recorder on wayland, but x11 is recommended for nvidia users (in general).
### TEMPORARY ISSUES
1) screen-direct capture has been temporary disabled as it causes issues with stuttering. This might be a nvfbc bug.
2) Recording the monitor on steam deck might fail sometimes. This happens even when using ffmpeg directly. This might be a steam deck driver bug. Recording a single window doesn't have this issue.

View File

@ -21,7 +21,7 @@ static float abs_f(float v) {
#define RGB_TO_YUV "const mat4 RGBtoYUV = mat4(0.2126, 0.5000, -0.1146, 0.0,\n" \
" 0.7152, -0.4542, -0.3854, 0.0,\n" \
" 0.0722, -0.0468, 0.5000, 0.0,\n" \
" 0.0, 0.500, 0.500, 1.0);"
" 0.0000, 0.5000, 0.5000, 1.0);"
static int load_shader_rgb(gsr_shader *shader, gsr_egl *egl, int *rotation_uniform) {
char vertex_shader[2048];

View File

@ -11,6 +11,8 @@
#include "../external/wlr-export-dmabuf-unstable-v1-client-protocol.h"
#include <unistd.h>
// Move this shit to a separate wayland file, and have a separate file for x11.
static void output_handle_geometry(void *data, struct wl_output *wl_output,
int32_t x, int32_t y, int32_t phys_width, int32_t phys_height,
int32_t subpixel, const char *make, const char *model,
@ -566,6 +568,7 @@ void gsr_egl_update(gsr_egl *self) {
if(!self->wayland.dpy)
return;
// TODO: pselect on wl_display_get_fd before doing dispatch
wl_display_dispatch(self->wayland.dpy);
}