fpc/packages/nvapi/examples/nvapitest.pas
2010-03-05 20:49:13 +00:00

136 lines
3.1 KiB
ObjectPascal

program navapitest;
{$APPTYPE CONSOLE}
{$ifdef fpc}{$mode delphi}{$endif}
uses
SysUtils,
NvAPI;
procedure TestGraphicAPI;
var
info : NV_DISPLAY_DRIVER_VERSION;
res : NvAPI_Status;
begin
writeln('Graphic Driver API: ' );
FillChar(info, sizeof(info), 0);
info.version:=NV_DISPLAY_DRIVER_VERSION_VER;
res:=NvAPI_GetDisplayDriverVersion(0, @info);
if res= NVAPI_OK then begin
writeln('DriverVer: ', info.drvVersion div 100, '.', info.drvVersion mod 100);
writeln('Branch: ', info.szBuildBranchString);
writeln('Adpater: ', info.szAdapterString);
end else
writeln('Not available or Failed (err ', Integer(res),')');
writeln;
end;
procedure TestGPUAPI;
var
phys : TNvPhysicalGpuHandleArray;
log : TNvLogicalGpuHandleArray;
cnt : LongWord;
i : Integer;
name : NvAPI_ShortString;
thermal : TNvGPUThermalSettings;
res : NvAPI_Status;
begin
writeln('GPU API: ' );
if NvAPI_EnumPhysicalGPUs(phys, cnt) = NVAPI_OK then begin
writeln('Physical GPUs ', cnt);
for i:=0 to cnt - 1 do
if NvAPI_GPU_GetFullName(phys[i], name) = NVAPI_OK then begin
write(' ', name,' ');
FillChar(thermal, sizeof(thermal), 0);
thermal.version:=NV_GPU_THERMAL_SETTINGS_VER;
res:=NvAPI_GPU_GetThermalSettings(phys[i],0, @thermal);
if res= NVAPI_OK then
write('temp: ', thermal.sensor[0].currentTemp, ' C');
writeln;
end;
end;
if NvAPI_EnumLogicalGPUs(log, cnt) = NVAPI_OK then
writeln('Logical GPUs ', cnt);
writeln;
end;
procedure TestDisplayAPI;
var
i : Integer;
hnd : NvDisplayHandle;
name : NvAPI_ShortString;
begin
writeln('Display APIs: ');
i:=0;
hnd:=0;
while NvAPI_EnumNVidiaDisplayHandle(i, hnd) = NVAPI_OK do begin
if NvAPI_GetAssociatedNVidiaDisplayName(hnd, name) = NVAPI_OK then
writeln('Display: ', name);
inc(i);
end;
writeln;
end;
procedure TestStereoscopicAPI;
var
res : NvAPI_Status;
b : NvU8;
begin
writeln('Stereoscopic API check');
res:=NvAPI_Stereo_IsEnabled(b);
if res = NVAPI_OK then begin
Writeln('Stereo is available');
if b = 0 then
writeln(' disabled')
else
writeln(' enabled');
end else
Writeln('Stereo is unavailable');
writeln;
end;
procedure TestSystemAPI;
var
info : NV_CHIPSET_INFO_v1;
res : NvAPI_Status;
begin
writeln('System APIs: ');
FillChar(info, sizeof(info), 0);
info.version:=NV_CHIPSET_INFO_VER_1;
res:=NvAPI_SYS_GetChipSetInfo ( info );
if res = NVAPI_OK then begin
writelN('Vendor: ', info.szVendorName);
writeln('Chipset: ', info.szChipsetName);
writelN('Vendor ID: ', IntToHex(info.vendorId, 4));
writelN('Device ID: ', IntToHex(info.deviceId, 4));
end;
writeln;
end;
var
ver : NvAPI_ShortString;
res : NvAPI_Status;
begin
res:=NvAPI_Initialize;
if res<>NVAPI_OK then begin
writeln('unable to initialize NvAPI');
Exit;
end;
writeln('NvAPI test');
NvAPI_GetInterfaceVersionString(ver);
writeln('Version: ', ver);
writeln;
TestSystemAPI;
TestGraphicAPI;
TestDisplayAPI;
TestGPUAPI;
TestStereoscopicAPI;
end.