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.
This commit is contained in:
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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| */
|
||||
|
||||
@@ -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| */
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user