From 93cb6593a642018e3373fb7099e1c0687b367176 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Fri, 17 Mar 2023 17:17:14 +0100 Subject: Add overclocking option -oc to workaround a NVIDIA driver bug (forcefully set to p2 state when using cuda) --- src/cuda.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'src/cuda.c') diff --git a/src/cuda.c b/src/cuda.c index 3076ebe..470747b 100644 --- a/src/cuda.c +++ b/src/cuda.c @@ -2,8 +2,9 @@ #include "../include/library_loader.h" #include -bool gsr_cuda_load(gsr_cuda *self) { +bool gsr_cuda_load(gsr_cuda *self, Display *display, bool do_overclock) { memset(self, 0, sizeof(gsr_cuda)); + self->do_overclock = do_overclock; dlerror(); /* clear */ void *lib = dlopen("libcuda.so.1", RTLD_LAZY); @@ -76,6 +77,13 @@ bool gsr_cuda_load(gsr_cuda *self) { goto fail; } + if(self->do_overclock) { + if(gsr_overclock_load(&self->overclock, display)) + gsr_overclock_start(&self->overclock); + else + fprintf(stderr, "gsr warning: gsr_cuda_load: failed to load xnvctrl, failed to overclock memory transfer rate\n"); + } + self->library = lib; return true; @@ -91,8 +99,13 @@ void gsr_cuda_unload(gsr_cuda *self) { self->cuCtxDestroy_v2(self->cu_ctx); self->cu_ctx = 0; } - dlclose(self->library); - memset(self, 0, sizeof(gsr_cuda)); } + + if(self->do_overclock && self->overclock.xnvctrl.library) { + gsr_overclock_stop(&self->overclock); + gsr_overclock_unload(&self->overclock); + } + + memset(self, 0, sizeof(gsr_cuda)); } -- cgit v1.2.3