aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2023-07-21 18:56:34 +0200
committerdec05eba <dec05eba@protonmail.com>2023-07-21 18:56:34 +0200
commita1d31a5cf0b90d3afabc57d5a6f4ccdfb1eeb054 (patch)
tree52376ebfde02b88b624e43c1d08f06fd512e599a /include
parent5a9673b1d751ca82f33db31c443dd2eb53cf693b (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.h1
-rw-r--r--include/capture/kms_vaapi.h1
-rw-r--r--include/capture/nvfbc.h2
-rw-r--r--include/capture/xcomposite_cuda.h2
-rw-r--r--include/capture/xcomposite_vaapi.h2
-rw-r--r--include/utils.h5
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);