aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md2
-rw-r--r--include/defs.h3
-rw-r--r--src/main.cpp10
-rw-r--r--src/utils.c2
4 files changed, 15 insertions, 2 deletions
diff --git a/README.md b/README.md
index b437465..6b42d17 100644
--- a/README.md
+++ b/README.md
@@ -185,3 +185,5 @@ To fix this you can either record the video in .mkv format or constant frame rat
## Colors look incorrect when recording HDR (with hevc_hdr/av1_hdr) or using an ICC profile
KDE Plasma version 6.2 broke HDR and ICC profiles for screen recorders. This was changed in KDE plasma version 6.3 and recording HDR works now, as long as you set HDR brightness to 100% (which means setting "Maximum SDR Brightness" in KDE plasma display settings to 203) and set color accuracy to "Prefer color accuracy". If you want to convert HDR to SDR then record with desktop portal option (`-w portal`) instead.
I don't know how well recording HDR works in wayland compositors other than KDE plasma.
+## GPU Screen Recorder starts lagging after 30-40 minutes when launching GPU Screen Recorder from steam command launcher
+This is a [steam issue](https://github.com/ValveSoftware/steam-for-linux/issues/11446). Prepend the gpu-screen-recorder command with `LD_PREFIX=""`, for example `LD_PREFIX="" gpu-screen-recorder -w screen -o video.mp4`. \ No newline at end of file
diff --git a/include/defs.h b/include/defs.h
index 76e798e..365a6e2 100644
--- a/include/defs.h
+++ b/include/defs.h
@@ -6,7 +6,8 @@
typedef enum {
GSR_GPU_VENDOR_AMD,
GSR_GPU_VENDOR_INTEL,
- GSR_GPU_VENDOR_NVIDIA
+ GSR_GPU_VENDOR_NVIDIA,
+ GSR_GPU_VENDOR_BROADCOM
} gsr_gpu_vendor;
typedef struct {
diff --git a/src/main.cpp b/src/main.cpp
index 5669d17..9f0847e 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1922,7 +1922,8 @@ static gsr_video_encoder* create_video_encoder(gsr_egl *egl, bool overclock, gsr
switch(egl->gpu_info.vendor) {
case GSR_GPU_VENDOR_AMD:
- case GSR_GPU_VENDOR_INTEL: {
+ case GSR_GPU_VENDOR_INTEL:
+ case GSR_GPU_VENDOR_BROADCOM: {
gsr_video_encoder_vaapi_params params;
params.egl = egl;
params.color_depth = color_depth;
@@ -1956,6 +1957,7 @@ static bool get_supported_video_codecs(gsr_egl *egl, VideoCodec video_codec, boo
switch(egl->gpu_info.vendor) {
case GSR_GPU_VENDOR_AMD:
case GSR_GPU_VENDOR_INTEL:
+ case GSR_GPU_VENDOR_BROADCOM:
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, cleanup);
@@ -2029,6 +2031,9 @@ static void list_gpu_info(gsr_egl *egl) {
case GSR_GPU_VENDOR_NVIDIA:
printf("vendor|nvidia\n");
break;
+ case GSR_GPU_VENDOR_BROADCOM:
+ printf("vendor|broadcom\n");
+ break;
}
printf("card_path|%s\n", egl->card_path);
}
@@ -2369,6 +2374,9 @@ static bool gpu_vendor_from_string(const char *vendor_str, gsr_gpu_vendor *vendo
} else if(strcmp(vendor_str, "nvidia") == 0) {
*vendor = GSR_GPU_VENDOR_NVIDIA;
return true;
+ } else if(strcmp(vendor_str, "broadcom") == 0) {
+ *vendor = GSR_GPU_VENDOR_BROADCOM;
+ return true;
} else {
return false;
}
diff --git a/src/utils.c b/src/utils.c
index f053eed..325f750 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -396,6 +396,8 @@ bool gl_get_gpu_info(gsr_egl *egl, gsr_gpu_info *info) {
info->vendor = GSR_GPU_VENDOR_INTEL;
else if(strstr((const char*)gl_vendor, "NVIDIA"))
info->vendor = GSR_GPU_VENDOR_NVIDIA;
+ else if(strstr((const char*)gl_vendor, "Broadcom"))
+ info->vendor = GSR_GPU_VENDOR_BROADCOM;
else {
fprintf(stderr, "gsr error: unknown gpu vendor: %s\n", gl_vendor);
supported = false;