mirror of
https://repo.dec05eba.com/gpu-screen-recorder
synced 2026-04-19 16:35:47 +09:00
Fix missing color range set in color conversion for nvidia window capture
This commit is contained in:
@@ -204,14 +204,11 @@ static unsigned int gl_create_texture(gsr_egl *egl, int width, int height, int i
|
||||
|
||||
static bool cuda_register_opengl_texture(gsr_cuda *cuda, CUgraphicsResource *cuda_graphics_resource, CUarray *mapped_array, unsigned int texture_id) {
|
||||
CUresult res;
|
||||
CUcontext old_ctx;
|
||||
res = cuda->cuCtxPushCurrent_v2(cuda->cu_ctx);
|
||||
res = cuda->cuGraphicsGLRegisterImage(cuda_graphics_resource, texture_id, GL_TEXTURE_2D, CU_GRAPHICS_REGISTER_FLAGS_NONE);
|
||||
if (res != CUDA_SUCCESS) {
|
||||
const char *err_str = "unknown";
|
||||
cuda->cuGetErrorString(res, &err_str);
|
||||
fprintf(stderr, "gsr error: cuda_register_opengl_texture: cuGraphicsGLRegisterImage failed, error: %s, texture " "id: %u\n", err_str, texture_id);
|
||||
res = cuda->cuCtxPopCurrent_v2(&old_ctx);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -219,7 +216,6 @@ static bool cuda_register_opengl_texture(gsr_cuda *cuda, CUgraphicsResource *cud
|
||||
res = cuda->cuGraphicsMapResources(1, cuda_graphics_resource, 0);
|
||||
|
||||
res = cuda->cuGraphicsSubResourceGetMappedArray(mapped_array, *cuda_graphics_resource, 0, 0);
|
||||
res = cuda->cuCtxPopCurrent_v2(&old_ctx);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -72,9 +72,6 @@ static bool gsr_capture_kms_cuda_should_stop(gsr_capture *cap, bool *err) {
|
||||
|
||||
static void gsr_capture_kms_unload_cuda_graphics(gsr_capture_kms_cuda *cap_kms) {
|
||||
if(cap_kms->cuda.cu_ctx) {
|
||||
CUcontext old_ctx;
|
||||
cap_kms->cuda.cuCtxPushCurrent_v2(cap_kms->cuda.cu_ctx);
|
||||
|
||||
for(int i = 0; i < 2; ++i) {
|
||||
if(cap_kms->cuda_graphics_resources[i]) {
|
||||
cap_kms->cuda.cuGraphicsUnmapResources(1, &cap_kms->cuda_graphics_resources[i], 0);
|
||||
@@ -82,8 +79,6 @@ static void gsr_capture_kms_unload_cuda_graphics(gsr_capture_kms_cuda *cap_kms)
|
||||
cap_kms->cuda_graphics_resources[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
cap_kms->cuda.cuCtxPopCurrent_v2(&old_ctx);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -53,9 +53,6 @@ static int gsr_capture_xcomposite_cuda_start(gsr_capture *cap, AVCodecContext *v
|
||||
|
||||
static void gsr_capture_xcomposite_unload_cuda_graphics(gsr_capture_xcomposite_cuda *cap_xcomp) {
|
||||
if(cap_xcomp->cuda.cu_ctx) {
|
||||
CUcontext old_ctx;
|
||||
cap_xcomp->cuda.cuCtxPushCurrent_v2(cap_xcomp->cuda.cu_ctx);
|
||||
|
||||
for(int i = 0; i < 2; ++i) {
|
||||
if(cap_xcomp->cuda_graphics_resources[i]) {
|
||||
cap_xcomp->cuda.cuGraphicsUnmapResources(1, &cap_xcomp->cuda_graphics_resources[i], 0);
|
||||
@@ -63,8 +60,6 @@ static void gsr_capture_xcomposite_unload_cuda_graphics(gsr_capture_xcomposite_c
|
||||
cap_xcomp->cuda_graphics_resources[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
cap_xcomp->cuda.cuCtxPopCurrent_v2(&old_ctx);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1562,8 +1562,9 @@ static gsr_capture* create_capture_impl(const char *window_str, const char *scre
|
||||
xcomposite_params.base.window = src_window_id;
|
||||
xcomposite_params.base.follow_focused = follow_focused;
|
||||
xcomposite_params.base.region_size = region_size;
|
||||
xcomposite_params.overclock = overclock;
|
||||
xcomposite_params.base.color_range = color_range;
|
||||
xcomposite_params.base.record_cursor = record_cursor;
|
||||
xcomposite_params.overclock = overclock;
|
||||
capture = gsr_capture_xcomposite_cuda_create(&xcomposite_params);
|
||||
if(!capture)
|
||||
_exit(1);
|
||||
|
||||
@@ -26,7 +26,7 @@ static unsigned int loader_shader(gsr_egl *egl, unsigned int type, const char *s
|
||||
if(info_length > 1) {
|
||||
char info_log[4096];
|
||||
egl->glGetShaderInfoLog(shader_id, min_int(4096, info_length), NULL, info_log);
|
||||
fprintf(stderr, "gsr error: loader shader: failed to compile shader, error:\n%s\n", info_log);
|
||||
fprintf(stderr, "gsr error: loader shader: failed to compile shader, error:\n%s\nshader source:\n%s\n", info_log, source);
|
||||
}
|
||||
|
||||
egl->glDeleteShader(shader_id);
|
||||
|
||||
Reference in New Issue
Block a user