summaryrefslogtreecommitdiffstats
path: root/src/detection/gpu/nvapi.h
diff options
context:
space:
mode:
authorsumuel <samuel@yakubos.org>2026-08-17 20:44:55 +0000
committersumuel <samuel@yakubos.org>2026-08-17 20:44:55 +0000
commit76424950e373d3b04ac3dd13019151bfba3e8423 (patch)
tree4c3cfdbda039e592b9186be3e28f8d7cfd439e8a /src/detection/gpu/nvapi.h
Add the files
Diffstat (limited to 'src/detection/gpu/nvapi.h')
-rw-r--r--src/detection/gpu/nvapi.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/detection/gpu/nvapi.h b/src/detection/gpu/nvapi.h
new file mode 100644
index 0000000..102d57a
--- /dev/null
+++ b/src/detection/gpu/nvapi.h
@@ -0,0 +1,50 @@
+// References:
+// https://github.com/NVIDIA/nvapi (MIT License)
+// https://github.com/deathcamp/NVOC/blob/master/nvoc.c (Public Domain)
+
+typedef enum NvApiGPUMemoryType {
+ NVAPI_GPU_MEMORY_TYPE_UNKNOWN = 0,
+ NVAPI_GPU_MEMORY_TYPE_SDRAM,
+ NVAPI_GPU_MEMORY_TYPE_DDR1,
+ NVAPI_GPU_MEMORY_TYPE_DDR2,
+ NVAPI_GPU_MEMORY_TYPE_GDDR2,
+ NVAPI_GPU_MEMORY_TYPE_GDDR3,
+ NVAPI_GPU_MEMORY_TYPE_GDDR4,
+ NVAPI_GPU_MEMORY_TYPE_DDR3,
+ NVAPI_GPU_MEMORY_TYPE_GDDR5,
+ NVAPI_GPU_MEMORY_TYPE_LPDDR2,
+ NVAPI_GPU_MEMORY_TYPE_GDDR5X,
+ NVAPI_GPU_MEMORY_TYPE_LPDDR3,
+ NVAPI_GPU_MEMORY_TYPE_LPDDR4,
+ NVAPI_GPU_MEMORY_TYPE_LPDDR5,
+ NVAPI_GPU_MEMORY_TYPE_GDDR6,
+ NVAPI_GPU_MEMORY_TYPE_GDDR6X,
+ NVAPI_GPU_MEMORY_TYPE_GDDR7,
+} NvApiGPUMemoryType;
+
+typedef enum {
+ NV_SYSTEM_TYPE_GPU_UNKNOWN = 0,
+ NV_SYSTEM_TYPE_IGPU = 1, // Integrated
+ NV_SYSTEM_TYPE_DGPU = 2, // Discrete
+} NvApiGPUType;
+
+typedef int NvAPI_Status; // 0 = success; < 0 = error
+typedef struct NvPhysicalGpuHandle* NvPhysicalGpuHandle;
+
+typedef enum {
+ NVAPI_INTERFACE_OFFSET_INITIALIZE = 0x0150E828,
+ NVAPI_INTERFACE_OFFSET_UNLOAD = 0xD22BDD7E,
+ NVAPI_INTERFACE_OFFSET_ENUM_PHYSICAL_GPUS = 0xE5AC921F,
+ NVAPI_INTERFACE_OFFSET_GPU_GET_RAM_TYPE = 0x57F7CAAC,
+ NVAPI_INTERFACE_OFFSET_GPU_GET_GPU_TYPE = 0xC33BAEB1,
+
+ NVAPI_INTERFACE_OFFSET_FORCE_UINT32 = 0xFFFFFFFF
+} NvApiInterfaceOffsets;
+
+extern void* nvapi_QueryInterface(NvApiInterfaceOffsets offset);
+
+extern NvAPI_Status nvapi_Initialize(void);
+extern NvAPI_Status nvapi_Unload(void);
+extern NvAPI_Status nvapi_EnumPhysicalGPUs(NvPhysicalGpuHandle* handles, int* count);
+extern NvAPI_Status nvapi_GPU_GetRamType(NvPhysicalGpuHandle handle, NvApiGPUMemoryType* memtype);
+extern NvAPI_Status nvapi_GPU_GetGPUType(NvPhysicalGpuHandle handle, NvApiGPUType* gpuType);