@@ -220,41 +220,89 @@ typedef struct {
220
220
NvU64 val2 ; // seen 7 and 3
221
221
NvU64 values [3 ]; // increment with time
222
222
NvU32 pad [326 ]; // empty
223
- }
224
- NVAPI_GPU_PERF_STATUS ; // 1360 bytes (1-0550)
223
+ } NVAPI_GPU_PERF_STATUS ; // 1360 bytes (1-0550)
225
224
#define NVAPI_GPU_PERF_STATUS_VER MAKE_NVAPI_VERSION(NVAPI_GPU_PERF_STATUS, 1)
226
225
226
+ typedef struct {
227
+ NvU32 version ;
228
+ NvU32 val1 ; // 4
229
+ NvU32 val2 ; // 2 or 0
230
+ NvU32 val3 ; // 2
231
+ NvU32 val4 ; // 3
232
+ NV_GPU_PERF_PSTATE_ID pStateId ;
233
+ NvU32 val6 ; // 0 or 2
234
+ NvU32 val7 ; // 4
235
+ NvU32 val8 ; // 0
236
+ NvU32 memFreq1 ; // 405000.
237
+ NvU32 memFreq2 ; // 405000.
238
+ NvU32 memFreqMin ;// 101250.
239
+ NvU32 memFreqMax ;// 486000.
240
+ NvU32 zeros [3 ];
241
+ NvU32 gpuFreq1 ; // 696000. Unsure about those
242
+ NvU32 gpuFreq2 ; // 696000.
243
+ NvU32 gpuFreqMin ;// 174000.
244
+ NvU32 gpuFreqMax ;// 658000.
245
+ NvU32 pad [2697 ];
246
+ } NVAPI_GPU_PERF_CLOCKS ; // 10868 bytes (2-2a74)
247
+ #define NVAPI_GPU_PERF_CLOCKS_VER MAKE_NVAPI_VERSION(NVAPI_GPU_PERF_CLOCKS, 2)
248
+
249
+ typedef struct {
250
+ NvU32 version ;
251
+ NvU32 level ;
252
+ NvU32 count ;
253
+ NvU32 pad [339 ]; // (4-0558)
254
+ } NVAPI_COOLER_SETTINGS ;
255
+ #define NVAPI_COOLER_SETTINGS_VER MAKE_NVAPI_VERSION(NVAPI_COOLER_SETTINGS, 4)
256
+
257
+ typedef struct {
258
+ NvU32 version ;
259
+ NvU32 level ; // 0 = auto ?
260
+ NvU32 count ; // 1
261
+ NvU32 pad [38 ]; // (1-00a4)
262
+ } NVAPI_COOLER_LEVEL ;
263
+ #define NVAPI_COOLER_LEVEL_VER MAKE_NVAPI_VERSION(NVAPI_COOLER_LEVEL, 1)
264
+
227
265
NvAPI_Status NvAPI_DLL_GetInterfaceVersionString (NvAPI_ShortString string );
228
266
229
267
NvAPI_Status NvAPI_DLL_PerfPoliciesGetInfo (NvPhysicalGpuHandle , NVAPI_GPU_PERF_INFO * ); // 409D9841 1-004c
230
268
NvAPI_Status NvAPI_DLL_PerfPoliciesGetStatus (NvPhysicalGpuHandle , NVAPI_GPU_PERF_STATUS * ); // 3D358A0C 1-0550
231
269
232
- NvAPI_Status NvAPI_DLL_ClientPowerPoliciesGetInfo (NvPhysicalGpuHandle hPhysicalGpu , NVAPI_GPU_POWER_INFO * );
233
- NvAPI_Status NvAPI_DLL_ClientPowerPoliciesGetStatus (NvPhysicalGpuHandle hPhysicalGpu , NVAPI_GPU_POWER_STATUS * );
234
- NvAPI_Status NvAPI_DLL_ClientPowerPoliciesSetStatus (NvPhysicalGpuHandle hPhysicalGpu , NVAPI_GPU_POWER_STATUS * );
235
- NvAPI_Status NvAPI_DLL_ClientPowerTopologyGetStatus (NvPhysicalGpuHandle hPhysicalGpu , NVAPI_GPU_POWER_TOPO * ); // EDCF624E 1-0048
270
+ NvAPI_Status NvAPI_DLL_ClientPowerPoliciesGetInfo (NvPhysicalGpuHandle , NVAPI_GPU_POWER_INFO * );
271
+ NvAPI_Status NvAPI_DLL_ClientPowerPoliciesGetStatus (NvPhysicalGpuHandle , NVAPI_GPU_POWER_STATUS * );
272
+ NvAPI_Status NvAPI_DLL_ClientPowerPoliciesSetStatus (NvPhysicalGpuHandle , NVAPI_GPU_POWER_STATUS * );
273
+ NvAPI_Status NvAPI_DLL_ClientPowerTopologyGetStatus (NvPhysicalGpuHandle , NVAPI_GPU_POWER_TOPO * ); // EDCF624E 1-0048
236
274
237
- NvAPI_Status NvAPI_DLL_ClientThermalPoliciesGetInfo (NvPhysicalGpuHandle hPhysicalGpu , NVAPI_GPU_THERMAL_INFO * );
238
- NvAPI_Status NvAPI_DLL_ClientThermalPoliciesGetLimit (NvPhysicalGpuHandle hPhysicalGpu , NVAPI_GPU_THERMAL_LIMIT * );
239
- NvAPI_Status NvAPI_DLL_ClientThermalPoliciesSetLimit (NvPhysicalGpuHandle hPhysicalGpu , NVAPI_GPU_THERMAL_LIMIT * );
275
+ NvAPI_Status NvAPI_DLL_ClientThermalPoliciesGetInfo (NvPhysicalGpuHandle , NVAPI_GPU_THERMAL_INFO * );
276
+ NvAPI_Status NvAPI_DLL_ClientThermalPoliciesGetLimit (NvPhysicalGpuHandle , NVAPI_GPU_THERMAL_LIMIT * );
277
+ NvAPI_Status NvAPI_DLL_ClientThermalPoliciesSetLimit (NvPhysicalGpuHandle , NVAPI_GPU_THERMAL_LIMIT * );
240
278
241
279
// Pascal GTX only
242
- NvAPI_Status NvAPI_DLL_GetClockBoostRanges (NvPhysicalGpuHandle hPhysicalGpu , NVAPI_CLOCKS_RANGE * );
243
- NvAPI_Status NvAPI_DLL_GetClockBoostMask (NvPhysicalGpuHandle hPhysicalGpu , NVAPI_CLOCK_MASKS * ); // 0x507B4B59
244
- NvAPI_Status NvAPI_DLL_GetClockBoostTable (NvPhysicalGpuHandle hPhysicalGpu , NVAPI_CLOCK_TABLE * ); // 0x23F1B133
245
- NvAPI_Status NvAPI_DLL_SetClockBoostTable (NvPhysicalGpuHandle hPhysicalGpu , NVAPI_CLOCK_TABLE * ); // 0x0733E009
246
- NvAPI_Status NvAPI_DLL_GetVFPCurve (NvPhysicalGpuHandle hPhysicalGpu , NVAPI_VFP_CURVE * ); // 0x21537AD4
247
- NvAPI_Status NvAPI_DLL_GetCurrentVoltage (NvPhysicalGpuHandle handle , NVAPI_VOLTAGE_STATUS * status ); // 0x465F9BCF 1-004c
248
- NvAPI_Status NvAPI_DLL_GetCoreVoltageBoostPercent (NvPhysicalGpuHandle handle , NVAPI_VOLTBOOST_PERCENT * );
249
- NvAPI_Status NvAPI_DLL_SetCoreVoltageBoostPercent (NvPhysicalGpuHandle handle , NVAPI_VOLTBOOST_PERCENT * );
280
+ NvAPI_Status NvAPI_DLL_GetClockBoostRanges (NvPhysicalGpuHandle , NVAPI_CLOCKS_RANGE * );
281
+ NvAPI_Status NvAPI_DLL_GetClockBoostMask (NvPhysicalGpuHandle , NVAPI_CLOCK_MASKS * ); // 0x507B4B59
282
+ NvAPI_Status NvAPI_DLL_GetClockBoostTable (NvPhysicalGpuHandle , NVAPI_CLOCK_TABLE * ); // 0x23F1B133
283
+ NvAPI_Status NvAPI_DLL_SetClockBoostTable (NvPhysicalGpuHandle , NVAPI_CLOCK_TABLE * ); // 0x0733E009
284
+ NvAPI_Status NvAPI_DLL_GetVFPCurve (NvPhysicalGpuHandle , NVAPI_VFP_CURVE * ); // 0x21537AD4
285
+ NvAPI_Status NvAPI_DLL_GetCurrentVoltage (NvPhysicalGpuHandle , NVAPI_VOLTAGE_STATUS * ); // 0x465F9BCF 1-004c
286
+ NvAPI_Status NvAPI_DLL_GetCoreVoltageBoostPercent (NvPhysicalGpuHandle , NVAPI_VOLTBOOST_PERCENT * );
287
+ NvAPI_Status NvAPI_DLL_SetCoreVoltageBoostPercent (NvPhysicalGpuHandle , NVAPI_VOLTBOOST_PERCENT * );
250
288
251
289
// Maxwell only
252
- NvAPI_Status NvAPI_DLL_GetVoltageDomainsStatus (NvPhysicalGpuHandle hPhysicalGpu , NVAPI_VOLT_STATUS * ); // 0xC16C7E2C
253
- NvAPI_Status NvAPI_DLL_GetVoltages (NvPhysicalGpuHandle handle , NVAPI_VOLTAGES_TABLE * ); // 7D656244 1-40CC
290
+ NvAPI_Status NvAPI_DLL_GetVoltageDomainsStatus (NvPhysicalGpuHandle , NVAPI_VOLT_STATUS * ); // 0xC16C7E2C
291
+ NvAPI_Status NvAPI_DLL_GetVoltages (NvPhysicalGpuHandle , NVAPI_VOLTAGES_TABLE * ); // 0x7D656244 1-40CC
292
+ NvAPI_Status NvAPI_DLL_GetVoltageStep (NvPhysicalGpuHandle , NVAPI_VOLT_STATUS * ); // 0x28766157 1-008C unsure of the name
293
+
294
+ NvAPI_Status NvAPI_DLL_GetCoolerSettings (NvPhysicalGpuHandle , uint32_t , NVAPI_COOLER_SETTINGS * ); // 0xDA141340 4-0558
295
+ NvAPI_Status NvAPI_DLL_SetCoolerLevels (NvPhysicalGpuHandle , uint32_t , NVAPI_COOLER_LEVEL * ); // 0x891FA0AE 1-00A4
296
+ NvAPI_Status NvAPI_DLL_RestoreCoolerSettings (NvPhysicalGpuHandle , NVAPI_COOLER_SETTINGS * , uint32_t );
297
+
298
+ NvAPI_Status NvAPI_DLL_GetSerialNumber (NvPhysicalGpuHandle , NvAPI_ShortString serial );
254
299
255
- NvAPI_Status NvAPI_DLL_GetPerfClocks (NvPhysicalGpuHandle hPhysicalGpu , void * pFreqs );
300
+ NvAPI_Status NvAPI_DLL_GetPerfClocks (NvPhysicalGpuHandle , uint32_t num , NVAPI_GPU_PERF_CLOCKS * pClocks ); // 2-2A74
301
+ //NvAPI_Status NvAPI_DLL_SetPerfClocks(NvPhysicalGpuHandle, uint32_t num, NVAPI_GPU_PERF_CLOCKS* pClocks); // error
256
302
257
- NvAPI_Status NvAPI_DLL_GetSerialNumber (NvPhysicalGpuHandle handle , NvAPI_ShortString serial );
303
+ //invalid..
304
+ //NvAPI_Status NvAPI_DLL_GetPstateClientLimits(NvPhysicalGpuHandle, NV_GPU_PERF_PSTATE_ID, uint32_t* pLimits);
305
+ //NvAPI_Status NvAPI_DLL_SetPstateClientLimits(NvPhysicalGpuHandle, NV_GPU_PERF_PSTATE_ID, uint32_t* pLimits);
258
306
259
307
NvAPI_Status NvAPI_DLL_SetPstates20v1 (NvPhysicalGpuHandle handle , NV_GPU_PERF_PSTATES20_INFO_V1 * pSet );
260
308
NvAPI_Status NvAPI_DLL_SetPstates20v2 (NvPhysicalGpuHandle handle , NV_GPU_PERF_PSTATES20_INFO_V2 * pSet );
@@ -294,6 +342,29 @@ typedef struct
294
342
295
343
} NV_I2C_INFO_EX ;
296
344
#define NV_I2C_INFO_EX_VER MAKE_NVAPI_VERSION(NV_I2C_INFO_EX,3)
345
+ /*
346
+ sample evga x64 call (struct of 0x40 bytes)
347
+ ReadEx
348
+ $ ==> 40 00 03 00 00 00 00 00 00 40 00 00 00 00 00 00
349
+ $+10 58 F9 2B 00 00 00 00 00 01 00 00 00 00 00 00 00
350
+ $+20 C0 F9 2B 00 00 00 00 00 02 00 00 00 FF FF 00 00
351
+ $+30 00 00 00 00 02 00 00 00 01 00 00 00 00 00 00 00
352
+
353
+ $ ==> 40 00 03 00 00 00 00 00 00 10 00 00 00 00 00 00
354
+ $+10 68 F9 2B 00 00 00 00 00 01 00 00 00 00 00 00 00
355
+ $+20 C0 F9 2B 00 00 00 00 00 01 00 00 00 FF FF 00 00
356
+ $+30 00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00
357
+ 00000000002BF968 > 75 83 CF 3F 01 00 00 00
358
+ 00000000002BF9C0 > 0
359
+
360
+ WriteEx
361
+ $ ==> 40 00 03 00 00 00 00 00 00 8C 00 00 00 00 00 00
362
+ $+10 30 F9 2B 00 00 00 00 00 01 00 00 00 00 00 00 00
363
+ $+20 38 F9 2B 00 00 00 00 00 02 00 00 00 FF FF 00 00
364
+ $+30 00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00
365
+ 00000000002BF930 > D1 00 00 00 00 00 00 00
366
+ 00000000002BF938 > 38 00 00 00 00 00 00 00
367
+ */
297
368
298
369
NvAPI_Status NvAPI_DLL_I2CReadEx (NvPhysicalGpuHandle , NV_I2C_INFO_EX * , NvU32 * );
299
370
NvAPI_Status NvAPI_DLL_I2CWriteEx (NvPhysicalGpuHandle , NV_I2C_INFO_EX * , NvU32 * );
0 commit comments