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,1239 @@
1
+ //
2
+ // Copyright (c) 2021 - 2025 Advanced Micro Devices, Inc. All rights reserved.
3
+ //
4
+ //-------------------------------------------------------------------------------------------------
5
+
6
+ #ifndef ADLX_IGPUTUNING_H
7
+ #define ADLX_IGPUTUNING_H
8
+ #pragma once
9
+
10
+ #include "ADLXStructures.h"
11
+ #include "ICollections.h"
12
+ #include "IChangedEvent.h"
13
+
14
+ //-------------------------------------------------------------------------------------------------
15
+ //IGPUTuning.h - Interfaces for ADLX GPU Tuning functionality
16
+
17
+ //Manual Tuning interface
18
+ #pragma region IADLXManualTuningState
19
+ #if defined (__cplusplus)
20
+ namespace adlx
21
+ {
22
+ class ADLX_NO_VTABLE IADLXManualTuningState : public IADLXInterface
23
+ {
24
+ public:
25
+ ADLX_DECLARE_IID (L"IADLXManualTuningState")
26
+
27
+ /**
28
+ * @page DOX_IADLXManualTuningState_GetFrequency GetFrequency
29
+ * @ENG_START_DOX
30
+ * @brief Gets the frequency in the manual tuning state on a GPU.
31
+ * @ENG_END_DOX
32
+ *
33
+ * @syntax
34
+ * @codeStart
35
+ * @ref ADLX_RESULT GetFrequency (adlx_uint* value)
36
+ * @codeEnd
37
+ *
38
+ * @params
39
+ * @paramrow{1.,[out] ,value,adlx_uint* ,@ENG_START_DOX The pointer to a variable where the frequency (in MHz) in the manual tuning state is returned. @ENG_END_DOX}
40
+ *
41
+ * @retvalues
42
+ * @ENG_START_DOX
43
+ * If the frequency is successfully returned, __ADLX_OK__ is returned.<br>
44
+ * If the frequency is not successfully returned, an error code is returned.<br>
45
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
46
+ * @ENG_END_DOX
47
+ *
48
+ * @copydoc IADLXManualTuningState_REQ_TABLE
49
+ *
50
+ */
51
+ virtual ADLX_RESULT ADLX_STD_CALL GetFrequency (adlx_int* value) = 0;
52
+
53
+ /**
54
+ *@page DOX_IADLXManualTuningState_SetFrequency SetFrequency
55
+ *@ENG_START_DOX @brief Sets the frequency in the manual tuning state on a GPU. @ENG_END_DOX
56
+ *
57
+ *@syntax
58
+ *@codeStart
59
+ * @ref ADLX_RESULT SetFrequency (adlx_int value)
60
+ *@codeEnd
61
+ *
62
+ * @params
63
+ * @paramrow{1.,[in] ,value,adlx_int ,@ENG_START_DOX The new frequency (in MHz) in the manual tuning state. @ENG_END_DOX}
64
+ *
65
+ *@retvalues
66
+ *@ENG_START_DOX If the frequency is successfully set, __ADLX_OK__ is returned.<br>
67
+ * If the frequency is not successfully set, an error code is returned.<br>
68
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
69
+ *
70
+ *@copydoc IADLXManualTuningState_REQ_TABLE
71
+ *
72
+ */
73
+ virtual ADLX_RESULT ADLX_STD_CALL SetFrequency (adlx_int value) = 0;
74
+
75
+ /**
76
+ * @page DOX_IADLXManualTuningState_GetVoltage GetVoltage
77
+ * @ENG_START_DOX
78
+ * @brief Gets the voltage in the manual tuning state on a GPU.
79
+ * @ENG_END_DOX
80
+ *
81
+ * @syntax
82
+ * @codeStart
83
+ * @ref ADLX_RESULT GetVoltage (adlx_uint* value)
84
+ * @codeEnd
85
+ *
86
+ * @params
87
+ * @paramrow{1.,[out] ,value,adlx_uint* ,@ENG_START_DOX The pointer to a variable where the voltage (in mV) in the manual tuning state is returned. @ENG_END_DOX}
88
+ *
89
+ * @retvalues
90
+ * @ENG_START_DOX
91
+ * If the voltage is successfully returned, __ADLX_OK__ is returned.<br>
92
+ * If the voltage is not successfully returned, an error code is returned.<br>
93
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
94
+ * @ENG_END_DOX
95
+ *
96
+ * @copydoc IADLXManualTuningState_REQ_TABLE
97
+ *
98
+ */
99
+ virtual ADLX_RESULT ADLX_STD_CALL GetVoltage (adlx_int* value) = 0;
100
+
101
+ /**
102
+ *@page DOX_IADLXManualTuningState_SetVoltage SetVoltage
103
+ *@ENG_START_DOX @brief Sets the voltage in the manual tuning state on a GPU. @ENG_END_DOX
104
+ *
105
+ *@syntax
106
+ *@codeStart
107
+ * @ref ADLX_RESULT SetVoltage (adlx_int value)
108
+ *@codeEnd
109
+ *
110
+ * @params
111
+ * @paramrow{1.,[in] ,value,adlx_int ,@ENG_START_DOX The new voltage (in mV) in the manual tuning state. @ENG_END_DOX}
112
+ *
113
+ *@retvalues
114
+ *@ENG_START_DOX If the voltage is successfully set, __ADLX_OK__ is returned.<br>
115
+ * If the voltage is not successfully set, an error code is returned.<br>
116
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
117
+ *
118
+ *@copydoc IADLXManualTuningState_REQ_TABLE
119
+ *
120
+ */
121
+ virtual ADLX_RESULT ADLX_STD_CALL SetVoltage (adlx_int value) = 0;
122
+ };
123
+ //----------------------------------------------------------------------------------------------
124
+ typedef IADLXInterfacePtr_T<IADLXManualTuningState> IADLXManualTuningStatePtr;
125
+ } //namespace adlx
126
+ #else //__cplusplus
127
+ ADLX_DECLARE_IID (IADLXManualTuningState, L"IADLXManualTuningState")
128
+
129
+ typedef struct IADLXManualTuningState IADLXManualTuningState;
130
+
131
+ typedef struct IADLXManualTuningStateVtbl
132
+ {
133
+ //IADLXInterface
134
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXManualTuningState* pThis);
135
+ adlx_long (ADLX_STD_CALL *Release)(IADLXManualTuningState* pThis);
136
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXManualTuningState* pThis, const wchar_t* interfaceId, void** ppInterface);
137
+
138
+ //IADLXManualTuningState
139
+ ADLX_RESULT (ADLX_STD_CALL *GetFrequency)(IADLXManualTuningState* pThis, adlx_int* value);
140
+ ADLX_RESULT (ADLX_STD_CALL *SetFrequency)(IADLXManualTuningState* pThis, adlx_int value);
141
+ ADLX_RESULT (ADLX_STD_CALL *GetVoltage)(IADLXManualTuningState* pThis, adlx_int* value);
142
+ ADLX_RESULT (ADLX_STD_CALL *SetVoltage)(IADLXManualTuningState* pThis, adlx_int value);
143
+ }IADLXManualTuningStateVtbl;
144
+
145
+ struct IADLXManualTuningState { const IADLXManualTuningStateVtbl *pVtbl; };
146
+ #endif //__cplusplus
147
+ #pragma endregion IADLXManualTuningState
148
+
149
+ #pragma region IADLXMemoryTimingDescription
150
+ #if defined (__cplusplus)
151
+ namespace adlx
152
+ {
153
+ class ADLX_NO_VTABLE IADLXMemoryTimingDescription : public IADLXInterface
154
+ {
155
+ public:
156
+ ADLX_DECLARE_IID (L"IADLXMemoryTimingDescription")
157
+
158
+ /**
159
+ * @page DOX_IADLXMemoryTimingDescription_GetDescription GetDescription
160
+ * @ENG_START_DOX
161
+ * @brief Gets the memory timing description.
162
+ * @ENG_END_DOX
163
+ *
164
+ * @syntax
165
+ * @codeStart
166
+ * @ref ADLX_RESULT GetDescription (@ref ADLX_MEMORYTIMING_DESCRIPTION* description)
167
+ * @codeEnd
168
+ *
169
+ * @params
170
+ * @paramrow{1.,[out] ,description,@ref ADLX_MEMORYTIMING_DESCRIPTION* ,@ENG_START_DOX The pointer to a variable where the memory timing description is returned. @ENG_END_DOX}
171
+ *
172
+ * @retvalues
173
+ * @ENG_START_DOX
174
+ * If the memory timing description is successfully returned, __ADLX_OK__ is returned.<br>
175
+ * If the memory timing description is not successfully returned, an error code is returned.<br>
176
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
177
+ * @ENG_END_DOX
178
+ *
179
+ * @copydoc IADLXMemoryTimingDescription_REQ_TABLE
180
+ *
181
+ */
182
+ virtual ADLX_RESULT ADLX_STD_CALL GetDescription (ADLX_MEMORYTIMING_DESCRIPTION* description) = 0;
183
+ };
184
+ typedef IADLXInterfacePtr_T<IADLXMemoryTimingDescription> IADLXMemoryTimingDescriptionPtr;
185
+ } //namespace adlx
186
+ #else //__cplusplus
187
+ ADLX_DECLARE_IID (IADLXMemoryTimingDescription, L"IADLXMemoryTimingDescription")
188
+
189
+ typedef struct IADLXMemoryTimingDescription IADLXMemoryTimingDescription;
190
+
191
+ typedef struct IADLXMemoryTimingDescriptionVtbl
192
+ {
193
+ //IADLXInterface
194
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXMemoryTimingDescription* pThis);
195
+ adlx_long (ADLX_STD_CALL *Release)(IADLXMemoryTimingDescription* pThis);
196
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXMemoryTimingDescription* pThis, const wchar_t* interfaceId, void** ppInterface);
197
+
198
+ //IADLXMemoryTimingDescription
199
+ ADLX_RESULT (ADLX_STD_CALL *GetDescription)(IADLXMemoryTimingDescription* pThis, ADLX_MEMORYTIMING_DESCRIPTION* description);
200
+ }IADLXMemoryTimingDescriptionVtbl;
201
+
202
+ struct IADLXMemoryTimingDescription { const IADLXMemoryTimingDescriptionVtbl *pVtbl; };
203
+ #endif //__cplusplus
204
+ #pragma endregion IADLXMemoryTimingDescription
205
+
206
+ //IADLXManualTuningState list interface
207
+ #pragma region IADLXManualTuningStateList
208
+ #if defined (__cplusplus)
209
+ namespace adlx
210
+ {
211
+ class ADLX_NO_VTABLE IADLXManualTuningStateList : public IADLXList
212
+ {
213
+ public:
214
+ ADLX_DECLARE_IID (L"IADLXManualTuningStateList")
215
+ //Lists must declare the type of items it holds - what was passed as ADLX_DECLARE_IID() in that interface
216
+ ADLX_DECLARE_ITEM_IID (IADLXManualTuningState::IID ())
217
+
218
+ /**
219
+ * @page DOX_IADLXManualTuningStateList_At At
220
+ * @ENG_START_DOX
221
+ * @brief Returns the reference counted interface at the requested location.
222
+ * @ENG_END_DOX
223
+ *
224
+ * @syntax
225
+ * @codeStart
226
+ * @ref ADLX_RESULT At (const adlx_uint location, @ref DOX_IADLXManualTuningState** ppItem)
227
+ * @codeEnd
228
+ *
229
+ * @params
230
+ * @paramrow{1.,[in] ,location,const adlx_uint ,@ENG_START_DOX The location of the requested interface. @ENG_END_DOX}
231
+ * @paramrow{2.,[out] ,ppItem,@ref DOX_IADLXManualTuningState** ,@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}
232
+ *
233
+ * @retvalues
234
+ * @ENG_START_DOX
235
+ * If the location is within the list bounds, __ADLX_OK__ is returned.<br>
236
+ * If the location is not within the list bounds, an error code is returned.<br>
237
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
238
+ * @ENG_END_DOX
239
+ *
240
+ * @detaileddesc
241
+ * @ENG_START_DOX
242
+ * @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed.
243
+ * @ENG_END_DOX
244
+ *
245
+ * @addinfo
246
+ * @ENG_START_DOX
247
+ * 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.
248
+ * @ENG_END_DOX
249
+ *
250
+ * @copydoc IADLXManualTuningStateList_REQ_TABLE
251
+ *
252
+ */
253
+ virtual ADLX_RESULT ADLX_STD_CALL At (const adlx_uint location, IADLXManualTuningState** ppItem) = 0;
254
+
255
+ /**
256
+ *@page DOX_IADLXManualTuningStateList_Add_Back Add_Back
257
+ *@ENG_START_DOX @brief Adds an interface to the end of a list. @ENG_END_DOX
258
+ *
259
+ *@syntax
260
+ *@codeStart
261
+ * @ref ADLX_RESULT Add_Back (@ref DOX_IADLXManualTuningState* pItem)
262
+ *@codeEnd
263
+ *
264
+ *@params
265
+ *@paramrow{1.,[in] ,pItem,@ref DOX_IADLXManualTuningState* ,@ENG_START_DOX The pointer to the interface to be added to the list. @ENG_END_DOX}
266
+ *
267
+ * @retvalues
268
+ * @ENG_START_DOX
269
+ * If the interface is added successfully to the end of the list, __ADLX_OK__ is returned.<br>
270
+ * If the interface is not added to the end of the list, an error code is returned.<br>
271
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
272
+ * @ENG_END_DOX
273
+ *
274
+ *@copydoc IADLXManualTuningStateList_REQ_TABLE
275
+ *
276
+ */
277
+ virtual ADLX_RESULT ADLX_STD_CALL Add_Back (IADLXManualTuningState* pItem) = 0;
278
+ }; //IADLXManualTuningStateList
279
+ //----------------------------------------------------------------------------------------------
280
+ typedef IADLXInterfacePtr_T<IADLXManualTuningStateList> IADLXManualTuningStateListPtr;
281
+ } //namespace adlx
282
+ #else //__cplusplus
283
+ ADLX_DECLARE_IID (IADLXManualTuningStateList, L"IADLXManualTuningStateList")
284
+ ADLX_DECLARE_ITEM_IID (IADLXManualTuningState, IID_IADLXManualTuningState ())
285
+
286
+ typedef struct IADLXManualTuningStateList IADLXManualTuningStateList;
287
+
288
+ typedef struct IADLXManualTuningStateListVtbl
289
+ {
290
+ //IADLXInterface
291
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXManualTuningStateList* pThis);
292
+ adlx_long (ADLX_STD_CALL *Release)(IADLXManualTuningStateList* pThis);
293
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXManualTuningStateList* pThis, const wchar_t* interfaceId, void** ppInterface);
294
+
295
+ //IADLXList
296
+ adlx_uint (ADLX_STD_CALL *Size)(IADLXManualTuningStateList* pThis);
297
+ adlx_bool (ADLX_STD_CALL *Empty)(IADLXManualTuningStateList* pThis);
298
+ adlx_uint (ADLX_STD_CALL *Begin)(IADLXManualTuningStateList* pThis);
299
+ adlx_uint (ADLX_STD_CALL *End)(IADLXManualTuningStateList* pThis);
300
+ ADLX_RESULT (ADLX_STD_CALL *At)(IADLXManualTuningStateList* pThis, const adlx_uint location, IADLXInterface** ppItem);
301
+ ADLX_RESULT (ADLX_STD_CALL *Clear)(IADLXManualTuningStateList* pThis);
302
+ ADLX_RESULT (ADLX_STD_CALL *Remove_Back)(IADLXManualTuningStateList* pThis);
303
+ ADLX_RESULT (ADLX_STD_CALL *Add_Back)(IADLXManualTuningStateList* pThis, IADLXInterface* pItem);
304
+
305
+ //IADLXManualTuningStateList
306
+ ADLX_RESULT (ADLX_STD_CALL *At_ManualTuningStateList)(IADLXManualTuningStateList* pThis, const adlx_uint location, IADLXManualTuningState** ppItem);
307
+ ADLX_RESULT (ADLX_STD_CALL *Add_Back_ManualTuningStateList)(IADLXManualTuningStateList* pThis, IADLXManualTuningState* pItem);
308
+
309
+ }IADLXManualTuningStateListVtbl;
310
+
311
+ struct IADLXManualTuningStateList { const IADLXManualTuningStateListVtbl *pVtbl; };
312
+ #endif //__cplusplus
313
+ #pragma endregion IADLXManualTuningStateList
314
+
315
+ #pragma region IADLXMemoryTimingDescriptionList
316
+ #if defined (__cplusplus)
317
+ namespace adlx
318
+ {
319
+ class ADLX_NO_VTABLE IADLXMemoryTimingDescriptionList : public IADLXList
320
+ {
321
+ public:
322
+ ADLX_DECLARE_IID (L"IADLXMemoryTimingDescriptionList")
323
+ //Lists must declare the type of items it holds - what was passed as ADLX_DECLARE_IID() in that interface
324
+ ADLX_DECLARE_ITEM_IID (IADLXMemoryTimingDescription::IID ())
325
+
326
+ /**
327
+ * @page DOX_IADLXMemoryTimingDescriptionList_At At
328
+ * @ENG_START_DOX
329
+ * @brief Returns the reference counted interface at the requested location.
330
+ * @ENG_END_DOX
331
+ *
332
+ * @syntax
333
+ * @codeStart
334
+ * @ref ADLX_RESULT At (const adlx_uint location, @ref DOX_IADLXMemoryTimingDescription** ppItem)
335
+ * @codeEnd
336
+ *
337
+ * @params
338
+ * @paramrow{1.,[in] ,location,const adlx_uint ,@ENG_START_DOX The location of the requested interface. @ENG_END_DOX}
339
+ * @paramrow{2.,[out] ,ppItem,@ref DOX_IADLXMemoryTimingDescription** ,@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}
340
+ *
341
+ * @retvalues
342
+ * @ENG_START_DOX
343
+ * If the location is within the list bounds, __ADLX_OK__ is returned.<br>
344
+ * If the location is not within the list bounds, an error code is returned.<br>
345
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
346
+ * @ENG_END_DOX
347
+ *
348
+ * @detaileddesc
349
+ * @ENG_START_DOX
350
+ * @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed.
351
+ * @ENG_END_DOX
352
+ *
353
+ * @addinfo
354
+ * @ENG_START_DOX
355
+ * 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.
356
+ * @ENG_END_DOX
357
+ *
358
+ * @copydoc IADLXMemoryTimingDescriptionList_REQ_TABLE
359
+ *
360
+ */
361
+ virtual ADLX_RESULT ADLX_STD_CALL At (const adlx_uint location, IADLXMemoryTimingDescription** ppItem) = 0;
362
+
363
+ /**
364
+ *@page DOX_IADLXMemoryTimingDescriptionList_Add_Back Add_Back
365
+ *@ENG_START_DOX @brief Adds an interface to the end of a list. @ENG_END_DOX
366
+ *
367
+ *@syntax
368
+ *@codeStart
369
+ * @ref ADLX_RESULT Add_Back (@ref DOX_IADLXMemoryTimingDescription* pItem)
370
+ *@codeEnd
371
+ *
372
+ *@params
373
+ *@paramrow{1.,[in] ,pItem,@ref DOX_IADLXMemoryTimingDescription* ,@ENG_START_DOX The pointer to the interface to be added to the list. @ENG_END_DOX}
374
+ *
375
+ * @retvalues
376
+ * @ENG_START_DOX
377
+ * If the interface is added successfully to the end of the list, __ADLX_OK__ is returned.<br>
378
+ * If the interface is not added to the end of the list, an error code is returned.<br>
379
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
380
+ * @ENG_END_DOX
381
+ *
382
+ *@copydoc IADLXMemoryTimingDescriptionList_REQ_TABLE
383
+ *
384
+ */
385
+ virtual ADLX_RESULT ADLX_STD_CALL Add_Back (IADLXMemoryTimingDescription* pItem) = 0;
386
+ };
387
+ typedef IADLXInterfacePtr_T<IADLXMemoryTimingDescriptionList> IADLXMemoryTimingDescriptionListPtr;
388
+ }
389
+ #else //__cplusplus
390
+ ADLX_DECLARE_IID (IADLXMemoryTimingDescriptionList, L"IADLXMemoryTimingDescriptionList")
391
+ ADLX_DECLARE_ITEM_IID (IADLXMemoryTimingDescription, IID_IADLXMemoryTimingDescription ())
392
+
393
+ typedef struct IADLXMemoryTimingDescriptionList IADLXMemoryTimingDescriptionList;
394
+
395
+ typedef struct IADLXMemoryTimingDescriptionListVtbl
396
+ {
397
+ //IADLXInterface
398
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXMemoryTimingDescriptionList* pThis);
399
+ adlx_long (ADLX_STD_CALL *Release)(IADLXMemoryTimingDescriptionList* pThis);
400
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXMemoryTimingDescriptionList* pThis, const wchar_t* interfaceId, void** ppInterface);
401
+
402
+ //IADLXList
403
+ adlx_uint (ADLX_STD_CALL *Size)(IADLXMemoryTimingDescriptionList* pThis);
404
+ adlx_bool (ADLX_STD_CALL *Empty)(IADLXMemoryTimingDescriptionList* pThis);
405
+ adlx_uint (ADLX_STD_CALL *Begin)(IADLXMemoryTimingDescriptionList* pThis);
406
+ adlx_uint (ADLX_STD_CALL *End)(IADLXMemoryTimingDescriptionList* pThis);
407
+ ADLX_RESULT (ADLX_STD_CALL *At)(IADLXMemoryTimingDescriptionList* pThis, const adlx_uint location, IADLXInterface** ppItem);
408
+ ADLX_RESULT (ADLX_STD_CALL *Clear)(IADLXMemoryTimingDescriptionList* pThis);
409
+ ADLX_RESULT (ADLX_STD_CALL *Remove_Back)(IADLXMemoryTimingDescriptionList* pThis);
410
+ ADLX_RESULT (ADLX_STD_CALL *Add_Back)(IADLXMemoryTimingDescriptionList* pThis, IADLXInterface* pItem);
411
+
412
+ //IADLXMemoryTimingDescriptionList
413
+ ADLX_RESULT (ADLX_STD_CALL *At_MemoryTimingDescriptionList)(IADLXMemoryTimingDescriptionList* pThis, const adlx_uint location, IADLXMemoryTimingDescription** ppItem);
414
+ ADLX_RESULT (ADLX_STD_CALL *Add_Back_MemoryTimingDescriptionList)(IADLXMemoryTimingDescriptionList* pThis, IADLXMemoryTimingDescription* pItem);
415
+
416
+ }IADLXMemoryTimingDescriptionListVtbl;
417
+
418
+ struct IADLXMemoryTimingDescriptionList { const IADLXMemoryTimingDescriptionListVtbl *pVtbl; };
419
+ #endif //__cplusplus
420
+ #pragma endregion IADLXMemoryTimingDescriptionList
421
+
422
+ #pragma region IADLXGPUTuningChangedEvent
423
+ #if defined (__cplusplus)
424
+ namespace adlx
425
+ {
426
+ class ADLX_NO_VTABLE IADLXGPU;
427
+ class ADLX_NO_VTABLE IADLXGPUTuningChangedEvent : public IADLXChangedEvent
428
+ {
429
+ public:
430
+ ADLX_DECLARE_IID (L"IADLXGPUTuningChangedEvent")
431
+ /**
432
+ *@page DOX_IADLXGPUTuningChangedEvent_GetGPU GetGPU
433
+ *@ENG_START_DOX @brief Gets the reference counted GPU interface on which the GPU tuning is changed. @ENG_END_DOX
434
+ *
435
+ *@syntax
436
+ *@codeStart
437
+ * @ref ADLX_RESULT GetGPU (@ref DOX_IADLXGPU** ppGPU)
438
+ *@codeEnd
439
+ *
440
+ *@params
441
+ *@paramrow{1.,[out] ,ppGPU,@ref DOX_IADLXGPU** ,@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 __*ppGPU__ to __nullptr__. @ENG_END_DOX}
442
+ *
443
+ *
444
+ *@retvalues
445
+ *@ENG_START_DOX If the interface is successfully returned, __ADLX_OK__ is returned.<br>
446
+ * If the interface is not successfully returned, an error code is returned.<br>
447
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
448
+ *
449
+ *@detaileddesc
450
+ *@ENG_START_DOX @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed. @ENG_END_DOX
451
+ *
452
+ *@addinfo
453
+ *@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. <br>
454
+ * __Note:__ @ref DOX_IADLXGPUTuningChangedEvent_GetGPU returns the reference counted GPU interface used by all the methods in this interface to check if there are any changes in GPU tuning.
455
+ *@ENG_END_DOX
456
+ *
457
+ *@copydoc IADLXGPUTuningChangedEvent_REQ_TABLE
458
+ *
459
+ */
460
+ virtual ADLX_RESULT ADLX_STD_CALL GetGPU (IADLXGPU** ppGPU) = 0;
461
+
462
+ /**
463
+ *@page DOX_IADLXGPUTuningChangedEvent_IsAutomaticTuningChanged IsAutomaticTuningChanged
464
+ *@ENG_START_DOX @brief Checks if the automatic tuning settings are changed. @ENG_END_DOX
465
+ *
466
+ *@syntax
467
+ *@codeStart
468
+ * adlx_bool IsAutomaticTuningChanged ()
469
+ *@codeEnd
470
+ *
471
+ *@params
472
+ *N/A
473
+ *
474
+ *@retvalues
475
+ *@ENG_START_DOX If the automatic tuning settings are changed, __true__ is returned.<br>
476
+ * If the automatic tuning settings are not changed, __false__ is returned.<br> @ENG_END_DOX
477
+ *
478
+ *@addinfo
479
+ *@ENG_START_DOX
480
+ * __Note:__ To obtain the GPU, use @ref DOX_IADLXGPUTuningChangedEvent_GetGPU.
481
+ *@ENG_END_DOX
482
+ *
483
+ *@copydoc IADLXGPUTuningChangedEvent_REQ_TABLE
484
+ *
485
+ */
486
+ virtual adlx_bool ADLX_STD_CALL IsAutomaticTuningChanged () = 0;
487
+
488
+ /**
489
+ *@page DOX_IADLXGPUTuningChangedEvent_IsPresetTuningChanged IsPresetTuningChanged
490
+ *@ENG_START_DOX @brief Checks if the preset tuning settings are changed. @ENG_END_DOX
491
+ *
492
+ *@syntax
493
+ *@codeStart
494
+ * adlx_bool IsPresetTuningChanged ()
495
+ *@codeEnd
496
+ *
497
+ *@params
498
+ *N/A
499
+ *
500
+ *@retvalues
501
+ *@ENG_START_DOX If the preset tuning settings are changed, __true__ is returned.<br>
502
+ * If the preset tuning settings are not changed, __false__ is returned.<br> @ENG_END_DOX
503
+ *
504
+ *@addinfo
505
+ *@ENG_START_DOX
506
+ * __Note:__ To obtain the GPU, use @ref DOX_IADLXGPUTuningChangedEvent_GetGPU.
507
+ *@ENG_END_DOX
508
+ *
509
+ *@copydoc IADLXGPUTuningChangedEvent_REQ_TABLE
510
+ *
511
+ */
512
+ virtual adlx_bool ADLX_STD_CALL IsPresetTuningChanged () = 0;
513
+
514
+ /**
515
+ *@page DOX_IADLXGPUTuningChangedEvent_IsManualGPUCLKTuningChanged IsManualGPUCLKTuningChanged
516
+ *@ENG_START_DOX @brief Checks if the manual graphic clock tuning settings are changed. @ENG_END_DOX
517
+ *
518
+ *@syntax
519
+ *@codeStart
520
+ * adlx_bool IsManualGPUCLKTuningChanged ()
521
+ *@codeEnd
522
+ *
523
+ *@params
524
+ *N/A
525
+ *
526
+ *@retvalues
527
+ *@ENG_START_DOX If the manual graphic clock tuning settings are changed, __true__ is returned.<br>
528
+ * If the manual graphic clock tuning settings are not changed, __false__ is returned.<br> @ENG_END_DOX
529
+ *
530
+ *@addinfo
531
+ *@ENG_START_DOX
532
+ * __Note:__ To obtain the GPU, use @ref DOX_IADLXGPUTuningChangedEvent_GetGPU.
533
+ *@ENG_END_DOX
534
+ *
535
+ *@copydoc IADLXGPUTuningChangedEvent_REQ_TABLE
536
+ *
537
+ */
538
+ virtual adlx_bool ADLX_STD_CALL IsManualGPUCLKTuningChanged () = 0;
539
+
540
+ /**
541
+ *@page DOX_IADLXGPUTuningChangedEvent_IsManualVRAMTuningChanged IsManualVRAMTuningChanged
542
+ *@ENG_START_DOX @brief Checks if the manual VRAM tuning settings are changed. @ENG_END_DOX
543
+ *
544
+ *@syntax
545
+ *@codeStart
546
+ * adlx_bool IsManualVRAMTuningChanged ()
547
+ *@codeEnd
548
+ *
549
+ *@params
550
+ *N/A
551
+ *
552
+ *@retvalues
553
+ *@ENG_START_DOX If the manual VRAM tuning settings are changed, __true__ is returned.<br>
554
+ * If the manual VRAM tuning settings are not changed, __false__ is returned.<br> @ENG_END_DOX
555
+ *
556
+ *@addinfo
557
+ *@ENG_START_DOX
558
+ * __Note:__ To obtain the GPU, use @ref DOX_IADLXGPUTuningChangedEvent_GetGPU.
559
+ *@ENG_END_DOX
560
+ *
561
+ *@copydoc IADLXGPUTuningChangedEvent_REQ_TABLE
562
+ *
563
+ */
564
+ virtual adlx_bool ADLX_STD_CALL IsManualVRAMTuningChanged () = 0;
565
+
566
+ /**
567
+ *@page DOX_IADLXGPUTuningChangedEvent_IsManualFanTuningChanged IsManualFanTuningChanged
568
+ *@ENG_START_DOX @brief Checks if the manual fan tuning settings are changed. @ENG_END_DOX
569
+ *
570
+ *@syntax
571
+ *@codeStart
572
+ * adlx_bool IsManualFanTuningChanged ()
573
+ *@codeEnd
574
+ *
575
+ *@params
576
+ *N/A
577
+ *
578
+ *@retvalues
579
+ *@ENG_START_DOX If the manual fan tuning settings are changed, __true__ is returned.<br>
580
+ * If the manual fan tuning settings are not changed, __false__ is returned.<br> @ENG_END_DOX
581
+ *
582
+ *@addinfo
583
+ *@ENG_START_DOX
584
+ * __Note:__ To obtain the GPU, use @ref DOX_IADLXGPUTuningChangedEvent_GetGPU.
585
+ *@ENG_END_DOX
586
+ *
587
+ *@copydoc IADLXGPUTuningChangedEvent_REQ_TABLE
588
+ *
589
+ */
590
+ virtual adlx_bool ADLX_STD_CALL IsManualFanTuningChanged () = 0;
591
+
592
+ /**
593
+ *@page DOX_IADLXGPUTuningChangedEvent_IsManualPowerTuningChanged IsManualPowerTuningChanged
594
+ *@ENG_START_DOX @brief Checks if the manual power tuning settings are changed. @ENG_END_DOX
595
+ *
596
+ *@syntax
597
+ *@codeStart
598
+ * adlx_bool IsManualPowerTuningChanged ()
599
+ *@codeEnd
600
+ *
601
+ *@params
602
+ *N/A
603
+ *
604
+ *@retvalues
605
+ *@ENG_START_DOX If the manual power tuning settings are changed, __true__ is returned.<br>
606
+ * If the manual power tuning settings are not changed, __false__ is returned.<br> @ENG_END_DOX
607
+ *
608
+ *@addinfo
609
+ *@ENG_START_DOX
610
+ * __Note:__ To obtain the GPU, use @ref DOX_IADLXGPUTuningChangedEvent_GetGPU.
611
+ *@ENG_END_DOX
612
+ *
613
+ *@copydoc IADLXGPUTuningChangedEvent_REQ_TABLE
614
+ *
615
+ */
616
+ virtual adlx_bool ADLX_STD_CALL IsManualPowerTuningChanged () = 0;
617
+ }; //IADLXGPUTuningChangedEvent
618
+ //----------------------------------------------------------------------------------------------
619
+ typedef IADLXInterfacePtr_T<IADLXGPUTuningChangedEvent> IADLXGPUTuningChangedEventPtr;
620
+ } //namespace adlx
621
+ #else //__cplusplus
622
+ typedef struct IADLXGPU IADLXGPU;
623
+
624
+ ADLX_DECLARE_IID (IADLXGPUTuningChangedEvent, L"IADLXGPUTuningChangedEvent")
625
+ typedef struct IADLXGPUTuningChangedEvent IADLXGPUTuningChangedEvent;
626
+
627
+ typedef struct IADLXGPUTuningChangedEventVtbl
628
+ {
629
+ //IADLXInterface
630
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXGPUTuningChangedEvent* pThis);
631
+ adlx_long (ADLX_STD_CALL *Release)(IADLXGPUTuningChangedEvent* pThis);
632
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXGPUTuningChangedEvent* pThis, const wchar_t* interfaceId, void** ppInterface);
633
+
634
+ //IADLXChangedEvent
635
+ ADLX_SYNC_ORIGIN(ADLX_STD_CALL* GetOrigin)(IADLXGPUTuningChangedEvent* pThis);
636
+
637
+ // IADLXAutomaticTuningChangedEvent interface
638
+ ADLX_RESULT (ADLX_STD_CALL *GetGPU)(IADLXGPUTuningChangedEvent* pThis, IADLXGPU** ppGPU);
639
+
640
+ adlx_bool (ADLX_STD_CALL *IsAutomaticTuningChanged)(IADLXGPUTuningChangedEvent* pThis);
641
+ adlx_bool (ADLX_STD_CALL *IsPresetTuningChanged)(IADLXGPUTuningChangedEvent* pThis);
642
+ adlx_bool (ADLX_STD_CALL *IsManualGPUCLKTuningChanged)(IADLXGPUTuningChangedEvent* pThis);
643
+ adlx_bool (ADLX_STD_CALL *IsManualVRAMTuningChanged)(IADLXGPUTuningChangedEvent* pThis);
644
+ adlx_bool (ADLX_STD_CALL *IsManualFanTuningChanged)(IADLXGPUTuningChangedEvent* pThis);
645
+ adlx_bool (ADLX_STD_CALL *IsManualPowerTuningChanged)(IADLXGPUTuningChangedEvent* pThis);
646
+ } IADLXGPUTuningChangedEventVtbl;
647
+
648
+ struct IADLXGPUTuningChangedEvent { const IADLXGPUTuningChangedEventVtbl *pVtbl; };
649
+ #endif //__cplusplus
650
+ #pragma endregion IADLXGPUTuningChangedEvent
651
+
652
+ //GPU Tuning changed listener interface. To be implemented in application and passed in IADLXGPUTuningChangedHandling::IADLXGPUTuningChangedListener()
653
+ #pragma region IADLXGPUTuningChangedListener
654
+ #if defined (__cplusplus)
655
+ namespace adlx
656
+ {
657
+ class ADLX_NO_VTABLE IADLXGPUTuningChangedListener
658
+ {
659
+ public:
660
+ /**
661
+ *@page DOX_IADLXGPUTuningChangedListener_OnGPUTuningChanged OnGPUTuningChanged
662
+ *@ENG_START_DOX @brief __OnGPUTuningChanged__ is called by ADLX when GPU tuning changes. @ENG_END_DOX
663
+ *
664
+ *@syntax
665
+ *@codeStart
666
+ * adlx_bool OnGPUTuningChanged (@ref DOX_IADLXGPUTuningChangedEvent* pGPUTuningChangedEvent)
667
+ *@codeEnd
668
+ *
669
+ *@params
670
+ *@paramrow{1.,[in] ,pGPUTuningChangedEvent,@ref DOX_IADLXGPUTuningChangedEvent* ,@ENG_START_DOX The pointer to a GPU tuning change event. @ENG_END_DOX}
671
+ *
672
+ *@retvalues
673
+ *@ENG_START_DOX If the application requires ADLX to continue notifying the next listener, __true__ must be returned.<br>
674
+ * If the application requires ADLX to stop notifying the next listener, __false__ must be returned.<br> @ENG_END_DOX
675
+ *
676
+ *@detaileddesc
677
+ *@ENG_START_DOX Once the application registers to the notifications with @ref DOX_IADLXGPUTuningChangedHandling_AddGPUTuningEventListener, ADLX will call this method until the application unregisters from the notifications with @ref DOX_IADLXGPUTuningChangedHandling_RemoveGPUTuningEventListener.
678
+ * 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 GPU tuning change event 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 GPU tuning change event with @ref DOX_IADLXInterface_Release. @ENG_END_DOX
679
+ *
680
+ *@copydoc IADLXGPUTuningChangedListener_REQ_TABLE
681
+ *
682
+ */
683
+ virtual adlx_bool ADLX_STD_CALL OnGPUTuningChanged (IADLXGPUTuningChangedEvent* pGPUTuningChangedEvent) = 0;
684
+ }; //IADLXGPUTuningChangedListener
685
+ } //namespace adlx
686
+ #else //__cplusplus
687
+ typedef struct IADLXGPUTuningChangedListener IADLXGPUTuningChangedListener;
688
+
689
+ typedef struct IADLXGPUTuningChangedListenerVtbl
690
+ {
691
+ // IADLXGPUTuningChangedListener interface
692
+ adlx_bool (ADLX_STD_CALL *OnGPUTuningChanged)(IADLXGPUTuningChangedListener* pThis, IADLXGPUTuningChangedEvent* pGPUTuningChangedEvent);
693
+ } IADLXGPUTuningChangedListenerVtbl;
694
+
695
+ struct IADLXGPUTuningChangedListener { const IADLXGPUTuningChangedListenerVtbl *pVtbl; };
696
+ #endif //__cplusplus
697
+ #pragma endregion IADLXGPUTuningChangedListener
698
+
699
+ //Interface that allows registration to gpu tuning-related events:
700
+ // - GPU Tuning List changed
701
+ // - Automatic Tuning changed
702
+ // - Preset Tuning changed
703
+ // - Manual Tuning changed
704
+ #pragma region IADLXGPUTuningChangedHandling
705
+ #if defined (__cplusplus)
706
+ namespace adlx
707
+ {
708
+ class ADLX_NO_VTABLE IADLXGPUTuningChangedHandling : public IADLXInterface
709
+ {
710
+ public:
711
+ ADLX_DECLARE_IID (L"IADLXGPUTuningChangedHandling")
712
+ /**
713
+ *@page DOX_IADLXGPUTuningChangedHandling_AddGPUTuningEventListener AddGPUTuningEventListener
714
+ *@ENG_START_DOX @brief Registers an event listener for notifications when the GPU tuning changes. @ENG_END_DOX
715
+ *
716
+ *@syntax
717
+ *@codeStart
718
+ * @ref ADLX_RESULT AddGPUTuningEventListener (@ref DOX_IADLXGPUTuningChangedListener* pGPUTuningChangedListener);
719
+ *@codeEnd
720
+ *
721
+ *@params
722
+ *@paramrow{1.,[in] ,pGPUTuningChangedListener,@ref DOX_IADLXGPUTuningChangedListener* ,@ENG_START_DOX The pointer to the event listener interface to register for receiving GPU tuning change notifications. @ENG_END_DOX}
723
+ *
724
+ *@retvalues
725
+ *@ENG_START_DOX If the event listener is successfully registered, __ADLX_OK__ is returned.<br>
726
+ * If the event listener is not successfully registered, an error code is returned.<br>
727
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
728
+ *
729
+ *@detaileddesc
730
+ *@ENG_START_DOX After the event listener is successfully registered, ADLX will call @ref DOX_IADLXGPUTuningChangedListener_OnGPUTuningChanged method of the listener when GPU tuning changes.<br>
731
+ * The event listener instance must exist until the application unregisters the event listener with @ref DOX_IADLXGPUTuningChangedHandling_RemoveGPUTuningEventListener.<br> @ENG_END_DOX
732
+ *
733
+ *@copydoc IADLXGPUTuningChangedHandling_REQ_TABLE
734
+ *
735
+ */
736
+ virtual ADLX_RESULT ADLX_STD_CALL AddGPUTuningEventListener (IADLXGPUTuningChangedListener* pGPUTuningChangedListener) = 0;
737
+
738
+ /**
739
+ *@page DOX_IADLXGPUTuningChangedHandling_RemoveGPUTuningEventListener RemoveGPUTuningEventListener
740
+ *@ENG_START_DOX @brief Unregisters an event listener from the GPU tuning event list. @ENG_END_DOX
741
+ *
742
+ *@syntax
743
+ *@codeStart
744
+ * @ref ADLX_RESULT RemoveGPUTuningEventListener (@ref DOX_IADLXGPUTuningChangedListener* pGPUTuningChangedListener)
745
+ *@codeEnd
746
+ *
747
+ *@params
748
+ *@paramrow{1.,[in] ,pGPUTuningChangedListener,@ref DOX_IADLXGPUTuningChangedListener* ,@ENG_START_DOX The pointer to the event listener interface to unregister from receiving GPU tuning change notifications. @ENG_END_DOX}
749
+ *
750
+ *@retvalues
751
+ *@ENG_START_DOX If the event listener is successfully unregistered, __ADLX_OK__ is returned.<br>
752
+ * If the event listener is not successfully unregistered, an error code is returned.<br>
753
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
754
+ *
755
+ *@detaileddesc
756
+ *@ENG_START_DOX After the event listener is successfully unregistered, ADLX will no longer call @ref DOX_IADLXGPUTuningChangedListener_OnGPUTuningChanged method of the listener when GPU tuning changes.
757
+ * The application can discard the event listener instance. @ENG_END_DOX
758
+ *
759
+ *@copydoc IADLXGPUTuningChangedHandling_REQ_TABLE
760
+ *
761
+ */
762
+ virtual ADLX_RESULT ADLX_STD_CALL RemoveGPUTuningEventListener (IADLXGPUTuningChangedListener* pGPUTuningChangedListener) = 0;
763
+ }; // IADLXGPUTuningChangedHandling
764
+ //----------------------------------------------------------------------------------------------
765
+ typedef IADLXInterfacePtr_T<IADLXGPUTuningChangedHandling> IADLXGPUTuningChangedHandlingPtr;
766
+ } //namespace adlx
767
+ #else //__cplusplus
768
+ ADLX_DECLARE_IID (IADLXGPUTuningChangedHandling, L"IADLXGPUTuningChangedHandling")
769
+ typedef struct IADLXGPUTuningChangedHandling IADLXGPUTuningChangedHandling;
770
+
771
+ typedef struct IADLXGPUTuningChangedHandlingVtbl
772
+ {
773
+ //IADLXInterface
774
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXGPUTuningChangedHandling* pThis);
775
+ adlx_long (ADLX_STD_CALL *Release)(IADLXGPUTuningChangedHandling* pThis);
776
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXGPUTuningChangedHandling* pThis, const wchar_t* interfaceId, void** ppInterface);
777
+
778
+ // IADLXGPUTuningChangedHandling interface
779
+ ADLX_RESULT (ADLX_STD_CALL *AddGPUTuningEventListener)(IADLXGPUTuningChangedHandling* pThis, IADLXGPUTuningChangedListener* pGPUTuningChangedListener);
780
+ ADLX_RESULT (ADLX_STD_CALL *RemoveGPUTuningEventListener)(IADLXGPUTuningChangedHandling* pThis, IADLXGPUTuningChangedListener* pGPUTuningChangedListener);
781
+ } IADLXGPUTuningChangedHandlingVtbl;
782
+
783
+ struct IADLXGPUTuningChangedHandling { const IADLXGPUTuningChangedHandlingVtbl *pVtbl; };
784
+ #endif //__cplusplus
785
+ #pragma endregion IADLXGPUTuningChangedHandling
786
+
787
+
788
+ //GPU Tuning Services interface
789
+ #pragma region IADLXGPUTuningServices
790
+ #if defined (__cplusplus)
791
+ namespace adlx
792
+ {
793
+ class ADLX_NO_VTABLE IADLXGPUTuningServices : public IADLXInterface
794
+ {
795
+ public:
796
+ ADLX_DECLARE_IID (L"IADLXGPUTuningServices")
797
+
798
+ /**
799
+ * @page DOX_IADLXGPUTuningServices_GetGPUTuningChangedHandling GetGPUTuningChangedHandling
800
+ * @ENG_START_DOX
801
+ * @brief Gets the reference counted interface that allows registering and unregistering for notifications when GPU tuning changes.
802
+ * @ENG_END_DOX
803
+ *
804
+ * @syntax
805
+ * @codeStart
806
+ * @ref ADLX_RESULT GetGPUTuningChangedHandling (@ref DOX_IADLXGPUTuningChangedHandling** ppGPUTuningChangedHandling)
807
+ * @codeEnd
808
+ *
809
+ * @params
810
+ * @paramrow{1.,[out] ,ppGPUTuningChangedHandling,@ref DOX_IADLXGPUTuningChangedHandling** ,@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 __*ppGPUTuningChangedHandling__ to __nullptr__. @ENG_END_DOX}
811
+ *
812
+ * @retvalues
813
+ * @ENG_START_DOX
814
+ * If the interface is successfully returned, __ADLX_OK__ is returned.<br>
815
+ * If the interface is not successfully returned, an error code is returned.<br>
816
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
817
+ * @ENG_END_DOX
818
+ *
819
+ * @detaileddesc
820
+ * @ENG_START_DOX
821
+ * @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed.
822
+ * @ENG_END_DOX
823
+ *
824
+ * @addinfo
825
+ * @ENG_START_DOX
826
+ * 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.
827
+ * @ENG_END_DOX
828
+ *
829
+ * @copydoc IADLXGPUTuningServices_REQ_TABLE
830
+ *
831
+ */
832
+ virtual ADLX_RESULT ADLX_STD_CALL GetGPUTuningChangedHandling (IADLXGPUTuningChangedHandling** ppGPUTuningChangedHandling) = 0;
833
+
834
+ /**
835
+ *@page DOX_IADLXGPUTuningServices_IsAtFactory IsAtFactory
836
+ *@ENG_START_DOX @brief Checks if the GPU tuning on a GPU is set to factory settings. @ENG_END_DOX
837
+ *
838
+ *@syntax
839
+ *@codeStart
840
+ * @ref ADLX_RESULT IsAtFactory (@ref DOX_IADLXGPU* pGPU, adlx_bool* isFactory)
841
+ *@codeEnd
842
+ *
843
+ *@params
844
+ *@paramrow{1.,[in] ,pGPU,@ref DOX_IADLXGPU* ,@ENG_START_DOX The pointer to the GPU interface. @ENG_END_DOX}
845
+ *@paramrow{2.,[out] ,isFactory,adlx_bool* ,@ENG_START_DOX The pointer to a variable where the state of the GPU tuning is returned. The variable is __true__ if the GPU tuning is set to factory settings. The variable is __false__ if the GPU tuning is not set to factory settings. @ENG_END_DOX}
846
+ *
847
+ *@retvalues
848
+ *@ENG_START_DOX If the state of the GPU tuning is successfully returned, __ADLX_OK__ is returned.<br>
849
+ * If the state of the GPU tuning is not successfully returned, an error code is returned.<br>
850
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
851
+ *
852
+ *@copydoc IADLXGPUTuningServices_REQ_TABLE
853
+ *
854
+ */
855
+ virtual ADLX_RESULT ADLX_STD_CALL IsAtFactory (IADLXGPU* pGPU, adlx_bool* isFactory) = 0;
856
+
857
+ /**
858
+ *@page DOX_IADLXGPUTuningServices_ResetToFactory ResetToFactory
859
+ *@ENG_START_DOX @brief Reset the GPU tuning to factory settings. @ENG_END_DOX
860
+ *
861
+ *@syntax
862
+ *@codeStart
863
+ * @ref ADLX_RESULT ResetToFactory (@ref DOX_IADLXGPU* pGPU)
864
+ *@codeEnd
865
+ *
866
+ *@params
867
+ *@paramrow{1.,[in] ,pGPU,@ref DOX_IADLXGPU* ,@ENG_START_DOX The pointer to the GPU interface. @ENG_END_DOX}
868
+ *
869
+ *@retvalues
870
+ *@ENG_START_DOX If the factory settings are successfully reset, __ADLX_OK__ is returned.<br>
871
+ * If the factory settings are not successfully reset, an error code is returned.<br>
872
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
873
+ *
874
+ *@detaileddesc
875
+ *@ENG_START_DOX @details The method resets settings of Auto Tuning, Manual GPU Tuning, Manual Fan Tuning, Manual VRAM Tuning and Manual Power Tuning. @ENG_END_DOX
876
+ *
877
+ *@copydoc IADLXGPUTuningServices_REQ_TABLE
878
+ *
879
+ */
880
+ virtual ADLX_RESULT ADLX_STD_CALL ResetToFactory (IADLXGPU* pGPU) = 0;
881
+
882
+ /**
883
+ *@page DOX_IADLXGPUTuningServices_IsSupportedAutoTuning IsSupportedAutoTuning
884
+ *@ENG_START_DOX @brief Checks if the automatic tuning is supported on a GPU. @ENG_END_DOX
885
+ *
886
+ *@syntax
887
+ *@codeStart
888
+ * @ref ADLX_RESULT IsSupportedAutoTuning (@ref DOX_IADLXGPU* pGPU, adlx_bool* supported)
889
+ *@codeEnd
890
+ *
891
+ *@params
892
+ *@paramrow{1.,[in] ,pGPU,@ref DOX_IADLXGPU* ,@ENG_START_DOX The pointer to the GPU interface. @ENG_END_DOX}
893
+ *@paramrow{2.,[out] ,supported,adlx_bool* ,@ENG_START_DOX The pointer to a variable where the state of automatic tuning is returned. The variable is __true__ if automatic tuning is supported. The variable is __false__ if automatic tuning is not supported. @ENG_END_DOX}
894
+ *
895
+ *@retvalues
896
+ *@ENG_START_DOX If the state of automatic tuning is successfully returned, __ADLX_OK__ is returned.<br>
897
+ * If the state of automatic tuning is not successfully returned, an error code is returned.<br>
898
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
899
+ *
900
+ *@copydoc IADLXGPUTuningServices_REQ_TABLE
901
+ *
902
+ */
903
+ virtual ADLX_RESULT ADLX_STD_CALL IsSupportedAutoTuning (IADLXGPU* pGPU, adlx_bool* supported) = 0;
904
+
905
+ /**
906
+ *@page DOX_IADLXGPUTuningServices_IsSupportedPresetTuning IsSupportedPresetTuning
907
+ *@ENG_START_DOX @brief Checks if the preset tuning is supported on a GPU. @ENG_END_DOX
908
+ *
909
+ *@syntax
910
+ *@codeStart
911
+ * @ref ADLX_RESULT IsSupportedPresetTuning (@ref DOX_IADLXGPU* pGPU, adlx_bool* supported)
912
+ *@codeEnd
913
+ *
914
+ *@params
915
+ *@paramrow{1.,[in] ,pGPU,@ref DOX_IADLXGPU* ,@ENG_START_DOX The pointer to the GPU interface. @ENG_END_DOX}
916
+ *@paramrow{2.,[out] ,supported,adlx_bool* ,@ENG_START_DOX The pointer to a variable where the state of preset tuning is returned. The variable is __true__ if preset tuning is supported. The variable is __false__ if preset tuning is not supported. @ENG_END_DOX}
917
+ *
918
+ *@retvalues
919
+ *@ENG_START_DOX If the state of preset tuning is successfully returned, __ADLX_OK__ is returned.<br>
920
+ * If the state of preset tuning is not successfully returned, an error code is returned.<br>
921
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
922
+ *
923
+ *@copydoc IADLXGPUTuningServices_REQ_TABLE
924
+ *
925
+ */
926
+ virtual ADLX_RESULT ADLX_STD_CALL IsSupportedPresetTuning (IADLXGPU* pGPU, adlx_bool* supported) = 0;
927
+
928
+ /**
929
+ *@page DOX_IADLXGPUTuningServices_IsSupportedManualGFXTuning IsSupportedManualGFXTuning
930
+ *@ENG_START_DOX @brief Checks if the manual graphic tuning is supported on a GPU. @ENG_END_DOX
931
+ *
932
+ *@syntax
933
+ *@codeStart
934
+ * @ref ADLX_RESULT IsSupportedManualGFXTuning (@ref DOX_IADLXGPU* pGPU, adlx_bool* supported)
935
+ *@codeEnd
936
+ *
937
+ *@params
938
+ *@paramrow{1.,[in] ,pGPU,@ref DOX_IADLXGPU* ,@ENG_START_DOX The pointer to the GPU interface. @ENG_END_DOX}
939
+ *@paramrow{2.,[out] ,supported,adlx_bool* ,@ENG_START_DOX The pointer to a variable where the state of manual graphic tuning is returned. The variable is __true__ if manual graphic tuning is supported. The variable is __false__ if manual graphic tuning is not supported. @ENG_END_DOX}
940
+ *
941
+ *@retvalues
942
+ *@ENG_START_DOX If the state of manual graphic tuning is successfully returned, __ADLX_OK__ is returned.<br>
943
+ * If the state of manual graphic tuning is not successfully returned, an error code is returned.<br>
944
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
945
+ *
946
+ *@copydoc IADLXGPUTuningServices_REQ_TABLE
947
+ *
948
+ */
949
+ virtual ADLX_RESULT ADLX_STD_CALL IsSupportedManualGFXTuning (IADLXGPU* pGPU, adlx_bool* supported) = 0;
950
+
951
+ /**
952
+ *@page DOX_IADLXGPUTuningServices_IsSupportedManualVRAMTuning IsSupportedManualVRAMTuning
953
+ *@ENG_START_DOX @brief Checks if the manual VRAM Tuning is supported on a GPU. @ENG_END_DOX
954
+ *
955
+ *@syntax
956
+ *@codeStart
957
+ * @ref ADLX_RESULT IsSupportedManualVRAMTuning (@ref DOX_IADLXGPU* pGPU, adlx_bool* supported)
958
+ *@codeEnd
959
+ *
960
+ *@params
961
+ *@paramrow{1.,[in] ,pGPU,@ref DOX_IADLXGPU* ,@ENG_START_DOX The pointer to the GPU interface. @ENG_END_DOX}
962
+ *@paramrow{2.,[out] ,supported,adlx_bool* ,@ENG_START_DOX The pointer to a variable where the state of manual VRAM tuning is returned. The variable is __true__ if manual VRAM tuning is supported. The variable is __false__ if manual VRAM tuning is not supported. @ENG_END_DOX}
963
+ *
964
+ *@retvalues
965
+ *@ENG_START_DOX If the state of manual VRAM tuning is successfully returned, __ADLX_OK__ is returned.<br>
966
+ * If the state of manual VRAM tuning is not successfully returned, an error code is returned.<br>
967
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
968
+ *
969
+ *@copydoc IADLXGPUTuningServices_REQ_TABLE
970
+ *
971
+ */
972
+ virtual ADLX_RESULT ADLX_STD_CALL IsSupportedManualVRAMTuning (IADLXGPU* pGPU, adlx_bool* supported) = 0;
973
+
974
+ /**
975
+ *@page DOX_IADLXGPUTuningServices_IsSupportedManualFanTuning IsSupportedManualFanTuning
976
+ *@ENG_START_DOX @brief Checks if the manual fan tuning is supported on a GPU. @ENG_END_DOX
977
+ *
978
+ *@syntax
979
+ *@codeStart
980
+ * @ref ADLX_RESULT IsSupportedManualFanTuning (@ref DOX_IADLXGPU* pGPU, adlx_bool* supported)
981
+ *@codeEnd
982
+ *
983
+ *@params
984
+ *@paramrow{1.,[in] ,pGPU,@ref DOX_IADLXGPU* ,@ENG_START_DOX The pointer to the GPU interface. @ENG_END_DOX}
985
+ *@paramrow{2.,[out] ,supported,adlx_bool* ,@ENG_START_DOX The pointer to a variable where the state of manual fan tuning is returned. The variable is __true__ if manual fan tuning is supported. The variable is __false__ if manual fan tuning is not supported. @ENG_END_DOX}
986
+ *
987
+ *@retvalues
988
+ *@ENG_START_DOX If the state of manual fan tuning is successfully returned, __ADLX_OK__ is returned.<br>
989
+ * If the state of manual fan tuning is not successfully returned, an error code is returned.<br>
990
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
991
+ *
992
+ *@copydoc IADLXGPUTuningServices_REQ_TABLE
993
+ *
994
+ */
995
+ virtual ADLX_RESULT ADLX_STD_CALL IsSupportedManualFanTuning (IADLXGPU* pGPU, adlx_bool* supported) = 0;
996
+
997
+ /**
998
+ *@page DOX_IADLXGPUTuningServices_IsSupportedManualPowerTuning IsSupportedManualPowerTuning
999
+ *@ENG_START_DOX @brief Checks if the manual power tuning is supported on a GPU. @ENG_END_DOX
1000
+ *
1001
+ *@syntax
1002
+ *@codeStart
1003
+ * @ref ADLX_RESULT IsSupportedManualPowerTuning (@ref DOX_IADLXGPU* pGPU, adlx_bool* supported)
1004
+ *@codeEnd
1005
+ *
1006
+ *@params
1007
+ *@paramrow{1.,[in] ,pGPU,@ref DOX_IADLXGPU* ,@ENG_START_DOX The pointer to the GPU interface. @ENG_END_DOX}
1008
+ *@paramrow{2.,[out] ,supported,adlx_bool* ,@ENG_START_DOX The pointer to a variable where the state of manual power tuning is returned. The variable is __true__ if manual power tuning is supported. The variable is __false__ if manual power tuning is not supported. @ENG_END_DOX}
1009
+ *
1010
+ *@retvalues
1011
+ *@ENG_START_DOX If the state of manual power tuning is successfully returned, __ADLX_OK__ is returned.<br>
1012
+ * If the state of manual power tuning is not successfully returned, an error code is returned.<br>
1013
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
1014
+ *
1015
+ *@copydoc IADLXGPUTuningServices_REQ_TABLE
1016
+ *
1017
+ */
1018
+ virtual ADLX_RESULT ADLX_STD_CALL IsSupportedManualPowerTuning (IADLXGPU* pGPU, adlx_bool* supported) = 0;
1019
+
1020
+ /**
1021
+ *@page DOX_IADLXGPUTuningServices_GetAutoTuning GetAutoTuning
1022
+ *@ENG_START_DOX @brief Gets the reference counted automatic tuning interface of a GPU. @ENG_END_DOX
1023
+ *
1024
+ *@syntax
1025
+ *@codeStart
1026
+ * @ref ADLX_RESULT GetAutoTuning (@ref DOX_IADLXGPU* pGPU, @ref DOX_IADLXInterface** ppAutoTuning)
1027
+ *@codeEnd
1028
+ *
1029
+ *@params
1030
+ *@paramrow{1.,[in] ,pGPU,@ref DOX_IADLXGPU* ,@ENG_START_DOX The pointer to the GPU interface. @ENG_END_DOX}
1031
+ *@paramrow{2.,[out] ,ppAutoTuning,@ref DOX_IADLXInterface** ,@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 __*ppAutoTuning__ to __nullptr__. @ENG_END_DOX}
1032
+ *
1033
+ *@retvalues
1034
+ *@ENG_START_DOX If the interface is successfully returned, __ADLX_OK__ is returned.<br>
1035
+ * If the interface is not successfully returned, an error code is returned.<br>
1036
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
1037
+ *
1038
+ *@detaileddesc
1039
+ *@ENG_START_DOX @details The method returns an @ref DOX_IADLXInterface interface. To get the @ref DOX_IADLXGPUAutoTuning interface, which is the automatic tuning interface, the application must call @ref DOX_IADLXInterface_QueryInterface in the returned @ref DOX_IADLXInterface.<br>
1040
+ * The @ref DOX_IADLXInterface interface and the @ref DOX_IADLXGPUAutoTuning interface must be discarded with @ref DOX_IADLXInterface_Release when they are no longer needed.<br> @ENG_END_DOX
1041
+ *@addinfo
1042
+ *@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
1043
+ *
1044
+ *@copydoc IADLXGPUTuningServices_REQ_TABLE
1045
+ *
1046
+ */
1047
+ virtual ADLX_RESULT ADLX_STD_CALL GetAutoTuning (IADLXGPU* pGPU, IADLXInterface** ppAutoTuning) = 0;
1048
+
1049
+ /**
1050
+ *@page DOX_IADLXGPUTuningServices_GetPresetTuning GetPresetTuning
1051
+ *@ENG_START_DOX @brief Gets the reference counted preset tuning interface of a GPU. @ENG_END_DOX
1052
+ *
1053
+ *@syntax
1054
+ *@codeStart
1055
+ * @ref ADLX_RESULT GetPresetTuning (@ref DOX_IADLXGPU* pGPU, @ref DOX_IADLXInterface** ppPresetTuning)
1056
+ *@codeEnd
1057
+ *
1058
+ *@params
1059
+ *@paramrow{1.,[in] ,pGPU,@ref DOX_IADLXGPU* ,@ENG_START_DOX The pointer to the GPU interface. @ENG_END_DOX}
1060
+ *@paramrow{2.,[out] ,ppPresetTuning,@ref DOX_IADLXInterface** ,@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 __*ppPresetTuning__ to __nullptr__. @ENG_END_DOX}
1061
+ *
1062
+ *@retvalues
1063
+ *@ENG_START_DOX If the interface is successfully returned, __ADLX_OK__ is returned.<br>
1064
+ * If the interface is not successfully returned, an error code is returned.<br>
1065
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
1066
+ *
1067
+ *@detaileddesc
1068
+ *@ENG_START_DOX @details The method returns an @ref DOX_IADLXInterface interface. To get the @ref DOX_IADLXGPUPresetTuning interface, which is the preset tuning interface, the application must call @ref DOX_IADLXInterface_QueryInterface in the returned @ref DOX_IADLXInterface.<br>
1069
+ * The @ref DOX_IADLXInterface interface and the @ref DOX_IADLXGPUPresetTuning interface must be discarded with @ref DOX_IADLXInterface_Release when they are no longer needed.<br> @ENG_END_DOX
1070
+ *@addinfo
1071
+ *@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
1072
+ *
1073
+ *@copydoc IADLXGPUTuningServices_REQ_TABLE
1074
+ *
1075
+ */
1076
+ virtual ADLX_RESULT ADLX_STD_CALL GetPresetTuning (IADLXGPU* pGPU, IADLXInterface** ppPresetTuning) = 0;
1077
+
1078
+ /**
1079
+ *@page DOX_IADLXGPUTuningServices_GetManualGFXTuning GetManualGFXTuning
1080
+ *@ENG_START_DOX @brief Gets the reference counted manual graphics tuning interface of a GPU. @ENG_END_DOX
1081
+ *
1082
+ *@syntax
1083
+ *@codeStart
1084
+ * @ref ADLX_RESULT GetManualGFXTuning (@ref DOX_IADLXGPU* pGPU, @ref DOX_IADLXInterface** ppManualGFXTuning)
1085
+ *@codeEnd
1086
+ *
1087
+ *@params
1088
+ *@paramrow{1.,[in] ,pGPU,@ref DOX_IADLXGPU* ,@ENG_START_DOX The pointer to the GPU interface. @ENG_END_DOX}
1089
+ *@paramrow{2.,[out] ,ppManualGFXTuning,@ref DOX_IADLXInterface** ,@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 __*ppManualGFXTuning__ to __nullptr__. @ENG_END_DOX}
1090
+ *
1091
+ *@retvalues
1092
+ *@ENG_START_DOX If the interface is successfully returned, __ADLX_OK__ is returned.<br>
1093
+ * If the interface is not successfully returned, an error code is returned.<br>
1094
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
1095
+ * @ENG_END_DOX
1096
+ *@detaileddesc
1097
+ *@ENG_START_DOX @details Different GPUs support different manual graphics tuning functionality.<br>
1098
+ * ADLX provides the @ref DOX_IADLXManualGraphicsTuning1 interface or the @ref DOX_IADLXManualGraphicsTuning2 interface to obtain the supported manual graphics tuning interface.<br>
1099
+ * To get the manual graphics tuning interface, the application must call @ref DOX_IADLXInterface_QueryInterface in the returned @ref DOX_IADLXInterface.<br>
1100
+ * The @ref DOX_IADLXInterface interface and the manual graphics tuning interface must be discarded with @ref DOX_IADLXInterface_Release when they are no longer needed. @ENG_END_DOX
1101
+ *
1102
+ *@addinfo
1103
+ *@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
1104
+ *
1105
+ *@copydoc IADLXGPUTuningServices_REQ_TABLE
1106
+ *
1107
+ */
1108
+ virtual ADLX_RESULT ADLX_STD_CALL GetManualGFXTuning (IADLXGPU* pGPU, IADLXInterface** ppManualGFXTuning) = 0;
1109
+
1110
+ /**
1111
+ *@page DOX_IADLXGPUTuningServices_GetManualVRAMTuning GetManualVRAMTuning
1112
+ *@ENG_START_DOX @brief Gets the reference counted manual VRAM tuning interface of a GPU. @ENG_END_DOX
1113
+ *
1114
+ *@syntax
1115
+ *@codeStart
1116
+ * @ref ADLX_RESULT GetManualVRAMTuning (@ref DOX_IADLXGPU* pGPU, @ref DOX_IADLXInterface** ppManualVRAMTuning)
1117
+ *@codeEnd
1118
+ *
1119
+ *@params
1120
+ *@paramrow{1.,[in] ,pGPU,@ref DOX_IADLXGPU* ,@ENG_START_DOX The pointer to the GPU interface. @ENG_END_DOX}
1121
+ *@paramrow{2.,[out] ,ppManualVRAMTuning,@ref DOX_IADLXInterface** ,@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 __*ppManualVRAMTuning__ to __nullptr__. @ENG_END_DOX}
1122
+ *
1123
+ *@retvalues
1124
+ *@ENG_START_DOX If the interface is successfully returned, __ADLX_OK__ is returned.<br>
1125
+ * If the interface is not successfully returned, an error code is returned.<br>
1126
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
1127
+ * @ENG_END_DOX
1128
+ *@detaileddesc
1129
+ *@ENG_START_DOX @details Different GPUs support different manual VRAM tuning functionality.<br>
1130
+ * ADLX provides the @ref DOX_IADLXManualVRAMTuning1 interface or the @ref DOX_IADLXManualVRAMTuning2 interface to obtain the supported manual VRAM tuning interface.<br>
1131
+ * To get the manual VRAM tuning interface, the application must call @ref DOX_IADLXInterface_QueryInterface in the returned @ref DOX_IADLXInterface.<br>
1132
+ * The @ref DOX_IADLXInterface interface and the manual VRAM tuning interface must be discarded with @ref DOX_IADLXInterface_Release when they are no longer needed. @ENG_END_DOX
1133
+ *
1134
+ *@addinfo
1135
+ *@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
1136
+ *
1137
+ *@copydoc IADLXGPUTuningServices_REQ_TABLE
1138
+ *
1139
+ */
1140
+ virtual ADLX_RESULT ADLX_STD_CALL GetManualVRAMTuning (IADLXGPU* pGPU, IADLXInterface** ppManualVRAMTuning) = 0;
1141
+
1142
+ /**
1143
+ *@page DOX_IADLXGPUTuningServices_GetManualFanTuning GetManualFanTuning
1144
+ *@ENG_START_DOX @brief Gets the reference counted manual fan tuning interface of a GPU. @ENG_END_DOX
1145
+ *
1146
+ *@syntax
1147
+ *@codeStart
1148
+ * @ref ADLX_RESULT GetManualFanTuning (@ref DOX_IADLXGPU* pGPU, @ref DOX_IADLXInterface** ppManualFanTuning)
1149
+ *@codeEnd
1150
+ *
1151
+ *@params
1152
+ *@paramrow{1.,[in] ,pGPU,@ref DOX_IADLXGPU* ,@ENG_START_DOX The pointer to the GPU interface. @ENG_END_DOX}
1153
+ *@paramrow{2.,[out] ,ppManualFanTuning,@ref DOX_IADLXInterface** ,@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 __*ppManualFanTuning__ to __nullptr__. @ENG_END_DOX}
1154
+ *
1155
+ *@retvalues
1156
+ *@ENG_START_DOX If the interface is successfully returned, __ADLX_OK__ is returned.<br>
1157
+ * If the interface is not successfully returned, an error code is returned.<br>
1158
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
1159
+ * @ENG_END_DOX
1160
+ *@detaileddesc
1161
+ *@ENG_START_DOX @details The method returns an @ref DOX_IADLXInterface interface. To get the @ref DOX_IADLXManualFanTuning interface, which is the manual fan tuning interface, the application must call @ref DOX_IADLXInterface_QueryInterface in the returned @ref DOX_IADLXInterface.<br>
1162
+ * The @ref DOX_IADLXInterface interface and the @ref DOX_IADLXManualFanTuning interface must be discarded with @ref DOX_IADLXInterface_Release when they are no longer needed.<br> @ENG_END_DOX
1163
+ *
1164
+ *@addinfo
1165
+ *@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
1166
+ *
1167
+ *@copydoc IADLXGPUTuningServices_REQ_TABLE
1168
+ *
1169
+ */
1170
+ virtual ADLX_RESULT ADLX_STD_CALL GetManualFanTuning (IADLXGPU* pGPU, IADLXInterface** ppManualFanTuning) = 0;
1171
+
1172
+ /**
1173
+ *@page DOX_IADLXGPUTuningServices_GetManualPowerTuning GetManualPowerTuning
1174
+ *@ENG_START_DOX @brief Gets the reference counted manual power tuning interface of a GPU. @ENG_END_DOX
1175
+ *
1176
+ *@syntax
1177
+ *@codeStart
1178
+ * @ref ADLX_RESULT GetManualPowerTuning (@ref DOX_IADLXGPU* pGPU, @ref DOX_IADLXInterface** ppManualPowerTuning)
1179
+ *@codeEnd
1180
+ *
1181
+ *@params
1182
+ *@paramrow{1.,[in] ,pGPU,@ref DOX_IADLXGPU* ,@ENG_START_DOX The pointer to the GPU interface. @ENG_END_DOX}
1183
+ *@paramrow{2.,[out] ,ppManualPowerTuning,@ref DOX_IADLXInterface** ,@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 __*ppManualPowerTuning__ to __nullptr__. @ENG_END_DOX}
1184
+ *
1185
+ *@retvalues
1186
+ *@ENG_START_DOX If the interface is successfully returned, __ADLX_OK__ is returned.<br>
1187
+ * If the interface is not successfully returned, an error code is returned.<br>
1188
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
1189
+ *
1190
+ *@detaileddesc
1191
+ *@ENG_START_DOX @details The method returns an @ref DOX_IADLXInterface interface. To get the @ref DOX_IADLXManualPowerTuning interface, which is the manual power tuning interface, the application must call @ref DOX_IADLXInterface_QueryInterface in the returned @ref DOX_IADLXInterface.<br>
1192
+ * The @ref DOX_IADLXInterface interface and the @ref DOX_IADLXManualPowerTuning interface must be discarded with @ref DOX_IADLXInterface_Release when they are no longer needed.<br> @ENG_END_DOX
1193
+ *@addinfo
1194
+ *@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
1195
+ *
1196
+ *@copydoc IADLXGPUTuningServices_REQ_TABLE
1197
+ *
1198
+ */
1199
+ virtual ADLX_RESULT ADLX_STD_CALL GetManualPowerTuning (IADLXGPU* pGPU, IADLXInterface** ppManualPowerTuning) = 0;
1200
+ }; //IADLXGPUTuningServices
1201
+ //----------------------------------------------------------------------------------------------
1202
+ typedef IADLXInterfacePtr_T<IADLXGPUTuningServices> IADLXGPUTuningServicesPtr;
1203
+ } //namespace adlx
1204
+ #else //__cplusplus
1205
+ ADLX_DECLARE_IID (IADLXGPUTuningServices, L"IADLXGPUTuningServices")
1206
+ typedef struct IADLXGPUTuningServices IADLXGPUTuningServices;
1207
+
1208
+ typedef struct IADLXGPUTuningServicesVtbl
1209
+ {
1210
+ //IADLXInterface
1211
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXGPUTuningServices* pThis);
1212
+ adlx_long (ADLX_STD_CALL *Release)(IADLXGPUTuningServices* pThis);
1213
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXGPUTuningServices* pThis, const wchar_t* interfaceId, void** ppInterface);
1214
+
1215
+ //IADLXGPUTuningServices
1216
+ ADLX_RESULT (ADLX_STD_CALL *GetGPUTuningChangedHandling)(IADLXGPUTuningServices* pThis, IADLXGPUTuningChangedHandling** ppGPUTuningChangedHandling);
1217
+ ADLX_RESULT (ADLX_STD_CALL *IsAtFactory)(IADLXGPUTuningServices* pThis, IADLXGPU* pGPU, adlx_bool* isFactory);
1218
+ ADLX_RESULT (ADLX_STD_CALL *ResetToFactory)(IADLXGPUTuningServices* pThis, IADLXGPU* pGPU);
1219
+
1220
+ ADLX_RESULT (ADLX_STD_CALL *IsSupportedAutoTuning)(IADLXGPUTuningServices* pThis, IADLXGPU* pGPU, adlx_bool* supported);
1221
+ ADLX_RESULT (ADLX_STD_CALL *IsSupportedPresetTuning)(IADLXGPUTuningServices* pThis, IADLXGPU* pGPU, adlx_bool* supported);
1222
+ ADLX_RESULT (ADLX_STD_CALL *IsSupportedManualGFXTuning)(IADLXGPUTuningServices* pThis, IADLXGPU* pGPU, adlx_bool* supported);
1223
+ ADLX_RESULT (ADLX_STD_CALL *IsSupportedManualVRAMTuning)(IADLXGPUTuningServices* pThis, IADLXGPU* pGPU, adlx_bool* supported);
1224
+ ADLX_RESULT (ADLX_STD_CALL *IsSupportedManualFanTuning)(IADLXGPUTuningServices* pThis, IADLXGPU* pGPU, adlx_bool* supported);
1225
+ ADLX_RESULT (ADLX_STD_CALL *IsSupportedManualPowerTuning)(IADLXGPUTuningServices* pThis, IADLXGPU* pGPU, adlx_bool* supported);
1226
+
1227
+ ADLX_RESULT (ADLX_STD_CALL *GetAutoTuning)(IADLXGPUTuningServices* pThis, IADLXGPU* pGPU, IADLXInterface** ppAutoTuning);
1228
+ ADLX_RESULT (ADLX_STD_CALL *GetPresetTuning)(IADLXGPUTuningServices* pThis, IADLXGPU* pGPU, IADLXInterface** ppPresetTuning);
1229
+ ADLX_RESULT (ADLX_STD_CALL *GetManualGFXTuning)(IADLXGPUTuningServices* pThis, IADLXGPU* pGPU, IADLXInterface** ppManualGFXTuning);
1230
+ ADLX_RESULT (ADLX_STD_CALL *GetManualVRAMTuning)(IADLXGPUTuningServices* pThis, IADLXGPU* pGPU, IADLXInterface** ppManualVRAMTuning);
1231
+ ADLX_RESULT (ADLX_STD_CALL *GetManualFanTuning)(IADLXGPUTuningServices* pThis, IADLXGPU* pGPU, IADLXInterface** ppManualFanTuning);
1232
+ ADLX_RESULT (ADLX_STD_CALL *GetManualPowerTuning)(IADLXGPUTuningServices* pThis, IADLXGPU* pGPU, IADLXInterface** ppManualPowerTuning);
1233
+ }IADLXGPUTuningServicesVtbl;
1234
+
1235
+ struct IADLXGPUTuningServices { const IADLXGPUTuningServicesVtbl *pVtbl; };
1236
+ #endif //__cplusplus
1237
+ #pragma endregion IADLXGPUTuningServices
1238
+
1239
+ #endif//ADLX_IGPUTUNING_H