|
|
|
@ -12,36 +12,13 @@
|
|
|
|
|
|
|
|
|
|
#include <common.h>
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
/**
|
|
|
|
|
* Declarations from nvapi.h and subheaders
|
|
|
|
|
**/
|
|
|
|
|
|
|
|
|
|
#ifndef __success
|
|
|
|
|
#define __nvapi_success
|
|
|
|
|
#define __success(epxr)
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
//#define NVAPI_INTERFACE extern __success(return == NVAPI_OK) NvAPI_Status __cdecl
|
|
|
|
|
#define NVAPI_INTERFACE extern __success(return == NVAPI_OK) NvAPI_Status
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Definitions from nvapi_lite_common.h
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// mac os 32-bit still needs this
|
|
|
|
|
#if (defined(macintosh) || defined(__APPLE__)) && !defined(__LP64__)
|
|
|
|
|
typedef signed long NvS32; /* -2147483648 to 2147483647 */
|
|
|
|
|
#else
|
|
|
|
|
typedef signed int NvS32; /* -2147483648 to 2147483647 */
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// mac os 32-bit still needs this
|
|
|
|
|
#if ( (defined(macintosh) && defined(__LP64__) && (__NVAPI_RESERVED0__)) || \
|
|
|
|
|
(!defined(macintosh) && defined(__NVAPI_RESERVED0__)) )
|
|
|
|
|
typedef unsigned int NvU32; /* 0 to 4294967295 */
|
|
|
|
|
#else
|
|
|
|
|
typedef unsigned long NvU32; /* 0 to 4294967295 */
|
|
|
|
|
#endif
|
|
|
|
|
#define NVAPI_INTERFACE extern NvAPI_Status
|
|
|
|
|
|
|
|
|
|
typedef unsigned long NvU32;
|
|
|
|
|
|
|
|
|
|
#define NV_DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
|
|
|
|
|
|
|
|
|
@ -56,10 +33,8 @@ typedef char NvAPI_LongString[NVAPI_LONG_STRING_MAX];
|
|
|
|
|
typedef char NvAPI_ShortString[NVAPI_SHORT_STRING_MAX];
|
|
|
|
|
|
|
|
|
|
#define MAKE_NVAPI_VERSION(typeName,ver) (NvU32)(sizeof(typeName) | ((ver)<<16))
|
|
|
|
|
#define GET_NVAPI_VERSION(ver) (NvU32)((ver)>>16)
|
|
|
|
|
#define GET_NVAPI_SIZE(ver) (NvU32)((ver) & 0xffff)
|
|
|
|
|
|
|
|
|
|
#define NVAPI_MAX_PHYSICAL_GPUS 64
|
|
|
|
|
#define NVAPI_MAX_PHYSICAL_GPUS 64
|
|
|
|
|
|
|
|
|
|
typedef enum _NvAPI_Status
|
|
|
|
|
{
|
|
|
|
@ -183,83 +158,47 @@ typedef enum _NvAPI_Status
|
|
|
|
|
NVAPI_FIRMWARE_REVISION_NOT_SUPPORTED = -200, // The device's firmware is not supported.
|
|
|
|
|
} NvAPI_Status;
|
|
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
// total size (of memset) is always: 76 = 0x4c
|
|
|
|
|
|
|
|
|
|
NvU32 version;
|
|
|
|
|
|
|
|
|
|
//! Used in NvAPI_GPU_GetPerfDecreaseInfo.
|
|
|
|
|
//! Bit masks for knowing the exact reason for performance decrease
|
|
|
|
|
typedef enum _NVAPI_GPU_PERF_DECREASE
|
|
|
|
|
NvU32 a;
|
|
|
|
|
NvU32 info_value;
|
|
|
|
|
|
|
|
|
|
unsigned char x[64];
|
|
|
|
|
|
|
|
|
|
} NV_GPU_PERF_POLICIES_INFO_PARAMS_V1;
|
|
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
NV_GPU_PERF_DECREASE_NONE = 0, //!< No Slowdown detected
|
|
|
|
|
NV_GPU_PERF_DECREASE_REASON_THERMAL_PROTECTION = 0x00000001, //!< Thermal slowdown/shutdown/POR thermal protection
|
|
|
|
|
NV_GPU_PERF_DECREASE_REASON_POWER_CONTROL = 0x00000002, //!< Power capping / pstate cap
|
|
|
|
|
NV_GPU_PERF_DECREASE_REASON_AC_BATT = 0x00000004, //!< AC->BATT event
|
|
|
|
|
NV_GPU_PERF_DECREASE_REASON_API_TRIGGERED = 0x00000008, //!< API triggered slowdown
|
|
|
|
|
NV_GPU_PERF_DECREASE_REASON_INSUFFICIENT_POWER = 0x00000010, //!< Power connector missing
|
|
|
|
|
NV_GPU_PERF_DECREASE_REASON_UNKNOWN = 0x80000000, //!< Unknown reason
|
|
|
|
|
} NVAPI_GPU_PERF_DECREASE;
|
|
|
|
|
// total size (of memset) is always: 1360 = 0x550
|
|
|
|
|
|
|
|
|
|
NvU32 version;
|
|
|
|
|
NvU32 info_value;
|
|
|
|
|
|
|
|
|
|
NvU32 a;
|
|
|
|
|
NvU32 b;
|
|
|
|
|
|
|
|
|
|
NVAPI_INTERFACE NvAPI_QueryInterface(uint offset);
|
|
|
|
|
NVAPI_INTERFACE NvAPI_Initialize();
|
|
|
|
|
NVAPI_INTERFACE NvAPI_Unload();
|
|
|
|
|
NVAPI_INTERFACE NvAPI_GetErrorMessage(NvAPI_Status nr,NvAPI_ShortString szDesc);
|
|
|
|
|
NVAPI_INTERFACE NvAPI_EnumPhysicalGPUs(NvPhysicalGpuHandle nvGPUHandle[NVAPI_MAX_PHYSICAL_GPUS], NvU32 *pGpuCount);
|
|
|
|
|
NvU32 throttle;
|
|
|
|
|
|
|
|
|
|
NVAPI_INTERFACE NvAPI_GPU_GetPerfDecreaseInfo(NvPhysicalGpuHandle hPhysicalGpu, NvU32 *pPerfDecrInfo);
|
|
|
|
|
unsigned char x[1340];
|
|
|
|
|
|
|
|
|
|
#ifdef __nvapi_success
|
|
|
|
|
#undef __success
|
|
|
|
|
#undef __nvapi_success
|
|
|
|
|
#endif
|
|
|
|
|
} NV_GPU_PERF_POLICIES_STATUS_PARAMS_V1;
|
|
|
|
|
|
|
|
|
|
NVAPI_INTERFACE NvAPI_QueryInterface (uint offset);
|
|
|
|
|
NVAPI_INTERFACE NvAPI_Initialize ();
|
|
|
|
|
NVAPI_INTERFACE NvAPI_Unload ();
|
|
|
|
|
NVAPI_INTERFACE NvAPI_GetErrorMessage (NvAPI_Status nr,NvAPI_ShortString szDesc);
|
|
|
|
|
NVAPI_INTERFACE NvAPI_EnumPhysicalGPUs (NvPhysicalGpuHandle nvGPUHandle[NVAPI_MAX_PHYSICAL_GPUS], NvU32 *pGpuCount);
|
|
|
|
|
NVAPI_INTERFACE NvAPI_GPU_GetPerfPoliciesInfo (NvPhysicalGpuHandle hPhysicalGpu, NV_GPU_PERF_POLICIES_INFO_PARAMS_V1 *perfPolicies_info);
|
|
|
|
|
NVAPI_INTERFACE NvAPI_GPU_GetPerfPoliciesStatus (NvPhysicalGpuHandle hPhysicalGpu, NV_GPU_PERF_POLICIES_STATUS_PARAMS_V1 *perfPolicies_status);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* End of declarations from nvapi.h and subheaders
|
|
|
|
|
**/
|
|
|
|
|
|
|
|
|
|
// Just annotations (they do nothing special)
|
|
|
|
|
|
|
|
|
|
#ifndef __success
|
|
|
|
|
#define __success(x)
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef __in
|
|
|
|
|
#define __in
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef __out
|
|
|
|
|
#define __out
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef __in_ecount
|
|
|
|
|
#define __in_ecount(x)
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef __out_ecount
|
|
|
|
|
#define __out_ecount(x)
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef __in_opt
|
|
|
|
|
#define __in_opt
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef __out_opt
|
|
|
|
|
#define __out_opt
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef __inout
|
|
|
|
|
#define __inout
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef __inout_opt
|
|
|
|
|
#define __inout_opt
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef __inout_ecount
|
|
|
|
|
#define __inout_ecount(x)
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef __inout_ecount_full
|
|
|
|
|
#define __inout_ecount_full(x)
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef __inout_ecount_part_opt
|
|
|
|
|
#define __inout_ecount_part_opt(x,y)
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef __inout_ecount_full_opt
|
|
|
|
|
#define __inout_ecount_full_opt(x,y)
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef __out_ecount_full_opt
|
|
|
|
|
#define __out_ecount_full_opt(x)
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
typedef NvPhysicalGpuHandle HM_ADAPTER_NVAPI;
|
|
|
|
|
|
|
|
|
|
#include <shared.h>
|
|
|
|
@ -269,8 +208,8 @@ typedef int (*NVAPI_INITIALIZE) (void);
|
|
|
|
|
typedef int (*NVAPI_UNLOAD) (void);
|
|
|
|
|
typedef int (*NVAPI_GETERRORMESSAGE) (NvAPI_Status, NvAPI_ShortString);
|
|
|
|
|
typedef int (*NVAPI_ENUMPHYSICALGPUS) (NvPhysicalGpuHandle nvGPUHandle[NVAPI_MAX_PHYSICAL_GPUS], NvU32 *);
|
|
|
|
|
|
|
|
|
|
typedef int (*NVAPI_GPU_GETPERFDECREASEINFO) (NvPhysicalGpuHandle, NvU32 *);
|
|
|
|
|
typedef int (*NVAPI_GPU_GETPERFPOLICIESINFO) (NvPhysicalGpuHandle, NV_GPU_PERF_POLICIES_INFO_PARAMS_V1 *);
|
|
|
|
|
typedef int (*NVAPI_GPU_GETPERFPOLICIESSTATUS) (NvPhysicalGpuHandle, NV_GPU_PERF_POLICIES_STATUS_PARAMS_V1 *);
|
|
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
@ -281,8 +220,8 @@ typedef struct
|
|
|
|
|
NVAPI_UNLOAD NvAPI_Unload;
|
|
|
|
|
NVAPI_GETERRORMESSAGE NvAPI_GetErrorMessage;
|
|
|
|
|
NVAPI_ENUMPHYSICALGPUS NvAPI_EnumPhysicalGPUs;
|
|
|
|
|
|
|
|
|
|
NVAPI_GPU_GETPERFDECREASEINFO NvAPI_GPU_GetPerfDecreaseInfo;
|
|
|
|
|
NVAPI_GPU_GETPERFPOLICIESINFO NvAPI_GPU_GetPerfPoliciesInfo;
|
|
|
|
|
NVAPI_GPU_GETPERFPOLICIESSTATUS NvAPI_GPU_GetPerfPoliciesStatus;
|
|
|
|
|
|
|
|
|
|
} hm_nvapi_lib_t;
|
|
|
|
|
|
|
|
|
@ -296,8 +235,8 @@ int hm_NvAPI_Initialize (NVAPI_PTR *nvapi);
|
|
|
|
|
int hm_NvAPI_Unload (NVAPI_PTR *nvapi);
|
|
|
|
|
int hm_NvAPI_GetErrorMessage (NVAPI_PTR *nvapi, NvAPI_Status nr, NvAPI_ShortString szDesc);
|
|
|
|
|
int hm_NvAPI_EnumPhysicalGPUs (NVAPI_PTR *nvapi, NvPhysicalGpuHandle nvGPUHandle[NVAPI_MAX_PHYSICAL_GPUS], NvU32 *pGpuCount);
|
|
|
|
|
|
|
|
|
|
int hm_NvAPI_GPU_GetPerfDecreaseInfo (NVAPI_PTR *nvapi, NvPhysicalGpuHandle hPhysicalGpu, NvU32 *pPerfDecrInfo);
|
|
|
|
|
int hm_NvAPI_GPU_GetPerfPoliciesInfo (NVAPI_PTR *nvapi, NvPhysicalGpuHandle hPhysicalGpu, NV_GPU_PERF_POLICIES_INFO_PARAMS_V1 *perfPolicies_info);
|
|
|
|
|
int hm_NvAPI_GPU_GetPerfPoliciesStatus (NVAPI_PTR *nvapi, NvPhysicalGpuHandle hPhysicalGpu, NV_GPU_PERF_POLICIES_STATUS_PARAMS_V1 *perfPolicies_status);
|
|
|
|
|
|
|
|
|
|
#endif // HAVE_HWMON
|
|
|
|
|
|
|
|
|
|