From 53428356a5366b47bc36e45f3fd7abddf428e7b1 Mon Sep 17 00:00:00 2001 From: Marc Di Luzio Date: Sun, 3 Feb 2019 18:41:15 +0000 Subject: [PATCH] Move control code back into the helper --- daemon/gpu-control.c | 71 -------------------------------------------- daemon/gpu-control.h | 12 -------- daemon/gpuclockctl.c | 48 ++++++++++++++++++++++++++++++ daemon/meson.build | 1 - 4 files changed, 48 insertions(+), 84 deletions(-) delete mode 100644 daemon/gpu-control.c diff --git a/daemon/gpu-control.c b/daemon/gpu-control.c deleted file mode 100644 index 69b38a4..0000000 --- a/daemon/gpu-control.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - -Copyright (c) 2017-2018, Feral Interactive -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Feral Interactive nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - - */ - -#define _GNU_SOURCE - -#include "gpu-control.h" -#include "logging.h" - -// TODO -// Apply Nvidia GPU settings (CoolBits will be needed) -// Apply AMD GPU settings (Will need user changing pwm1_enable) -// Provide documentation on optimisations -// Intel? -// Gather GPU type and information automatically if possible - -// NVIDIA -// Running these commands: -// nvidia-settings -a '[gpu:0]/GPUMemoryTransferRateOffset[3]=1400' -// nvidia-settings -a '[gpu:0]/GPUGraphicsClockOffset[3]=50' - -// AMD -// We'll want to set both the following: -// core: device/pp_sclk_od (0%+ additional) -// mem: device/pp_mclk_od (0%+ additional) -// Guide from https://www.maketecheasier.com/overclock-amd-gpu-linux/ - -/** - * Get the gpu state - * Populates the struct with the GPU info on the system - */ -int get_gpu_state(struct GameModeGPUInfo *info) -{ - return 0; -} - -/** - * Set the gpu state based on input parameters - * Only works when run as root - */ -int set_gpu_state(struct GameModeGPUInfo *info) -{ - return 0; -} diff --git a/daemon/gpu-control.h b/daemon/gpu-control.h index 239fffa..c4b611b 100644 --- a/daemon/gpu-control.h +++ b/daemon/gpu-control.h @@ -52,15 +52,3 @@ struct GameModeGPUInfo { long nv_perf_level; /* The Nvidia Performance Level to adjust */ }; - -/** - * Get the gpu state - * Populates the struct with the GPU info on the system - */ -int get_gpu_state(struct GameModeGPUInfo *info); - -/** - * Set the gpu state based on input parameters - * Only works when run as root - */ -int set_gpu_state(struct GameModeGPUInfo *info); diff --git a/daemon/gpuclockctl.c b/daemon/gpuclockctl.c index a892198..ea773cf 100644 --- a/daemon/gpuclockctl.c +++ b/daemon/gpuclockctl.c @@ -35,6 +35,24 @@ POSSIBILITY OF SUCH DAMAGE. #include "gpu-control.h" +// TODO +// Apply Nvidia GPU settings (CoolBits will be needed) +// Apply AMD GPU settings (Will need user changing pwm1_enable) +// Provide documentation on optimisations +// Intel? +// Gather GPU type and information automatically if possible + +// NVIDIA +// Running these commands: +// nvidia-settings -a '[gpu:0]/GPUMemoryTransferRateOffset[3]=1400' +// nvidia-settings -a '[gpu:0]/GPUGraphicsClockOffset[3]=50' + +// AMD +// We'll want to set both the following: +// core: device/pp_sclk_od (0%+ additional) +// mem: device/pp_mclk_od (0%+ additional) +// Guide from https://www.maketecheasier.com/overclock-amd-gpu-linux/ + /* Helper to quit with usage */ static const char *usage_text = "usage: gpuclockctl PCI_ID DEVICE [get] [set CORE MEM [PERF_LEVEL]]]"; @@ -44,6 +62,36 @@ static void print_usage_and_exit(void) exit(EXIT_FAILURE); } +/** + * Get the gpu state + * Populates the struct with the GPU info on the system + */ +int get_gpu_state(struct GameModeGPUInfo *info) +{ + fprintf(stderr, "Fetching GPU state is currently unimplemented!\n"); + return -1; +} + +/** + * Set the gpu state based on input parameters + * Only works when run as root + */ +int set_gpu_state(struct GameModeGPUInfo *info) +{ + if (!info) + return -1; + + switch (info->vendor) { + case Vendor_NVIDIA: + break; + case Vendor_Intel: + break; + default: + break; + } + return 0; +} + /* Helper to get and verify vendor value */ static long get_vendor(const char *val) { diff --git a/daemon/meson.build b/daemon/meson.build index 1c57061..b088adc 100644 --- a/daemon/meson.build +++ b/daemon/meson.build @@ -2,7 +2,6 @@ common_sources = [ 'logging.c', 'governors-query.c', - 'gpu-control.c', ] daemon_common = static_library(