From 40bea726eb34cc1b0868d9a81e4b53534ab80c80 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Tue, 27 Feb 2024 00:24:14 +0100 Subject: glClearColor, update readme with video link of gpu screen recorder vs obs smoothness --- README.md | 1 + src/capture/kms_cuda.c | 1 + src/capture/kms_vaapi.c | 1 + 3 files changed, 3 insertions(+) diff --git a/README.md b/README.md index f36668c..1d56b6f 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ For you as a user this only means that if you installed GPU Screen Recorder as a On a system with a i5 4690k CPU and a GTX 1080 GPU:\ When recording Legend of Zelda Breath of the Wild at 4k, fps drops from 30 to 7 when using OBS Studio + nvenc, however when using this screen recorder the fps remains at 30.\ When recording GTA V at 4k on highest settings, fps drops from 60 to 23 when using obs-nvfbc + nvenc, however when using this screen recorder the fps only drops to 58. The quality is also much better when using gpu screen recorder.\ +GPU Screen Recorder also produces much smoother videos than OBS when GPU utilization is close to 100%, see comparison here: [https://www.youtube.com/watch?v=zfj4sNVLLLg](https://www.youtube.com/watch?v=zfj4sNVLLLg).\ It is recommended to save the video to a SSD because of the large file size, which a slow HDD might not be fast enough to handle. Using variable framerate mode (-fm vfr) which is the default is also recommended as this reduces encoding load. Ultra quality is also overkill most of the time, very high (the default) or lower quality is usually enough. ## Note about optimal performance on NVIDIA NVIDIA driver has a "feature" (read: bug) where it will downclock memory transfer rate when a program uses cuda (or nvenc, which uses cuda), such as GPU Screen Recorder. To work around this bug, GPU Screen Recorder can overclock your GPU memory transfer rate to it's normal optimal level.\ diff --git a/src/capture/kms_cuda.c b/src/capture/kms_cuda.c index b3e8361..9ef25f8 100644 --- a/src/capture/kms_cuda.c +++ b/src/capture/kms_cuda.c @@ -457,6 +457,7 @@ static int gsr_capture_kms_cuda_capture(gsr_capture *cap, AVFrame *frame) { (void)frame; gsr_capture_kms_cuda *cap_kms = cap->priv; + cap_kms->params.egl->glClearColor(0.0f, 0.0f, 0.0f, 1.0f); cap_kms->params.egl->glClear(GL_COLOR_BUFFER_BIT); for(int i = 0; i < cap_kms->kms_response.num_fds; ++i) { diff --git a/src/capture/kms_vaapi.c b/src/capture/kms_vaapi.c index d86389c..18a8c2d 100644 --- a/src/capture/kms_vaapi.c +++ b/src/capture/kms_vaapi.c @@ -456,6 +456,7 @@ static vec2i swap_vec2i(vec2i value) { static int gsr_capture_kms_vaapi_capture(gsr_capture *cap, AVFrame *frame) { gsr_capture_kms_vaapi *cap_kms = cap->priv; + cap_kms->params.egl->glClearColor(0.0f, 0.0f, 0.0f, 1.0f); cap_kms->params.egl->glClear(GL_COLOR_BUFFER_BIT); for(int i = 0; i < cap_kms->kms_response.num_fds; ++i) { -- cgit v1.2.3