diff --git a/CMakeLists.txt b/CMakeLists.txt index c0dbe7f4a..43d6459a4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -74,9 +74,9 @@ cmake_dependent_option(ENABLE_PCI_MEMORY "Enable detecting GPU memory size with option(ENABLE_SYSTEM_YYJSON "Use system provided (instead of fastfetch embedded) yyjson library" OFF) option(ENABLE_ASAN "Build fastfetch with ASAN (address sanitizer)" OFF) +option(ENABLE_PROPRIETARY_GPU_DRIVER_API "Enable proprietary GPU driver API (NVML, IGCL and AGS)" ON) option(BUILD_TESTS "Build tests" OFF) # Also create test executables option(SET_TWEAK "Add tweak to project version" ON) # This is set to off by github actions for release builds -option(ENABLE_NVIDIA_GPU "Enable Nvidia NVML" ON) #################### # Compiler options # @@ -629,8 +629,6 @@ elseif(WIN32) src/detection/displayserver/displayserver_windows.c src/detection/font/font_windows.c src/detection/gpu/gpu_windows.c - src/detection/gpu/gpu_intel.c - src/detection/gpu/gpu_amd.c src/detection/host/host_windows.c src/detection/icons/icons_windows.c src/detection/libc/libc_windows.cpp @@ -674,9 +672,15 @@ if(ENABLE_DIRECTX_HEADERS) list(APPEND LIBFASTFETCH_SRC src/detection/gpu/gpu_wsl.cpp) endif() -if(ENABLE_NVIDIA_GPU AND (LINUX OR BSD OR WIN32)) - message(STATUS "Enabling Nvidia NVML") - list(APPEND LIBFASTFETCH_SRC src/detection/gpu/gpu_nvidia.c) +if(ENABLE_PROPRIETARY_GPU_DRIVER_API AND (LINUX OR BSD OR WIN32)) + message(STATUS "Enabling proprietary GPU driver API") + if(LINUX OR BSD OR WIN32) + list(APPEND LIBFASTFETCH_SRC src/detection/gpu/gpu_nvidia.c) + endif() + if(WIN32) + list(APPEND LIBFASTFETCH_SRC src/detection/gpu/gpu_intel.c) + list(APPEND LIBFASTFETCH_SRC src/detection/gpu/gpu_amd.c) + endif() endif() include(CheckFunctionExists) @@ -702,8 +706,8 @@ add_library(libfastfetch OBJECT ${LIBFASTFETCH_SRC} ) -if(ENABLE_NVIDIA_GPU AND (LINUX OR BSD OR WIN32)) - target_compile_definitions(libfastfetch PRIVATE FF_HAVE_NVIDIA_GPU=1) +if(ENABLE_PROPRIETARY_GPU_DRIVER_API AND (LINUX OR BSD OR WIN32)) + target_compile_definitions(libfastfetch PRIVATE FF_USE_PROPRIETARY_GPU_DRIVER_API) endif() if(yyjson_FOUND) diff --git a/src/common/init.c b/src/common/init.c index 12724aa2d..358cc113d 100644 --- a/src/common/init.c +++ b/src/common/init.c @@ -244,6 +244,15 @@ void ffListFeatures(void) #ifdef FF_HAVE_DIRECTX_HEADERS "Directx Headers\n" #endif + #ifdef FF_USE_PROPRIETARY_GPU_DRIVER_API + "Proprietary GPU driver API\n" + #endif + #ifdef FF_USE_SYSTEM_YYJSON + "System yyjson\n" + #endif + #ifdef FF_USE_PCI_MEMORY + "PCI memory\n" + #endif "" , stdout); } diff --git a/src/detection/gpu/gpu_linux.c b/src/detection/gpu/gpu_linux.c index afdbac355..340893090 100644 --- a/src/detection/gpu/gpu_linux.c +++ b/src/detection/gpu/gpu_linux.c @@ -1,7 +1,10 @@ #include "detection/gpu/gpu.h" -#include "detection/gpu/gpu_driver_specific.h" #include "detection/vulkan/vulkan.h" +#ifdef FF_USE_PROPRIETARY_GPU_DRIVER_API + #include "detection/gpu/gpu_driver_specific.h" +#endif + #ifdef FF_HAVE_LIBPCI #include "common/io/io.h" #include "common/library.h" @@ -245,7 +248,7 @@ static void pciHandleDevice(FF_MAYBE_UNUSED const FFGPUOptions* options, FFlist* gpu->temperature = FF_GPU_TEMP_UNSET; gpu->frequency = FF_GPU_FREQUENCY_UNSET; - #ifdef FF_HAVE_NVIDIA_GPU + #ifdef FF_USE_PROPRIETARY_GPU_DRIVER_API if (gpu->vendor.chars == FF_GPU_VENDOR_NAME_NVIDIA && (options->temp || options->driverSpecific)) { ffDetectNvidiaGpuInfo(&(FFGpuDriverCondition) { @@ -267,7 +270,7 @@ static void pciHandleDevice(FF_MAYBE_UNUSED const FFGPUOptions* options, FFlist* if (gpu->dedicated.total != FF_GPU_VMEM_SIZE_UNSET) gpu->type = gpu->dedicated.total > (uint64_t)1024 * 1024 * 1024 ? FF_GPU_TYPE_DISCRETE : FF_GPU_TYPE_INTEGRATED; } - #endif + #endif // FF_USE_PROPRIETARY_GPU_DRIVER_API #ifdef __linux__ if(options->temp && gpu->temperature != gpu->temperature) diff --git a/src/detection/gpu/gpu_windows.c b/src/detection/gpu/gpu_windows.c index 719d98a50..3096e0a52 100644 --- a/src/detection/gpu/gpu_windows.c +++ b/src/detection/gpu/gpu_windows.c @@ -1,8 +1,11 @@ #include "gpu.h" -#include "detection/gpu/gpu_driver_specific.h" #include "util/windows/unicode.h" #include "util/windows/registry.h" +#ifdef FF_USE_PROPRIETARY_GPU_DRIVER_API + #include "detection/gpu/gpu_driver_specific.h" +#endif + #include static int isGpuNameEqual(const FFGPUResult* gpu, const FFstrbuf* name) @@ -10,6 +13,7 @@ static int isGpuNameEqual(const FFGPUResult* gpu, const FFstrbuf* name) return ffStrbufEqual(&gpu->name, name); } +#ifdef FF_USE_PROPRIETARY_GPU_DRIVER_API static inline bool getDriverSpecificDetectionFn(const char* vendor, __typeof__(&ffDetectNvidiaGpuInfo)* pDetectFn, const char** pDllName) { if (vendor == FF_GPU_VENDOR_NAME_NVIDIA) @@ -44,6 +48,7 @@ static inline bool getDriverSpecificDetectionFn(const char* vendor, __typeof__(& return true; } +#endif // FF_USE_PROPRIETARY_GPU_DRIVER_API const char* ffDetectGPUImpl(FF_MAYBE_UNUSED const FFGPUOptions* options, FFlist* gpus) { @@ -139,6 +144,7 @@ const char* ffDetectGPUImpl(FF_MAYBE_UNUSED const FFGPUOptions* options, FFlist* } } +#ifdef FF_USE_PROPRIETARY_GPU_DRIVER_API __typeof__(&ffDetectNvidiaGpuInfo) detectFn; const char* dllName; @@ -168,6 +174,7 @@ const char* ffDetectGPUImpl(FF_MAYBE_UNUSED const FFGPUOptions* options, FFlist* ); } } +#endif // FF_USE_PROPRIETARY_GPU_DRIVER_API } return NULL;