aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2024-08-20 15:28:37 +0200
committerdec05eba <dec05eba@protonmail.com>2024-08-20 15:28:37 +0200
commit45a10baf5f46785383d6885ac602060d7d4caa1f (patch)
tree847eccd871a1dc600ee96141469177a606e2f690
parentfaf6ba69a0f3eeafb54ca761298c602649bf4b62 (diff)
Disable steam deck support at the moment because the driver is broken (ignores qp, capture tearing)
-rw-r--r--include/defs.h3
-rw-r--r--src/main.cpp10
-rw-r--r--src/utils.c2
3 files changed, 15 insertions, 0 deletions
diff --git a/include/defs.h b/include/defs.h
index 473583c..d2d0572 100644
--- a/include/defs.h
+++ b/include/defs.h
@@ -1,6 +1,8 @@
#ifndef GSR_DEFS_H
#define GSR_DEFS_H
+#include <stdbool.h>
+
typedef enum {
GSR_GPU_VENDOR_AMD,
GSR_GPU_VENDOR_INTEL,
@@ -10,6 +12,7 @@ typedef enum {
typedef struct {
gsr_gpu_vendor vendor;
int gpu_version; /* 0 if unknown */
+ bool is_known_broken_driver;
} gsr_gpu_info;
typedef enum {
diff --git a/src/main.cpp b/src/main.cpp
index 9ac958a..88eb536 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1843,6 +1843,11 @@ static void info_command() {
_exit(22);
}
+ if(egl.gpu_info.is_known_broken_driver) {
+ fprintf(stderr, "gsr error: recording is not supported on your device because your device has broken drivers\n");
+ _exit(14);
+ }
+
egl.card_path[0] = '\0';
if(monitor_capture_use_drm(&egl, wayland)) {
// TODO: Allow specifying another card, and in other places
@@ -2758,6 +2763,11 @@ int main(int argc, char **argv) {
_exit(1);
}
+ if(egl.gpu_info.is_known_broken_driver) {
+ fprintf(stderr, "gsr error: recording is not supported on your device because your device has broken drivers\n");
+ _exit(14);
+ }
+
bool very_old_gpu = false;
if(egl.gpu_info.vendor == GSR_GPU_VENDOR_NVIDIA && egl.gpu_info.gpu_version != 0 && egl.gpu_info.gpu_version < 900) {
diff --git a/src/utils.c b/src/utils.c
index b73216a..84c8707 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -377,6 +377,7 @@ bool gl_get_gpu_info(gsr_egl *egl, gsr_gpu_info *info) {
const unsigned char *gl_renderer = egl->glGetString(GL_RENDERER);
info->gpu_version = 0;
+ info->is_known_broken_driver = false;
if(!gl_vendor) {
fprintf(stderr, "gsr error: failed to get gpu vendor\n");
@@ -409,6 +410,7 @@ bool gl_get_gpu_info(gsr_egl *egl, gsr_gpu_info *info) {
if(gl_renderer) {
if(info->vendor == GSR_GPU_VENDOR_NVIDIA)
sscanf((const char*)gl_renderer, "%*s %*s %*s %d", &info->gpu_version);
+ info->is_known_broken_driver = strstr((const char*)gl_renderer, "vangogh") != NULL;
}
end: