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,460 @@
1
+ //
2
+ // Copyright (c) 2021 - 2025 Advanced Micro Devices, Inc. All rights reserved.
3
+ //
4
+ //-------------------------------------------------------------------------------------------------
5
+
6
+ #ifndef ADLX_IGPUAUTOTUNING_H
7
+ #define ADLX_IGPUAUTOTUNING_H
8
+ #pragma once
9
+
10
+ #include "ADLXStructures.h"
11
+
12
+ //-------------------------------------------------------------------------------------------------
13
+ //IGPUAutoTuning.h - Interfaces for ADLX GPU Auto Tuning functionality
14
+
15
+ //Interface with information on GPU Tuning changes on a GPU. ADLX passes this to application that registered for GPU Tuning changed event in the IADLXAutomaticTuningChangedListener::OnAutomaticTuningChanged()
16
+ #pragma region IADLXGPUAutoTuningCompleteEvent
17
+
18
+ #if defined (__cplusplus)
19
+ namespace adlx
20
+ {
21
+ class ADLX_NO_VTABLE IADLXGPUAutoTuningCompleteEvent : public IADLXInterface
22
+ {
23
+ public:
24
+ ADLX_DECLARE_IID (L"IADLXGPUAutoTuningCompleteEvent")
25
+
26
+ /**
27
+ *@page DOX_IADLXGPUAutoTuningCompleteEvent_IsUndervoltGPUCompleted IsUndervoltGPUCompleted
28
+ *@ENG_START_DOX @brief Checks if the GPU undervolting is completed. @ENG_END_DOX
29
+ *
30
+ *@syntax
31
+ *@codeStart
32
+ * adlx_bool IsUndervoltGPUCompleted ()
33
+ *@codeEnd
34
+ *
35
+ *@params
36
+ *N/A
37
+ *
38
+ *@retvalues
39
+ *@ENG_START_DOX If the GPU undervolting is completed, __true__ is returned.<br>
40
+ * If the GPU undervolting is not completed, __false__ is returned.<br> @ENG_END_DOX
41
+ *
42
+ *@copydoc IADLXGPUAutoTuningCompleteEvent_REQ_TABLE
43
+ *
44
+ */
45
+ virtual adlx_bool ADLX_STD_CALL IsUndervoltGPUCompleted () = 0;
46
+
47
+ /**
48
+ *@page DOX_IADLXGPUAutoTuningCompleteEvent_IsOverclockGPUCompleted IsOverclockGPUCompleted
49
+ *@ENG_START_DOX @brief Checks if the GPU overclocking is completed. @ENG_END_DOX
50
+ *
51
+ *@syntax
52
+ *@codeStart
53
+ * adlx_bool IsOverclockGPUCompleted ()
54
+ *@codeEnd
55
+ *
56
+ *@params
57
+ *N/A
58
+ *
59
+ *@retvalues
60
+ *@ENG_START_DOX If the GPU overclocking is completed, __true__ is returned.<br>
61
+ * If the GPU overclocking is not completed, __false__ is returned.<br> @ENG_END_DOX
62
+ *
63
+ *@copydoc IADLXGPUAutoTuningCompleteEvent_REQ_TABLE
64
+ *
65
+ */
66
+ virtual adlx_bool ADLX_STD_CALL IsOverclockGPUCompleted () = 0;
67
+
68
+ /**
69
+ *@page DOX_IADLXGPUAutoTuningCompleteEvent_IsOverclockVRAMCompleted IsOverclockVRAMCompleted
70
+ *@ENG_START_DOX @brief Checks if the VRAM overclocking is completed. @ENG_END_DOX
71
+ *
72
+ *@syntax
73
+ *@codeStart
74
+ * adlx_bool IsOverclockVRAMCompleted ()
75
+ *@codeEnd
76
+ *
77
+ *@params
78
+ *N/A
79
+ *
80
+ *@retvalues
81
+ *@ENG_START_DOX If the VRAM undervolting is completed, __true__ is returned.<br>
82
+ * If the VRAM undervolting is not completed, __false__ is returned.<br> @ENG_END_DOX
83
+ *
84
+ *@copydoc IADLXGPUAutoTuningCompleteEvent_REQ_TABLE
85
+ *
86
+ */
87
+ virtual adlx_bool ADLX_STD_CALL IsOverclockVRAMCompleted () = 0;
88
+ }; //IADLXGPUAutoTuningCompleteEvent
89
+ //----------------------------------------------------------------------------------------------
90
+ typedef IADLXInterfacePtr_T<IADLXGPUAutoTuningCompleteEvent> IADLXGPUAutoTuningCompleteEventPtr;
91
+ } //namespace adlx
92
+ #else //__cplusplus
93
+ ADLX_DECLARE_IID (IADLXGPUAutoTuningCompleteEvent, L"IADLXGPUAutoTuningCompleteEvent")
94
+ typedef struct IADLXGPUAutoTuningCompleteEvent IADLXGPUAutoTuningCompleteEvent;
95
+
96
+ typedef struct IADLXGPUAutoTuningCompleteEventVtbl
97
+ {
98
+ //IADLXInterface
99
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXGPUAutoTuningCompleteEvent* pThis);
100
+ adlx_long (ADLX_STD_CALL *Release)(IADLXGPUAutoTuningCompleteEvent* pThis);
101
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXGPUAutoTuningCompleteEvent* pThis, const wchar_t* interfaceId, void** ppInterface);
102
+
103
+ // IADLXGPUAutoTuningCompleteEvent interface
104
+ adlx_bool (ADLX_STD_CALL *IsUndervoltGPUCompleted)(IADLXGPUAutoTuningCompleteEvent* pThis);
105
+ adlx_bool (ADLX_STD_CALL *IsOverclockGPUCompleted)(IADLXGPUAutoTuningCompleteEvent* pThis);
106
+ adlx_bool (ADLX_STD_CALL *IsOverclockVRAMCompleted)(IADLXGPUAutoTuningCompleteEvent* pThis);
107
+ } IADLXGPUAutoTuningCompleteEventVtbl;
108
+
109
+ struct IADLXGPUAutoTuningCompleteEvent { const IADLXGPUAutoTuningCompleteEventVtbl *pVtbl; };
110
+ #endif //__cplusplus
111
+ #pragma endregion IADLXGPUAutoTuningCompleteEvent
112
+
113
+ //GPU Auto Tuning complete listener interface. To be implemented in application and passed in IADLXGPUTuningChangedHandling::IADLXGPUTuningChangedListener()
114
+ #pragma region IADLXGPUAutoTuningCompleteListener
115
+ #if defined (__cplusplus)
116
+ namespace adlx
117
+ {
118
+ class ADLX_NO_VTABLE IADLXGPUAutoTuningCompleteListener
119
+ {
120
+ public:
121
+ /**
122
+ *@page DOX_IADLXGPUAutoTuningCompleteListener_OnGPUAutoTuningComplete OnGPUAutoTuningComplete
123
+ *@ENG_START_DOX @brief The __OnGPUAutoTuningComplete__ is called by ADLX when GPU tuning completes. @ENG_END_DOX
124
+ *
125
+ *@syntax
126
+ *@codeStart
127
+ * adlx_bool OnGPUAutoTuningComplete (@ref DOX_IADLXGPUAutoTuningCompleteEvent* pGPUAutoTuningCompleteEvent)
128
+ *@codeEnd
129
+ *
130
+ *@params
131
+ *@paramrow{1.,[in] ,pGPUAutoTuningCompleteEvent,@ref DOX_IADLXGPUAutoTuningCompleteEvent* ,@ENG_START_DOX The pointer to a GPU tuning complete event. @ENG_END_DOX}
132
+ *
133
+ *
134
+ *@retvalues
135
+ *@ENG_START_DOX If the application requires ADLX to continue notifying the next listener, __true__ must be returned.<br>
136
+ * If the application requires ADLX to stop notifying the next listener, __false__ must be returned.<br> @ENG_END_DOX
137
+ *
138
+ *@detaileddesc
139
+ *@ENG_START_DOX Once the application registers to the notifications with @ref DOX_IADLXGPUAutoTuning_StartUndervoltGPU, @ref DOX_IADLXGPUAutoTuning_StartOverclockGPU, and @ref DOX_IADLXGPUAutoTuning_StartOverclockVRAM, ADLX will call this method when GPU tuning completes.
140
+ * 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 complete 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 complete event with @ref DOX_IADLXInterface_Release. @ENG_END_DOX
141
+ *
142
+ *
143
+ *@copydoc IADLXGPUAutoTuningCompleteListener_REQ_TABLE
144
+ *
145
+ */
146
+ virtual adlx_bool ADLX_STD_CALL OnGPUAutoTuningComplete (IADLXGPUAutoTuningCompleteEvent* pGPUAutoTuningCompleteEvent) = 0;
147
+ }; //IADLXGPUAutoTuningCompleteListener
148
+ } //namespace adlx
149
+ #else //__cplusplus
150
+ typedef struct IADLXGPUAutoTuningCompleteListener IADLXGPUAutoTuningCompleteListener;
151
+
152
+ typedef struct IADLXGPUAutoTuningCompleteListenerVtbl
153
+ {
154
+ // IADLXGPUAutoTuningCompleteListener interface
155
+ adlx_bool (ADLX_STD_CALL *OnGPUAutoTuningComplete)(IADLXGPUAutoTuningCompleteListener* pThis, IADLXGPUAutoTuningCompleteEvent* pGPUAutoTuningCompleteEvent);
156
+ } IADLXGPUAutoTuningCompleteListenerVtbl;
157
+
158
+ struct IADLXGPUAutoTuningCompleteListener { const IADLXGPUAutoTuningCompleteListenerVtbl *pVtbl; };
159
+ #endif //__cplusplus
160
+ #pragma endregion IADLXGPUAutoTuningCompleteListener
161
+
162
+ // Automatic Tuning
163
+ #pragma region IADLXGPUAutoTuning
164
+ #if defined (__cplusplus)
165
+ namespace adlx
166
+ {
167
+ class ADLX_NO_VTABLE IADLXGPUAutoTuning : public IADLXInterface
168
+ {
169
+ public:
170
+ ADLX_DECLARE_IID (L"IADLXGPUAutoTuning")
171
+ /**
172
+ *@page DOX_IADLXGPUAutoTuning_IsSupportedUndervoltGPU IsSupportedUndervoltGPU
173
+ *@ENG_START_DOX @brief Checks if the GPU undervolting tuning profile is supported on a GPU. @ENG_END_DOX
174
+ *
175
+ *@syntax
176
+ *@codeStart
177
+ * @ref ADLX_RESULT IsSupportedUndervoltGPU (adlx_bool* supported)
178
+ *@codeEnd
179
+ *
180
+ *@params
181
+ *@paramrow{1.,[out],supported,adlx_bool*,@ENG_START_DOX The pointer to a variable where the state of GPU undervolting is returned. The variable is __true__ if GPU undervolting is supported. The variable is __false__ if GPU undervolting is not supported. @ENG_END_DOX}
182
+ *
183
+ *@retvalues
184
+ *@ENG_START_DOX If the state of GPU undervolting is successfully returned, __ADLX_OK__ is returned.<br>
185
+ * If the state of GPU undervolting is not successfully returned, an error code is returned.<br>
186
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
187
+ *
188
+ * @addinfo
189
+ * @ENG_START_DOX
190
+ * GPU undervolting reduces voltage and maintains clock speed to improve performance per watt.
191
+ * @ENG_END_DOX
192
+ *
193
+ *@copydoc IADLXGPUAutoTuning_REQ_TABLE
194
+ *
195
+ */
196
+ virtual ADLX_RESULT ADLX_STD_CALL IsSupportedUndervoltGPU (adlx_bool* supported) = 0;
197
+
198
+ /**
199
+ *@page DOX_IADLXGPUAutoTuning_IsSupportedOverclockGPU IsSupportedOverclockGPU
200
+ *@ENG_START_DOX @brief Checks if the GPU overclocking tuning profile is supported on a GPU. @ENG_END_DOX
201
+ *
202
+ *@syntax
203
+ *@codeStart
204
+ * @ref ADLX_RESULT IsSupportedOverclockGPU (adlx_bool* supported)
205
+ *@codeEnd
206
+ *
207
+ *@params
208
+ *@paramrow{1.,[out],supported,adlx_bool*,@ENG_START_DOX The pointer to a variable where the state of GPU overclocking is returned. The variable is __true__ if GPU overclocking is supported. The variable is __false__ if GPU overclocking is not supported. @ENG_END_DOX}
209
+ *
210
+ *@retvalues
211
+ *@ENG_START_DOX If the state of GPU overclocking is successfully returned, __ADLX_OK__ is returned.<br>
212
+ * If the state of GPU overclocking is not successfully returned, an error code is returned.<br>
213
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
214
+ *
215
+ * @addinfo
216
+ * @ENG_START_DOX
217
+ * Automatic GPU overclocking uses an overclocking algorithm to improve GPU performance.
218
+ * @ENG_END_DOX
219
+ *
220
+ *@copydoc IADLXGPUAutoTuning_REQ_TABLE
221
+ *
222
+ */
223
+ virtual ADLX_RESULT ADLX_STD_CALL IsSupportedOverclockGPU (adlx_bool* supported) = 0;
224
+
225
+ /**
226
+ *@page DOX_IADLXGPUAutoTuning_IsSupportedOverclockVRAM IsSupportedOverclockVRAM
227
+ *@ENG_START_DOX @brief Checks if the VRAM overclocking tuning profile is supported on a GPU. @ENG_END_DOX
228
+ *
229
+ *@syntax
230
+ *@codeStart
231
+ * @ref ADLX_RESULT IsSupportedOverclockVRAM (adlx_bool* supported)
232
+ *@codeEnd
233
+ *
234
+ *@params
235
+ *@paramrow{1.,[out],supported,adlx_bool*,@ENG_START_DOX The pointer to a variable where the state of VRAM overclocking is returned. The variable is __true__ if VRAM overclocking is supported. The variable is __false__ if VRAM overclocking is not supported. @ENG_END_DOX}
236
+ *
237
+ *@retvalues
238
+ *@ENG_START_DOX If the state of VRAM overclocking is successfully returned, __ADLX_OK__ is returned.<br>
239
+ * If the state of VRAM overclocking is not successfully returned, an error code is returned.<br>
240
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
241
+ *
242
+ * @addinfo
243
+ * @ENG_START_DOX
244
+ * Automatic VRAM overclocking uses an overclocking algorithm to improve video memory performance.
245
+ * @ENG_END_DOX
246
+ *
247
+ *@copydoc IADLXGPUAutoTuning_REQ_TABLE
248
+ *
249
+ */
250
+ virtual ADLX_RESULT ADLX_STD_CALL IsSupportedOverclockVRAM (adlx_bool* supported) = 0;
251
+
252
+ /**
253
+ *@page DOX_IADLXGPUAutoTuning_IsCurrentUndervoltGPU IsCurrentUndervoltGPU
254
+ *@ENG_START_DOX @brief Checks if the GPU undervolting tuning profile is currently enabled on a GPU. @ENG_END_DOX
255
+ *
256
+ *@syntax
257
+ *@codeStart
258
+ * @ref ADLX_RESULT IsCurrentUndervoltGPU (adlx_bool* isUndervoltGPU)
259
+ *@codeEnd
260
+ *
261
+ *@params
262
+ *@paramrow{1.,[out],isUndervoltGPU,adlx_bool*,@ENG_START_DOX The pointer to a variable where the state of GPU undervolting is returned. The variable is __true__ if GPU undervolting is applied. The variable is __false__ if GPU undervolting is not applied. @ENG_END_DOX}
263
+ *
264
+ *@retvalues
265
+ *@ENG_START_DOX If the state of GPU undervolting is successfully returned, __ADLX_OK__ is returned.<br>
266
+ * If the state of GPU undervolting 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
+ * @addinfo
270
+ * @ENG_START_DOX
271
+ * GPU undervolting reduces voltage and maintains clock speed to improve performance per watt.
272
+ * @ENG_END_DOX
273
+ *
274
+ *@copydoc IADLXGPUAutoTuning_REQ_TABLE
275
+ *
276
+ */
277
+ virtual ADLX_RESULT ADLX_STD_CALL IsCurrentUndervoltGPU (adlx_bool* isUndervoltGPU) = 0;
278
+
279
+ /**
280
+ *@page DOX_IADLXGPUAutoTuning_IsCurrentOverclockGPU IsCurrentOverclockGPU
281
+ *@ENG_START_DOX @brief Checks if the GPU overclocking tuning profile is currently enabled on a GPU. @ENG_END_DOX
282
+ *
283
+ *@syntax
284
+ *@codeStart
285
+ * @ref ADLX_RESULT IsCurrentOverclockGPU (adlx_bool* isOverclockGPU)
286
+ *@codeEnd
287
+ *
288
+ *@params
289
+ *@paramrow{1.,[out],isOverclockGPU,adlx_bool*,@ENG_START_DOX The pointer to a variable where the state of GPU overclocking is returned. The variable is __true__ if GPU overclocking is applied. The variable is __false__ if GPU overclocking is not applied. @ENG_END_DOX}
290
+ *
291
+ *@retvalues
292
+ *@ENG_START_DOX If the state of GPU overclocking is successfully returned, __ADLX_OK__ is returned.<br>
293
+ * If the state of GPU overclocking is not successfully returned, an error code is returned.<br>
294
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
295
+ *
296
+ * @addinfo
297
+ * @ENG_START_DOX
298
+ * Automatic GPU overclocking uses an overclocking algorithm to improve GPU performance.
299
+ * @ENG_END_DOX
300
+ *
301
+ *@copydoc IADLXGPUAutoTuning_REQ_TABLE
302
+ *
303
+ */
304
+ virtual ADLX_RESULT ADLX_STD_CALL IsCurrentOverclockGPU (adlx_bool* isOverclockGPU) = 0;
305
+
306
+ /**
307
+ *@page DOX_IADLXGPUAutoTuning_IsCurrentOverclockVRAM IsCurrentOverclockVRAM
308
+ *@ENG_START_DOX @brief Checks if the VRAM overclocking tuning profile is currently enabled on a GPU. @ENG_END_DOX
309
+ *
310
+ *@syntax
311
+ *@codeStart
312
+ * @ref ADLX_RESULT IsCurrentOverclockVRAM (adlx_bool* isOverclockVRAM)
313
+ *@codeEnd
314
+ *
315
+ *@params
316
+ *@paramrow{1.,[out],isOverclockVRAM,adlx_bool*,@ENG_START_DOX The pointer to a variable where the state of VRAM overclocking is returned. The variable is __true__ if VRAM overclocking is applied. The variable is __false__ if VRAM overclocking is not applied. @ENG_END_DOX}
317
+ *
318
+ *@retvalues
319
+ *@ENG_START_DOX If the state of VRAM overclocking is successfully returned, __ADLX_OK__ is returned.<br>
320
+ * If the state of VRAM overclocking is not successfully returned, an error code is returned.<br>
321
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
322
+ *
323
+ * @addinfo
324
+ * @ENG_START_DOX
325
+ * Automatic VRAM overclocking uses an overclocking algorithm to improve video memory performance.
326
+ * @ENG_END_DOX
327
+ *
328
+ *@copydoc IADLXGPUAutoTuning_REQ_TABLE
329
+ *
330
+ */
331
+ virtual ADLX_RESULT ADLX_STD_CALL IsCurrentOverclockVRAM (adlx_bool* isOverclockVRAM) = 0;
332
+
333
+ /**
334
+ *@page DOX_IADLXGPUAutoTuning_StartUndervoltGPU StartUndervoltGPU
335
+ *@ENG_START_DOX @brief Starts GPU undervolting on a GPU. @ENG_END_DOX
336
+ *
337
+ *@syntax
338
+ *@codeStart
339
+ * @ref ADLX_RESULT StartUndervoltGPU (@ref DOX_IADLXGPUAutoTuningCompleteListener* pCompleteListener)
340
+ *@codeEnd
341
+ *
342
+ *@params
343
+ *@paramrow{1.,[in],pCompleteListener,@ref DOX_IADLXGPUAutoTuningCompleteListener*,@ENG_START_DOX The pointer to a GPU tuning complete listener interface. @ENG_END_DOX}
344
+ *
345
+ *@retvalues
346
+ *@ENG_START_DOX If the GPU undervolting is successfully started, __ADLX_OK__ is returned.<br>
347
+ * If the GPU undervolting is not successfully started, an error code is returned.<br>
348
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
349
+ *
350
+ *@detaileddesc
351
+ *@ENG_START_DOX @details
352
+ *The __StartUndervoltGPU__ method triggers an asynchronous execution for the autotuning and returns immediately. When the autotuning is completed, ADLX calls @ref DOX_IADLXGPUAutoTuningCompleteListener_OnGPUAutoTuningComplete in the GPU tuning complete listener. After the event is raised, @ref DOX_IADLXGPUAutoTuning_IsCurrentUndervoltGPU returns __true__. @ENG_END_DOX
353
+ *
354
+ * @addinfo
355
+ * @ENG_START_DOX
356
+ * GPU undervolting reduces voltage and maintains clock speed to improve performance per watt.
357
+ * @ENG_END_DOX
358
+ *
359
+ *@copydoc IADLXGPUAutoTuning_REQ_TABLE
360
+ *
361
+ */
362
+ virtual ADLX_RESULT ADLX_STD_CALL StartUndervoltGPU (IADLXGPUAutoTuningCompleteListener* pCompleteListener) = 0;
363
+
364
+ /**
365
+ *@page DOX_IADLXGPUAutoTuning_StartOverclockGPU StartOverclockGPU
366
+ *@ENG_START_DOX @brief Starts GPU overclocking on a GPU. @ENG_END_DOX
367
+ *
368
+ *@syntax
369
+ *@codeStart
370
+ * @ref ADLX_RESULT StartOverclockGPU (@ref DOX_IADLXGPUAutoTuningCompleteListener* pCompleteListener)
371
+ *@codeEnd
372
+ *
373
+ *@params
374
+ *@paramrow{1.,[in],pCompleteListener,@ref DOX_IADLXGPUAutoTuningCompleteListener*,@ENG_START_DOX The pointer to a GPU tuning complete listener interface. @ENG_END_DOX}
375
+ *
376
+ *@retvalues
377
+ *@ENG_START_DOX If the GPU overclocking is successfully started, __ADLX_OK__ is returned.<br>
378
+ * If the GPU overclocking is not successfully started, an error code is returned.<br>
379
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
380
+ *
381
+ *@detaileddesc
382
+ *@ENG_START_DOX @details
383
+ * The __StartOverclockGPU__ method triggers an asynchronous execution for the autotuning and returns immediately. When the autotuning is completed, ADLX calls @ref DOX_IADLXGPUAutoTuningCompleteListener_OnGPUAutoTuningComplete in the GPU tuning complete listener. After the event is raised, @ref DOX_IADLXGPUAutoTuning_IsCurrentOverclockGPU returns __true__. @ENG_END_DOX
384
+ *
385
+ * @addinfo
386
+ * @ENG_START_DOX
387
+ * Automatic GPU overclocking uses an overclocking algorithm to improve GPU performance.
388
+ * @ENG_END_DOX
389
+ *
390
+ *@copydoc IADLXGPUAutoTuning_REQ_TABLE
391
+ *
392
+ */
393
+ virtual ADLX_RESULT ADLX_STD_CALL StartOverclockGPU (IADLXGPUAutoTuningCompleteListener* pCompleteListener) = 0;
394
+
395
+ /**
396
+ *@page DOX_IADLXGPUAutoTuning_StartOverclockVRAM StartOverclockVRAM
397
+ *@ENG_START_DOX @brief Start VRAM overclocking on a GPU. @ENG_END_DOX
398
+ *
399
+ *@syntax
400
+ *@codeStart
401
+ * @ref ADLX_RESULT StartOverclockVRAM (@ref DOX_IADLXGPUAutoTuningCompleteListener* pCompleteListener)
402
+ *@codeEnd
403
+ *
404
+ *@params
405
+ *@paramrow{1.,[in],pCompleteListener,@ref DOX_IADLXGPUAutoTuningCompleteListener*,@ENG_START_DOX The pointer to a GPU tuning complete listener interface. @ENG_END_DOX}
406
+ *
407
+ *@retvalues
408
+ *@ENG_START_DOX If the VRAM overclocking is successfully started, __ADLX_OK__ is returned.<br>
409
+ * If the VRAM overclocking is not successfully started, an error code is returned.<br>
410
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
411
+ *
412
+ *@detaileddesc
413
+ *@ENG_START_DOX @details
414
+ * The __StartOverclockVRAM__ method triggers an asynchronous execution for the autotuning and returns immediately. When the autotuning is completed, ADLX calls @ref DOX_IADLXGPUAutoTuningCompleteListener_OnGPUAutoTuningComplete in the GPU tuning complete listener. After the event is raised, @ref DOX_IADLXGPUAutoTuning_IsCurrentOverclockVRAM returns __true__. @ENG_END_DOX
415
+ *
416
+ * @addinfo
417
+ * @ENG_START_DOX
418
+ * Automatic VRAM overclocking uses an overclocking algorithm to improve video memory performance.
419
+ * @ENG_END_DOX
420
+ *
421
+ *@copydoc IADLXGPUAutoTuning_REQ_TABLE
422
+ *
423
+ */
424
+ virtual ADLX_RESULT ADLX_STD_CALL StartOverclockVRAM (IADLXGPUAutoTuningCompleteListener* pCompleteListener) = 0;
425
+ };
426
+ //----------------------------------------------------------------------------------------------
427
+ typedef IADLXInterfacePtr_T<IADLXGPUAutoTuning> IADLXGPUAutoTuningPtr;
428
+ } //namespace adlx
429
+ #else //__cplusplus
430
+ ADLX_DECLARE_IID (IADLXGPUAutoTuning, L"IADLXGPUAutoTuning")
431
+
432
+ typedef struct IADLXGPUAutoTuning IADLXGPUAutoTuning;
433
+
434
+ typedef struct IADLXGPUAutoTuningVtbl
435
+ {
436
+ //IADLXInterface
437
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXGPUAutoTuning* pThis);
438
+ adlx_long (ADLX_STD_CALL *Release)(IADLXGPUAutoTuning* pThis);
439
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXGPUAutoTuning* pThis, const wchar_t* interfaceId, void** ppInterface);
440
+
441
+ //IADLXGPUAutoTuning
442
+ ADLX_RESULT (ADLX_STD_CALL *IsSupportedUndervoltGPU)(IADLXGPUAutoTuning* pThis, adlx_bool* supported);
443
+ ADLX_RESULT (ADLX_STD_CALL *IsSupportedOverclockGPU)(IADLXGPUAutoTuning* pThis, adlx_bool* supported);
444
+ ADLX_RESULT (ADLX_STD_CALL *IsSupportedOverclockVRAM)(IADLXGPUAutoTuning* pThis, adlx_bool* supported);
445
+
446
+ ADLX_RESULT (ADLX_STD_CALL *IsCurrentUndervoltGPU)(IADLXGPUAutoTuning* pThis, adlx_bool* isUndervoltGPU);
447
+ ADLX_RESULT (ADLX_STD_CALL *IsCurrentOverclockGPU)(IADLXGPUAutoTuning* pThis, adlx_bool* isOverclockGPU);
448
+ ADLX_RESULT (ADLX_STD_CALL *IsCurrentOverclockVRAM)(IADLXGPUAutoTuning* pThis, adlx_bool* isOverclockVRAM);
449
+
450
+ ADLX_RESULT (ADLX_STD_CALL *StartUndervoltGPU)(IADLXGPUAutoTuning* pThis, IADLXGPUAutoTuningCompleteListener* pCompleteListener);
451
+ ADLX_RESULT (ADLX_STD_CALL *StartOverclockGPU)(IADLXGPUAutoTuning* pThis, IADLXGPUAutoTuningCompleteListener* pCompleteListener);
452
+ ADLX_RESULT (ADLX_STD_CALL *StartOverclockVRAM)(IADLXGPUAutoTuning* pThis, IADLXGPUAutoTuningCompleteListener* pCompleteListener);
453
+
454
+ }IADLXGPUAutoTuningVtbl;
455
+
456
+ struct IADLXGPUAutoTuning { const IADLXGPUAutoTuningVtbl *pVtbl; };
457
+ #endif //__cplusplus
458
+ #pragma endregion IADLXGPUAutoTuning
459
+
460
+ #endif//ADLX_IGPUAUTOTUNING_H