node-gpuinfo 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +336 -0
  3. package/binding.gyp +69 -0
  4. package/build/Release/gpu.exp +0 -0
  5. package/build/Release/gpu.lib +0 -0
  6. package/build/Release/gpu.node +0 -0
  7. package/build/Release/gpu.pdb +0 -0
  8. package/build/binding.sln +19 -0
  9. package/build/gpu.vcxproj +175 -0
  10. package/build/gpu.vcxproj.filters +169 -0
  11. package/example.js +69 -0
  12. package/index.js +33 -0
  13. package/package.json +68 -0
  14. package/src/binding.cpp +201 -0
  15. package/src/gpu_info.c +130 -0
  16. package/src/gpu_info.h +86 -0
  17. package/src/includes/adlx/ADLX.h +367 -0
  18. package/src/includes/adlx/ADLXDefines.h +1345 -0
  19. package/src/includes/adlx/ADLXHelper/ADLXHelper.c +175 -0
  20. package/src/includes/adlx/ADLXHelper/ADLXHelper.h +245 -0
  21. package/src/includes/adlx/ADLXHelper/WinAPIS.c +64 -0
  22. package/src/includes/adlx/ADLXStructures.h +206 -0
  23. package/src/includes/adlx/ADLXVersion.h +18 -0
  24. package/src/includes/adlx/I3DSettings.h +3476 -0
  25. package/src/includes/adlx/I3DSettings1.h +292 -0
  26. package/src/includes/adlx/I3DSettings2.h +317 -0
  27. package/src/includes/adlx/IApplications.h +397 -0
  28. package/src/includes/adlx/IChangedEvent.h +71 -0
  29. package/src/includes/adlx/ICollections.h +325 -0
  30. package/src/includes/adlx/IDesktops.h +918 -0
  31. package/src/includes/adlx/IDisplay3DLUT.h +663 -0
  32. package/src/includes/adlx/IDisplayGamma.h +683 -0
  33. package/src/includes/adlx/IDisplayGamut.h +760 -0
  34. package/src/includes/adlx/IDisplaySettings.h +3476 -0
  35. package/src/includes/adlx/IDisplays.h +2676 -0
  36. package/src/includes/adlx/IDisplays1.h +191 -0
  37. package/src/includes/adlx/IDisplays2.h +188 -0
  38. package/src/includes/adlx/IDisplays3.h +256 -0
  39. package/src/includes/adlx/IGPUAutoTuning.h +460 -0
  40. package/src/includes/adlx/IGPUManualFanTuning.h +1007 -0
  41. package/src/includes/adlx/IGPUManualGFXTuning.h +607 -0
  42. package/src/includes/adlx/IGPUManualPowerTuning.h +340 -0
  43. package/src/includes/adlx/IGPUManualVRAMTuning.h +576 -0
  44. package/src/includes/adlx/IGPUPresetTuning.h +469 -0
  45. package/src/includes/adlx/IGPUTuning.h +1239 -0
  46. package/src/includes/adlx/IGPUTuning1.h +197 -0
  47. package/src/includes/adlx/II2C.h +198 -0
  48. package/src/includes/adlx/ILog.h +72 -0
  49. package/src/includes/adlx/IMultiMedia.h +578 -0
  50. package/src/includes/adlx/IPerformanceMonitoring.h +2520 -0
  51. package/src/includes/adlx/IPerformanceMonitoring1.h +134 -0
  52. package/src/includes/adlx/IPerformanceMonitoring2.h +341 -0
  53. package/src/includes/adlx/IPerformanceMonitoring3.h +199 -0
  54. package/src/includes/adlx/IPowerTuning.h +473 -0
  55. package/src/includes/adlx/IPowerTuning1.h +515 -0
  56. package/src/includes/adlx/ISmartAccessMemory.h +114 -0
  57. package/src/includes/adlx/ISystem.h +1557 -0
  58. package/src/includes/adlx/ISystem1.h +237 -0
  59. package/src/includes/adlx/ISystem2.h +643 -0
  60. package/src/linux/amd_linux.c +269 -0
  61. package/src/linux/intel_linux.c +20 -0
  62. package/src/linux/nvidia_linux.c +257 -0
  63. package/src/macos/amd_mac.c +131 -0
  64. package/src/macos/intel_mac.c +131 -0
  65. package/src/macos/nvidia_mac.c +21 -0
  66. package/src/vendor/amd.c +37 -0
  67. package/src/vendor/intel.c +37 -0
  68. package/src/vendor/nvidia.c +37 -0
  69. package/src/windows/amd_windows.c +468 -0
  70. package/src/windows/intel_windows.c +157 -0
  71. package/src/windows/nvidia_windows.c +252 -0
@@ -0,0 +1,340 @@
1
+ //
2
+ // Copyright (c) 2021 - 2025 Advanced Micro Devices, Inc. All rights reserved.
3
+ //
4
+ //-------------------------------------------------------------------------------------------------
5
+
6
+ #ifndef ADLX_IGPUMANUALPOWERTUNING_H
7
+ #define ADLX_IGPUMANUALPOWERTUNING_H
8
+ #pragma once
9
+
10
+ #include "ADLXStructures.h"
11
+
12
+ //-------------------------------------------------------------------------------------------------
13
+ //IGPUManualPowerTuning.h - Interfaces for ADLX GPU Manual Power Tuning functionality
14
+ // Manual Power Tuning
15
+ #pragma region IADLXManualPowerTuning
16
+ #if defined (__cplusplus)
17
+ namespace adlx
18
+ {
19
+ class ADLX_NO_VTABLE IADLXManualPowerTuning : public IADLXInterface
20
+ {
21
+ public:
22
+ ADLX_DECLARE_IID (L"IADLXManualPowerTuning")
23
+
24
+ /**
25
+ *@page DOX_IADLXManualPowerTuning_GetPowerLimitRange GetPowerLimitRange
26
+ *@ENG_START_DOX @brief Gets the manual power tuning minimum power range, maximum power range, and step power range on a GPU. @ENG_END_DOX
27
+ *
28
+ *@syntax
29
+ *@codeStart
30
+ * @ref ADLX_RESULT GetPowerLimitRange (@ref ADLX_IntRange* tuningRange)
31
+ *@codeEnd
32
+ *
33
+ *@params
34
+ *@paramrow{1.,[out],tuningRange,@ref ADLX_IntRange*,@ENG_START_DOX The pointer to a variable where the manual power limit range (in %) is returned. @ENG_END_DOX}
35
+ *
36
+ *@retvalues
37
+ *@ENG_START_DOX If the power limit range is successfully returned, __ADLX_OK__ is returned.<br>
38
+ * If the power limit range is not successfully returned, an error code is returned.<br>
39
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
40
+ *
41
+ *@copydoc IADLXManualPowerTuning_REQ_TABLE
42
+ *
43
+ */
44
+ virtual ADLX_RESULT ADLX_STD_CALL GetPowerLimitRange (ADLX_IntRange* tuningRange) = 0;
45
+
46
+ /**
47
+ *@page DOX_IADLXManualPowerTuning_GetPowerLimit GetPowerLimit
48
+ *@ENG_START_DOX @brief Gets the current power limit of a GPU. @ENG_END_DOX
49
+ *
50
+ *@syntax
51
+ *@codeStart
52
+ * @ref ADLX_RESULT GetPowerLimit (adlx_int* curVal)
53
+ *@codeEnd
54
+ *
55
+ *@params
56
+ *@paramrow{1.,[out],curVal,adlx_int*,@ENG_START_DOX The pointer to a variable where the manual power limit value (in %) is returned. @ENG_END_DOX}
57
+ *
58
+ *@retvalues
59
+ *@ENG_START_DOX If the power limit value is successfully returned, __ADLX_OK__ is returned.<br>
60
+ * If the power limit value is not successfully returned, an error code is returned.<br>
61
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
62
+ *
63
+ * @addinfo
64
+ * @ENG_START_DOX
65
+ * A higher power limit increases performance headroom.
66
+ * @ENG_END_DOX
67
+ *
68
+ *@copydoc IADLXManualPowerTuning_REQ_TABLE
69
+ *
70
+ */
71
+ virtual ADLX_RESULT ADLX_STD_CALL GetPowerLimit (adlx_int* curVal) = 0;
72
+
73
+ /**
74
+ *@page DOX_IADLXManualPowerTuning_SetPowerLimit SetPowerLimit
75
+ *@ENG_START_DOX @brief Sets the power limit of a GPU. @ENG_END_DOX
76
+ *
77
+ *@syntax
78
+ *@codeStart
79
+ * @ref ADLX_RESULT SetPowerLimit (adlx_int curVal)
80
+ *@codeEnd
81
+ *
82
+ *@params
83
+ *@paramrow{1.,[in],curVal,adlx_int,@ENG_START_DOX The new power limit value (in %) . @ENG_END_DOX}
84
+ *
85
+ *@retvalues
86
+ *@ENG_START_DOX If the power limit value is successfully set, __ADLX_OK__ is returned.<br>
87
+ * If the power limit value is not successfully set, an error code is returned.<br>
88
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
89
+ *
90
+ * @addinfo
91
+ * @ENG_START_DOX
92
+ * A higher power limit increases performance headroom.
93
+ * @ENG_END_DOX
94
+ *
95
+ *@copydoc IADLXManualPowerTuning_REQ_TABLE
96
+ *
97
+ */
98
+ virtual ADLX_RESULT ADLX_STD_CALL SetPowerLimit (adlx_int curVal) = 0;
99
+
100
+ /**
101
+ *@page DOX_IADLXManualPowerTuning_IsSupportedTDCLimit IsSupportedTDCLimit
102
+ *@ENG_START_DOX
103
+ *@brief Checks if Thermal Design Current (TDC) limit is supported on a GPU.
104
+ *@details Thermal Design Current (TDC) functionality is not currently implemented in a production application. Usecase validation for these methods should be performed by application developers.
105
+ *@ENG_END_DOX
106
+ *
107
+ *@syntax
108
+ *@codeStart
109
+ * @ref ADLX_RESULT IsSupportedTDCLimit (adlx_bool* supported)
110
+ *@codeEnd
111
+ *
112
+ *@params
113
+ *@paramrow{1.,[out],supported,adlx_bool*,@ENG_START_DOX The pointer to a variable where the state of TDC limit feature is returned. The variable is __true__ if TDC limit feature is supported. The variable is __false__ if TDC limit feature is not supported. @ENG_END_DOX}
114
+ *
115
+ *@retvalues
116
+ *@ENG_START_DOX
117
+ * If the state of TDC limit feature is successfully returned, __ADLX_OK__ is returned.<br>
118
+ * If the state of TDC limit feature is not successfully returned, an error code is returned.<br>
119
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
120
+ *@ENG_END_DOX
121
+ *
122
+ * @addinfo
123
+ * @ENG_START_DOX
124
+ * A higher TDC limit increases performance headroom.
125
+ * @ENG_END_DOX
126
+ *
127
+ *@copydoc IADLXManualPowerTuning_REQ_TABLE
128
+ *
129
+ */
130
+ virtual ADLX_RESULT ADLX_STD_CALL IsSupportedTDCLimit(adlx_bool* supported) = 0;
131
+
132
+ /**
133
+ *@page DOX_IADLXManualPowerTuning_GetTDCLimitRange GetTDCLimitRange
134
+ *@ENG_START_DOX
135
+ *@brief Gets the manual power tuning minimum Thermal Design Current (TDC) range, maximum TDC range, and step TDC range on a GPU.
136
+ *@details Thermal Design Current (TDC) functionality is not currently implemented in a production application. Usecase validation for these methods should be performed by application developers.
137
+ *@ENG_END_DOX
138
+ *
139
+ *@syntax
140
+ *@codeStart
141
+ * @ref ADLX_RESULT GetTDCLimitRange (@ref ADLX_IntRange* tuningRange)
142
+ *@codeEnd
143
+ *
144
+ *@params
145
+ *@paramrow{1.,[out],tuningRange,@ref ADLX_IntRange*,@ENG_START_DOX The pointer to a variable where the manual TDC limit range (in %) is returned. @ENG_END_DOX}
146
+ *
147
+ *@retvalues
148
+ *@ENG_START_DOX
149
+ * If the TDC limit range is successfully returned, __ADLX_OK__ is returned.<br>
150
+ * If the TDC limit range is not successfully returned, an error code is returned.<br>
151
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
152
+ *@ENG_END_DOX
153
+ *
154
+ *@copydoc IADLXManualPowerTuning_REQ_TABLE
155
+ *
156
+ */
157
+ virtual ADLX_RESULT ADLX_STD_CALL GetTDCLimitRange(ADLX_IntRange* tuningRange) = 0;
158
+
159
+ /**
160
+ *@page DOX_IADLXManualPowerTuning_GetTDCLimit GetTDCLimit
161
+ *@ENG_START_DOX
162
+ *@brief Gets the current Thermal Design Current (TDC) limit of a GPU.
163
+ *@details Thermal Design Current (TDC) functionality is not currently implemented in a production application. Usecase validation for these methods should be performed by application developers.
164
+ *@ENG_END_DOX
165
+ *
166
+ *@syntax
167
+ *@codeStart
168
+ * @ref ADLX_RESULT GetTDCLimit (adlx_int* curVal)
169
+ *@codeEnd
170
+ *
171
+ *@params
172
+ *@paramrow{1.,[out],curVal,adlx_int*,@ENG_START_DOX The pointer to a variable where the manual TDC limit value (in %) is returned. @ENG_END_DOX}
173
+ *
174
+ *@retvalues
175
+ *@ENG_START_DOX
176
+ * If the TDC limit value is successfully returned, __ADLX_OK__ is returned.<br>
177
+ * If the TDC limit value is not successfully returned, an error code is returned.<br>
178
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
179
+ *@ENG_END_DOX
180
+ *
181
+ * @addinfo
182
+ * @ENG_START_DOX
183
+ * A higher TDC limit increases performance headroom.
184
+ * @ENG_END_DOX
185
+ *
186
+ *@copydoc IADLXManualPowerTuning_REQ_TABLE
187
+ *
188
+ */
189
+ virtual ADLX_RESULT ADLX_STD_CALL GetTDCLimit(adlx_int* curVal) = 0;
190
+
191
+ /**
192
+ *@page DOX_IADLXManualPowerTuning_SetTDCLimit SetTDCLimit
193
+ *@ENG_START_DOX
194
+ *@brief Sets the Thermal Design Current (TDC) limit of a GPU.
195
+ *@details Thermal Design Current (TDC) functionality is not currently implemented in a production application. Usecase validation for these methods should be performed by application developers.
196
+ *@ENG_END_DOX
197
+ *
198
+ *@syntax
199
+ *@codeStart
200
+ * @ref ADLX_RESULT SetTDCLimit (adlx_int curVal)
201
+ *@codeEnd
202
+ *
203
+ *@params
204
+ *@paramrow{1.,[in],curVal,adlx_int,@ENG_START_DOX The new TDC limit value (in %). @ENG_END_DOX}
205
+ *
206
+ *@retvalues
207
+ *@ENG_START_DOX
208
+ * If the TDC limit value is successfully set, __ADLX_OK__ is returned.<br>
209
+ * If the TDC limit value is not successfully set, an error code is returned.<br>
210
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
211
+ *@ENG_END_DOX
212
+ *
213
+ * @addinfo
214
+ * @ENG_START_DOX
215
+ * A higher TDC limit increases performance headroom.
216
+ * @ENG_END_DOX
217
+ *
218
+ *@copydoc IADLXManualPowerTuning_REQ_TABLE
219
+ *
220
+ */
221
+ virtual ADLX_RESULT ADLX_STD_CALL SetTDCLimit(adlx_int curVal) = 0;
222
+ };
223
+ //----------------------------------------------------------------------------------------------
224
+ typedef IADLXInterfacePtr_T<IADLXManualPowerTuning> IADLXManualPowerTuningPtr;
225
+ } //namespace adlx
226
+ #else //__cplusplus
227
+ ADLX_DECLARE_IID (IADLXManualPowerTuning, L"IADLXManualPowerTuning")
228
+
229
+ typedef struct IADLXManualPowerTuning IADLXManualPowerTuning;
230
+
231
+ typedef struct IADLXManualPowerTuningVtbl
232
+ {
233
+ //IADLXInterface
234
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXManualPowerTuning* pThis);
235
+ adlx_long (ADLX_STD_CALL *Release)(IADLXManualPowerTuning* pThis);
236
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXManualPowerTuning* pThis, const wchar_t* interfaceId, void** ppInterface);
237
+
238
+ //IADLXManualPowerTuning
239
+ ADLX_RESULT (ADLX_STD_CALL *GetPowerLimitRange)(IADLXManualPowerTuning* pThis, ADLX_IntRange* tuningRange);
240
+ ADLX_RESULT (ADLX_STD_CALL *GetPowerLimit)(IADLXManualPowerTuning* pThis, adlx_int* curVal);
241
+ ADLX_RESULT (ADLX_STD_CALL *SetPowerLimit)(IADLXManualPowerTuning* pThis, adlx_int curVal);
242
+ ADLX_RESULT (ADLX_STD_CALL *IsSupportedTDCLimit)(IADLXManualPowerTuning* pThis,adlx_bool* supported);
243
+ ADLX_RESULT(ADLX_STD_CALL* GetTDCLimitRange)(IADLXManualPowerTuning* pThis, ADLX_IntRange* tuningRange);
244
+ ADLX_RESULT(ADLX_STD_CALL* GetTDCLimit)(IADLXManualPowerTuning* pThis, adlx_int* curVal);
245
+ ADLX_RESULT(ADLX_STD_CALL* SetTDCLimit)(IADLXManualPowerTuning* pThis, adlx_int curVal);
246
+ }IADLXManualPowerTuningVtbl;
247
+
248
+ struct IADLXManualPowerTuning { const IADLXManualPowerTuningVtbl *pVtbl; };
249
+ #endif //__cplusplus
250
+ #pragma endregion IADLXManualPowerTuning
251
+
252
+
253
+ #pragma region IADLXManualPowerTuning1
254
+ #if defined (__cplusplus)
255
+ namespace adlx
256
+ {
257
+ class ADLX_NO_VTABLE IADLXManualPowerTuning1 : public IADLXManualPowerTuning
258
+ {
259
+ public:
260
+ ADLX_DECLARE_IID(L"IADLXManualPowerTuning1")
261
+
262
+ /**
263
+ *@page DOX_IADLXManualPowerTuning1_GetPowerLimitDefault GetPowerLimitDefault
264
+ *@ENG_START_DOX @brief Gets the default power limit on a GPU. @ENG_END_DOX
265
+ *
266
+ *@syntax
267
+ *@codeStart
268
+ * @ref ADLX_RESULT GetPowerLimitDefault(adlx_int* defaultVal)
269
+ *@codeEnd
270
+ *
271
+ *@params
272
+ *@paramrow{1.,[out],defaultVal,adlx_int*,@ENG_START_DOX The pointer to a variable where the default power limit (in %) is returned. @ENG_END_DOX}
273
+ *
274
+ *@retvalues
275
+ *@ENG_START_DOX If the default power limit is successfully returned, __ADLX_OK__ is returned.<br>
276
+ * If the default power limit is not successfully returned, an error code is returned.<br>
277
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
278
+ *
279
+ *@copydoc IADLXManualPowerTuning1_REQ_TABLE
280
+ *
281
+ */
282
+ virtual ADLX_RESULT ADLX_STD_CALL GetPowerLimitDefault(adlx_int* defaultVal) = 0;
283
+
284
+ /**
285
+ *@page DOX_IADLXManualPowerTuning1_GetTDCLimitDefault GetTDCLimitDefault
286
+ * @ENG_START_DOX @brief Gets the default Thermal Design Current (TDC) limit on a GPU. @ENG_END_DOX
287
+ *
288
+ * @syntax
289
+ * @codeStart
290
+ * @ref ADLX_RESULT GetTDCLimitDefault(adlx_int* defaultVal)
291
+ * @codeEnd
292
+ *
293
+ * @params
294
+ * @paramrow{1.,[out],defaultVal,adlx_int*,@ENG_START_DOX The pointer to a variable where the default TDC limit (in %) is returned. @ENG_END_DOX}
295
+ *
296
+ * @retvalues
297
+ * @ENG_START_DOX If the default TDC limit is successfully returned, __ADLX_OK__ is returned.<br>
298
+ * If the default TDC limit is not successfully returned, an error code is returned.<br>
299
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
300
+ *
301
+ * @copydoc IADLXManualPowerTuning1_REQ_TABLE
302
+ *
303
+ */
304
+ virtual ADLX_RESULT ADLX_STD_CALL GetTDCLimitDefault(adlx_int* defaultVal) = 0;
305
+ };
306
+ //----------------------------------------------------------------------------------------------
307
+ typedef IADLXInterfacePtr_T<IADLXManualPowerTuning1> IADLXManualPowerTuning1Ptr;
308
+ } //namespace adlx
309
+ #else //__cplusplus
310
+ ADLX_DECLARE_IID(IADLXManualPowerTuning1, L"IADLXManualPowerTuning1")
311
+
312
+ typedef struct IADLXManualPowerTuning1 IADLXManualPowerTuning1;
313
+
314
+ typedef struct IADLXManualPowerTuning1Vtbl
315
+ {
316
+ //IADLXInterface
317
+ adlx_long(ADLX_STD_CALL* Acquire)(IADLXManualPowerTuning1* pThis);
318
+ adlx_long(ADLX_STD_CALL* Release)(IADLXManualPowerTuning1* pThis);
319
+ ADLX_RESULT(ADLX_STD_CALL* QueryInterface)(IADLXManualPowerTuning1* pThis, const wchar_t* interfaceId, void** ppInterface);
320
+
321
+ //IADLXManualPowerTuning
322
+ ADLX_RESULT(ADLX_STD_CALL* GetPowerLimitRange)(IADLXManualPowerTuning1* pThis, ADLX_IntRange* tuningRange);
323
+ ADLX_RESULT(ADLX_STD_CALL* GetPowerLimit)(IADLXManualPowerTuning1* pThis, adlx_int* curVal);
324
+ ADLX_RESULT(ADLX_STD_CALL* SetPowerLimit)(IADLXManualPowerTuning1* pThis, adlx_int curVal);
325
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedTDCLimit)(IADLXManualPowerTuning1* pThis, adlx_bool* supported);
326
+ ADLX_RESULT(ADLX_STD_CALL* GetTDCLimitRange)(IADLXManualPowerTuning1* pThis, ADLX_IntRange* tuningRange);
327
+ ADLX_RESULT(ADLX_STD_CALL* GetTDCLimit)(IADLXManualPowerTuning1* pThis, adlx_int* curVal);
328
+ ADLX_RESULT(ADLX_STD_CALL* SetTDCLimit)(IADLXManualPowerTuning1* pThis, adlx_int curVal);
329
+
330
+ //IADLXManualPowerTuning1
331
+ ADLX_RESULT(ADLX_STD_CALL* GetPowerLimitDefault)(IADLXManualPowerTuning1* pThis, adlx_int* defaultVal);
332
+ ADLX_RESULT(ADLX_STD_CALL* GetTDCLimitDefault)(IADLXManualPowerTuning1* pThis, adlx_int* defaultVal);
333
+
334
+ }IADLXManualPowerTuning1Vtbl;
335
+
336
+ struct IADLXManualPowerTuning1 { const IADLXManualPowerTuning1Vtbl* pVtbl; };
337
+ #endif //__cplusplus
338
+ #pragma endregion IADLXManualPowerTuning1
339
+
340
+ #endif//ADLX_IGPUMANUALPOWERTUNING_H