diff options
author | dec05eba <dec05eba@protonmail.com> | 2023-07-21 18:56:34 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2023-07-21 18:56:34 +0200 |
commit | a1d31a5cf0b90d3afabc57d5a6f4ccdfb1eeb054 (patch) | |
tree | 52376ebfde02b88b624e43c1d08f06fd512e599a /include | |
parent | 5a9673b1d751ca82f33db31c443dd2eb53cf693b (diff) |
Fix capture not working on intel + wayland
Ignore nouveau cards.
Fix lag on start of recording on amd/intel by only loading egl once,
on startup.
Diffstat (limited to 'include')
-rw-r--r-- | include/capture/kms_cuda.h | 1 | ||||
-rw-r--r-- | include/capture/kms_vaapi.h | 1 | ||||
-rw-r--r-- | include/capture/nvfbc.h | 2 | ||||
-rw-r--r-- | include/capture/xcomposite_cuda.h | 2 | ||||
-rw-r--r-- | include/capture/xcomposite_vaapi.h | 2 | ||||
-rw-r--r-- | include/utils.h | 5 |
6 files changed, 12 insertions, 1 deletions
diff --git a/include/capture/kms_cuda.h b/include/capture/kms_cuda.h index e34802e..b631226 100644 --- a/include/capture/kms_cuda.h +++ b/include/capture/kms_cuda.h @@ -8,6 +8,7 @@ typedef struct _XDisplay Display; typedef struct { + gsr_egl *egl; const char *display_to_capture; /* if this is "screen", then the entire x11 screen is captured (all displays). A copy is made of this */ gsr_gpu_info gpu_inf; const char *card_path; /* reference */ diff --git a/include/capture/kms_vaapi.h b/include/capture/kms_vaapi.h index e7bd652..77b292a 100644 --- a/include/capture/kms_vaapi.h +++ b/include/capture/kms_vaapi.h @@ -8,6 +8,7 @@ typedef struct _XDisplay Display; typedef struct { + gsr_egl *egl; const char *display_to_capture; /* if this is "screen", then the entire x11 screen is captured (all displays). A copy is made of this */ gsr_gpu_info gpu_inf; const char *card_path; /* reference */ diff --git a/include/capture/nvfbc.h b/include/capture/nvfbc.h index 431777b..5678473 100644 --- a/include/capture/nvfbc.h +++ b/include/capture/nvfbc.h @@ -2,12 +2,14 @@ #define GSR_CAPTURE_NVFBC_H #include "capture.h" +#include "../egl.h" #include "../vec2.h" typedef struct _XDisplay Display; typedef struct { Display *dpy; + gsr_egl *egl; const char *display_to_capture; /* if this is "screen", then the entire x11 screen is captured (all displays). A copy is made of this */ int fps; vec2i pos; diff --git a/include/capture/xcomposite_cuda.h b/include/capture/xcomposite_cuda.h index 20d358e..547a6f3 100644 --- a/include/capture/xcomposite_cuda.h +++ b/include/capture/xcomposite_cuda.h @@ -2,12 +2,14 @@ #define GSR_CAPTURE_XCOMPOSITE_CUDA_H #include "capture.h" +#include "../egl.h" #include "../vec2.h" #include <X11/X.h> typedef struct _XDisplay Display; typedef struct { + gsr_egl *egl; Window window; bool follow_focused; /* If this is set then |window| is ignored */ vec2i region_size; /* This is currently only used with |follow_focused| */ diff --git a/include/capture/xcomposite_vaapi.h b/include/capture/xcomposite_vaapi.h index 6cf30c3..bba485b 100644 --- a/include/capture/xcomposite_vaapi.h +++ b/include/capture/xcomposite_vaapi.h @@ -2,12 +2,14 @@ #define GSR_CAPTURE_XCOMPOSITE_VAAPI_H #include "capture.h" +#include "../egl.h" #include "../vec2.h" #include <X11/X.h> typedef struct _XDisplay Display; typedef struct { + gsr_egl *egl; Window window; bool follow_focused; /* If this is set then |window| is ignored */ vec2i region_size; /* This is currently only used with |follow_focused| */ diff --git a/include/utils.h b/include/utils.h index 32977a1..392591a 100644 --- a/include/utils.h +++ b/include/utils.h @@ -2,6 +2,7 @@ #define GSR_UTILS_H #include "vec2.h" +#include "../include/egl.h" #include <stdbool.h> #include <stdint.h> #include <X11/extensions/Xrandr.h> @@ -45,10 +46,12 @@ typedef void (*active_monitor_callback)(const gsr_monitor *monitor, void *userda void for_each_active_monitor_output(void *connection, gsr_connection_type connection_type, active_monitor_callback callback, void *userdata); bool get_monitor_by_name(void *connection, gsr_connection_type connection_type, const char *name, gsr_monitor *monitor); -bool gl_get_gpu_info(Display *dpy, gsr_gpu_info *info, bool wayland); +bool gl_get_gpu_info(gsr_egl *egl, gsr_gpu_info *info); /* |output| should be at least 128 bytes in size */ bool gsr_get_valid_card_path(char *output); +/* |render_path| should be at least 128 bytes in size */ +bool gsr_card_path_get_render_path(const char *card_path, char *render_path); int even_number_ceil(int value); |