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,643 @@
1
+ //
2
+ // Copyright (c) 2023 - 2025 Advanced Micro Devices, Inc. All rights reserved.
3
+ //
4
+ //-------------------------------------------------------------------------------------------------
5
+
6
+ #ifndef ADLX_ISYSTEM2_H
7
+ #define ADLX_ISYSTEM2_H
8
+ #pragma once
9
+
10
+ #include "ISystem1.h"
11
+ #include "ADLXStructures.h"
12
+
13
+ // Interfaces for GPU2 Info
14
+ #pragma region IADLXGPU2 interface
15
+ #if defined (__cplusplus)
16
+ namespace adlx
17
+ {
18
+ class ADLX_NO_VTABLE IADLXGPUConnectChangedListener;
19
+ class ADLX_NO_VTABLE IADLXApplicationList;
20
+ class ADLX_NO_VTABLE IADLXGPU2 : public IADLXGPU1
21
+ {
22
+ public:
23
+ ADLX_DECLARE_IID(L"IADLXGPU2")
24
+
25
+ /**
26
+ * @page DOX_IADLXGPU2_IsPowerOff IsPowerOff
27
+ * @ENG_START_DOX @brief Checks if a GPU is powered off. @ENG_END_DOX
28
+ * @syntax
29
+ * @codeStart
30
+ * @ref ADLX_RESULT IsPowerOff (adlx_bool* state)
31
+ * @codeEnd
32
+ *
33
+ * @params
34
+ * @paramrow{1.,[out],state,adlx_bool*,@ENG_START_DOX The pointer to a variable where the GPU powered off state is returned. @ENG_END_DOX}
35
+ *
36
+ * @retvalues
37
+ * @ENG_START_DOX
38
+ * If the GPU powered off state is successfully returned, __ADLX_OK__ is returned.<br>
39
+ * If the GPU powered off state is not successfully returned, an error code is returned.<br>
40
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
41
+ * @ENG_END_DOX
42
+ *
43
+ * @detaileddesc
44
+ * @ENG_START_DOX
45
+ * If the method returns __ADLX_PENDING_OPERATION__, the GPU is busy executing another power related operation, and the call should be repeated.
46
+ * @ENG_END_DOX
47
+ *
48
+ * @copydoc IADLXGPU2_REQ_TABLE
49
+ *
50
+ */
51
+ virtual ADLX_RESULT ADLX_STD_CALL IsPowerOff (adlx_bool* state) = 0;
52
+
53
+ /**
54
+ * @page DOX_IADLXGPU2_PowerOn PowerOn
55
+ * @ENG_START_DOX @brief Powers on a GPU. @ENG_END_DOX
56
+ * @syntax
57
+ * @codeStart
58
+ * @ref ADLX_RESULT PowerOn ()
59
+ * @codeEnd
60
+ *
61
+ * @params
62
+ * N/A
63
+ *
64
+ * @retvalues
65
+ * @ENG_START_DOX
66
+ * If powers on the GPU successfully, __ADLX_OK__ is returned.<br>
67
+ * If powers on the GPU unsuccessfully, an error code is returned.<br>
68
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
69
+ * @ENG_END_DOX
70
+ *
71
+ * @detaileddesc
72
+ * @ENG_START_DOX This method controls the power of the discrete GPU power by disabling the __SmartShift Eco__ feature when called, which can be re-enabled by calling @ref DOX_IADLXSmartShiftEco_SetEnabled.<br>
73
+ * If the method returns __ADLX_PENDING_OPERATION__, the GPU is busy executing another power related operation, and the call should be repeated.
74
+ *
75
+ * @depifc
76
+ * When the GPU is powered on, @ref DOX_IADLXSmartShiftEco "AMD SmartShift Eco" is automatically disabled. To return the power control of this GPU to the AMD driver, use @ref DOX_IADLXSmartShiftEco_SetEnabled.<br>
77
+ *
78
+ * @ENG_END_DOX
79
+ *
80
+ * @copydoc IADLXGPU2_REQ_TABLE
81
+ *
82
+ */
83
+ virtual ADLX_RESULT ADLX_STD_CALL PowerOn () = 0;
84
+
85
+ /**
86
+ * @page DOX_IADLXGPU2_StartPowerOff StartPowerOff
87
+ * @ENG_START_DOX @brief Powers off a GPU. @ENG_END_DOX
88
+ * @syntax
89
+ * @codeStart
90
+ * @ref ADLX_RESULT StartPowerOff (@ref DOX_IADLXGPUConnectChangedListener* pGPUConnectChangedListener, adlx_int timeout)
91
+ * @codeEnd
92
+ *
93
+ * @params
94
+ * @paramrow{1.,[in],pGPUConnectChangedListener,@ref DOX_IADLXGPUConnectChangedListener*,@ENG_START_DOX The pointer to a GPU Connect change complete listener interface. @ENG_END_DOX}
95
+ * @paramrow{2.,[in],timeout,adlx_int,@ENG_START_DOX The timeout for power off operation. @ENG_END_DOX}
96
+ *
97
+ * @retvalues
98
+ * @ENG_START_DOX
99
+ * If starts to power off the GPU successfully, __ADLX_OK__ is returned.<br>
100
+ * If starts to power off the GPU unsuccessfully, an error code is returned.<br>
101
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
102
+ * @ENG_END_DOX
103
+
104
+ * @detaileddesc
105
+ * @ENG_START_DOX This method triggers an asynchronous execution for GPU power off and returns immediately.
106
+ * When the GPUConnect settings change, ADLX calls @ref DOX_IADLXGPUConnectChangedListener_OnGPUConnectChanged in the AMD GPUConnect changed listener.
107
+ *
108
+ * After the event is raised, @ref DOX_IADLXGPUConnectChangedEvent_IsGPUPowerChanged returns __true__ for the power state change of a GPU.<br/>
109
+ *
110
+ * If it returns __false__, the @ref DOX_IADLXGPUConnectChangedEvent_IsGPUPowerChangeError returns the specific error.
111
+ * This method controls the discrete GPU power, it disables the SmartShift Eco feature when called, using @ref DOX_IADLXSmartShiftEco_SetEnabled to return
112
+ * the power control to AMD.<br>
113
+ *
114
+ * If the method returns __ADLX_PENDING_OPERATION__, the GPU is busy executing another power related operation, and the call should be repeated.<br/>
115
+ *
116
+ * @depifc
117
+ * When the GPU is powered off, @ref DOX_IADLXSmartShiftEco "AMD SmartShift Eco" is automatically disabled. To return the power control of this GPU to the AMD driver, use @ref DOX_IADLXSmartShiftEco_SetEnabled.<br>
118
+ *
119
+ * @ENG_END_DOX
120
+ *
121
+ * @copydoc IADLXGPU2_REQ_TABLE
122
+ *
123
+ */
124
+ virtual ADLX_RESULT ADLX_STD_CALL StartPowerOff (IADLXGPUConnectChangedListener* pGPUConnectChangedListener, adlx_int timeout) = 0;
125
+
126
+ /**
127
+ * @page DOX_IADLXGPU2_AbortPowerOff AbortPowerOff
128
+ * @ENG_START_DOX @brief Aborts powering off a GPU. @ENG_END_DOX
129
+ * @syntax
130
+ * @codeStart
131
+ * @ref ADLX_RESULT AbortPowerOff ()
132
+ * @codeEnd
133
+ *
134
+ * @params
135
+ * N/A
136
+ *
137
+ * @retvalues
138
+ * @ENG_START_DOX
139
+ * If GPU power off was aborted successfully, __ADLX_OK__ is returned.<br>
140
+ * If GPU power off was aborted unsuccessfully returned, an error code is returned.<br>
141
+ *
142
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
143
+ * @ENG_END_DOX
144
+ *
145
+ * @copydoc IADLXGPU2_REQ_TABLE
146
+ *
147
+ */
148
+ virtual ADLX_RESULT ADLX_STD_CALL AbortPowerOff () = 0;
149
+
150
+ /**
151
+ * @page DOX_IADLXGPU2_IsSupportedApplicationList IsSupportedApplicationList
152
+ * @ENG_START_DOX @brief Checks if reporting the list of applications running on a GPU is supported. @ENG_END_DOX
153
+ * @syntax
154
+ * @codeStart
155
+ * @ref ADLX_RESULT IsSupportedApplicationList (adlx_bool* supported)
156
+ * @codeEnd
157
+ *
158
+ * @params
159
+ * @paramrow{1.,[out],supported,adlx_bool*,@ENG_START_DOX The pointer to a variable where the Application list support status is returned. The variable is __true__ if Integer Display Scaling is supported. The variable is __false__ if Integer Display Scaling is not supported. @ENG_END_DOX}
160
+ *
161
+ * @retvalues
162
+ * @ENG_START_DOX
163
+ * If the Application list support status is successfully returned, __ADLX_OK__ is returned.<br>
164
+ * If the Application list support status is not successfully returned, an error code is returned.<br>
165
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
166
+ * @ENG_END_DOX
167
+ *
168
+ * @copydoc IADLXGPU2_REQ_TABLE
169
+ *
170
+ */
171
+ virtual ADLX_RESULT ADLX_STD_CALL IsSupportedApplicationList (adlx_bool* supported) = 0;
172
+
173
+ /**
174
+ * @page DOX_IADLXGPU2_GetApplications GetApplications
175
+ * @ENG_START_DOX @brief Gets the reference counted list of applications that run in the context of a GPU. @ENG_END_DOX
176
+ * @syntax
177
+ * @codeStart
178
+ * @ref ADLX_RESULT GetApplications (@ref DOX_IADLXApplicationList** ppApplications)
179
+ * @codeEnd
180
+ *
181
+ * @params
182
+ * @paramrow{1.,[out],ppApplications,@ref DOX_IADLXApplicationList**,@ENG_START_DOX The pointer to a variable where the application list is returned. @ENG_END_DOX}
183
+ *
184
+ * @retvalues
185
+ * @ENG_START_DOX
186
+ * If the application list is successfully returned, __ADLX_OK__ is returned.<br>
187
+ * If the application list is not successfully returned, an error code is returned.<br>
188
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
189
+ * @ENG_END_DOX
190
+ *
191
+ * @copydoc IADLXGPU2_REQ_TABLE
192
+ *
193
+ */
194
+ virtual ADLX_RESULT ADLX_STD_CALL GetApplications (IADLXApplicationList** ppApplications) = 0;
195
+
196
+ /**
197
+ * @page DOX_IADLXGPU2_AMDSoftwareReleaseDate AMDSoftwareReleaseDate
198
+ * @ENG_START_DOX
199
+ * @brief Gets the AMD software release date of a GPU.
200
+ * @ENG_END_DOX
201
+ * @syntax
202
+ * @codeStart
203
+ * @ref ADLX_RESULT AMDSoftwareReleaseDate(adlx_uint* year, adlx_uint* month, adlx_uint* day)
204
+ * @codeEnd
205
+ *
206
+ * @params
207
+ * @paramrow{1.,[out],year,adlx_uint*,@ENG_START_DOX Year of the AMD software release date. @ENG_END_DOX}
208
+ * @paramrow{2.,[out],month,adlx_uint*,@ENG_START_DOX Month of the AMD software release date. @ENG_END_DOX}
209
+ * @paramrow{3.,[out],day,adlx_uint*,@ENG_START_DOX Day of the AMD software release date. @ENG_END_DOX}
210
+ *
211
+ * @retvalues
212
+ * @ENG_START_DOX
213
+ * If the AMD software release date is successfully returned, __ADLX_OK__ is returned.<br>
214
+ * If the AMD software release date is not successfully returned, an error code is returned.<br>
215
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
216
+ * @ENG_END_DOX
217
+ *
218
+ * @copydoc IADLXGPU2_REQ_TABLE
219
+ *
220
+ */
221
+ virtual ADLX_RESULT ADLX_STD_CALL AMDSoftwareReleaseDate(adlx_uint* year, adlx_uint* month, adlx_uint* day) = 0;
222
+
223
+ /**
224
+ * @page DOX_IADLXGPU2_AMDSoftwareEdition AMDSoftwareEdition
225
+ * @ENG_START_DOX
226
+ * @brief Gets the AMD software edition of a GPU.
227
+ * @ENG_END_DOX
228
+ * @syntax
229
+ * @codeStart
230
+ * @ref ADLX_RESULT AMDSoftwareEdition(const char** edition)
231
+ * @codeEnd
232
+ *
233
+ * @params
234
+ * @paramrow{1.,[out],edition,const char**,@ENG_START_DOX The pointer to a zero-terminated string where the AMD software edition is returned. @ENG_END_DOX}
235
+ *
236
+ * @retvalues
237
+ * @ENG_START_DOX
238
+ * If the AMD software edition is successfully returned, __ADLX_OK__ is returned.<br>
239
+ * If the AMD software edition is not successfully returned, an error code is returned.<br>
240
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
241
+ * @ENG_END_DOX
242
+ *
243
+ * @addinfo
244
+ * @ENG_START_DOX
245
+ * The returned memory buffer is valid within the lifetime of the @ref DOX_IADLXGPU2 interface.<br>
246
+ * If the application uses the AMD software edition beyond the lifetime of the @ref DOX_IADLXGPU2 interface, the application must make a copy of the AMD software edition.
247
+ * @ENG_END_DOX
248
+ * @copydoc IADLXGPU2_REQ_TABLE
249
+ *
250
+ */
251
+ virtual ADLX_RESULT ADLX_STD_CALL AMDSoftwareEdition(const char** edition) = 0;
252
+
253
+ /**
254
+ * @page DOX_IADLXGPU2_AMDSoftwareVersion AMDSoftwareVersion
255
+ * @ENG_START_DOX
256
+ * @brief Gets the AMD software version of a GPU.
257
+ * @ENG_END_DOX
258
+ * @syntax
259
+ * @codeStart
260
+ * @ref ADLX_RESULT AMDSoftwareVersion(const char** version)
261
+ * @codeEnd
262
+ *
263
+ * @params
264
+ * @paramrow{1.,[out],version,const char**,@ENG_START_DOX The pointer to a zero-terminated string where the AMD software version is returned. @ENG_END_DOX}
265
+ *
266
+ * @retvalues
267
+ * @ENG_START_DOX
268
+ * If the AMD software version is successfully returned, __ADLX_OK__ is returned.<br>
269
+ * If the AMD software version is not successfully returned, an error code is returned.<br>
270
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
271
+ * @ENG_END_DOX
272
+ *
273
+ * @addinfo
274
+ * @ENG_START_DOX
275
+ * The returned memory buffer is valid within the lifetime of the @ref DOX_IADLXGPU2 interface.<br>
276
+ * If the application uses the AMD software version beyond the lifetime of the @ref DOX_IADLXGPU2 interface, the application must make a copy of the AMD software version.
277
+ * @ENG_END_DOX
278
+ * @copydoc IADLXGPU2_REQ_TABLE
279
+ *
280
+ */
281
+ virtual ADLX_RESULT ADLX_STD_CALL AMDSoftwareVersion(const char** version) = 0;
282
+
283
+ /**
284
+ * @page DOX_IADLXGPU2_DriverVersion DriverVersion
285
+ * @ENG_START_DOX
286
+ * @brief Gets the driver version of a GPU.
287
+ * @ENG_END_DOX
288
+ * @syntax
289
+ * @codeStart
290
+ * @ref ADLX_RESULT DriverVersion(const char** version)
291
+ * @codeEnd
292
+ *
293
+ * @params
294
+ * @paramrow{1.,[out],version,const char**,@ENG_START_DOX The pointer to a zero-terminated string where the driver version is returned. @ENG_END_DOX}
295
+ *
296
+ * @retvalues
297
+ * @ENG_START_DOX
298
+ * If the driver version is successfully returned, __ADLX_OK__ is returned.<br>
299
+ * If the driver version is not successfully returned, an error code is returned.<br>
300
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
301
+ * @ENG_END_DOX
302
+ *
303
+ * @addinfo
304
+ * @ENG_START_DOX
305
+ * The returned memory buffer is valid within the lifetime of the @ref DOX_IADLXGPU2 interface.<br>
306
+ * If the application uses the driver version beyond the lifetime of the @ref DOX_IADLXGPU2 interface, the application must make a copy of the driver version.
307
+ * @ENG_END_DOX
308
+ * @copydoc IADLXGPU2_REQ_TABLE
309
+ *
310
+ */
311
+ virtual ADLX_RESULT ADLX_STD_CALL DriverVersion(const char** version) = 0;
312
+
313
+ /**
314
+ * @page DOX_IADLXGPU2_AMDWindowsDriverVersion AMDWindowsDriverVersion
315
+ * @ENG_START_DOX
316
+ * @brief Gets the AMD Windows driver version of a GPU.
317
+ * @ENG_END_DOX
318
+ * @syntax
319
+ * @codeStart
320
+ * @ref ADLX_RESULT AMDWindowsDriverVersion(const char** version)
321
+ * @codeEnd
322
+ *
323
+ * @params
324
+ * @paramrow{1.,[out],version,const char**,@ENG_START_DOX The pointer to a zero-terminated string where the AMD Windows driver version is returned. @ENG_END_DOX}
325
+ *
326
+ * @retvalues
327
+ * @ENG_START_DOX
328
+ * If the AMD Windows driver version is successfully returned, __ADLX_OK__ is returned.<br>
329
+ * If the AMD Windows driver version is not successfully returned, an error code is returned.<br>
330
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
331
+ * @ENG_END_DOX
332
+ *
333
+ * @addinfo
334
+ * @ENG_START_DOX
335
+ * The returned memory buffer is valid within the lifetime of the @ref DOX_IADLXGPU2 interface.<br>
336
+ * If the application uses the AMD windows driver version beyond the lifetime of the @ref DOX_IADLXGPU2 interface, the application must make a copy of the AMD windows driver version.
337
+ * @ENG_END_DOX
338
+ * @copydoc IADLXGPU2_REQ_TABLE
339
+ *
340
+ */
341
+ virtual ADLX_RESULT ADLX_STD_CALL AMDWindowsDriverVersion(const char** version) = 0;
342
+
343
+ /**
344
+ * @page DOX_IADLXGPU2_LUID LUID
345
+ * @ENG_START_DOX
346
+ * @brief Gets the local identifier information of a GPU.
347
+ * @ENG_END_DOX
348
+ * @syntax
349
+ * @codeStart
350
+ * @ref ADLX_RESULT LUID (@ref ADLX_LUID* luid)
351
+ * @codeEnd
352
+ *
353
+ * @params
354
+ * @paramrow{1.,[out],luid,@ref ADLX_LUID*,@ENG_START_DOX The pointer to a variable where the local identifier information of the GPU is returned. @ENG_END_DOX}
355
+ *
356
+ * @retvalues
357
+ * @ENG_START_DOX
358
+ * If the local identifier information is successfully returned, __ADLX_OK__ is returned.<br>
359
+ * If the local identifier information is not successfully returned, an error code is returned.<br>
360
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
361
+ * @ENG_END_DOX
362
+ *
363
+ * @copydoc IADLXGPU2_REQ_TABLE
364
+ *
365
+ */
366
+ virtual ADLX_RESULT ADLX_STD_CALL LUID(ADLX_LUID* luid) = 0;
367
+
368
+ }; //IADLXGPU2
369
+ //----------------------------------------------------------------------------------------------
370
+ typedef IADLXInterfacePtr_T<IADLXGPU2> IADLXGPU2Ptr;
371
+ } //namespace adlx
372
+ #else
373
+ ADLX_DECLARE_IID(IADLXGPU2, L"IADLXGPU2");
374
+ typedef struct IADLXGPU2 IADLXGPU2;
375
+ typedef struct IADLXGPUConnectChangedListener IADLXGPUConnectChangedListener;
376
+ typedef struct IADLXApplicationList IADLXApplicationList;
377
+ typedef struct IADLXGPU2Vtbl
378
+ {
379
+ //IADLXInterface
380
+ adlx_long(ADLX_STD_CALL* Acquire)(IADLXGPU2* pThis);
381
+ adlx_long(ADLX_STD_CALL* Release)(IADLXGPU2* pThis);
382
+ ADLX_RESULT(ADLX_STD_CALL* QueryInterface)(IADLXGPU2* pThis, const wchar_t* interfaceId, void** ppInterface);
383
+ //IADLXGPU
384
+ ADLX_RESULT(ADLX_STD_CALL* VendorId)(IADLXGPU2* pThis, const char** vendorId);
385
+ ADLX_RESULT(ADLX_STD_CALL* ASICFamilyType)(IADLXGPU2* pThis, ADLX_ASIC_FAMILY_TYPE* asicFamilyType);
386
+ ADLX_RESULT(ADLX_STD_CALL* Type)(IADLXGPU2* pThis, ADLX_GPU_TYPE* gpuType);
387
+ ADLX_RESULT(ADLX_STD_CALL* IsExternal)(IADLXGPU2* pThis, adlx_bool* isExternal);
388
+ ADLX_RESULT(ADLX_STD_CALL* Name)(IADLXGPU2* pThis, const char** gpuName);
389
+ ADLX_RESULT(ADLX_STD_CALL* DriverPath)(IADLXGPU2* pThis, const char** driverPath);
390
+ ADLX_RESULT(ADLX_STD_CALL* PNPString)(IADLXGPU2* pThis, const char** pnpString);
391
+ ADLX_RESULT(ADLX_STD_CALL* HasDesktops)(IADLXGPU2* pThis, adlx_bool* hasDesktops);
392
+ ADLX_RESULT(ADLX_STD_CALL* TotalVRAM)(IADLXGPU2* pThis, adlx_uint* vramMB);
393
+ ADLX_RESULT(ADLX_STD_CALL* VRAMType)(IADLXGPU2* pThis, const char** type);
394
+ ADLX_RESULT(ADLX_STD_CALL* BIOSInfo)(IADLXGPU2* pThis, const char** partNumber, const char** version, const char** date);
395
+ ADLX_RESULT(ADLX_STD_CALL* DeviceId)(IADLXGPU2* pThis, const char** deviceId);
396
+ ADLX_RESULT(ADLX_STD_CALL* RevisionId)(IADLXGPU2* pThis, const char** revisionId);
397
+ ADLX_RESULT(ADLX_STD_CALL* SubSystemId)(IADLXGPU2* pThis, const char** subSystemId);
398
+ ADLX_RESULT(ADLX_STD_CALL* SubSystemVendorId)(IADLXGPU2* pThis, const char** subSystemVendorId);
399
+ ADLX_RESULT(ADLX_STD_CALL* UniqueId)(IADLXGPU2* pThis, adlx_int* uniqueId);
400
+ //IADLXGPU1
401
+ ADLX_RESULT(ADLX_STD_CALL* PCIBusType)(IADLXGPU2* pThis, ADLX_PCI_BUS_TYPE* busType);
402
+ ADLX_RESULT(ADLX_STD_CALL* PCIBusLaneWidth)(IADLXGPU2* pThis, adlx_uint* laneWidth);
403
+ ADLX_RESULT(ADLX_STD_CALL* MultiGPUMode)(IADLXGPU2* pThis, ADLX_MGPU_MODE* mode);
404
+ ADLX_RESULT(ADLX_STD_CALL* ProductName)(IADLXGPU2* pThis, const char** productName);
405
+ //IADLXGPU2
406
+ ADLX_RESULT(ADLX_STD_CALL* IsPowerOff)(IADLXGPU2* pThis, adlx_bool* state);
407
+ ADLX_RESULT(ADLX_STD_CALL* PowerOn)(IADLXGPU2* pThis);
408
+ ADLX_RESULT(ADLX_STD_CALL* StartPowerOff)(IADLXGPU2* pThis, IADLXGPUConnectChangedListener* pGPUConnectChangedListener, adlx_int timeout);
409
+ ADLX_RESULT(ADLX_STD_CALL* AbortPowerOff)(IADLXGPU2* pThis);
410
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedApplicationList)(IADLXGPU2* pThis, adlx_bool* supported);
411
+ ADLX_RESULT(ADLX_STD_CALL* GetApplications)(IADLXGPU2* pThis, IADLXApplicationList** ppApplications);
412
+ ADLX_RESULT(ADLX_STD_CALL* AMDSoftwareReleaseDate)(IADLXGPU2* pThis, adlx_uint* year, adlx_uint* month, adlx_uint* day);
413
+ ADLX_RESULT(ADLX_STD_CALL* AMDSoftwareEdition)(IADLXGPU2* pThis, const char** edition);
414
+ ADLX_RESULT(ADLX_STD_CALL* AMDSoftwareVersion)(IADLXGPU2* pThis, const char** version);
415
+ ADLX_RESULT(ADLX_STD_CALL* DriverVersion)(IADLXGPU2* pThis, const char** version);
416
+ ADLX_RESULT(ADLX_STD_CALL* AMDWindowsDriverVersion)(IADLXGPU2* pThis, const char** version);
417
+ ADLX_RESULT(ADLX_STD_CALL* LUID)(IADLXGPU2* pThis, ADLX_LUID* luid);
418
+ } IADLXGPU2Vtbl;
419
+
420
+ struct IADLXGPU2 { const IADLXGPU2Vtbl* pVtbl; };
421
+ #endif
422
+ #pragma endregion IADLXGPU2 interface
423
+
424
+ #pragma region IADLXGPU2List interface
425
+ #if defined (__cplusplus)
426
+ namespace adlx
427
+ {
428
+ class ADLX_NO_VTABLE IADLXGPU2List : public IADLXList
429
+ {
430
+ public:
431
+ ADLX_DECLARE_IID (L"IADLXGPU2List")
432
+ //Lists must declare the type of items it holds - what was passed as ADLX_DECLARE_IID() in that interface
433
+ ADLX_DECLARE_ITEM_IID (IADLXGPU2::IID ())
434
+
435
+ /**
436
+ * @page DOX_IADLXGPU2List_At At
437
+ * @ENG_START_DOX
438
+ * @brief Returns the reference counted interface at the requested location.
439
+ * @ENG_END_DOX
440
+ * @syntax
441
+ * @codeStart
442
+ * @ref ADLX_RESULT At (const adlx_uint location, @ref DOX_IADLXGPU2** ppItem)
443
+ * @codeEnd
444
+ *
445
+ * @params
446
+ * @paramrow{1.,[in] ,location,const adlx_uint ,@ENG_START_DOX The location of the requested interface. @ENG_END_DOX}
447
+ * @paramrow{2.,[out] ,ppItem,@ref DOX_IADLXGPU2** ,@ENG_START_DOX The address of a pointer to the returned interface. If the interface is not successfully returned then the method sets the dereferenced address __*ppItem__ to __nullptr__. @ENG_END_DOX}
448
+ *
449
+ * @retvalues
450
+ * @ENG_START_DOX
451
+ * If the location is within the list bounds, __ADLX_OK__ is returned.<br>
452
+ * If the location is not within the list bounds, an error code is returned.<br>
453
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
454
+ * @ENG_END_DOX
455
+ *
456
+ * @detaileddesc
457
+ * @ENG_START_DOX
458
+ * @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed.
459
+ * @ENG_END_DOX
460
+ *
461
+ * @addinfo
462
+ * @ENG_START_DOX
463
+ * In C++, when using ADLX interfaces as smart pointers, there is no need to call @ref DOX_IADLXInterface_Release because smart pointers call it in their internal implementation.
464
+ * @ENG_END_DOX
465
+ *
466
+ * @copydoc IADLXGPU2List_REQ_TABLE
467
+ *
468
+ */
469
+ virtual ADLX_RESULT ADLX_STD_CALL At (const adlx_uint location, IADLXGPU2** ppItem) = 0;
470
+ /**
471
+ * @page DOX_IADLXGPU2List_Add_Back Add_Back
472
+ * @ENG_START_DOX
473
+ * @brief Adds an interface to the end of a list.
474
+ * @ENG_END_DOX
475
+ * @syntax
476
+ * @codeStart
477
+ * @ref ADLX_RESULT Add_Back (@ref DOX_IADLXGPU2* pItem)
478
+ * @codeEnd
479
+ *
480
+ * @params
481
+ * @paramrow{1.,[in] ,pItem,@ref DOX_IADLXGPU2* ,@ENG_START_DOX The pointer to the interface to be added to the list. @ENG_END_DOX}
482
+ *
483
+ * @retvalues
484
+ * @ENG_START_DOX
485
+ * If the interface is added successfully to the end of the list, __ADLX_OK__ is returned.<br>
486
+ * If the interface is not added to the end of the list, an error code is returned.<br>
487
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
488
+ * @ENG_END_DOX
489
+ *
490
+ * @detaileddesc
491
+ * @ENG_START_DOX
492
+ * @details
493
+ * @ENG_END_DOX
494
+ *
495
+ *
496
+ * @copydoc IADLXGPU2List_REQ_TABLE
497
+ *
498
+ */
499
+ virtual ADLX_RESULT ADLX_STD_CALL Add_Back (IADLXGPU2* pItem) = 0;
500
+ }; //IADLXGPU2List
501
+ //----------------------------------------------------------------------------------------------
502
+ typedef IADLXInterfacePtr_T<IADLXGPU2List> IADLXGPU2ListPtr;
503
+ } //namespace adlx
504
+ #else
505
+ ADLX_DECLARE_IID (IADLXGPU2List, L"IADLXGPU2List")
506
+ ADLX_DECLARE_ITEM_IID (IADLXGPU2, IID_IADLXGPU2 ())
507
+
508
+ typedef struct IADLXGPU2List IADLXGPU2List;
509
+ typedef struct IADLXGPU2ListVtbl
510
+ {
511
+ //IADLXInterface
512
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXGPU2List* pThis);
513
+ adlx_long (ADLX_STD_CALL *Release)(IADLXGPU2List* pThis);
514
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXGPU2List* pThis, const wchar_t* interfaceId, void** ppInterface);
515
+
516
+ //IADLXList
517
+ adlx_uint (ADLX_STD_CALL *Size)(IADLXGPU2List* pThis);
518
+ adlx_uint8 (ADLX_STD_CALL *Empty)(IADLXGPU2List* pThis);
519
+ adlx_uint (ADLX_STD_CALL *Begin)(IADLXGPU2List* pThis);
520
+ adlx_uint (ADLX_STD_CALL *End)(IADLXGPU2List* pThis);
521
+ ADLX_RESULT (ADLX_STD_CALL *At)(IADLXGPU2List* pThis, const adlx_uint location, IADLXInterface** ppItem);
522
+ ADLX_RESULT (ADLX_STD_CALL *Clear)(IADLXGPU2List* pThis);
523
+ ADLX_RESULT (ADLX_STD_CALL *Remove_Back)(IADLXGPU2List* pThis);
524
+ ADLX_RESULT (ADLX_STD_CALL *Add_Back)(IADLXGPU2List* pThis, IADLXInterface* pItem);
525
+
526
+ //IADLXGPU2List
527
+ ADLX_RESULT (ADLX_STD_CALL *At_GPU2List)(IADLXGPU2List* pThis, const adlx_uint location, IADLXGPU2** ppItem);
528
+ ADLX_RESULT (ADLX_STD_CALL *Add_Back_GPU2List)(IADLXGPU2List* pThis, IADLXGPU2* pItem);
529
+
530
+ } IADLXGPU2ListVtbl;
531
+
532
+ struct IADLXGPU2List { const IADLXGPU2ListVtbl *pVtbl; };
533
+
534
+ #endif
535
+ #pragma endregion IADLXGPU2List interface
536
+
537
+ #pragma region IADLXSystem2 interface
538
+ #if defined (__cplusplus)
539
+ namespace adlx
540
+ {
541
+ class ADLX_NO_VTABLE IADLXMultimediaServices;
542
+ class ADLX_NO_VTABLE IADLXGPUAppsListChangedHandling;
543
+ class ADLX_NO_VTABLE IADLXSystem2 : public IADLXSystem1
544
+ {
545
+ public:
546
+ ADLX_DECLARE_IID (L"IADLXSystem2")
547
+
548
+ /**
549
+ * @page DOX_IADLXSystem2_GetMultimediaServices GetMultimediaServices
550
+ * @ENG_START_DOX
551
+ * @brief Gets the reference counted main interface to the @ref DOX_IADLXMultimediaServices "Multimedia" domain.
552
+ * @ENG_END_DOX
553
+ *
554
+ * @syntax
555
+ * @codeStart
556
+ * @ref ADLX_RESULT GetMultimediaServices (@ref DOX_IADLXMultimediaServices** ppMultiMediaServices)
557
+ * @codeEnd
558
+ *
559
+ * @params
560
+ * @paramrow{1.,[out] ,ppMultiMediaServices,@ref DOX_IADLXMultimediaServices**,@ENG_START_DOX The address of a pointer to the returned interface. If the interface is not successfully returned\, the method sets the dereferenced address __*ppMultiMediaServices__ to __nullptr__. @ENG_END_DOX}
561
+ *
562
+ * @retvalues
563
+ * @ENG_START_DOX
564
+ * If the interface is successfully returned, __ADLX_OK__ is returned.<br>
565
+ * If the interface is not successfully returned, an error code is returned.<br>
566
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
567
+ * @ENG_END_DOX
568
+ *
569
+ * @detaileddesc
570
+ * @ENG_START_DOX
571
+ * @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed.
572
+ * @ENG_END_DOX
573
+ *
574
+ * @addinfo
575
+ * @ENG_START_DOX In C++, when using ADLX interfaces as smart pointers, there is no need to call @ref DOX_IADLXInterface_Release because smart pointers call it in their internal implementation. @ENG_END_DOX
576
+ *
577
+ * @copydoc IADLXSystem2_REQ_TABLE
578
+ *
579
+ */
580
+ virtual ADLX_RESULT ADLX_STD_CALL GetMultimediaServices(IADLXMultimediaServices** ppMultiMediaServices) = 0;
581
+
582
+ /**
583
+ * @page DOX_IADLXSystem2_GetGPUAppsListChangedHandling GetGPUAppsListChangedHandling
584
+ * @ENG_START_DOX
585
+ * @brief Gets the reference counted interface that allows registering and unregistering for notifications when the list of applications running on a GPU changes.
586
+ * @ENG_END_DOX
587
+ *
588
+ * @syntax
589
+ * @codeStart
590
+ * @ref ADLX_RESULT GetGPUAppsListChangedHandling(@ref DOX_IADLXGPUAppsListChangedHandling** ppGPUAppsListChangedHandling)
591
+ * @codeEnd
592
+ *
593
+ * @params
594
+ * @paramrow{1.,[out] ,ppGPUAppsListChangedHandling,@ref DOX_IADLXGPUAppsListChangedHandling**,@ENG_START_DOX The address of a pointer to the returned interface. If the interface is not successfully returned\, the method sets the dereferenced address __*ppGPUAppsListChangedHandling__ to __nullptr__. @ENG_END_DOX}
595
+ *
596
+ * @retvalues
597
+ * @ENG_START_DOX
598
+ * If the interface is successfully returned, __ADLX_OK__ is returned.<br>
599
+ * If the interface is not successfully returned, an error code is returned.<br>
600
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
601
+ * @ENG_END_DOX
602
+ *
603
+ * @detaileddesc
604
+ * @ENG_START_DOX
605
+ * @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed.
606
+ * @ENG_END_DOX
607
+ *
608
+ * @addinfo
609
+ * @ENG_START_DOX In C++, when using ADLX interfaces as smart pointers, there is no need to call @ref DOX_IADLXInterface_Release because smart pointers call it in their internal implementation. @ENG_END_DOX
610
+ *
611
+ * @copydoc IADLXSystem2_REQ_TABLE
612
+ *
613
+ */
614
+ virtual ADLX_RESULT ADLX_STD_CALL GetGPUAppsListChangedHandling(IADLXGPUAppsListChangedHandling** ppGPUAppsListChangedHandling) = 0;
615
+ }; //IADLXSystem2
616
+ typedef IADLXInterfacePtr_T<IADLXSystem2> IADLXSystem2Ptr;
617
+ } //namespace adlx
618
+ #else //__cplusplus
619
+ ADLX_DECLARE_IID (IADLXSystem2, L"IADLXSystem2")
620
+
621
+ typedef struct IADLXMultimediaServices IADLXMultimediaServices;
622
+ typedef struct IADLXGPUAppsListChangedHandling IADLXGPUAppsListChangedHandling;
623
+ typedef struct IADLXSystem2 IADLXSystem2;
624
+ typedef struct IADLXSystem2Vtbl
625
+ {
626
+ //IADLXInterface
627
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXSystem2* pThis);
628
+ adlx_long (ADLX_STD_CALL *Release)(IADLXSystem2* pThis);
629
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXSystem2* pThis, const wchar_t* interfaceId, void** ppInterface);
630
+
631
+ //IADLXSystem1
632
+ ADLX_RESULT (ADLX_STD_CALL *GetPowerTuningServices)(IADLXSystem2* pThis, IADLXPowerTuningServices** ppPowerTuningServices);
633
+
634
+ //IADLXSystem2
635
+ ADLX_RESULT (ADLX_STD_CALL *GetMultimediaServices)(IADLXSystem2* pThis, IADLXMultimediaServices** ppMultiMediaServices);
636
+ ADLX_RESULT (ADLX_STD_CALL *GetGPUAppsListChangedHandling)(IADLXSystem2* pThis, IADLXGPUAppsListChangedHandling** ppGPUAppsListChangedHandling);
637
+ } IADLXSystem2Vtbl;
638
+
639
+ struct IADLXSystem2 { const IADLXSystem2Vtbl*pVtbl; };
640
+ #endif //__cplusplus
641
+ #pragma endregion IADLXSystem2 interface
642
+
643
+ #endif //ADLX_ISYSTEM2_H