2
0

nvapitest.pas 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. program navapitest;
  2. {$APPTYPE CONSOLE}
  3. {$ifdef fpc}{$mode delphi}{$endif}
  4. uses
  5. SysUtils,
  6. NvAPI;
  7. procedure TestGraphicAPI;
  8. var
  9. info : NV_DISPLAY_DRIVER_VERSION;
  10. res : NvAPI_Status;
  11. begin
  12. writeln('Graphic Driver API: ' );
  13. FillChar(info, sizeof(info), 0);
  14. info.version:=NV_DISPLAY_DRIVER_VERSION_VER;
  15. res:=NvAPI_GetDisplayDriverVersion(0, @info);
  16. if res= NVAPI_OK then begin
  17. writeln('DriverVer: ', info.drvVersion div 100, '.', info.drvVersion mod 100);
  18. writeln('Branch: ', info.szBuildBranchString);
  19. writeln('Adpater: ', info.szAdapterString);
  20. end else
  21. writeln('Not available or Failed (err ', Integer(res),')');
  22. writeln;
  23. end;
  24. procedure TestGPUAPI;
  25. var
  26. phys : TNvPhysicalGpuHandleArray;
  27. log : TNvLogicalGpuHandleArray;
  28. cnt : LongWord;
  29. i : Integer;
  30. name : NvAPI_ShortString;
  31. thermal : TNvGPUThermalSettings;
  32. res : NvAPI_Status;
  33. begin
  34. writeln('GPU API: ' );
  35. if NvAPI_EnumPhysicalGPUs(phys, cnt) = NVAPI_OK then begin
  36. writeln('Physical GPUs ', cnt);
  37. for i:=0 to cnt - 1 do
  38. if NvAPI_GPU_GetFullName(phys[i], name) = NVAPI_OK then begin
  39. write(' ', name,' ');
  40. FillChar(thermal, sizeof(thermal), 0);
  41. thermal.version:=NV_GPU_THERMAL_SETTINGS_VER;
  42. res:=NvAPI_GPU_GetThermalSettings(phys[i],0, @thermal);
  43. if res= NVAPI_OK then
  44. write('temp: ', thermal.sensor[0].currentTemp, ' C');
  45. writeln;
  46. end;
  47. end;
  48. if NvAPI_EnumLogicalGPUs(log, cnt) = NVAPI_OK then
  49. writeln('Logical GPUs ', cnt);
  50. writeln;
  51. end;
  52. procedure TestDisplayAPI;
  53. var
  54. i : Integer;
  55. hnd : NvDisplayHandle;
  56. name : NvAPI_ShortString;
  57. begin
  58. writeln('Display APIs: ');
  59. i:=0;
  60. hnd:=0;
  61. while NvAPI_EnumNVidiaDisplayHandle(i, hnd) = NVAPI_OK do begin
  62. if NvAPI_GetAssociatedNVidiaDisplayName(hnd, name) = NVAPI_OK then
  63. writeln('Display: ', name);
  64. inc(i);
  65. end;
  66. writeln;
  67. end;
  68. procedure TestStereoscopicAPI;
  69. var
  70. res : NvAPI_Status;
  71. b : NvU8;
  72. begin
  73. writeln('Stereoscopic API check');
  74. res:=NvAPI_Stereo_IsEnabled(b);
  75. if res = NVAPI_OK then begin
  76. Writeln('Stereo is available');
  77. if b = 0 then
  78. writeln(' disabled')
  79. else
  80. writeln(' enabled');
  81. end else
  82. Writeln('Stereo is unavailable');
  83. writeln;
  84. end;
  85. procedure TestSystemAPI;
  86. var
  87. info : NV_CHIPSET_INFO_v1;
  88. res : NvAPI_Status;
  89. begin
  90. writeln('System APIs: ');
  91. FillChar(info, sizeof(info), 0);
  92. info.version:=NV_CHIPSET_INFO_VER_1;
  93. res:=NvAPI_SYS_GetChipSetInfo ( info );
  94. if res = NVAPI_OK then begin
  95. writelN('Vendor: ', info.szVendorName);
  96. writeln('Chipset: ', info.szChipsetName);
  97. writelN('Vendor ID: ', IntToHex(info.vendorId, 4));
  98. writelN('Device ID: ', IntToHex(info.deviceId, 4));
  99. end;
  100. writeln;
  101. end;
  102. var
  103. ver : NvAPI_ShortString;
  104. res : NvAPI_Status;
  105. begin
  106. res:=NvAPI_Initialize;
  107. if res<>NVAPI_OK then begin
  108. writeln('unable to initialize NvAPI');
  109. Exit;
  110. end;
  111. writeln('NvAPI test');
  112. NvAPI_GetInterfaceVersionString(ver);
  113. writeln('Version: ', ver);
  114. writeln;
  115. TestSystemAPI;
  116. TestGraphicAPI;
  117. TestDisplayAPI;
  118. TestGPUAPI;
  119. TestStereoscopicAPI;
  120. end.