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,1557 @@
1
+ //
2
+ // Copyright (c) 2021 - 2025 Advanced Micro Devices, Inc. All rights reserved.
3
+ //
4
+ //-------------------------------------------------------------------------------------------------
5
+
6
+ //-------------------------------------------------------------------------------------------------
7
+ //ISystem.h - Interfaces for ADLX System-level functionality
8
+
9
+ #ifndef ADLX_ISYSTEM_H
10
+ #define ADLX_ISYSTEM_H
11
+ #pragma once
12
+
13
+ #include "ADLXDefines.h"
14
+ #include "ICollections.h"
15
+
16
+ //Interfaces for GPU Info
17
+ #pragma region IADLXGPU interface
18
+ #if defined (__cplusplus)
19
+ namespace adlx
20
+ {
21
+ class ADLX_NO_VTABLE IADLXGPU : public IADLXInterface
22
+ {
23
+ public:
24
+ ADLX_DECLARE_IID (L"IADLXGPU")
25
+
26
+ /**
27
+ * @page DOX_IADLXGPU_VendorId VendorId
28
+ * @ENG_START_DOX
29
+ * @brief Gets the vendor id of a GPU.
30
+ * @ENG_END_DOX
31
+ * @syntax
32
+ * @codeStart
33
+ * @ref ADLX_RESULT VendorId (const char** vendorId)
34
+ * @codeEnd
35
+ *
36
+ * @params
37
+ * @paramrow{1.,[out],vendorId,const char**,@ENG_START_DOX The pointer to a zero-terminated string where the vendor id is returned. @ENG_END_DOX}
38
+ *
39
+ * @retvalues
40
+ * @ENG_START_DOX
41
+ * If the vendor id is successfully returned, __ADLX_OK__ is returned.<br>
42
+ * If the vendor id is not successfully returned, an error code is returned.<br>
43
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
44
+ * @ENG_END_DOX
45
+ *
46
+ * @detaileddesc
47
+ * @ENG_START_DOX
48
+ * @details The vendor id is a predetermined value programmed into the GPU at the point of manufacturing and consists of four hexadecimal digits.
49
+ * @ENG_END_DOX
50
+ * @addinfo
51
+ * @ENG_START_DOX
52
+ * The returned memory buffer is valid within the lifetime of the @ref DOX_IADLXGPU interface.<br>
53
+ * If the application uses the vendor id beyond the lifetime of the @ref DOX_IADLXGPU interface, the application must make a copy of the vendor id.
54
+ * @ENG_END_DOX
55
+ *
56
+ * @copydoc IADLXGPU_REQ_TABLE
57
+ *
58
+ */
59
+ virtual ADLX_RESULT ADLX_STD_CALL VendorId (const char** vendorId) = 0;
60
+ /**
61
+ * @page DOX_IADLXGPU_ASICFamilyType ASICFamilyType
62
+ * @ENG_START_DOX
63
+ * @brief Gets the ASIC family type of a GPU.
64
+ * @ENG_END_DOX
65
+ * @syntax
66
+ * @codeStart
67
+ * @ref ADLX_RESULT ASICFamilyType (@ref ADLX_ASIC_FAMILY_TYPE* asicFamilyType)
68
+ * @codeEnd
69
+ *
70
+ * @params
71
+ * @paramrow{1.,[out],asicFamilyType,@ref ADLX_ASIC_FAMILY_TYPE*,@ENG_START_DOX The pointer to a variable where the ASIC family type is returned. @ENG_END_DOX}
72
+ *
73
+ * @retvalues
74
+ * @ENG_START_DOX
75
+ * If the ASIC family type is successfully returned, __ADLX_OK__ is returned.<br>
76
+ * If the ASIC family type is not successfully returned, an error code is returned.<br>
77
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
78
+ * @ENG_END_DOX
79
+ *
80
+ * @copydoc IADLXGPU_REQ_TABLE
81
+ *
82
+ */
83
+ virtual ADLX_RESULT ADLX_STD_CALL ASICFamilyType (ADLX_ASIC_FAMILY_TYPE* asicFamilyType) const = 0;
84
+ /**
85
+ * @page DOX_IADLXGPU_Type Type
86
+ * @ENG_START_DOX
87
+ * @brief Gets the type of a GPU.
88
+ * @ENG_END_DOX
89
+ * @syntax
90
+ * @codeStart
91
+ * @ref ADLX_RESULT Type (@ref ADLX_GPU_TYPE* gpuType)
92
+ * @codeEnd
93
+ *
94
+ * @params
95
+ * @paramrow{1.,[out],gpuType,@ref ADLX_GPU_TYPE*,@ENG_START_DOX The pointer to a variable where the GPU type is returned. @ENG_END_DOX}
96
+ *
97
+ * @retvalues
98
+ * @ENG_START_DOX
99
+ * If the GPU type is successfully returned, __ADLX_OK__ is returned.<br>
100
+ * If the GPU type is not successfully returned, 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
106
+ * @details The GPU type can be categorized into Integrated, Discrete, and Unknown.
107
+ * @ENG_END_DOX
108
+ *
109
+ *
110
+ * @copydoc IADLXGPU_REQ_TABLE
111
+ *
112
+ */
113
+ virtual ADLX_RESULT ADLX_STD_CALL Type (ADLX_GPU_TYPE* gpuType) const = 0;
114
+ /**
115
+ * @page DOX_IADLXGPU_IsExternal IsExternal
116
+ * @ENG_START_DOX
117
+ * @brief Checks if a GPU is an external or internal GPU.
118
+ * @ENG_END_DOX
119
+ * @syntax
120
+ * @codeStart
121
+ * @ref ADLX_RESULT IsExternal (adlx_bool* isExternal)
122
+ * @codeEnd
123
+ *
124
+ * @params
125
+ * @paramrow{1.,[out],isExternal,adlx_bool*,@ENG_START_DOX The pointer to a variable where the state of the GPU is returned. The variable is __true__ if the GPU is external. The variable is __false__ if the GPU is internal. @ENG_END_DOX}
126
+ *
127
+ * @retvalues
128
+ * @ENG_START_DOX
129
+ * If __IsExternal__ is successfully executed, __ADLX_OK__ is returned.<br>
130
+ * If __IsExternal__ is not successfully executed, an error code is returned.<br>
131
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
132
+ * @ENG_END_DOX
133
+ *
134
+ * @copydoc IADLXGPU_REQ_TABLE
135
+ *
136
+ */
137
+ virtual ADLX_RESULT ADLX_STD_CALL IsExternal (adlx_bool* isExternal) const = 0;
138
+ /**
139
+ * @page DOX_IADLXGPU_Name Name
140
+ * @ENG_START_DOX
141
+ * @brief Gets the name of a GPU.
142
+ * @ENG_END_DOX
143
+ * @syntax
144
+ * @codeStart
145
+ * @ref ADLX_RESULT Name (const char** name)
146
+ * @codeEnd
147
+ *
148
+ * @params
149
+ * @paramrow{1.,[out],name,const char**,@ENG_START_DOX The pointer to a zero-terminated string where the name of the GPU is returned. @ENG_END_DOX}
150
+ *
151
+ * @retvalues
152
+ * @ENG_START_DOX
153
+ * If the name is successfully returned, __ADLX_OK__ is returned.<br>
154
+ * If the name is not successfully returned, an error code is returned.<br>
155
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
156
+ * @ENG_END_DOX
157
+ *
158
+ * @addinfo
159
+ * @ENG_START_DOX
160
+ * The returned memory buffer is valid within a lifetime of the @ref DOX_IADLXGPU interface.<br>
161
+ * If the application uses the name beyond the lifetime of the @ref DOX_IADLXGPU interface, the application must make a copy of the name.<br>
162
+ * @ENG_END_DOX
163
+ *
164
+ * @copydoc IADLXGPU_REQ_TABLE
165
+ *
166
+ */
167
+ virtual ADLX_RESULT ADLX_STD_CALL Name (const char** name) const = 0;
168
+ /**
169
+ * @page DOX_IADLXGPU_DriverPath DriverPath
170
+ * @ENG_START_DOX
171
+ * @brief Gets the driver registry path of a GPU.
172
+ * @ENG_END_DOX
173
+ * @syntax
174
+ * @codeStart
175
+ * @ref ADLX_RESULT DriverPath (const char** driverPath)
176
+ * @codeEnd
177
+ *
178
+ * @params
179
+ * @paramrow{1.,[out],driverPath,const char**,@ENG_START_DOX The pointer to a zero-terminated string where the driver registry path of a GPU is returned. @ENG_END_DOX}
180
+ *
181
+ * @retvalues
182
+ * @ENG_START_DOX
183
+ * If the driver path is successfully returned, __ADLX_OK__ is returned.<br>
184
+ * If the driver path is not successfully returned, an error code is returned.<br>
185
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
186
+ * @ENG_END_DOX
187
+ *
188
+ * @addinfo
189
+ * @ENG_START_DOX
190
+ * The returned memory buffer is valid within a lifetime of the @ref DOX_IADLXGPU interface.<br>
191
+ * If the application uses the driver path beyond the lifetime of the @ref DOX_IADLXGPU interface, the application must make a copy of the driver path.<br>
192
+ * @ENG_END_DOX
193
+ *
194
+ * @copydoc IADLXGPU_REQ_TABLE
195
+ *
196
+ */
197
+ virtual ADLX_RESULT ADLX_STD_CALL DriverPath (const char** driverPath) const = 0;
198
+ /**
199
+ * @page DOX_IADLXGPU_PNPString PNPString
200
+ * @ENG_START_DOX
201
+ * @brief Gets the PNP string of a GPU.
202
+ * @ENG_END_DOX
203
+ * @syntax
204
+ * @codeStart
205
+ * @ref ADLX_RESULT PNPString (const char** pnpString)
206
+ * @codeEnd
207
+ *
208
+ * @params
209
+ * @paramrow{1.,[out],pnpString,const char**,@ENG_START_DOX The pointer to a zero-terminated string where the PNP string of a GPU is returned. @ENG_END_DOX}
210
+ *
211
+ * @retvalues
212
+ * @ENG_START_DOX
213
+ * If the PNP string is successfully returned, __ADLX_OK__ is returned.<br>
214
+ * If the PNP string 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
+ * @addinfo
219
+ * @ENG_START_DOX
220
+ * The returned memory buffer is valid within a lifetime of the @ref DOX_IADLXGPU interface.<br>
221
+ * If the application uses the PNP string beyond the lifetime of the @ref DOX_IADLXGPU interface, the application must make a copy of the PNP string.<br>
222
+ * @ENG_END_DOX
223
+ *
224
+ * @copydoc IADLXGPU_REQ_TABLE
225
+ *
226
+ */
227
+ virtual ADLX_RESULT ADLX_STD_CALL PNPString (const char** pnpString) const = 0;
228
+ /**
229
+ * @page DOX_IADLXGPU_HasDesktops HasDesktops
230
+ * @ENG_START_DOX
231
+ * @brief Checks if a GPU drives any desktops.
232
+ * @ENG_END_DOX
233
+ * @syntax
234
+ * @codeStart
235
+ * @ref ADLX_RESULT HasDesktops (adlx_bool* hasDesktops)
236
+ * @codeEnd
237
+ *
238
+ * @params
239
+ * @paramrow{1.,[out],hasDesktops,adlx_bool*,@ENG_START_DOX The pointer to a variable to check if a GPU drives any desktops is returned. The variable is __true__ if the GPU drives desktops. The variable is __false__ if the GPU does not drive any desktop. @ENG_END_DOX}
240
+ *
241
+ * @retvalues
242
+ * @ENG_START_DOX
243
+ * If __HasDesktops__ is successfully executed, __ADLX_OK__ is returned.<br>
244
+ * If __HasDesktops__ is not successfully executed, an error code is returned.<br>
245
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
246
+ * @ENG_END_DOX
247
+ *
248
+ * @copydoc IADLXGPU_REQ_TABLE
249
+ *
250
+ */
251
+ virtual ADLX_RESULT ADLX_STD_CALL HasDesktops (adlx_bool* hasDesktops) const = 0;
252
+ /**
253
+ *@page DOX_IADLXGPU_TotalVRAM TotalVRAM
254
+ *@ENG_START_DOX @brief Gets the total VRAM size of a GPU. @ENG_END_DOX
255
+ *
256
+ *@syntax
257
+ *@codeStart
258
+ * @ref ADLX_RESULT TotalVRAM (adlx_uint* vramMB)
259
+ *@codeEnd
260
+ *
261
+ *@params
262
+ *@paramrow{1.,[out] ,vramMB,adlx_uint* ,@ENG_START_DOX The pointer to a variable where the total VRAM size is returned. @ENG_END_DOX}
263
+ *
264
+ *@retvalues
265
+ *@ENG_START_DOX If the total VRAM size is successfully returned, __ADLX_OK__ is returned.<br>
266
+ * If the total VRAM size is not successfully returned, an error code is returned.<br>
267
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
268
+ *
269
+ *@detaileddesc
270
+ *@ENG_START_DOX @details The total VRAM size is in MB. @ENG_END_DOX
271
+ *
272
+ *@copydoc IADLXGPU_REQ_TABLE
273
+ *
274
+ */
275
+ virtual ADLX_RESULT ADLX_STD_CALL TotalVRAM (adlx_uint* vramMB) = 0;
276
+ /**
277
+ * @page DOX_IADLXGPU_VRAMType VRAMType
278
+ * @ENG_START_DOX@brief Gets the VRAM type of a GPU.@ENG_END_DOX
279
+ * @syntax
280
+ * @codeStart
281
+ * @ref ADLX_RESULT VRAMType(const char** type)
282
+ * @codeEnd
283
+ *
284
+ * @params
285
+ * @paramrow{1.,[out],type,const char**,@ENG_START_DOX The pointer to a zero-terminated string where the VRAM type of the GPU is returned. @ENG_END_DOX}
286
+ *
287
+ * @retvalues
288
+ * @ENG_START_DOX
289
+ * If the VRAM type is successfully returned, __ADLX_OK__ is returned.<br>
290
+ * If the VRAM type is not successfully returned, an error code is returned.<br>
291
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
292
+ * @ENG_END_DOX
293
+ *
294
+ * @addinfo
295
+ * @ENG_START_DOX
296
+ * The returned memory buffer is valid within the lifetime of the @ref DOX_IADLXGPU interface.<br>
297
+ * If the application uses the VRAM type beyond the lifetime of the @ref DOX_IADLXGPU interface, the application must make a copy of the VRAM type.
298
+ * @ENG_END_DOX
299
+ *
300
+ * @copydoc IADLXGPU_REQ_TABLE
301
+ *
302
+ */
303
+ virtual ADLX_RESULT ADLX_STD_CALL VRAMType(const char** type) = 0;
304
+ /**
305
+ * @page DOX_IADLXGPU_BIOSInfo BIOSInfo
306
+ * @ENG_START_DOX@brief Gets the BIOS info of a GPU.@ENG_END_DOX
307
+ * @syntax
308
+ * @codeStart
309
+ * @ref ADLX_RESULT BIOSInfo(const char** partNumber, const char** version, const char** date)
310
+ * @codeEnd
311
+ *
312
+ * @params
313
+ * @paramrow{1.,[out],partNumber,const char**,@ENG_START_DOX The pointer to a zero-terminated string where the BIOS part number of the GPU is returned. @ENG_END_DOX}
314
+ * @paramrow{2.,[out],version,const char**,@ENG_START_DOX The pointer to a zero-terminated string where the BIOS version of the GPU is returned. @ENG_END_DOX}
315
+ * @paramrow{3.,[out],date,const char**,@ENG_START_DOX The pointer to a zero-terminated string where the BIOS date of the GPU is returned. @ENG_END_DOX}
316
+ *
317
+ * @retvalues
318
+ * @ENG_START_DOX
319
+ * If the BIOS part number, BIOS version and BIOS date are successfully returned, __ADLX_OK__ is returned.<br>
320
+ * If the BIOS part number, BIOS version and BIOS date are not successfully returned, an error code is returned.<br>
321
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
322
+ * @ENG_END_DOX
323
+ *
324
+ * @addinfo
325
+ * @ENG_START_DOX
326
+ * The returned memory buffers are valid within the lifetime of the @ref DOX_IADLXGPU interface.<br>
327
+ * If the application uses the BIOS part number, BIOS version and BIOS date beyond the lifetime of the @ref DOX_IADLXGPU interface, the application must make a copy of the BIOS part number, BIOS version and BIOS date.
328
+ * @ENG_END_DOX
329
+ *
330
+ * @copydoc IADLXGPU_REQ_TABLE
331
+ *
332
+ */
333
+ virtual ADLX_RESULT ADLX_STD_CALL BIOSInfo(const char** partNumber, const char** version, const char** date) = 0;
334
+ /**
335
+ * @page DOX_IADLXGPU_DeviceId DeviceId
336
+ * @ENG_START_DOX@brief Gets the device id of a GPU.@ENG_END_DOX
337
+ * @syntax
338
+ * @codeStart
339
+ * @ref ADLX_RESULT DeviceId(const char** deviceId)
340
+ * @codeEnd
341
+ *
342
+ * @params
343
+ * @paramrow{1.,[out],deviceId,const char**,@ENG_START_DOX The pointer to a zero-terminated string where the device id of the GPU is returned. @ENG_END_DOX}
344
+ *
345
+ * @retvalues
346
+ * @ENG_START_DOX
347
+ * If the device id is successfully returned, __ADLX_OK__ is returned.<br>
348
+ * If the device id is not successfully returned, an error code is returned.<br>
349
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
350
+ * @ENG_END_DOX
351
+ *
352
+ * @detaileddesc
353
+ * @ENG_START_DOX
354
+ * @details The device id is a predetermined value programmed into the GPU at the point of manufacturing and consists of four hexadecimal digits.
355
+ * @ENG_END_DOX
356
+ *
357
+ * @addinfo
358
+ * @ENG_START_DOX
359
+ * The returned memory buffer is valid within the lifetime of the @ref DOX_IADLXGPU interface.<br>
360
+ * If the application uses the device id beyond the lifetime of the @ref DOX_IADLXGPU interface, the application must make a copy of the device id.
361
+ * @ENG_END_DOX
362
+ *
363
+ * @copydoc IADLXGPU_REQ_TABLE
364
+ *
365
+ */
366
+ virtual ADLX_RESULT ADLX_STD_CALL DeviceId(const char** deviceId) = 0;
367
+ /**
368
+ * @page DOX_IADLXGPU_RevisionId RevisionId
369
+ * @ENG_START_DOX@brief Gets the revision id of a GPU.@ENG_END_DOX
370
+ * @syntax
371
+ * @codeStart
372
+ * @ref ADLX_RESULT RevisionId(const char** revisionId)
373
+ * @codeEnd
374
+ *
375
+ * @params
376
+ * @paramrow{1.,[out],revisionId,const char**,@ENG_START_DOX The pointer to a zero-terminated string where the revision id of the GPU is returned. @ENG_END_DOX}
377
+ *
378
+ * @retvalues
379
+ * @ENG_START_DOX
380
+ * If the revision id is successfully returned, __ADLX_OK__ is returned.<br>
381
+ * If the revision id is not successfully returned, an error code is returned.<br>
382
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
383
+ * @ENG_END_DOX
384
+ *
385
+ * @addinfo
386
+ * @ENG_START_DOX
387
+ * The returned memory buffer is valid within the lifetime of the @ref DOX_IADLXGPU interface.<br>
388
+ * If the application uses the revision id beyond the lifetime of the @ref DOX_IADLXGPU interface, the application must make a copy of the revision id.
389
+ * @ENG_END_DOX
390
+ *
391
+ * @copydoc IADLXGPU_REQ_TABLE
392
+ *
393
+ */
394
+ virtual ADLX_RESULT ADLX_STD_CALL RevisionId(const char** revisionId) = 0;
395
+ /**
396
+ * @page DOX_IADLXGPU_SubSystemId SubSystemId
397
+ * @ENG_START_DOX@brief Gets the subsystem id of a GPU.@ENG_END_DOX
398
+ * @syntax
399
+ * @codeStart
400
+ * @ref ADLX_RESULT SubSystemId(const char** subSystemId)
401
+ * @codeEnd
402
+ *
403
+ * @params
404
+ * @paramrow{1.,[out],subSystemId,const char**,@ENG_START_DOX The pointer to a zero-terminated string where the subsystem id of the GPU is returned. @ENG_END_DOX}
405
+ *
406
+ * @retvalues
407
+ * @ENG_START_DOX
408
+ * If the subsystem id is successfully returned, __ADLX_OK__ is returned.<br>
409
+ * If the subsystem id is not successfully returned, an error code is returned.<br>
410
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
411
+ * @ENG_END_DOX
412
+ *
413
+ * @addinfo
414
+ * @ENG_START_DOX
415
+ * The returned memory buffer is valid within the lifetime of the @ref DOX_IADLXGPU interface.<br>
416
+ * If the application uses the subsystem id beyond the lifetime of the @ref DOX_IADLXGPU interface, the application must make a copy of the subsystem id.
417
+ * @ENG_END_DOX
418
+ *
419
+ * @copydoc IADLXGPU_REQ_TABLE
420
+ *
421
+ */
422
+ virtual ADLX_RESULT ADLX_STD_CALL SubSystemId(const char** subSystemId) = 0;
423
+ /**
424
+ * @page DOX_IADLXGPU_SubSystemVendorId SubSystemVendorId
425
+ * @ENG_START_DOX@brief Gets the subsystem vendor id of a GPU.@ENG_END_DOX
426
+ * @syntax
427
+ * @codeStart
428
+ * @ref ADLX_RESULT SubSystemVendorId(const char** subSystemVendorId)
429
+ * @codeEnd
430
+ *
431
+ * @params
432
+ * @paramrow{1.,[out],subSystemVendorId,const char**,@ENG_START_DOX The pointer to a zero-terminated string where the subsystem vendor id of the GPU is returned. @ENG_END_DOX}
433
+ *
434
+ * @retvalues
435
+ * @ENG_START_DOX
436
+ * If the subsystem vendor id is successfully returned, __ADLX_OK__ is returned.<br>
437
+ * If the subsystem vendor id is not successfully returned, an error code is returned.<br>
438
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
439
+ * @ENG_END_DOX
440
+ *
441
+ * @detaileddesc
442
+ * @ENG_START_DOX
443
+ * @details The subsystem vendor id is a predetermined value programmed into the GPU at the point of manufacturing and consists of four hexadecimal digits.
444
+ * @ENG_END_DOX
445
+ *
446
+ * @addinfo
447
+ * @ENG_START_DOX
448
+ * The returned memory buffer is valid within the lifetime of the @ref DOX_IADLXGPU interface.<br>
449
+ * If the application uses the subsystem vendor id beyond the lifetime of the @ref DOX_IADLXGPU interface, the application must make a copy of the subsystem vendor id.
450
+ * @ENG_END_DOX
451
+ *
452
+ * @copydoc IADLXGPU_REQ_TABLE
453
+ *
454
+ */
455
+ virtual ADLX_RESULT ADLX_STD_CALL SubSystemVendorId(const char** subSystemVendorId) = 0;
456
+ /**
457
+ * @page DOX_IADLXGPU_UniqueId UniqueId
458
+ * @ENG_START_DOX@brief Gets the unique id of a GPU.@ENG_END_DOX
459
+ * @syntax
460
+ * @codeStart
461
+ * @ref ADLX_RESULT UniqueId(adlx_int* uniqueId)
462
+ * @codeEnd
463
+ *
464
+ * @params
465
+ * @paramrow{1.,[out],uniqueId,adlx_int*,@ENG_START_DOX The pointer to a variable where the unique id of the GPU is returned. @ENG_END_DOX}
466
+ *
467
+ * @retvalues
468
+ * @ENG_START_DOX
469
+ * If the unique id is successfully returned, __ADLX_OK__ is returned.<br>
470
+ * If the unique id is not successfully returned, an error code is returned.<br>
471
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
472
+ * @ENG_END_DOX
473
+ *
474
+ * @copydoc IADLXGPU_REQ_TABLE
475
+ *
476
+ */
477
+ virtual ADLX_RESULT ADLX_STD_CALL UniqueId(adlx_int* uniqueId) = 0;
478
+ }; //IADLXGPU
479
+ //----------------------------------------------------------------------------------------------
480
+ typedef IADLXInterfacePtr_T<IADLXGPU> IADLXGPUPtr;
481
+ } //namespace adlx
482
+ #else
483
+ ADLX_DECLARE_IID (IADLXGPU, L"IADLXGPU");
484
+ typedef struct IADLXGPU IADLXGPU;
485
+
486
+ typedef struct IADLXGPUVtbl
487
+ {
488
+ //IADLXInterface
489
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXGPU* pThis);
490
+ adlx_long (ADLX_STD_CALL *Release)(IADLXGPU* pThis);
491
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXGPU* pThis, const wchar_t* interfaceId, void** ppInterface);
492
+
493
+ //IADLXGPU
494
+ ADLX_RESULT (ADLX_STD_CALL *VendorId)(IADLXGPU* pThis, const char** vendorId);
495
+ ADLX_RESULT (ADLX_STD_CALL *ASICFamilyType)(IADLXGPU* pThis, ADLX_ASIC_FAMILY_TYPE* asicFamilyType);
496
+ ADLX_RESULT (ADLX_STD_CALL *Type)(IADLXGPU* pThis, ADLX_GPU_TYPE* gpuType);
497
+ ADLX_RESULT (ADLX_STD_CALL *IsExternal)(IADLXGPU* pThis, adlx_bool* isExternal);
498
+ ADLX_RESULT (ADLX_STD_CALL *Name)(IADLXGPU* pThis, const char** gpuName);
499
+ ADLX_RESULT (ADLX_STD_CALL *DriverPath)(IADLXGPU* pThis, const char** driverPath);
500
+ ADLX_RESULT (ADLX_STD_CALL *PNPString)(IADLXGPU* pThis, const char** pnpString);
501
+ ADLX_RESULT (ADLX_STD_CALL *HasDesktops)(IADLXGPU* pThis, adlx_bool* hasDesktops);
502
+ ADLX_RESULT (ADLX_STD_CALL *TotalVRAM)(IADLXGPU* pThis, adlx_uint* vramMB);
503
+ ADLX_RESULT (ADLX_STD_CALL *VRAMType)(IADLXGPU* pThis, const char** type);
504
+ ADLX_RESULT (ADLX_STD_CALL *BIOSInfo)(IADLXGPU* pThis, const char** partNumber, const char** version, const char** date);
505
+ ADLX_RESULT (ADLX_STD_CALL *DeviceId)(IADLXGPU* pThis, const char** deviceId);
506
+ ADLX_RESULT (ADLX_STD_CALL *RevisionId)(IADLXGPU* pThis, const char** revisionId);
507
+ ADLX_RESULT (ADLX_STD_CALL *SubSystemId)(IADLXGPU* pThis, const char** subSystemId);
508
+ ADLX_RESULT (ADLX_STD_CALL *SubSystemVendorId)(IADLXGPU* pThis, const char** subSystemVendorId);
509
+ ADLX_RESULT (ADLX_STD_CALL *UniqueId)(IADLXGPU* pThis, adlx_int* uniqueId);
510
+ } IADLXGPUVtbl;
511
+
512
+ struct IADLXGPU
513
+ {
514
+ const IADLXGPUVtbl *pVtbl;
515
+ };
516
+ #endif
517
+ #pragma endregion IADLXGPU interface
518
+
519
+ #pragma region IADLXGPUList interface
520
+ #if defined (__cplusplus)
521
+ namespace adlx
522
+ {
523
+ class ADLX_NO_VTABLE IADLXGPUList : public IADLXList
524
+ {
525
+ public:
526
+ ADLX_DECLARE_IID (L"IADLXGPUList")
527
+ //Lists must declare the type of items it holds - what was passed as ADLX_DECLARE_IID() in that interface
528
+ ADLX_DECLARE_ITEM_IID (IADLXGPU::IID ())
529
+
530
+ /**
531
+ * @page DOX_IADLXGPUList_At At
532
+ * @ENG_START_DOX
533
+ * @brief Returns the reference counted interface at the requested location.
534
+ * @ENG_END_DOX
535
+ * @syntax
536
+ * @codeStart
537
+ * @ref ADLX_RESULT At (const adlx_uint location, @ref DOX_IADLXGPU** ppItem)
538
+ * @codeEnd
539
+ *
540
+ * @params
541
+ * @paramrow{1.,[in] ,location,const adlx_uint ,@ENG_START_DOX The location of the requested interface. @ENG_END_DOX}
542
+ * @paramrow{2.,[out] ,ppItem,@ref DOX_IADLXGPU** ,@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}
543
+ *
544
+ * @retvalues
545
+ * @ENG_START_DOX
546
+ * If the location is within the list bounds, __ADLX_OK__ is returned.<br>
547
+ * If the location is not within the list bounds, an error code is returned.<br>
548
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
549
+ * @ENG_END_DOX
550
+ *
551
+ * @detaileddesc
552
+ * @ENG_START_DOX
553
+ * @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed.
554
+ * @ENG_END_DOX
555
+ *
556
+ * @addinfo
557
+ * @ENG_START_DOX
558
+ * 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.
559
+ * @ENG_END_DOX
560
+ *
561
+ * @copydoc IADLXGPUList_REQ_TABLE
562
+ *
563
+ */
564
+ virtual ADLX_RESULT ADLX_STD_CALL At (const adlx_uint location, IADLXGPU** ppItem) = 0;
565
+ /**
566
+ * @page DOX_IADLXGPUList_Add_Back Add_Back
567
+ * @ENG_START_DOX
568
+ * @brief Adds an interface to the end of a list.
569
+ * @ENG_END_DOX
570
+ * @syntax
571
+ * @codeStart
572
+ * @ref ADLX_RESULT Add_Back (@ref DOX_IADLXGPU* pItem)
573
+ * @codeEnd
574
+ *
575
+ * @params
576
+ * @paramrow{1.,[in] ,pItem,@ref DOX_IADLXGPU* ,@ENG_START_DOX The pointer to the interface to be added to the list. @ENG_END_DOX}
577
+ *
578
+ * @retvalues
579
+ * @ENG_START_DOX
580
+ * If the interface is added successfully to the end of the list, __ADLX_OK__ is returned.<br>
581
+ * If the interface is not added to the end of the list, an error code is returned.<br>
582
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
583
+ * @ENG_END_DOX
584
+ *
585
+ * @detaileddesc
586
+ * @ENG_START_DOX
587
+ * @details
588
+ * @ENG_END_DOX
589
+ *
590
+ *
591
+ * @copydoc IADLXGPUList_REQ_TABLE
592
+ *
593
+ */
594
+ virtual ADLX_RESULT ADLX_STD_CALL Add_Back (IADLXGPU* pItem) = 0;
595
+ }; //IADLXGPUList
596
+ //----------------------------------------------------------------------------------------------
597
+ typedef IADLXInterfacePtr_T<IADLXGPUList> IADLXGPUListPtr;
598
+ } //namespace adlx
599
+ #else
600
+ ADLX_DECLARE_IID (IADLXGPUList, L"IADLXGPUList")
601
+ ADLX_DECLARE_ITEM_IID (IADLXGPU, IID_IADLXGPU ())
602
+
603
+ typedef struct IADLXGPUList IADLXGPUList;
604
+
605
+ typedef struct IADLXGPUListVtbl
606
+ {
607
+ //IADLXInterface
608
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXGPUList* pThis);
609
+ adlx_long (ADLX_STD_CALL *Release)(IADLXGPUList* pThis);
610
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXGPUList* pThis, const wchar_t* interfaceId, void** ppInterface);
611
+
612
+ //IADLXList
613
+ adlx_uint (ADLX_STD_CALL *Size)(IADLXGPUList* pThis);
614
+ adlx_uint8 (ADLX_STD_CALL *Empty)(IADLXGPUList* pThis);
615
+ adlx_uint (ADLX_STD_CALL *Begin)(IADLXGPUList* pThis);
616
+ adlx_uint (ADLX_STD_CALL *End)(IADLXGPUList* pThis);
617
+ ADLX_RESULT (ADLX_STD_CALL *At)(IADLXGPUList* pThis, const adlx_uint location, IADLXInterface** ppItem);
618
+ ADLX_RESULT (ADLX_STD_CALL *Clear)(IADLXGPUList* pThis);
619
+ ADLX_RESULT (ADLX_STD_CALL *Remove_Back)(IADLXGPUList* pThis);
620
+ ADLX_RESULT (ADLX_STD_CALL *Add_Back)(IADLXGPUList* pThis, IADLXInterface* pItem);
621
+
622
+ //IADLXGPUList
623
+ ADLX_RESULT (ADLX_STD_CALL *At_GPUList)(IADLXGPUList* pThis, const adlx_uint location, IADLXGPU** ppItem);
624
+ ADLX_RESULT (ADLX_STD_CALL *Add_Back_GPUList)(IADLXGPUList* pThis, IADLXGPU* pItem);
625
+
626
+ } IADLXGPUListVtbl;
627
+
628
+ struct IADLXGPUList
629
+ {
630
+ const IADLXGPUListVtbl *pVtbl;
631
+ };
632
+
633
+ #endif
634
+ #pragma endregion IADLXGPUList interface
635
+
636
+ #pragma region IADLXGPUsChangedHandling interface
637
+ #if defined (__cplusplus)
638
+ namespace adlx
639
+ {
640
+ class ADLX_NO_VTABLE IADLXGPUsEventListener
641
+ {
642
+ public:
643
+ /**
644
+ *@page DOX_IADLXGPUsEventListener_OnGPUListChanged OnGPUListChanged
645
+ *@ENG_START_DOX @brief The __OnGPUListChanged__ is called by ADLX when the GPU list changes. @ENG_END_DOX
646
+ *
647
+ *@syntax
648
+ *@codeStart
649
+ * adlx_bool OnGPUListChanged (@ref DOX_IADLXGPUList* pNewGPUs)
650
+ *@codeEnd
651
+ *
652
+ *@params
653
+ *@paramrow{1.,[out] ,pNewGPUs,@ref DOX_IADLXGPUList* ,@ENG_START_DOX The pointer to the new GPU list. @ENG_END_DOX}
654
+ *
655
+ *
656
+ *@retvalues
657
+ *@ENG_START_DOX If the application requires ADLX to continue notifying the next listener, __true__ must be returned.<br>
658
+ * If the application requires ADLX to stop notifying the next listener, __false__ must be returned.<br> @ENG_END_DOX
659
+ *
660
+ *@detaileddesc
661
+ *@ENG_START_DOX Once the application registers to the notifications with @ref DOX_IADLXGPUsChangedHandling_AddGPUsListEventListener, ADLX will call this method until the application unregisters from the notifications with @ref DOX_IADLXGPUsChangedHandling_RemoveGPUsListEventListener.<br>
662
+ * The method should return quickly to not block the execution path in ADLX. If the method requires a long processing of the event notification, the application must hold onto a reference to the new GPU list with @ref DOX_IADLXInterface_Acquire and make it available on an asynchronous thread and return immediately. When the asynchronous thread is done processing it must discard the new GPU list with @ref DOX_IADLXInterface_Release. @ENG_END_DOX
663
+ *
664
+ *
665
+ *@copydoc IADLXGPUsEventListener_REQ_TABLE
666
+ *
667
+ */
668
+ virtual adlx_bool ADLX_STD_CALL OnGPUListChanged (IADLXGPUList* pNewGPUs) = 0;
669
+ };
670
+
671
+ class ADLX_NO_VTABLE IADLXGPUsChangedHandling : public IADLXInterface
672
+ {
673
+ public:
674
+ ADLX_DECLARE_IID (L"IADLXGPUsChangedHandling")
675
+ /**
676
+ *@page DOX_IADLXGPUsChangedHandling_AddGPUsListEventListener AddGPUsListEventListener
677
+ *@ENG_START_DOX @brief Registers an event listener for notifications when the GPU list changes. @ENG_END_DOX
678
+ *
679
+ *@syntax
680
+ *@codeStart
681
+ * @ref ADLX_RESULT AddGPUsListEventListener (@ref DOX_IADLXGPUsEventListener* pListener)
682
+ *@codeEnd
683
+ *
684
+ *@params
685
+ *@paramrow{1.,[in] ,pListener,@ref DOX_IADLXGPUsEventListener* ,@ENG_START_DOX The pointer to the event listener interface to register for receiving the GPU list change notifications. @ENG_END_DOX}
686
+ *
687
+ *@retvalues
688
+ *@ENG_START_DOX If the event listener is successfully registered, __ADLX_OK__ is returned.<br>
689
+ * If the event listener is not successfully registered, an error code is returned.<br>
690
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
691
+ *
692
+ *@detaileddesc
693
+ *@ENG_START_DOX After the event listener is successfully registered, ADLX will call @ref DOX_IADLXGPUsEventListener_OnGPUListChanged of the listener when the GPU list changes.<br>
694
+ * The event listener instance must exist until the application unregisters the event listener with @ref DOX_IADLXGPUsChangedHandling_RemoveGPUsListEventListener.<br> @ENG_END_DOX
695
+ *
696
+ *
697
+ *@copydoc IADLXGPUsChangedHandling_REQ_TABLE
698
+ *
699
+ */
700
+ virtual ADLX_RESULT ADLX_STD_CALL AddGPUsListEventListener(IADLXGPUsEventListener* pListener) = 0;
701
+ /**
702
+ *@page DOX_IADLXGPUsChangedHandling_RemoveGPUsListEventListener RemoveGPUsListEventListener
703
+ *@ENG_START_DOX @brief Unregisters an event listener from notifications when the GPU list changes. @ENG_END_DOX
704
+ *
705
+ *@syntax
706
+ *@codeStart
707
+ * @ref ADLX_RESULT RemoveGPUsListEventListener (@ref DOX_IADLXGPUsEventListener* pListener)
708
+ *@codeEnd
709
+ *
710
+ *@params
711
+ *@paramrow{1.,[in] ,pListener,@ref DOX_IADLXGPUsEventListener* ,@ENG_START_DOX The pointer to the event listener interface to unregister from receiving the GPU list change notifications. @ENG_END_DOX}
712
+ *
713
+ *
714
+ *@retvalues
715
+ *@ENG_START_DOX If the event listener is successfully unregistered, __ADLX_OK__ is returned.<br>
716
+ * If the event listener is not successfully unregistered, an error code is returned.<br>
717
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
718
+ *
719
+ *@detaileddesc
720
+ *@ENG_START_DOX After the event listener is successfully unregistered, ADLX will no longer call @ref DOX_IADLXGPUsEventListener_OnGPUListChanged method of the listener when the GPU list changes. The application can discard the event listener instance. @ENG_END_DOX
721
+ *
722
+ *
723
+ *@copydoc IADLXGPUsChangedHandling_REQ_TABLE
724
+ *
725
+ */
726
+ virtual ADLX_RESULT ADLX_STD_CALL RemoveGPUsListEventListener(IADLXGPUsEventListener* pListener) = 0;
727
+ };
728
+
729
+ //------------------------------------------------------------------------------------
730
+ typedef IADLXInterfacePtr_T<IADLXGPUsChangedHandling> IADLXGPUsChangedHandlingPtr;
731
+ }
732
+ #else
733
+ ADLX_DECLARE_IID (IADLXGPUsChangedHandling, L"IADLXGPUsChangedHandling")
734
+ typedef struct IADLXGPUsEventListener IADLXGPUsEventListener;
735
+
736
+ typedef struct IADLXGPUsEventListenerVtbl
737
+ {
738
+ // IADLXGPUsEventListener interface
739
+ adlx_bool (ADLX_STD_CALL *OnGPUListChanged)(IADLXGPUsEventListener* pThis, IADLXGPUList* pNewGPUs);
740
+ } IADLXGPUsEventListenerVtbl;
741
+
742
+ struct IADLXGPUsEventListener
743
+ {
744
+ const IADLXGPUsEventListenerVtbl *pVtbl;
745
+ };
746
+
747
+ typedef struct IADLXGPUsChangedHandling IADLXGPUsChangedHandling;
748
+
749
+ typedef struct IADLXGPUsChangedHandlingVtbl
750
+ {
751
+ // IADLXInterface
752
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXGPUsChangedHandling* pThis);
753
+ adlx_long (ADLX_STD_CALL *Release)(IADLXGPUsChangedHandling* pThis);
754
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXGPUsChangedHandling* pThis, const wchar_t* interfaceId, void** ppInterface);
755
+
756
+ // IADLXGPUsChangedHandling
757
+ ADLX_RESULT (ADLX_STD_CALL *AddGPUsListEventListener)(IADLXGPUsChangedHandling* pThis, IADLXGPUsEventListener* pListener);
758
+ ADLX_RESULT (ADLX_STD_CALL *RemoveGPUsListEventListener)(IADLXGPUsChangedHandling* pThis, IADLXGPUsEventListener* pListener);
759
+
760
+ } IADLXGPUsChangedHandlingVtbl;
761
+
762
+ struct IADLXGPUsChangedHandling
763
+ {
764
+ const IADLXGPUsChangedHandlingVtbl *pVtbl;
765
+ };
766
+
767
+ #endif
768
+ #pragma endregion IADLXGPUsChangedHandling interface
769
+
770
+ //IADLXSystem is a singleton interface, should not be deleted
771
+ #pragma region IADLXSystem interface
772
+ #if defined (__cplusplus)
773
+ namespace adlx
774
+ {
775
+ class ADLX_NO_VTABLE IADLXDesktopServices;
776
+ class ADLX_NO_VTABLE IADLXDisplayServices;
777
+ class ADLX_NO_VTABLE IADLXLog;
778
+ class ADLX_NO_VTABLE IADLX3DSettingsServices;
779
+ class ADLX_NO_VTABLE IADLXGPUTuningServices;
780
+ class ADLX_NO_VTABLE IADLXPerformanceMonitoringServices;
781
+ class ADLX_NO_VTABLE IADLXI2C;
782
+
783
+ class ADLX_NO_VTABLE IADLXSystem
784
+ {
785
+ public:
786
+ /**
787
+ * @page DOX_IADLXSystem_HybridGraphicsType HybridGraphicsType
788
+ * @ENG_START_DOX
789
+ * @brief Gets the hybrid graphics type of the system.
790
+ * @ENG_END_DOX
791
+ * @syntax
792
+ * @codeStart
793
+ * @ref ADLX_RESULT HybridGraphicsType (@ref ADLX_HG_TYPE* hgType)
794
+ * @codeEnd
795
+ *
796
+ * @params
797
+ * @paramrow{1.,[out] ,hgType,@ref ADLX_HG_TYPE* ,@ENG_START_DOX The pointer to a variable where the hybrid graphics type is returned. @ENG_END_DOX}
798
+ *
799
+ * @retvalues
800
+ * @ENG_START_DOX
801
+ * If the hybrid graphics type is successfully returned, __ADLX_OK__ is returned. <br>
802
+ * If the hybrid graphics type is not successfully returned, an error code is returned. <br>
803
+ * Refer to @ref ADLX_RESULT for success codes and error codes.
804
+ * @ENG_END_DOX
805
+ *
806
+ * @detaileddesc
807
+ * @ENG_START_DOX
808
+ * @details The hybrid graphics type can be used to discover if the system is a hybrid graphics platform.
809
+ * Hybrid graphics platforms share cross-adapter resources between a discrete GPU and an integrated GPU. Applications can run on either GPU depending on their needs. The operating system and the AMD display driver together determine which GPU an application should run on.
810
+ *
811
+ * On an AMD hybrid graphics platform, the integrated GPU can be an AMD integrated GPU or a non-AMD integrated GPU.
812
+ *
813
+ * @ENG_END_DOX
814
+ *
815
+ *
816
+ * @copydoc IADLXSystem_REQ_TABLE
817
+ *
818
+ */
819
+ virtual ADLX_RESULT ADLX_STD_CALL HybridGraphicsType (ADLX_HG_TYPE* hgType) = 0;
820
+ /**
821
+ * @page DOX_IADLXSystem_GetGPUs GetGPUs
822
+ * @ENG_START_DOX
823
+ * @brief Gets the reference counted list of AMD GPUs.
824
+ * @ENG_END_DOX
825
+ * @syntax
826
+ * @codeStart
827
+ * @ref ADLX_RESULT GetGPUs (@ref DOX_IADLXGPUList** ppGPUs)
828
+ * @codeEnd
829
+ *
830
+ * @params
831
+ * @paramrow{1.,[out] ,ppGPUs,@ref DOX_IADLXGPUList** ,@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 __*ppGPUs__ to __nullptr__. @ENG_END_DOX}
832
+ *
833
+ * @retvalues
834
+ * @ENG_START_DOX
835
+ * If the interface is successfully returned, __ADLX_OK__ is returned.<br>
836
+ * If the interface is not successfully returned, an error code is returned.<br>
837
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
838
+ * @ENG_END_DOX
839
+ *
840
+ * @detaileddesc
841
+ * @ENG_START_DOX
842
+ * @details For more information about the AMD GPUs, refer to @ref @adlx_gpu_support "ADLX GPU Support".<br>
843
+ * The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed.
844
+ * @ENG_END_DOX
845
+ *
846
+ *@addinfo
847
+ *@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
848
+ *
849
+ * @copydoc IADLXSystem_REQ_TABLE
850
+ *
851
+ */
852
+ virtual ADLX_RESULT ADLX_STD_CALL GetGPUs (IADLXGPUList** ppGPUs) = 0;
853
+ /**
854
+ * @page DOX_IADLXSystem_QueryInterface QueryInterface
855
+ * @ENG_START_DOX
856
+ * @brief Gets reference counted extension interfaces to @ref DOX_IADLXSystem.
857
+ * @ENG_END_DOX
858
+ *
859
+ * @syntax
860
+ * @codeStart
861
+ * @ref ADLX_RESULT QueryInterface (const wchar_t* interfaceId, void** ppInterface)
862
+ * @codeEnd
863
+ *
864
+ * @params
865
+ * @paramrow{1.,[in] ,interfaceId,const wchar_t*,@ENG_START_DOX The identifier of the interface being requested. @ENG_END_DOX}
866
+ * @paramrow{2.,[out],ppInterface,void**,@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 __*ppInterface__ to __nullptr__. @ENG_END_DOX}
867
+ *
868
+ * @retvalues
869
+ * @ENG_START_DOX
870
+ * If the interface is successfully returned, __ADLX_OK__ is returned.<br>
871
+ * If the interface is not successfully returned, an error code is returned.<br>
872
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
873
+ * @ENG_END_DOX
874
+ *
875
+ * @detaileddesc
876
+ * @ENG_START_DOX
877
+ * @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed.
878
+ * @ENG_END_DOX
879
+ *
880
+ *
881
+ * @addinfo
882
+ * @ENG_START_DOX
883
+ * In C++ when using a smart pointer for the returned interface there is no need to call @ref DOX_IADLXInterface_Release because the smart pointer calls it internally.
884
+ * @ENG_END_DOX
885
+ *
886
+ * @copydoc IADLXSystem_REQ_TABLE
887
+ *
888
+ */
889
+ virtual ADLX_RESULT ADLX_STD_CALL QueryInterface (const wchar_t* interfaceId, void** ppInterface) = 0;
890
+ /**
891
+ * @page DOX_IADLXSystem_GetDisplaysServices GetDisplaysServices
892
+ * @ENG_START_DOX
893
+ * @brief Gets the reference counted main interface to the @ref DOX_IADLXDisplayServices "Display" domain.
894
+ * @ENG_END_DOX
895
+ *
896
+ * @syntax
897
+ * @codeStart
898
+ * @ref ADLX_RESULT GetDisplaysServices (@ref DOX_IADLXDisplayServices** ppDispServices)
899
+ * @codeEnd
900
+ *
901
+ * @params
902
+ * @paramrow{1.,[out] ,ppDispServices,@ref DOX_IADLXDisplayServices**,@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 __*ppDispServices__ to __nullptr__. @ENG_END_DOX}
903
+ *
904
+ * @retvalues
905
+ * @ENG_START_DOX
906
+ * If the interface is successfully returned, __ADLX_OK__ is returned.<br>
907
+ * If the interface is not returned, an error code is returned.<br>
908
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
909
+ * @ENG_END_DOX
910
+ *
911
+ * @detaileddesc
912
+ * @ENG_START_DOX
913
+ * @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed.
914
+ * @ENG_END_DOX
915
+ *
916
+ * @addinfo
917
+ *@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
918
+ * @copydoc IADLXSystem_REQ_TABLE
919
+ *
920
+ */
921
+ virtual ADLX_RESULT ADLX_STD_CALL GetDisplaysServices(IADLXDisplayServices** ppDispServices) = 0;
922
+ /**
923
+ * @page DOX_IADLXSystem_GetDesktopsServices GetDesktopsServices
924
+ * @ENG_START_DOX
925
+ * @brief Gets the reference counted main interface to the @ref DOX_IADLXDesktopServices "Desktop" domain.
926
+ * @ENG_END_DOX
927
+ *
928
+ * @syntax
929
+ * @codeStart
930
+ * @ref ADLX_RESULT GetDesktopsServices (@ref DOX_IADLXDesktopServices** ppDeskServices)
931
+ * @codeEnd
932
+ *
933
+ * @params
934
+ * @paramrow{1.,[out] ,ppDeskServices,@ref DOX_IADLXDesktopServices**,@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 __*ppDeskServices__ to __nullptr__. @ENG_END_DOX}
935
+ *
936
+ * @retvalues
937
+ * @ENG_START_DOX
938
+ * If the interface is successfully returned, __ADLX_OK__ is returned.<br>
939
+ * If the interface is not successfully returned, an error code is returned.<br>
940
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
941
+ * @ENG_END_DOX
942
+ *
943
+ * @detaileddesc
944
+ * @ENG_START_DOX
945
+ * @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed.
946
+ * @ENG_END_DOX
947
+ *
948
+ * @addinfo
949
+ *@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
950
+ *
951
+ * @copydoc IADLXSystem_REQ_TABLE
952
+ *
953
+ */
954
+ virtual ADLX_RESULT ADLX_STD_CALL GetDesktopsServices(IADLXDesktopServices** ppDeskServices) = 0;
955
+
956
+ /**
957
+ * @page DOX_IADLXSystem_GetGPUsChangedHandling GetGPUsChangedHandling
958
+ * @ENG_START_DOX
959
+ * @brief Gets the reference counted interface to allow registering and unregistering for notifications when the GPU list changes.
960
+ * @ENG_END_DOX
961
+ *
962
+ * @syntax
963
+ * @codeStart
964
+ * @ref ADLX_RESULT GetGPUsChangedHandling (@ref DOX_IADLXGPUsChangedHandling** ppGPUsChangedHandling)
965
+ * @codeEnd
966
+ *
967
+ * @params
968
+ * @paramrow{1.,[out] ,ppGPUsChangedHandling,@ref DOX_IADLXGPUsChangedHandling**,@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 __*ppGPUsChangedHandling__ to __nullptr__. @ENG_END_DOX}
969
+ *
970
+ * @retvalues
971
+ * @ENG_START_DOX
972
+ * If the interface is successfully returned, __ADLX_OK__ is returned.<br>
973
+ * If the interface is not successfully returned, an error code is returned.<br>
974
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
975
+ * @ENG_END_DOX
976
+ *
977
+ * @detaileddesc
978
+ * @ENG_START_DOX
979
+ * @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed.
980
+ * @ENG_END_DOX
981
+ *
982
+ *@addinfo
983
+ *@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
984
+ *
985
+ * @copydoc IADLXSystem_REQ_TABLE
986
+ *
987
+ */
988
+ virtual ADLX_RESULT ADLX_STD_CALL GetGPUsChangedHandling (IADLXGPUsChangedHandling** ppGPUsChangedHandling) = 0;
989
+ /**
990
+ * @page DOX_IADLXSystem_EnableLog EnableLog
991
+ * @ENG_START_DOX
992
+ * @brief Enables logging in ADLX.
993
+ * @ENG_END_DOX
994
+ *
995
+ * @syntax
996
+ * @codeStart
997
+ * @ref ADLX_RESULT EnableLog (@ref ADLX_LOG_DESTINATION mode, @ref ADLX_LOG_SEVERITY severity, @ref DOX_IADLXLog* pLogger, const wchar_t* fileName)
998
+ * @codeEnd
999
+ *
1000
+ * @params
1001
+ * @paramrow{1.,[in] ,mode,@ref ADLX_LOG_DESTINATION,@ENG_START_DOX The log destination. @ENG_END_DOX}
1002
+ * @paramrow{2.,[in] ,severity,@ref ADLX_LOG_SEVERITY,@ENG_START_DOX The logging severity. @ENG_END_DOX}
1003
+ * @paramrow{3.,[in] ,pLogger,@ref DOX_IADLXLog*,@ENG_START_DOX The pointer to the log interface to receive log messages from ADLX. @ENG_END_DOX}
1004
+ * @paramrow{4.,[in] ,fileName,const wchar_t*,@ENG_START_DOX The zero-terminated string that specifies the path of the log file. @ENG_END_DOX}
1005
+ *
1006
+ * @retvalues
1007
+ * @ENG_START_DOX
1008
+ * If __EnableLog__ is successfully executed, __ADLX_OK__ is returned. <br>
1009
+ * If __EnableLog__ is not successfully executed, an error code is returned. <br>
1010
+ * Refer to @ref ADLX_RESULT for success codes and error codes.
1011
+ * @ENG_END_DOX
1012
+ *
1013
+ * @detaileddesc
1014
+ * @ENG_START_DOX
1015
+ * @details By default, ADLX logging is disabled.
1016
+ * Use __EnableLog__ to configure log destination and severity.
1017
+ *
1018
+ * - To configure the log destination into a file, specify the __mode__ parameter as __LOCALFILE__ and provide the file path in the __filename__ parameter. The __pLogger__ parameter must be __nullptr__. <br>
1019
+ * - To configure the log destination into the output window of the debugger, specify the __mode__ parameter as __DBGVIEW__. The __filename__ and __pLogger__ parameters must be __nullptr__.<br>
1020
+ * - To configure the log destination to be sent as a string into the application, specify the __mode__ parameter as __APPLICATION__. Implement the @ref DOX_IADLXLog interface in the application and pass a pointer to an instance of that interface into the __pLogger__ parameter. The log instance must exist until ADLX is terminated. The __filename__ parameter must be __nullptr__.<br>
1021
+ * - To obtain the error messages in the ADLX execution code, specify the __severity__ parameter as __LERROR__.<br>
1022
+ * - To obtain the error and warning messages in the ADLX execution code, specify the __severity__ parameter as __LWARNING__.<br>
1023
+ * - To obtain error, warning, and debug tracing messages in the ADLX execution code, specify the __severity__ parameter as __LDEBUG__.
1024
+ * @ENG_END_DOX
1025
+ *
1026
+ * @copydoc IADLXSystem_REQ_TABLE
1027
+ *
1028
+ */
1029
+ virtual ADLX_RESULT ADLX_STD_CALL EnableLog (ADLX_LOG_DESTINATION mode, ADLX_LOG_SEVERITY severity, IADLXLog* pLogger, const wchar_t* fileName) = 0;
1030
+
1031
+ /**
1032
+ * @page DOX_IADLXSystem_Get3DSettingsServices Get3DSettingsServices
1033
+ * @ENG_START_DOX
1034
+ * @brief Gets the reference counted main interface to the @ref DOX_IADLX3DSettingsServices "3D Graphics" domain.
1035
+ * @ENG_END_DOX
1036
+ *
1037
+ * @syntax
1038
+ * @codeStart
1039
+ * @ref ADLX_RESULT Get3DSettingsServices (@ref DOX_IADLX3DSettingsServices** pp3DSettingsServices)
1040
+ * @codeEnd
1041
+ *
1042
+ * @params
1043
+ * @paramrow{1.,[out] ,pp3DSettingsServices,@ref DOX_IADLX3DSettingsServices**,@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 __*pp3DSettingsServices__ to __nullptr__. @ENG_END_DOX}
1044
+ *
1045
+ * @retvalues
1046
+ * @ENG_START_DOX
1047
+ * If the interface is successfully returned, __ADLX_OK__ is returned.<br>
1048
+ * If the interface is not successfully returned, an error code is returned.<br>
1049
+ * Refer to @ref ADLX_RESULT for success codes and error codes.
1050
+ * @ENG_END_DOX
1051
+ *
1052
+ * @detaileddesc
1053
+ * @ENG_START_DOX
1054
+ * @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed.
1055
+ * @ENG_END_DOX
1056
+ *
1057
+ *@addinfo
1058
+ *@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
1059
+ *
1060
+ * @copydoc IADLXSystem_REQ_TABLE
1061
+ *
1062
+ */
1063
+ virtual ADLX_RESULT ADLX_STD_CALL Get3DSettingsServices (IADLX3DSettingsServices** pp3DSettingsServices) = 0;
1064
+
1065
+ /**
1066
+ * @page DOX_IADLXSystem_GetGPUTuningServices GetGPUTuningServices
1067
+ * @ENG_START_DOX
1068
+ * @brief Gets the reference counted main interface to the @ref DOX_IADLXGPUTuningServices "GPU Tuning" domain.
1069
+ * @ENG_END_DOX
1070
+ *
1071
+ * @syntax
1072
+ * @codeStart
1073
+ * @ref ADLX_RESULT GetGPUTuningServices (@ref DOX_IADLXGPUTuningServices** ppGPUTuningServices)
1074
+ * @codeEnd
1075
+ *
1076
+ * @params
1077
+ * @paramrow{1.,[out] ,ppGPUTuningServices,@ref DOX_IADLXGPUTuningServices**,@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 __*ppGPUTuningServices__ to __nullptr__. @ENG_END_DOX}
1078
+ *
1079
+ * @retvalues
1080
+ * @ENG_START_DOX
1081
+ * If the interface is successfully returned, __ADLX_OK__ is returned.<br>
1082
+ * If the interface is not successfully returned, an error code is returned.<br>
1083
+ * Refer to @ref ADLX_RESULT for success codes and error codes.
1084
+ * @ENG_END_DOX
1085
+ *
1086
+ * @detaileddesc
1087
+ * @ENG_START_DOX
1088
+ * @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed.
1089
+ * @ENG_END_DOX
1090
+ *
1091
+ *@addinfo
1092
+ *@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
1093
+ *
1094
+ * @copydoc IADLXSystem_REQ_TABLE
1095
+ *
1096
+ */
1097
+ virtual ADLX_RESULT ADLX_STD_CALL GetGPUTuningServices (IADLXGPUTuningServices** ppGPUTuningServices) = 0;
1098
+
1099
+ /**
1100
+ *@page DOX_IADLXSystem_GetPerformanceMonitoringServices GetPerformanceMonitoringServices
1101
+ *@ENG_START_DOX @brief Gets the reference counted main interface to the @ref DOX_IADLXPerformanceMonitoringServices "Performance Monitoring" domain. @ENG_END_DOX
1102
+ *
1103
+ *@syntax
1104
+ *@codeStart
1105
+ * @ref ADLX_RESULT GetPerformanceMonitoringServices (@ref DOX_IADLXPerformanceMonitoringServices** ppPerformanceMonitoringServices)
1106
+ *@codeEnd
1107
+ *
1108
+ *@params
1109
+ *@paramrow{1.,[out] ,ppPerformanceMonitoringServices,@ref DOX_IADLXPerformanceMonitoringServices** ,@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 __*ppPerformanceMonitoringServices__ to __nullptr__. @ENG_END_DOX}
1110
+ *
1111
+ *@retvalues
1112
+ *@ENG_START_DOX If the interface is successfully returned, __ADLX_OK__ is returned. <br>
1113
+ * If the interface is not successfully returned, an error code is returned. <br>
1114
+ * Refer to @ref ADLX_RESULT for success codes and error codes. @ENG_END_DOX
1115
+ *
1116
+ *@detaileddesc
1117
+ *@ENG_START_DOX @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed. @ENG_END_DOX
1118
+ *
1119
+ * @addinfo
1120
+ * @ENG_START_DOX
1121
+ * 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.
1122
+ * @ENG_END_DOX
1123
+ *
1124
+ *@copydoc IADLXSystem_REQ_TABLE
1125
+ *
1126
+ */
1127
+ virtual ADLX_RESULT ADLX_STD_CALL GetPerformanceMonitoringServices (IADLXPerformanceMonitoringServices** ppPerformanceMonitoringServices) = 0;
1128
+
1129
+ /**
1130
+ *@page DOX_IADLXSystem_TotalSystemRAM TotalSystemRAM
1131
+ *@ENG_START_DOX @brief Gets the size of the total RAM on this system. @ENG_END_DOX
1132
+ *
1133
+ *@syntax
1134
+ *@codeStart
1135
+ * @ref ADLX_RESULT TotalSystemRAM (adlx_uint* ramMB)
1136
+ *@codeEnd
1137
+ *
1138
+ *@params
1139
+ *@paramrow{1.,[out] ,ramMB,adlx_uint* ,@ENG_START_DOX The pointer to a variable where the total system RAM size is returned\, in MB. @ENG_END_DOX}
1140
+ *
1141
+ *@retvalues
1142
+ *@ENG_START_DOX If the interface is successfully returned, __ADLX_OK__ is returned. <br>
1143
+ * If the interface is not successfully returned, an error code is returned. <br>
1144
+ * Refer to @ref ADLX_RESULT for success codes and error codes. @ENG_END_DOX
1145
+ *
1146
+ *@copydoc IADLXSystem_REQ_TABLE
1147
+ *
1148
+ */
1149
+ virtual ADLX_RESULT ADLX_STD_CALL TotalSystemRAM (adlx_uint* ramMB) = 0;
1150
+
1151
+ /**
1152
+ *@page DOX_IADLXSystem_GetI2C GetI2C
1153
+ *@ENG_START_DOX @brief Gets the reference counted @ref DOX_IADLXI2C "I2C" interface of a GPU. @ENG_END_DOX
1154
+ *
1155
+ *@syntax
1156
+ *@codeStart
1157
+ * @ref ADLX_RESULT GetI2C (@ref DOX_IADLXGPU* pGPU, @ref DOX_IADLXI2C** ppI2C)
1158
+ *@codeEnd
1159
+ *
1160
+ *@params
1161
+ *@paramrow{1.,[in] ,pGPU,@ref DOX_IADLXGPU* ,@ENG_START_DOX The pointer to the GPU interface. @ENG_END_DOX}
1162
+ *@paramrow{2.,[out] ,ppI2C,@ref DOX_IADLXI2C** ,@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 __*ppI2C__ to __nullptr__. @ENG_END_DOX}
1163
+ *
1164
+ *@retvalues
1165
+ *@ENG_START_DOX If the interface is successfully returned, __ADLX_OK__ is returned. <br>
1166
+ * If the interface is not successfully returned, an error code is returned. <br>
1167
+ * Refer to @ref ADLX_RESULT for success codes and error codes. @ENG_END_DOX
1168
+ *
1169
+ *@detaileddesc
1170
+ *@ENG_START_DOX @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed. @ENG_END_DOX
1171
+ *
1172
+ * @addinfo
1173
+ * @ENG_START_DOX
1174
+ * 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
1175
+ *
1176
+ *@copydoc IADLXSystem_REQ_TABLE
1177
+ *
1178
+ */
1179
+ virtual ADLX_RESULT ADLX_STD_CALL GetI2C (IADLXGPU* pGPU, IADLXI2C** ppI2C) = 0;
1180
+
1181
+ }; //IADLXSystem
1182
+ } //namespace adlx
1183
+ #else
1184
+
1185
+ typedef struct IADLXDesktopServices IADLXDesktopServices;
1186
+ typedef struct IADLXDisplayServices IADLXDisplayServices;
1187
+ typedef struct IADLXLog IADLXLog;
1188
+ typedef struct IADLX3DSettingsServices IADLX3DSettingsServices;
1189
+ typedef struct IADLXSystem IADLXSystem;
1190
+ typedef struct IADLXGPUTuningServices IADLXGPUTuningServices;
1191
+ typedef struct IADLXPerformanceMonitoringServices IADLXPerformanceMonitoringServices;
1192
+ typedef struct IADLXI2C IADLXI2C;
1193
+
1194
+ typedef struct IADLXSystemVtbl
1195
+ {
1196
+ // IADLXSystem interface
1197
+ ADLX_RESULT (ADLX_STD_CALL *GetHybridGraphicsType)(IADLXSystem* pThis, ADLX_HG_TYPE* hgType);
1198
+ ADLX_RESULT (ADLX_STD_CALL *GetGPUs)(IADLXSystem* pThis, IADLXGPUList** ppGPUs);
1199
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXSystem* pThis, const wchar_t* interfaceId, void** ppInterface);
1200
+ ADLX_RESULT (ADLX_STD_CALL *GetDisplaysServices)(IADLXSystem* pThis, IADLXDisplayServices** ppDispServices);
1201
+ ADLX_RESULT (ADLX_STD_CALL *GetDesktopsServices)(IADLXSystem* pThis, IADLXDesktopServices** ppDeskServices);
1202
+ ADLX_RESULT (ADLX_STD_CALL *GetGPUsChangedHandling)(IADLXSystem* pThis, IADLXGPUsChangedHandling** ppGPUsChangedHandling);
1203
+ ADLX_RESULT (ADLX_STD_CALL *EnableLog)(IADLXSystem* pThis, ADLX_LOG_DESTINATION mode, ADLX_LOG_SEVERITY severity, IADLXLog* pLogger, const wchar_t* fileName);
1204
+ ADLX_RESULT (ADLX_STD_CALL *Get3DSettingsServices)(IADLXSystem* pThis, IADLX3DSettingsServices** pp3DSettingsServices);
1205
+ ADLX_RESULT (ADLX_STD_CALL *GetGPUTuningServices)(IADLXSystem* pThis, IADLXGPUTuningServices** ppGPUTuningServices);
1206
+ ADLX_RESULT (ADLX_STD_CALL *GetPerformanceMonitoringServices)(IADLXSystem* pThis, IADLXPerformanceMonitoringServices** ppPerformanceMonitoringServices);
1207
+ ADLX_RESULT (ADLX_STD_CALL *TotalSystemRAM)(IADLXSystem* pThis, adlx_uint* ramMB);
1208
+ ADLX_RESULT (ADLX_STD_CALL *GetI2C)(IADLXSystem* pThis, IADLXGPU* pGPU, IADLXI2C** ppI2C);
1209
+ } IADLXSystemVtbl;
1210
+
1211
+ struct IADLXSystem
1212
+ {
1213
+ const IADLXSystemVtbl *pVtbl;
1214
+ };
1215
+ #endif
1216
+ #pragma endregion IADLXSystem interface
1217
+
1218
+ //IADLMapping is a singleton interface, should not be deleted
1219
+ #pragma region IADLMapping interface
1220
+ #if defined (__cplusplus)
1221
+ namespace adlx
1222
+ {
1223
+ //Interface used to interface between ADL and ADLX. This is useful in applications that use both ADL and ADLX,
1224
+ //where ADLX was initialized with the instance of ADL that is initialized by the application.
1225
+ //In such case the application might need to use both ADL and ADLX on the same GPU or display.
1226
+ //This interface provides conversion both ways between ADL and ADLX GPU and display identity
1227
+ class ADLX_NO_VTABLE IADLXDisplay;
1228
+ class ADLX_NO_VTABLE IADLXDesktop;
1229
+
1230
+ class ADLX_NO_VTABLE IADLMapping
1231
+ {
1232
+ public:
1233
+ /**
1234
+ * @page DOX_IADLMapping_GetADLXGPUFromBdf GetADLXGPUFromBdf
1235
+ * @ENG_START_DOX
1236
+ * @brief Gets the reference counted @ref DOX_IADLXGPU interface corresponding to the GPU with the specified PCI bus number, device number, and function number.
1237
+ * @ENG_END_DOX
1238
+ * @syntax
1239
+ * @codeStart
1240
+ * @ref ADLX_RESULT GetADLXGPUFromBdf (adlx_int bus, adlx_int device, adlx_int function, @ref DOX_IADLXGPU** ppGPU)
1241
+ * @codeEnd
1242
+ *
1243
+ * @params
1244
+ * @paramrow{1.,[in] ,bus,adlx_int,@ENG_START_DOX The unique PCIE bus number of the requested GPU. @ENG_END_DOX}
1245
+ * @paramrow{2.,[in] ,device,adlx_int,@ENG_START_DOX The device number of the requested GPU. @ENG_END_DOX}
1246
+ * @paramrow{3.,[in] ,function,adlx_int,@ENG_START_DOX The function number of the requested GPU. @ENG_END_DOX}
1247
+ * @paramrow{4.,[out],ppGPU,@ref DOX_IADLXGPU**,@ENG_START_DOX The address of the pointer to the returned interface. If the GPU was not found\, the method sets the dereferenced address __*ppGPU__ to __nullptr__. @ENG_END_DOX}
1248
+ *
1249
+ * @retvalues
1250
+ * @ENG_START_DOX
1251
+ * If the @ref DOX_IADLXGPU is successfully returned, __ADLX_OK__ is returned. <br>
1252
+ * If the @ref DOX_IADLXGPU is not returned, an error code is returned. <br>
1253
+ * Refer to @ref ADLX_RESULT for success codes and error codes.
1254
+ * @ENG_END_DOX
1255
+ *
1256
+ * @detaileddesc
1257
+ * @ENG_START_DOX
1258
+ * @details __GetADLXGPUFromBdf__ is used when an ADLX method must be called for a GPU obtained from ADL where an __AdapterInfo__ structure is available.<br>
1259
+ * The PCI bus number, device number, and function number parameters correspond to ADL __AdapterInfo.iBusNumber__, __AdapterInfo.iDeviceNumber__, and __AdapterInfo.iFunctionNumber__ for that GPU.<br>
1260
+ * The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed.
1261
+ * @ENG_END_DOX
1262
+ *
1263
+ * @addinfo
1264
+ * @ENG_START_DOX
1265
+ * In C++ when using a smart pointer for the returned interface there is no need to call @ref DOX_IADLXInterface_Release because the smart pointer calls it internally.
1266
+ * @ENG_END_DOX
1267
+ *
1268
+ * @copydoc IADLMapping_REQ_TABLE
1269
+ *
1270
+ */
1271
+ virtual ADLX_RESULT ADLX_STD_CALL GetADLXGPUFromBdf (adlx_int bus, adlx_int device, adlx_int function, IADLXGPU** ppGPU) = 0;
1272
+ /**
1273
+ * @page DOX_IADLMapping_GetADLXGPUFromAdlAdapterIndex GetADLXGPUFromAdlAdapterIndex
1274
+ * @ENG_START_DOX
1275
+ * @brief Gets the reference counted @ref DOX_IADLXGPU interface corresponding to the GPU with the specified ADL adapter index.
1276
+ * @ENG_END_DOX
1277
+ * @syntax
1278
+ * @codeStart
1279
+ * @ref ADLX_RESULT GetADLXGPUFromAdlAdapterIndex (adlx_int adlAdapterIndex, @ref DOX_IADLXGPU** ppGPU)
1280
+ * @codeEnd
1281
+ *
1282
+ * @params
1283
+ * @paramrow{1.,[in],adlAdapterIndex,adlx_int,@ENG_START_DOX The ADL adapter index for the requested GPU. @ENG_END_DOX}
1284
+ * @paramrow{2.,[out],ppGPU,@ref DOX_IADLXGPU**,@ENG_START_DOX The address of the pointer to the returned interface. If the GPU was not found\, the method sets the dereferenced address __*ppGPU__ to __nullptr__. @ENG_END_DOX}
1285
+ *
1286
+ * @retvalues
1287
+ * @ENG_START_DOX
1288
+ * If the @ref DOX_IADLXGPU is successfully returned, __ADLX_OK__ is returned. <br>
1289
+ * If the @ref DOX_IADLXGPU is not returned, an error code is returned. <br>
1290
+ * Refer to @ref ADLX_RESULT for success codes and error codes
1291
+ * @ENG_END_DOX
1292
+ *
1293
+ * @detaileddesc
1294
+ * @ENG_START_DOX
1295
+ * @details __GetADLXGPUFromAdlAdapterIndex__ is used when an ADLX method must be called for a GPU obtained from ADL for which an ADL adapter index is available. <br>
1296
+ * The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed.
1297
+ * @ENG_END_DOX
1298
+ *
1299
+ * @addinfo
1300
+ * @ENG_START_DOX
1301
+ * In C++ when using a smart pointer for the returned interface there is no need to call @ref DOX_IADLXInterface_Release because the smart pointer calls it internally.
1302
+ * @ENG_END_DOX
1303
+ *
1304
+ * @copydoc IADLMapping_REQ_TABLE
1305
+ *
1306
+ */
1307
+ virtual ADLX_RESULT ADLX_STD_CALL GetADLXGPUFromAdlAdapterIndex (adlx_int adlAdapterIndex, IADLXGPU** ppGPU) = 0;
1308
+ /**
1309
+ * @page DOX_IADLMapping_BdfFromADLXGPU BdfFromADLXGPU
1310
+ * @ENG_START_DOX
1311
+ * @brief Gets the PCI bus number, device number, and function number corresponding to the GPU with the specified @ref DOX_IADLXGPU interface.
1312
+ * @ENG_END_DOX
1313
+ * @syntax
1314
+ * @codeStart
1315
+ * @ref ADLX_RESULT BdfFromADLXGPU (@ref DOX_IADLXGPU* ppGPU, adlx_int* bus, adlx_int* device, adlx_int* function)
1316
+ * @codeEnd
1317
+ *
1318
+ * @params
1319
+ * @paramrow{1.,[in] ,pGPU,@ref DOX_IADLXGPU* ,@ENG_START_DOX The pointer to the GPU interface. @ENG_END_DOX}
1320
+ * @paramrow{2.,[out] ,bus,adlx_int* ,@ENG_START_DOX The pointer to a variable where the unique PCIE bus number of the requested GPU is returned. @ENG_END_DOX}
1321
+ * @paramrow{3.,[out] ,device,adlx_int* ,@ENG_START_DOX The pointer to a variable where the device number of the requested GPU is returned. @ENG_END_DOX}
1322
+ * @paramrow{4.,[out] ,function,adlx_int* ,@ENG_START_DOX The pointer to a variable where function number of the requested GPU is returned. @ENG_END_DOX}
1323
+ *
1324
+ * @retvalues
1325
+ * @ENG_START_DOX
1326
+ * If bus, device, function are returned correctly, __ADLX_OK__ is returned.<br>
1327
+ * If bus, device, function are not returned correctly, an error code is returned. <br>
1328
+ * Refer to @ref ADLX_RESULT for success codes and error codes.
1329
+ * @ENG_END_DOX
1330
+ *
1331
+ * @detaileddesc
1332
+ * @ENG_START_DOX
1333
+ * @details __BdfFromADLXGPU__ is used when an ADL function must be called for a GPU obtained from ADLX, and the GPU's PCI bus, device, and function are required for that ADL function.
1334
+ * @ENG_END_DOX
1335
+ *
1336
+ * @copydoc IADLMapping_REQ_TABLE
1337
+ *
1338
+ */
1339
+ virtual ADLX_RESULT ADLX_STD_CALL BdfFromADLXGPU (IADLXGPU* pGPU, adlx_int* bus, adlx_int* device, adlx_int* function) = 0;
1340
+ /**
1341
+ * @page DOX_IADLMapping_AdlAdapterIndexFromADLXGPU AdlAdapterIndexFromADLXGPU
1342
+ * @ENG_START_DOX
1343
+ * @brief Gets the ADL Adapter index corresponding to the GPU with the specified @ref DOX_IADLXGPU interface.
1344
+ * @ENG_END_DOX
1345
+ * @syntax
1346
+ * @codeStart
1347
+ * @ref ADLX_RESULT AdlAdapterIndexFromADLXGPU (@ref DOX_IADLXGPU* ppGPU, adlx_int* adlAdapterIndex)
1348
+ * @codeEnd
1349
+ *
1350
+ * @params
1351
+ * @paramrow{1.,[in] ,pGPU,@ref DOX_IADLXGPU* ,@ENG_START_DOX The pointer to the GPU interface. @ENG_END_DOX}
1352
+ * @paramrow{2.,[out] ,adlAdapterIndex,adlx_int* ,@ENG_START_DOX The pointer to a variable where ADL adapter index of the requested GPU is returned. @ENG_END_DOX}
1353
+ *
1354
+ * @retvalues
1355
+ * @ENG_START_DOX
1356
+ * If the ADL adapter index is successfully returned, __ADLX_OK__ is returned. <br>
1357
+ * If the ADL Adapter index is not returned, an error code is returned. <br>
1358
+ * Refer to @ref ADLX_RESULT for success codes and error codes.
1359
+ * @ENG_END_DOX
1360
+ *
1361
+ * @detaileddesc
1362
+ * @ENG_START_DOX
1363
+ * @details __AdlAdapterIndexFromADLXGPU__ is used when an ADL function must be called for a GPU obtained from ADLX, and the ADL adapter index is required for that ADL function.
1364
+ * @ENG_END_DOX
1365
+ *
1366
+ * @copydoc IADLMapping_REQ_TABLE
1367
+ *
1368
+ */
1369
+ virtual ADLX_RESULT ADLX_STD_CALL AdlAdapterIndexFromADLXGPU (IADLXGPU* pGPU, adlx_int* adlAdapterIndex) = 0;
1370
+ /**
1371
+ * @page DOX_IADLMapping_GetADLXDisplayFromADLIds GetADLXDisplayFromADLIds
1372
+ * @ENG_START_DOX
1373
+ * @brief Gets the reference counted @ref DOX_IADLXDisplay interface corresponding to the display with the specified ADL adapter index, display index, PCI bus number, device number, and function number.
1374
+ * @ENG_END_DOX
1375
+ * @syntax
1376
+ * @codeStart
1377
+ * @ref ADLX_RESULT GetADLXDisplayFromADLIds (adlx_int adapterIndex, adlx_int displayIndex, adlx_int bus, adlx_int device, adlx_int function, @ref DOX_IADLXDisplay** ppDisplay)
1378
+ * @codeEnd
1379
+ *
1380
+ * @params
1381
+ * @paramrow{1.,[in] ,adapterIndex,adlx_int ,@ENG_START_DOX The ADL adapter index of the GPU where the requested display is connected. @ENG_END_DOX}
1382
+ * @paramrow{2.,[in] ,displayIndex,adlx_int ,@ENG_START_DOX The ADL logical display index of the requested display. @ENG_END_DOX}
1383
+ * @paramrow{3.,[in] ,bus,adlx_int ,@ENG_START_DOX The unique PCIE bus number of the GPU where the requested display is connected. @ENG_END_DOX}
1384
+ * @paramrow{4.,[in] ,device,adlx_int ,@ENG_START_DOX The device number of the GPU where the requested display is connected. @ENG_END_DOX}
1385
+ * @paramrow{5.,[in] ,function,adlx_int ,@ENG_START_DOX The device number of the GPU where the requested display is connected. @ENG_END_DOX}
1386
+ * @paramrow{6.,[out] ,ppDisplay,@ref DOX_IADLXDisplay**,@ENG_START_DOX The address of the pointer to the returned interface. If the display was not found\, the method sets the dereferenced address __*ppDisplay__ to __nullptr__. @ENG_END_DOX}
1387
+ *
1388
+ * @retvalues
1389
+ * @ENG_START_DOX
1390
+ * If the @ref DOX_IADLXDisplay interface is successfully returned, __ADLX_OK__ is returned. <br>
1391
+ * If the @ref DOX_IADLXDisplay interface is not returned, an error code is returned. <br>
1392
+ * Refer to @ref ADLX_RESULT for success codes and error codes.
1393
+ * @ENG_END_DOX
1394
+ *
1395
+ * @detaileddesc
1396
+ * @ENG_START_DOX
1397
+ * @details __GetADLXDisplayFromADLIds__ is used when an ADLX method must be called for a display obtained from ADL. The ADL adapter index corresponds to the GPU to which the display is connected. <br>
1398
+ * The display index corresponds to the __ADLDisplayID.iDisplayLogicalIndex__ field for the display. <br>
1399
+ * The PCI bus number, device number, and function number parameters correspond to ADL __AdapterInfo.iBusNumber__, __AdapterInfo.iDeviceNumber__, and __AdapterInfo.iFunctionNumber__ for the GPU where that display is connected.<br>
1400
+ * The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed.
1401
+ * @ENG_END_DOX
1402
+ *
1403
+ * @addinfo
1404
+ * @ENG_START_DOX
1405
+ * In C++ when using a smart pointer for the returned interface there is no need to call @ref DOX_IADLXInterface_Release because the smart pointer calls it internally.
1406
+ * @ENG_END_DOX
1407
+ * @copydoc IADLMapping_REQ_TABLE
1408
+ *
1409
+ */
1410
+ virtual ADLX_RESULT ADLX_STD_CALL GetADLXDisplayFromADLIds (adlx_int adapterIndex, adlx_int displayIndex, adlx_int bus, adlx_int device, adlx_int function, IADLXDisplay** ppDisplay) = 0;
1411
+ /**
1412
+ * @page DOX_IADLMapping_ADLIdsFromADLXDisplay ADLIdsFromADLXDisplay
1413
+ * @ENG_START_DOX
1414
+ * @brief Gets the ADL Adapter index, display index, the PCI bus number, device number, and function number corresponding to the display with the specified @ref DOX_IADLXDisplay interface.
1415
+ * @ENG_END_DOX
1416
+ * @syntax
1417
+ * @codeStart
1418
+ * @ref ADLX_RESULT ADLIdsFromADLXDisplay (@ref DOX_IADLXDisplay* pDisplay, adlx_int* adapterIndex, adlx_int* displayIndex, adlx_int* bus, adlx_int* device, adlx_int* function)
1419
+ * @codeEnd
1420
+ *
1421
+ * @params
1422
+ * @paramrow{1.,[in] ,pDisplay, @ref DOX_IADLXDisplay* ,@ENG_START_DOX The pointer to the display interface. @ENG_END_DOX}
1423
+ * @paramrow{2.,[out] ,adapterIndex, adlx_int* ,@ENG_START_DOX The pointer to a variable where the ADL adapter index of the GPU that drives the requested display is returned. @ENG_END_DOX}
1424
+ * @paramrow{3.,[out] ,displayIndex, adlx_int* ,@ENG_START_DOX The pointer to a variable where the ADL logical display index of the GPU that drives the requested display is returned. @ENG_END_DOX}
1425
+ * @paramrow{4.,[out] ,bus,adlx_int*,@ENG_START_DOX The pointer to a variable where the unique PCIE bus number of the GPU that drives the requested display is returned. @ENG_END_DOX}
1426
+ * @paramrow{5.,[out] ,device,adlx_int*,@ENG_START_DOX The pointer to a variable where the device number of the GPU that drives the requested display is returned. @ENG_END_DOX}
1427
+ * @paramrow{6.,[out] ,function,adlx_int*,@ENG_START_DOX The pointer to a variable where the function number of the GPU that drives the requested display is returned. @ENG_END_DOX}
1428
+ *
1429
+ * @retvalues
1430
+ * @ENG_START_DOX
1431
+ * If the @ref DOX_IADLXDisplay interface is successfully returned, __ADLX_OK__ is returned. <br>
1432
+ * If the @ref DOX_IADLXDisplay interface is not returned, an error code is returned. <br>
1433
+ * Refer to @ref ADLX_RESULT for success codes and error codes.
1434
+ * @ENG_END_DOX
1435
+ *
1436
+ * @detaileddesc
1437
+ * @ENG_START_DOX
1438
+ * @details __ADLIdsFromADLXDisplay__ is used when an ADL function must be called for a display obtained from ADLX, or for the GPU where the display is connected.
1439
+ * @ENG_END_DOX
1440
+ *
1441
+ * @copydoc IADLMapping_REQ_TABLE
1442
+ *
1443
+ */
1444
+ virtual ADLX_RESULT ADLX_STD_CALL ADLIdsFromADLXDisplay (IADLXDisplay* pDisplay, adlx_int* adapterIndex, adlx_int* displayIndex, adlx_int* bus, adlx_int* device, adlx_int* function) = 0;
1445
+ /**
1446
+ * @page DOX_IADLMapping_GetADLXDesktopFromADLIds GetADLXDesktopFromADLIds
1447
+ * @ENG_START_DOX
1448
+ * @brief Gets the reference counted @ref DOX_IADLXDesktop interface corresponding to the desktop with the specified ADL adapter index, VidPnSource ID, the PCI bus number, device number, and function number.
1449
+ * @ENG_END_DOX
1450
+ * @syntax
1451
+ * @codeStart
1452
+ * @ref ADLX_RESULT GetADLXDesktopFromADLIds (adlx_int adapterIndex, adlx_int VidPnSource, adlx_int bus, adlx_int device, adlx_int function, @ref DOX_IADLXDesktop** ppDesktop)
1453
+ * @codeEnd
1454
+ *
1455
+ * @params
1456
+ * @paramrow{1.,[in] ,adapterIndex,adlx_int ,@ENG_START_DOX The ADL adapter index of the GPU where the requested desktop is instantiated. @ENG_END_DOX}
1457
+ * @paramrow{2.,[in] ,VidPnSourceID,adlx_int ,@ENG_START_DOX The zero-based identification number of the video present source in a path of a video present network (VidPN) topology of the requested desktop. @ENG_END_DOX}
1458
+ * @paramrow{3.,[in] ,bus,adlx_int ,@ENG_START_DOX The unique PCIE bus number of the GPU where the requested desktop is instantiated. @ENG_END_DOX}
1459
+ * @paramrow{4.,[in] ,device,adlx_int ,@ENG_START_DOX The device number of the GPU where the requested desktop is instantiated. @ENG_END_DOX}
1460
+ * @paramrow{5.,[in] ,function,adlx_int ,@ENG_START_DOX The function number of the GPU where the requested desktop is instantiated. @ENG_END_DOX}
1461
+ * @paramrow{6.,[out] ,ppDesktop,@ref DOX_IADLXDesktop**,@ENG_START_DOX The address of the pointer to the returned interface. If the desktop was not found\, the method sets the dereferenced address __*ppDesktop__ to __nullptr__. @ENG_END_DOX}
1462
+ *
1463
+ * @retvalues
1464
+ * @ENG_START_DOX
1465
+ * If the @ref DOX_IADLXDesktop interface is successfully returned, __ADLX_OK__ is returned. <br>
1466
+ * If the arguments are incorrect __ADLX_INVALID_ARGS__ s returned. <br>
1467
+ * If @ref DOX_IADLXDesktop interface is not returned, an error code is returned. <br>
1468
+ * Refer to @ref ADLX_RESULT for success codes and error codes.
1469
+ * @ENG_END_DOX
1470
+ *
1471
+ * @detaileddesc
1472
+ * @ENG_START_DOX
1473
+ * @details __GetADLXDesktopFromADLIds__ is used when and ADLX method must be called from a desktop obtained from ADL. The adapter index corresponds to the GPU where the desktop is instantiated.<br>
1474
+ * The PCI bus number, device number, and function number parameters correspond to ADL __AdapterInfo.iBusNumber__, __AdapterInfo.iDeviceNumber__, and __AdapterInfo.iFunctionNumber__ of the GPU where that desktop is instantiated.<br>
1475
+ * The VidPnSource ID is obtained from __D3DKMT_OPENADAPTERFROMGDIDISPLAYNAME.VidPnSourceId__ field for this desktop.<br>
1476
+ * The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed.
1477
+ * @ENG_END_DOX
1478
+ *
1479
+ * @addinfo
1480
+ * @ENG_START_DOX
1481
+ * In C++ when using a smart pointer for the returned interface there is no need to call @ref DOX_IADLXInterface_Release because the smart pointer calls it internally.
1482
+ * @ENG_END_DOX
1483
+ *
1484
+ * @copydoc IADLMapping_REQ_TABLE
1485
+ *
1486
+ */
1487
+ virtual ADLX_RESULT ADLX_STD_CALL GetADLXDesktopFromADLIds (adlx_int adapterIndex, adlx_int VidPnSourceId, adlx_int bus, adlx_int device, adlx_int function, IADLXDesktop** ppDesktop) = 0;
1488
+ /**
1489
+ * @page DOX_IADLMapping_ADLIdsFromADLXDesktop ADLIdsFromADLXDesktop
1490
+ * @ENG_START_DOX
1491
+ * @brief Gets the ADL Adapter index, Vid source ID, the PCIE bus number, device number, and function number corresponding to desktop with the specified @ref DOX_IADLXDesktop interface.
1492
+ * @ENG_END_DOX
1493
+ * @syntax
1494
+ * @codeStart
1495
+ * @ref ADLX_RESULT ADLIdsFromADLXDesktop (@ref DOX_IADLXDesktop* pDesktop, adlx_int* adapterIndex, adlx_int* VidPnSourceId, adlx_int* bus, adlx_int* device, adlx_int* function)
1496
+ * @codeEnd
1497
+ *
1498
+ * @params
1499
+ * @paramrow{1.,[in] ,pDesktop, @ref DOX_IADLXDesktop* ,@ENG_START_DOX The pointer to the desktop interface. @ENG_END_DOX}
1500
+ * @paramrow{2.,[out] ,adapterIndex, adlx_int* ,@ENG_START_DOX The pointer to a variable where the ADL adapter index of the GPU that drives the requested desktop is returned. @ENG_END_DOX}
1501
+ * @paramrow{3.,[out] ,VidPnSourceId, adlx_int* ,@ENG_START_DOX The pointer to a variable where the zero-based identification number of the video present network (VidPN) topology of the requested desktop is returned. @ENG_END_DOX}
1502
+ * @paramrow{4.,[out] ,bus,adlx_int*,@ENG_START_DOX The pointer to a variable where the unique PCIE bus number of the GPU that drives the requested desktop is returned. @ENG_END_DOX}
1503
+ * @paramrow{5.,[out] ,device,adlx_int*,@ENG_START_DOX The pointer to a variable where the device number of the GPU that drives the requested desktop is returned. @ENG_END_DOX}
1504
+ * @paramrow{6.,[out] ,function,adlx_int*,@ENG_START_DOX The pointer to a variable where the function number of the GPU that drives the requested desktop is returned. @ENG_END_DOX}
1505
+ *
1506
+ * @retvalues
1507
+ * @ENG_START_DOX
1508
+ * If the @ref DOX_IADLXDesktop interface is successfully returned, __ADLX_OK__ is returned. <br>
1509
+ * If the @ref DOX_IADLXDesktop interface is not returned, an error code is returned. <br>
1510
+ * Refer to @ref ADLX_RESULT for success codes and error codes
1511
+ * @ENG_END_DOX
1512
+ *
1513
+ * @detaileddesc
1514
+ * @ENG_START_DOX
1515
+ * @details __ADLIdsFromADLXDesktop__ is used when an ADL function must be called for a desktop obtained from ADLX, or for the GPU that drives the desktop.
1516
+ * @ENG_END_DOX
1517
+ *
1518
+ * @copydoc IADLMapping_REQ_TABLE
1519
+ *
1520
+ */
1521
+ virtual ADLX_RESULT ADLX_STD_CALL ADLIdsFromADLXDesktop (IADLXDesktop* pDesktop, adlx_int* adapterIndex, adlx_int* VidPnSourceId, adlx_int* bus, adlx_int* device, adlx_int* function) = 0;
1522
+ }; // IADLMapping
1523
+ } //namespace adlx
1524
+ #else
1525
+ typedef struct IADLXDisplay IADLXDisplay;
1526
+ typedef struct IADLXDesktop IADLXDesktop;
1527
+ typedef struct IADLMapping IADLMapping;
1528
+
1529
+ typedef struct IADLMappingVtbl
1530
+ {
1531
+ //Gets the IADLXGPU object corresponding to a GPU with given bus, device and function number
1532
+ ADLX_RESULT (ADLX_STD_CALL *GetADLXGPUFromBdf) (IADLMapping* pThis, adlx_int bus, adlx_int device, adlx_int function, IADLXGPU** ppGPU);
1533
+ //Gets the IADLXGPU object corresponding to a GPU with given ADL adapter index
1534
+ ADLX_RESULT (ADLX_STD_CALL *GetADLXGPUFromAdlAdapterIndex) (IADLMapping* pThis, adlx_int adlAdapterIndex, IADLXGPU** ppGPU);
1535
+ //Gets the bus, device and function number corresponding to the given IADLXGPU
1536
+ ADLX_RESULT (ADLX_STD_CALL *BdfFromADLXGPU) (IADLMapping* pThis, IADLXGPU* pGPU, adlx_int* bus, adlx_int* device, adlx_int* function);
1537
+ //Gets the ADL Adapter index corresponding to the given IADLXGPU
1538
+ ADLX_RESULT (ADLX_STD_CALL *AdlAdapterIndexFromADLXGPU) (IADLMapping* pThis, IADLXGPU* pGPU, adlx_int* adlAdapterIndex);
1539
+ //Gets the display object corresponding to the give ADL ids
1540
+ ADLX_RESULT (ADLX_STD_CALL *GetADLXDisplayFromADLIds) (IADLMapping* pThis, adlx_int adapterIndex, adlx_int displayIndex, adlx_int bus, adlx_int device, adlx_int function, IADLXDisplay** ppDisplay);
1541
+ //Gets ADL ids corresponding to the display object
1542
+ ADLX_RESULT (ADLX_STD_CALL *ADLIdsFromADLXDisplay) (IADLMapping* pThis, IADLXDisplay* pDisplay, adlx_int* adapterIndex, adlx_int* displayIndex, adlx_int* bus, adlx_int* device, adlx_int* function);
1543
+ //Gets the desktop object corresponding to the give ADL ids
1544
+ ADLX_RESULT (ADLX_STD_CALL *GetADLXDesktopFromADLIds) (IADLMapping* pThis, adlx_int adapterIndex, adlx_int VidPnSourceId, adlx_int bus, adlx_int device, adlx_int function, IADLXDesktop** ppDesktop);
1545
+ //Gets ADL ids corresponding to the desktop object
1546
+ ADLX_RESULT (ADLX_STD_CALL *ADLIdsFromADLXDesktop) (IADLMapping* pThis, IADLXDesktop* pDesktop, adlx_int* adapterIndex, adlx_int* VidPnSourceId, adlx_int* bus, adlx_int* device, adlx_int* function);
1547
+
1548
+ } IADLMappingVtbl;
1549
+
1550
+ struct IADLMapping
1551
+ {
1552
+ const IADLMappingVtbl *pVtbl;
1553
+ };
1554
+ #endif
1555
+ #pragma endregion IADLMapping interface
1556
+
1557
+ #endif //ADLX_ISYSTEM_H