Allow unknown (unsupported) gpu vendors to run

This commit is contained in:
dec05eba committed 2026-10-23 12:34:09 +02:00
1 parent fc887bd506
commit ee2c6ca1e0
5 files changed
+12 -4

No files matched your search

+2
View File
@@ -350,3 +350,5 @@ This appears to be a bug in wlroots or sway. Capturing a window instead fixes th
GPU Screen Recorder doesn't have the option to do that yet, but you can change the volume by starting recording and then open `pavucontrol`, go to the `Recording` tab and set the volume there. The system will remember the settings even after reboot, as long as the audio capture options remain the same.
## My game and recorded video is stuttering but my frame rate is high
This is an issue with linux kernel graphics scheduling when the gpu usage is 99-100%. The only workaround at the moment is to either run X11 with the compositor disabled or on Wayland it may work if you disable the screen tearing option in the desktop environment/compositor display settings and/or enable vsync in the game.
## DisplayLink doesn't work
GPU Screen Recorder doesn't support DisplayLink at the moment with monitor capture. On X11 it may still work, if it doesn't you can record a window instead (`-w <window_id>`). On Wayland you have to record with desktop portal instead (`-w portal`).
+2 -1
View File
@@ -11,7 +11,8 @@ typedef enum {
GSR_GPU_VENDOR_INTEL,
GSR_GPU_VENDOR_NVIDIA,
GSR_GPU_VENDOR_BROADCOM,
GSR_GPU_VENDOR_APPLE
GSR_GPU_VENDOR_APPLE,
GSR_GPU_VENDOR_UNKNOWN,
} gsr_gpu_vendor;
typedef struct {
+3
View File
@@ -58,6 +58,9 @@ static void list_gpu_info(gsr_egl *egl) {
case GSR_GPU_VENDOR_APPLE:
printf("vendor|apple\n");
break;
case GSR_GPU_VENDOR_UNKNOWN:
printf("vendor|unknown\n");
break;
}
printf("card_path|%s\n", egl->card_path);
}
+3 -1
View File
@@ -37,7 +37,8 @@ gsr_video_encoder* create_video_encoder(gsr_egl *egl, const gsr_recorder_setting
case GSR_GPU_VENDOR_AMD:
case GSR_GPU_VENDOR_INTEL:
case GSR_GPU_VENDOR_BROADCOM:
case GSR_GPU_VENDOR_APPLE: {
case GSR_GPU_VENDOR_APPLE:
case GSR_GPU_VENDOR_UNKNOWN: {
gsr_video_encoder_vaapi_params params;
params.egl = egl;
params.color_depth = color_depth;
@@ -73,6 +74,7 @@ bool get_supported_video_codecs(gsr_egl *egl, gsr_video_codec video_codec, bool
case GSR_GPU_VENDOR_INTEL:
case GSR_GPU_VENDOR_BROADCOM:
case GSR_GPU_VENDOR_APPLE:
case GSR_GPU_VENDOR_UNKNOWN:
return gsr_get_supported_video_codecs_vaapi(video_codecs, egl->card_path, cleanup);
case GSR_GPU_VENDOR_NVIDIA:
return gsr_get_supported_video_codecs_nvenc(video_codecs, egl->card_path, cleanup);
+2 -2
View File
@@ -498,8 +498,8 @@ bool gl_get_gpu_info(gsr_egl *egl, gsr_gpu_info *info) {
else if(strstr(gl_vendor, "Mesa") && gl_renderer && strstr(gl_renderer, "Apple"))
info->vendor = GSR_GPU_VENDOR_APPLE;
else {
gsr_log(GSR_LOG_LEVEL_ERROR, "unknown gpu vendor: %s, renderer: %s", gl_vendor, gl_renderer ? gl_renderer : "Unknown");
return false;
gsr_log(GSR_LOG_LEVEL_WARNING, "unknown (unsupported) gpu vendor: %s, renderer: %s, recording may not work but continuing anyways", gl_vendor, gl_renderer ? gl_renderer : "Unknown");
info->vendor = GSR_GPU_VENDOR_UNKNOWN;
}
if(gl_renderer) {