Take screenshot with XGetImage on x11 to workaround nvidia driver (nvfbc) limitation that only allows one nvfbc session at a time

This commit is contained in:
dec05eba
2025-03-13 22:34:29 +01:00
parent f63409bdd7
commit b0de8588f2
21 changed files with 403 additions and 146 deletions

View File

@@ -5,9 +5,7 @@
typedef struct {
gsr_egl *egl;
const char *display_to_capture; /* if this is "screen", then the first monitor is captured. A copy is made of this */
gsr_color_depth color_depth;
gsr_color_range color_range;
const char *display_to_capture; /* A copy is made of this */
bool hdr;
bool record_cursor;
int fps;

View File

@@ -11,8 +11,6 @@ typedef struct {
vec2i pos;
vec2i size;
bool direct_capture;
gsr_color_depth color_depth;
gsr_color_range color_range;
bool record_cursor;
vec2i output_resolution;
vec2i region_size;

View File

@@ -5,8 +5,6 @@
typedef struct {
gsr_egl *egl;
gsr_color_depth color_depth;
gsr_color_range color_range;
bool record_cursor;
bool restore_portal_session;
/* If this is set to NULL then this defaults to $XDG_CONFIG_HOME/gpu-screen-recorder/restore_token ($XDG_CONFIG_HOME defaults to $HOME/.config) */

View File

@@ -8,9 +8,7 @@ typedef struct {
gsr_egl *egl;
unsigned long window;
bool follow_focused; /* If this is set then |window| is ignored */
gsr_color_range color_range;
bool record_cursor;
gsr_color_depth color_depth;
vec2i output_resolution;
} gsr_capture_xcomposite_params;

18
include/capture/ximage.h Normal file
View File

@@ -0,0 +1,18 @@
#ifndef GSR_CAPTURE_XIMAGE_H
#define GSR_CAPTURE_XIMAGE_H
#include "capture.h"
#include "../vec2.h"
typedef struct {
gsr_egl *egl;
const char *display_to_capture; /* A copy is made of this */
bool record_cursor;
vec2i output_resolution;
vec2i region_size;
vec2i region_position;
} gsr_capture_ximage_params;
gsr_capture* gsr_capture_ximage_create(const gsr_capture_ximage_params *params);
#endif /* GSR_CAPTURE_XIMAGE_H */