Game Development Community

Nvapi Nvapi_gpu_getthermalsettings Help

by David Wilmot · in Technical Issues · 09/20/2008 (3:08 am) · 0 replies

Hi All i hoping to get some help nvapi is killing me, I'm trying to get the GPU temp off a 7800GT with NVAPI but can'y workout what i'm doing wrong my code is below a sample would be great but i can't find anything,

int i=0;
unsigned long cnt;
NvAPI_Status status;
NvDisplayHandle hDisplay_a[NVAPI_MAX_PHYSICAL_GPUS * 2] = {0};
NvPhysicalGpuHandle nvGPUHandle;
//-----------------------------------------------------

status = NvAPI_Initialize();
if (status != NVAPI_OK)
{
NvAPI_ShortString string;
NvAPI_GetErrorMessage(status, string);
printf("NVAPI NvAPI_Initialize: %s\n", string);
return false;
}

//-----------------------------------------------------

NV_DISPLAY_DRIVER_VERSION version = {0};
version.version = NV_DISPLAY_DRIVER_VERSION_VER;
status = NvAPI_GetDisplayDriverVersion(NVAPI_DEFAULT_HANDLE, &version);
if (status != NVAPI_OK)
{
NvAPI_ShortString string;
NvAPI_GetErrorMessage(status, string);
printf("NVAPI NvAPI_GetDisplayDriverVersion: %s\n", string);
return false;
}

//-----------------------------------------------------

status = NvAPI_EnumNvidiaDisplayHandle(i, &hDisplay_a[i]);
if (status != NVAPI_OK)
{
NvAPI_ShortString string;
NvAPI_GetErrorMessage(status, string);
printf("NVAPI NvAPI_EnumNvidiaDisplayHandle: %s\n", string);
return false;
}

//-----------------------------------------------------

status = NvAPI_GetPhysicalGPUsFromDisplay(hDisplay_a[0], &nvGPUHandle, &cnt);
if (status != NVAPI_OK)
{
NvAPI_ShortString string;
NvAPI_GetErrorMessage(status, string);
printf("NVAPI NvAPI_GetPhysicalGPUsFromDisplay: %s\n", string);
return false;
}

//-----------------------------------------------------
NvU32 temp = 0;

NV_GPU_THERMAL_SETTINGS set = {0};
set.version = NV_GPU_THERMAL_SETTINGS_VER;
set.count = NVAPI_MAX_THERMAL_SENSORS_PER_GPU;
set.sensor[NVAPI_MAX_THERMAL_SENSORS_PER_GPU].controller = NVAPI_THERMAL_CONTROLLER_UNKNOWN;
set.sensor[NVAPI_MAX_THERMAL_SENSORS_PER_GPU].currentTemp = temp;
set.sensor[NVAPI_MAX_THERMAL_SENSORS_PER_GPU].target = NVAPI_THERMAL_TARGET_GPU;

status = NvAPI_GPU_GetThermalSettings(nvGPUHandle, 0 ,&set);
if (status != NVAPI_OK)
{
NvAPI_ShortString string;
NvAPI_GetErrorMessage(status, string);
printf("NVAPI NvAPI_GPU_GetThermalSettings: %s\n", string);
return false;
}

NvU32 tempy = set.sensor[0].currentTemp;

printf("NVAPI Controller: %l C\n",tempy);

pintf is blank, NVAPI is new so i can't find any sample code :-(

About the author

Recent Threads

  • Atlas2 lightmap help