diff --git a/README.md b/README.md index a5346fc..43be0d9 100644 --- a/README.md +++ b/README.md @@ -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. diff --git a/src/color_conversion.c b/src/color_conversion.c index 06d3ebe..6d9f9d2 100644 --- a/src/color_conversion.c +++ b/src/color_conversion.c @@ -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]; diff --git a/src/egl.c b/src/egl.c index 9fd5925..3892cdc 100644 --- a/src/egl.c +++ b/src/egl.c @@ -11,6 +11,8 @@ #include "../external/wlr-export-dmabuf-unstable-v1-client-protocol.h" #include +// 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); }