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,607 @@
1
+ //
2
+ // Copyright (c) 2021 - 2025 Advanced Micro Devices, Inc. All rights reserved.
3
+ //
4
+ //-------------------------------------------------------------------------------------------------
5
+ #ifndef ADLX_IGPUMANUALGFXTUNING_H
6
+ #define ADLX_IGPUMANUALGFXTUNING_H
7
+ #pragma once
8
+
9
+ #include "ADLXStructures.h"
10
+
11
+ //-------------------------------------------------------------------------------------------------
12
+ //IGPUManualGFXTunings.h - Interfaces for ADLX GPU Manual Graphics Tuning functionality
13
+
14
+ // Manual Graphics Tuning
15
+ #pragma region IADLXManualGraphicsTuning1
16
+ #if defined (__cplusplus)
17
+ namespace adlx
18
+ {
19
+ class ADLX_NO_VTABLE IADLXManualTuningStateList;
20
+ class ADLX_NO_VTABLE IADLXManualGraphicsTuning1 : public IADLXInterface
21
+ {
22
+ public:
23
+ ADLX_DECLARE_IID (L"IADLXManualGraphicsTuning1")
24
+
25
+ /**
26
+ *@page DOX_IADLXManualGraphicsTuning1_GetGPUTuningRanges GetGPUTuningRanges
27
+ *@ENG_START_DOX @brief Gets the frequency range and the voltage range on a GPU. @ENG_END_DOX
28
+ *
29
+ *@syntax
30
+ *@codeStart
31
+ * @ref ADLX_RESULT GetGPUTuningRanges (@ref ADLX_IntRange* frequencyRange, @ref ADLX_IntRange* voltageRange)
32
+ *@codeEnd
33
+ *
34
+ *@params
35
+ *@paramrow{1.,[out],frequencyRange,@ref ADLX_IntRange*,@ENG_START_DOX The pointer to a variable where the GPU frequency range (in MHz) is returned. @ENG_END_DOX}
36
+ *@paramrow{2.,[out],voltageRange,@ref ADLX_IntRange*,@ENG_START_DOX The pointer to a variable where the GPU voltage range (in mV) is returned. @ENG_END_DOX}
37
+ *
38
+ *@retvalues
39
+ *@ENG_START_DOX If the frequency and voltage range are successfully returned, __ADLX_OK__ is returned.<br>
40
+ * If the frequency and voltage range are not successfully returned, an error code is returned.<br>
41
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
42
+ *
43
+ *@detaileddesc
44
+ *@ENG_START_DOX @details The frequency range and the voltage range are applicable to all the GPU states on this GPU. @ENG_END_DOX
45
+ *
46
+ * @addinfo
47
+ * @ENG_START_DOX
48
+ * Some GPUs allow multiple GPU tuning states. Each GPU tuning state is represented by the GPU clock speed and the GPU voltage.<br/>
49
+ * The GPU clock speed and the GPU voltage can be adjusted within their ranges.
50
+ * @ENG_END_DOX
51
+ *
52
+ *@copydoc IADLXManualGraphicsTuning1_REQ_TABLE
53
+ *
54
+ */
55
+ virtual ADLX_RESULT ADLX_STD_CALL GetGPUTuningRanges (ADLX_IntRange* frequencyRange, ADLX_IntRange* voltageRange) = 0;
56
+
57
+ /**
58
+ *@page DOX_IADLXManualGraphicsTuning1_GetGPUTuningStates GetGPUTuningStates
59
+ *@ENG_START_DOX @brief Gets the reference counted list of current GPU tuning states. @ENG_END_DOX
60
+ *
61
+ *@syntax
62
+ *@codeStart
63
+ * @ref ADLX_RESULT GetGPUTuningStates (@ref DOX_IADLXManualTuningStateList** ppGFXStates)
64
+ *@codeEnd
65
+ *
66
+ *@params
67
+ *@paramrow{1.,[out],ppGFXStates,@ref DOX_IADLXManualTuningStateList**,@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 __*ppGFXStates__ to __nullptr__. @ENG_END_DOX}
68
+ *
69
+ *@retvalues
70
+ *@ENG_START_DOX If the list of GPU tuning states is successfully returned, __ADLX_OK__ is returned.<br>
71
+ * If the list of GPU tuning states is not successfully returned, an error code is returned.<br>
72
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
73
+ *
74
+ *@detaileddesc
75
+ *@ENG_START_DOX @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed. @ENG_END_DOX
76
+ *
77
+ *@addinfo
78
+ *@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>
79
+ *
80
+ * Some GPUs allow multiple GPU tuning states. Each GPU tuning state is represented by the GPU clock speed and the GPU voltage. @ENG_END_DOX
81
+ *
82
+ *@copydoc IADLXManualGraphicsTuning1_REQ_TABLE
83
+ *
84
+ */
85
+ virtual ADLX_RESULT ADLX_STD_CALL GetGPUTuningStates (IADLXManualTuningStateList** ppGFXStates) = 0;
86
+
87
+ /**
88
+ *@page DOX_IADLXManualGraphicsTuning1_GetEmptyGPUTuningStates GetEmptyGPUTuningStates
89
+ *@ENG_START_DOX @brief Gets the reference counted list of empty GPU tuning states. @ENG_END_DOX
90
+ *
91
+ *@syntax
92
+ *@codeStart
93
+ * @ref ADLX_RESULT GetEmptyGPUTuningStates (@ref DOX_IADLXManualTuningStateList** ppGFXStates)
94
+ *@codeEnd
95
+ *
96
+ *@params
97
+ *@paramrow{1.,[out],ppGFXStates,@ref DOX_IADLXManualTuningStateList**,@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 __*ppGFXStates__ to __nullptr__. @ENG_END_DOX}
98
+ *
99
+ *@retvalues
100
+ *@ENG_START_DOX If the list of empty GPU tuning states is successfully returned, __ADLX_OK__ is returned.<br>
101
+ * If the list of empty GPU tuning states is not successfully returned, an error code is returned.<br>
102
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
103
+ *
104
+ *@detaileddesc
105
+ *@ENG_START_DOX @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed. @ENG_END_DOX
106
+ *
107
+ *@addinfo
108
+ *@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>
109
+ *
110
+ * The frequency and voltage in the returned states are zero.
111
+ *
112
+ * Some GPUs allow multiple GPU tuning states. Each GPU tuning state is represented by the GPU clock speed and the GPU voltage. @ENG_END_DOX
113
+ *
114
+ *@copydoc IADLXManualGraphicsTuning1_REQ_TABLE
115
+ *
116
+ */
117
+ virtual ADLX_RESULT ADLX_STD_CALL GetEmptyGPUTuningStates (IADLXManualTuningStateList** ppGFXStates) = 0;
118
+
119
+ /**
120
+ *@page DOX_IADLXManualGraphicsTuning1_IsValidGPUTuningStates IsValidGPUTuningStates
121
+ *@ENG_START_DOX @brief Checks if each GPU tuning state in a list is valid. @ENG_END_DOX
122
+ *
123
+ *@syntax
124
+ *@codeStart
125
+ * @ref ADLX_RESULT IsValidGPUTuningStates (@ref DOX_IADLXManualTuningStateList* pGFXStates, adlx_int* errorIndex)
126
+ *@codeEnd
127
+ *
128
+ *@params
129
+ *@paramrow{1.,[in],pGFXStates,@ref DOX_IADLXManualTuningStateList*,@ENG_START_DOX The pointer to the GPU states list interface. @ENG_END_DOX}
130
+ *@paramrow{2.,[out],errorIndex,adlx_int*,@ENG_START_DOX The pointer to a variable where the invalid states index is returned. @ENG_END_DOX}
131
+ *
132
+ *@retvalues
133
+ *@ENG_START_DOX If __IsValidGPUTuningStates__ is successfully executed, __ADLX_OK__ is returned.<br>
134
+ * If __IsValidGPUTuningStates__ is not successfully executed, an error code is returned.<br>
135
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
136
+ *
137
+ * @addinfo
138
+ * @ENG_START_DOX
139
+ * Some GPUs allow multiple GPU tuning states. Each GPU tuning state is represented by the GPU clock speed and the GPU voltage.
140
+ * @ENG_END_DOX
141
+ *
142
+ *@detaileddesc
143
+ *@ENG_START_DOX @details If the __*pGFXStates__ is valid then the method sets the __errorIndex__ to -1. @ENG_END_DOX
144
+ *
145
+ *@copydoc IADLXManualGraphicsTuning1_REQ_TABLE
146
+ *
147
+ */
148
+ virtual ADLX_RESULT ADLX_STD_CALL IsValidGPUTuningStates (IADLXManualTuningStateList* pGFXStates, adlx_int* errorIndex) = 0;
149
+
150
+ /**
151
+ *@page DOX_IADLXManualGraphicsTuning1_SetGPUTuningStates SetGPUTuningStates
152
+ *@ENG_START_DOX @brief Sets the GPU tuning states on a GPU. @ENG_END_DOX
153
+ *
154
+ *@syntax
155
+ *@codeStart
156
+ * @ref ADLX_RESULT SetGPUTuningStates (@ref DOX_IADLXManualTuningStateList* pGFXStates)
157
+ *@codeEnd
158
+ *
159
+ *@params
160
+ *@paramrow{1.,[in],pGFXStates,@ref DOX_IADLXManualTuningStateList*,@ENG_START_DOX The pointer to the GPU states list interface. @ENG_END_DOX}
161
+ *
162
+ *@retvalues
163
+ *@ENG_START_DOX If the GPU tuning states are successfully set, __ADLX_OK__ is returned.<br>
164
+ * If the GPU tuning states are not successfully set, an error code is returned.<br>
165
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
166
+ *
167
+ * @addinfo
168
+ * @ENG_START_DOX
169
+ * Some GPUs allow multiple GPU tuning states. Each GPU tuning state is represented by the GPU clock speed and the GPU voltage.
170
+ * @ENG_END_DOX
171
+ *
172
+ *@copydoc IADLXManualGraphicsTuning1_REQ_TABLE
173
+ *
174
+ */
175
+ virtual ADLX_RESULT ADLX_STD_CALL SetGPUTuningStates (IADLXManualTuningStateList* pGFXStates) = 0;
176
+ };
177
+ //----------------------------------------------------------------------------------------------
178
+ typedef IADLXInterfacePtr_T<IADLXManualGraphicsTuning1> IADLXManualGraphicsTuning1Ptr;
179
+ } //namespace adlx
180
+ #else //__cplusplus
181
+ ADLX_DECLARE_IID(IADLXManualGraphicsTuning1, L"IADLXManualGraphicsTuning1")
182
+ typedef struct IADLXManualTuningStateList IADLXManualTuningStateList;
183
+ typedef struct IADLXManualGraphicsTuning1 IADLXManualGraphicsTuning1;
184
+
185
+ typedef struct IADLXManualGraphicsTuning1Vtbl
186
+ {
187
+ //IADLXInterface
188
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXManualGraphicsTuning1* pThis);
189
+ adlx_long (ADLX_STD_CALL *Release)(IADLXManualGraphicsTuning1* pThis);
190
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXManualGraphicsTuning1* pThis, const wchar_t* interfaceId, void** ppInterface);
191
+
192
+ //IADLXManualGraphicsTuning1
193
+ ADLX_RESULT (ADLX_STD_CALL *GetGPUTuningRanges)(IADLXManualGraphicsTuning1* pThis, ADLX_IntRange* frequencyRange, ADLX_IntRange* voltageRange);
194
+ ADLX_RESULT (ADLX_STD_CALL *GetGPUTuningStates)(IADLXManualGraphicsTuning1* pThis, IADLXManualTuningStateList** ppGFXStates);
195
+ ADLX_RESULT (ADLX_STD_CALL *GetEmptyGPUTuningStates)(IADLXManualGraphicsTuning1* pThis, IADLXManualTuningStateList** ppGFXStates);
196
+ ADLX_RESULT (ADLX_STD_CALL *IsValidGPUTuningStates)(IADLXManualGraphicsTuning1* pThis, IADLXManualTuningStateList* pGFXStates, adlx_int* errorIndex);
197
+ ADLX_RESULT (ADLX_STD_CALL *SetGPUTuningStates)(IADLXManualGraphicsTuning1* pThis, IADLXManualTuningStateList* pGFXStates);
198
+ }IADLXManualGraphicsTuning1Vtbl;
199
+
200
+ struct IADLXManualGraphicsTuning1 { const IADLXManualGraphicsTuning1Vtbl *pVtbl; };
201
+ #endif //__cplusplus
202
+ #pragma endregion IADLXManualGraphicsTuning1
203
+
204
+ // Manual Graphics Tuning
205
+ #pragma region IADLXManualGraphicsTuning2
206
+ #if defined (__cplusplus)
207
+ namespace adlx
208
+ {
209
+ class ADLX_NO_VTABLE IADLXManualGraphicsTuning2 : public IADLXInterface
210
+ {
211
+ public:
212
+ ADLX_DECLARE_IID (L"IADLXManualGraphicsTuning2")
213
+
214
+ /**
215
+ *@page DOX_IADLXManualGraphicsTuning2_GetGPUMinFrequencyRange GetGPUMinFrequencyRange
216
+ *@ENG_START_DOX @brief Gets the minimum frequency range on a GPU. @ENG_END_DOX
217
+ *
218
+ *@syntax
219
+ *@codeStart
220
+ * @ref ADLX_RESULT GetGPUMinFrequencyRange (@ref ADLX_IntRange* tuningRange)
221
+ *@codeEnd
222
+ *
223
+ *@params
224
+ *@paramrow{1.,[out],tuningRange,@ref ADLX_IntRange*,@ENG_START_DOX The pointer to a variable where the minimum frequency range (in MHz) is returned. @ENG_END_DOX}
225
+ *
226
+ *@retvalues
227
+ *@ENG_START_DOX If the minimum frequency range is successfully returned, __ADLX_OK__ is returned.<br>
228
+ * If the minimum frequency range is not successfully returned, an error code is returned.<br>
229
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
230
+ *
231
+ * @addinfo
232
+ * @ENG_START_DOX
233
+ * Some GPUs support minimum GPU clock speed adjustment within a range.
234
+ * @ENG_END_DOX
235
+ *
236
+ *@copydoc IADLXManualGraphicsTuning2_REQ_TABLE
237
+ *
238
+ */
239
+ virtual ADLX_RESULT ADLX_STD_CALL GetGPUMinFrequencyRange (ADLX_IntRange* tuningRange) = 0;
240
+
241
+ /**
242
+ *@page DOX_IADLXManualGraphicsTuning2_GetGPUMinFrequency GetGPUMinFrequency
243
+ *@ENG_START_DOX @brief Gets the current minimum frequency value on a GPU. @ENG_END_DOX
244
+ *
245
+ *@syntax
246
+ *@codeStart
247
+ * @ref ADLX_RESULT GetGPUMinFrequency (adlx_int* minFreq)
248
+ *@codeEnd
249
+ *
250
+ *@params
251
+ *@paramrow{1.,[out],minFreq,adlx_int*,@ENG_START_DOX The pointer to a variable where the minimum frequency value (in MHz) is returned. @ENG_END_DOX}
252
+ *
253
+ *@retvalues
254
+ *@ENG_START_DOX If the minimum frequency value is successfully returned, __ADLX_OK__ is returned.<br>
255
+ * If the minimum frequency value is not successfully returned, an error code is returned.<br>
256
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
257
+ *
258
+ * @addinfo
259
+ * @ENG_START_DOX
260
+ * Some GPUs support minimum GPU clock speed adjustment within a range.
261
+ * @ENG_END_DOX
262
+ *
263
+ *@copydoc IADLXManualGraphicsTuning2_REQ_TABLE
264
+ *
265
+ */
266
+ virtual ADLX_RESULT ADLX_STD_CALL GetGPUMinFrequency (adlx_int* minFreq) = 0;
267
+
268
+ /**
269
+ *@page DOX_IADLXManualGraphicsTuning2_SetGPUMinFrequency SetGPUMinFrequency
270
+ *@ENG_START_DOX @brief Sets the minimum frequency on a GPU. @ENG_END_DOX
271
+ *
272
+ *@syntax
273
+ *@codeStart
274
+ * @ref ADLX_RESULT SetGPUMinFrequency (adlx_int minFreq)
275
+ *@codeEnd
276
+ *
277
+ *@params
278
+ *@paramrow{1.,[in],minFreq,adlx_int,@ENG_START_DOX The new minimum frequency value (in MHz). @ENG_END_DOX}
279
+ *
280
+ *@retvalues
281
+ *@ENG_START_DOX If the minimum frequency value is successfully set, __ADLX_OK__ is returned.<br>
282
+ * If the minimum frequency value is not successfully set, an error code is returned.<br>
283
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
284
+ *
285
+ * @addinfo
286
+ * @ENG_START_DOX
287
+ * Some GPUs support minimum GPU clock speed adjustment within a range.
288
+ * @ENG_END_DOX
289
+ *
290
+ *@copydoc IADLXManualGraphicsTuning2_REQ_TABLE
291
+ *
292
+ */
293
+ virtual ADLX_RESULT ADLX_STD_CALL SetGPUMinFrequency (adlx_int minFreq) = 0;
294
+
295
+ /**
296
+ *@page DOX_IADLXManualGraphicsTuning2_GetGPUMaxFrequencyRange GetGPUMaxFrequencyRange
297
+ *@ENG_START_DOX @brief Gets the maximum frequency (offset) range on a GPU. @ENG_END_DOX
298
+ *
299
+ *@syntax
300
+ *@codeStart
301
+ * @ref ADLX_RESULT GetGPUMaxFrequencyRange (@ref ADLX_IntRange* tuningRange)
302
+ *@codeEnd
303
+ *
304
+ *@params
305
+ *@paramrow{1.,[out],tuningRange,@ref ADLX_IntRange*,@ENG_START_DOX The pointer to a variable where the maximum frequency (offset) range (in MHz) is returned. @ENG_END_DOX}
306
+ *
307
+ *@retvalues
308
+ *@ENG_START_DOX If the maximum frequency (offset) range is successfully returned, __ADLX_OK__ is returned.<br>
309
+ * If the maximum frequency (offset) range is not successfully returned, an error code is returned.<br>
310
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
311
+ *
312
+ * @addinfo
313
+ * @ENG_START_DOX
314
+ * Some GPUs support maximum GPU clock speed adjustment within a range.
315
+ * Start from Navi4+, the maximum frequency is an offset from the base frequency.
316
+ * @ENG_END_DOX
317
+ *
318
+ *@copydoc IADLXManualGraphicsTuning2_REQ_TABLE
319
+ *
320
+ */
321
+ virtual ADLX_RESULT ADLX_STD_CALL GetGPUMaxFrequencyRange (ADLX_IntRange* tuningRange) = 0;
322
+
323
+ /**
324
+ *@page DOX_IADLXManualGraphicsTuning2_GetGPUMaxFrequency GetGPUMaxFrequency
325
+ *@ENG_START_DOX @brief Gets the current maximum frequency (offset) value on a GPU. @ENG_END_DOX
326
+ *
327
+ *@syntax
328
+ *@codeStart
329
+ * @ref ADLX_RESULT GetGPUMaxFrequency (adlx_int* maxFreq)
330
+ *@codeEnd
331
+ *
332
+ *@params
333
+ *@paramrow{1.,[out],maxFreq,adlx_int*,@ENG_START_DOX The pointer to a variable where the maximum frequency (offset) value (in MHz) is returned. @ENG_END_DOX}
334
+ *
335
+ *@retvalues
336
+ *@ENG_START_DOX If the maximum frequency (offset) value is successfully returned, __ADLX_OK__ is returned.<br>
337
+ * If the maximum frequency (offset) value is not successfully returned, an error code is returned.<br>
338
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
339
+ *
340
+ * @addinfo
341
+ * @ENG_START_DOX
342
+ * Some GPUs support maximum GPU clock speed adjustment within a range.
343
+ * Start from Navi4+, the maximum frequency is an offset from the base frequency.
344
+ * @ENG_END_DOX
345
+ *
346
+ *@copydoc IADLXManualGraphicsTuning2_REQ_TABLE
347
+ *
348
+ */
349
+ virtual ADLX_RESULT ADLX_STD_CALL GetGPUMaxFrequency (adlx_int* maxFreq) = 0;
350
+
351
+ /**
352
+ *@page DOX_IADLXManualGraphicsTuning2_SetGPUMaxFrequency SetGPUMaxFrequency
353
+ *@ENG_START_DOX @brief Sets the maximum frequency (offset) on a GPU. @ENG_END_DOX
354
+ *
355
+ *@syntax
356
+ *@codeStart
357
+ * @ref ADLX_RESULT SetGPUMaxFrequency (adlx_int maxFreq)
358
+ *@codeEnd
359
+ *
360
+ *@params
361
+ *@paramrow{1.,[in],maxFreq,adlx_int,@ENG_START_DOX The new maximum frequency (offset) value (in MHz). @ENG_END_DOX}
362
+ *
363
+ *@retvalues
364
+ *@ENG_START_DOX If the maximum frequency (offset) value is successfully set, __ADLX_OK__ is returned.<br>
365
+ * If the maximum frequency (offset) value is not successfully set, an error code is returned.<br>
366
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
367
+ *
368
+ * @addinfo
369
+ * @ENG_START_DOX
370
+ * Some GPUs support maximum GPU clock speed adjustment within a range.
371
+ * Start from Navi4+, the maximum frequency is an offset from the base frequency.
372
+ * @ENG_END_DOX
373
+ *
374
+ *@copydoc IADLXManualGraphicsTuning2_REQ_TABLE
375
+ *
376
+ */
377
+ virtual ADLX_RESULT ADLX_STD_CALL SetGPUMaxFrequency (adlx_int maxFreq) = 0;
378
+
379
+ /**
380
+ *@page DOX_IADLXManualGraphicsTuning2_GetGPUVoltageRange GetGPUVoltageRange
381
+ *@ENG_START_DOX @brief Gets the clock voltage (offset) range on a GPU. @ENG_END_DOX
382
+ *
383
+ *@syntax
384
+ *@codeStart
385
+ * @ref ADLX_RESULT GetGPUVoltageRange (@ref ADLX_IntRange* tuningRange)
386
+ *@codeEnd
387
+ *
388
+ *@params
389
+ *@paramrow{1.,[out],tuningRange,@ref ADLX_IntRange*,@ENG_START_DOX The pointer to a variable where the clock voltage (offset) range (in mV) is returned. @ENG_END_DOX}
390
+ *
391
+ *@retvalues
392
+ *@ENG_START_DOX If the clock voltage (offset) range is successfully returned, __ADLX_OK__ is returned.<br>
393
+ * If the clock voltage (offset) range is not successfully returned, an error code is returned.<br>
394
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
395
+ *
396
+ * @addinfo
397
+ * @ENG_START_DOX
398
+ * Some GPUs support GPU voltage (offset) adjustment within a range.
399
+ * Start from Navi4+, the GPU voltage is an offset from the base voltage.
400
+ * @ENG_END_DOX
401
+ *
402
+ *@copydoc IADLXManualGraphicsTuning2_REQ_TABLE
403
+ *
404
+ */
405
+ virtual ADLX_RESULT ADLX_STD_CALL GetGPUVoltageRange (ADLX_IntRange* tuningRange) = 0;
406
+
407
+ /**
408
+ *@page DOX_IADLXManualGraphicsTuning2_GetGPUVoltage GetGPUVoltage
409
+ *@ENG_START_DOX @brief Gets the current clock voltage (offset) value on a GPU. @ENG_END_DOX
410
+ *
411
+ *@syntax
412
+ *@codeStart
413
+ * @ref ADLX_RESULT GetGPUVoltage (adlx_int* volt)
414
+ *@codeEnd
415
+ *
416
+ *@params
417
+ *@paramrow{1.,[out],volt,adlx_int*,@ENG_START_DOX The pointer to a variable where the GPU voltage (offset) value (in mV) is returned. @ENG_END_DOX}
418
+ *
419
+ *@retvalues
420
+ *@ENG_START_DOX If the clock voltage (offset) value is successfully returned, __ADLX_OK__ is returned.<br>
421
+ * If the clock voltage (offset) value is not successfully returned, an error code is returned.<br>
422
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
423
+ *
424
+ * @addinfo
425
+ * @ENG_START_DOX
426
+ * Some GPUs support GPU voltage (offset) adjustment within a range.
427
+ * Start from Navi4+, the GPU voltage is an offset from the base voltage.
428
+ * @ENG_END_DOX
429
+ *
430
+ *@copydoc IADLXManualGraphicsTuning2_REQ_TABLE
431
+ *
432
+ */
433
+ virtual ADLX_RESULT ADLX_STD_CALL GetGPUVoltage (adlx_int* volt) = 0;
434
+
435
+ /**
436
+ *@page DOX_IADLXManualGraphicsTuning2_SetGPUVoltage SetGPUVoltage
437
+ *@ENG_START_DOX @brief Sets the clock voltage (offset) on a GPU. @ENG_END_DOX
438
+ *
439
+ *@syntax
440
+ *@codeStart
441
+ * @ref ADLX_RESULT SetGPUVoltage (offset) (adlx_int volt)
442
+ *@codeEnd
443
+ *
444
+ *@params
445
+ *@paramrow{1.,[in],volt,adlx_int,@ENG_START_DOX The new GPU voltage (offset) value (in mV). @ENG_END_DOX}
446
+ *
447
+ *@retvalues
448
+ *@ENG_START_DOX If the clock voltage (offset) value is successfully set, __ADLX_OK__ is returned.<br>
449
+ * If the clock voltage (offset) value is not successfully set, an error code is returned.<br>
450
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
451
+ *
452
+ * @addinfo
453
+ * @ENG_START_DOX
454
+ * Some GPUs support GPU voltage (offset) adjustment within a range.
455
+ * Start from Navi4+, the GPU voltage is an offset from the base voltage.
456
+ * @ENG_END_DOX
457
+ *
458
+ *@copydoc IADLXManualGraphicsTuning2_REQ_TABLE
459
+ *
460
+ */
461
+ virtual ADLX_RESULT ADLX_STD_CALL SetGPUVoltage (adlx_int volt) = 0;
462
+ };
463
+ //----------------------------------------------------------------------------------------------
464
+ typedef IADLXInterfacePtr_T<IADLXManualGraphicsTuning2> IADLXManualGraphicsTuning2Ptr;
465
+ } //namespace adlx
466
+ #else //__cplusplus
467
+ ADLX_DECLARE_IID (IADLXManualGraphicsTuning2, L"IADLXManualGraphicsTuning2")
468
+
469
+ typedef struct IADLXManualGraphicsTuning2 IADLXManualGraphicsTuning2;
470
+
471
+ typedef struct IADLXManualGraphicsTuning2Vtbl
472
+ {
473
+ //IADLXInterface
474
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXManualGraphicsTuning2* pThis);
475
+ adlx_long (ADLX_STD_CALL *Release)(IADLXManualGraphicsTuning2* pThis);
476
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXManualGraphicsTuning2* pThis, const wchar_t* interfaceId, void** ppInterface);
477
+
478
+ //IADLXManualGraphicsTuning2
479
+ ADLX_RESULT (ADLX_STD_CALL *GetGPUMinFrequencyRange)(IADLXManualGraphicsTuning2* pThis, ADLX_IntRange* tuningRange);
480
+ ADLX_RESULT (ADLX_STD_CALL *GetGPUMinFrequency)(IADLXManualGraphicsTuning2* pThis, adlx_int* minFreq);
481
+ ADLX_RESULT (ADLX_STD_CALL *SetGPUMinFrequency)(IADLXManualGraphicsTuning2* pThis, adlx_int minFreq);
482
+ ADLX_RESULT (ADLX_STD_CALL *GetGPUMaxFrequencyRange)(IADLXManualGraphicsTuning2* pThis, ADLX_IntRange* tuningRange);
483
+ ADLX_RESULT (ADLX_STD_CALL *GetGPUMaxFrequency)(IADLXManualGraphicsTuning2* pThis, adlx_int* maxFreq);
484
+ ADLX_RESULT (ADLX_STD_CALL *SetGPUMaxFrequency)(IADLXManualGraphicsTuning2* pThis, adlx_int maxFreq);
485
+
486
+ ADLX_RESULT (ADLX_STD_CALL *GetGPUVoltageRange)(IADLXManualGraphicsTuning2* pThis, ADLX_IntRange* tuningRange);
487
+ ADLX_RESULT (ADLX_STD_CALL *GetGPUVoltage)(IADLXManualGraphicsTuning2* pThis, adlx_int* volt);
488
+ ADLX_RESULT (ADLX_STD_CALL *SetGPUVoltage)(IADLXManualGraphicsTuning2* pThis, adlx_int volt);
489
+ }IADLXManualGraphicsTuning2Vtbl;
490
+ struct IADLXManualGraphicsTuning2 { const IADLXManualGraphicsTuning2Vtbl *pVtbl; };
491
+
492
+ #endif //__cplusplus
493
+ #pragma endregion IADLXManualGraphicsTuning2
494
+
495
+
496
+ #pragma region IADLXManualGraphicsTuning2_1
497
+ #if defined (__cplusplus)
498
+ namespace adlx
499
+ {
500
+ class ADLX_NO_VTABLE IADLXManualGraphicsTuning2_1 : public IADLXManualGraphicsTuning2
501
+ {
502
+ public:
503
+ ADLX_DECLARE_IID(L"IADLXManualGraphicsTuning2_1")
504
+
505
+ /**
506
+ *@page DOX_IADLXManualGraphicsTuning2_1_GetGPUMinFrequencyDefault GetGPUMinFrequencyDefault
507
+ *@ENG_START_DOX @brief Gets the default minimum frequency on a GPU. @ENG_END_DOX
508
+ *
509
+ *@syntax
510
+ *@codeStart
511
+ * @ref ADLX_RESULT GetGPUMinFrequencyDefault(adlx_int* defaultVal)
512
+ *@codeEnd
513
+ *
514
+ *@params
515
+ *@paramrow{1.,[out],defaultVal,adlx_int*,@ENG_START_DOX The pointer to a variable where the default minimum frequency (in MHz) is returned. @ENG_END_DOX}
516
+ *
517
+ *@retvalues
518
+ *@ENG_START_DOX If the default minimum frequency is successfully returned, __ADLX_OK__ is returned.<br>
519
+ * If the default minimum frequency is not successfully returned, an error code is returned.<br>
520
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
521
+ *
522
+ *@copydoc IADLXManualGraphicsTuning2_1_REQ_TABLE
523
+ *
524
+ */
525
+ virtual ADLX_RESULT ADLX_STD_CALL GetGPUMinFrequencyDefault(adlx_int* defaultVal) = 0;
526
+
527
+ /**
528
+ *@page DOX_IADLXManualGraphicsTuning2_1_GetGPUMaxFrequencyDefault GetGPUMaxFrequencyDefault
529
+ * @ENG_START_DOX @brief Gets the default maximum frequency (offset) on a GPU. @ENG_END_DOX
530
+ *
531
+ * @syntax
532
+ * @codeStart
533
+ * @ref ADLX_RESULT GetGPUMaxFrequencyDefault(adlx_int* defaultVal)
534
+ * @codeEnd
535
+ *
536
+ * @params
537
+ * @paramrow{1.,[out],defaultVal,adlx_int*,@ENG_START_DOX The pointer to a variable where the default maximum frequency (offset) value (in MHz) is returned. @ENG_END_DOX}
538
+ *
539
+ * @retvalues
540
+ * @ENG_START_DOX If the default maximum frequency (offset) is successfully returned, __ADLX_OK__ is returned.<br>
541
+ * If the default maximum frequency (offset) is not successfully returned, an error code is returned.<br>
542
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
543
+ *
544
+ * @copydoc IADLXManualGraphicsTuning2_1_REQ_TABLE
545
+ *
546
+ */
547
+ virtual ADLX_RESULT ADLX_STD_CALL GetGPUMaxFrequencyDefault(adlx_int* defaultVal) = 0;
548
+
549
+ /**
550
+ *@page DOX_IADLXManualGraphicsTuning2_1_GetGPUVoltageDefault GetGPUVoltageDefault
551
+ * @ENG_START_DOX @brief Gets the default voltage (offset) on a GPU. @ENG_END_DOX
552
+ *
553
+ * @syntax
554
+ * @codeStart
555
+ * @ref ADLX_RESULT GetGPUVoltageDefault(adlx_int* defaultVal)
556
+ * @codeEnd
557
+ *
558
+ * @params
559
+ * @paramrow{1.,[out],defaultVal,adlx_int*,@ENG_START_DOX The pointer to a variable where the default voltage (offset) value (in mV) is returned. @ENG_END_DOX}
560
+ *
561
+ * @retvalues
562
+ * @ENG_START_DOX If the default voltage (offset) is successfully returned, __ADLX_OK__ is returned.<br>
563
+ * If the default voltage (offset) is not successfully returned, an error code is returned.<br>
564
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
565
+ *
566
+ * @copydoc IADLXManualGraphicsTuning2_1_REQ_TABLE
567
+ * */
568
+ virtual ADLX_RESULT ADLX_STD_CALL GetGPUVoltageDefault(adlx_int* defaultVal) = 0;
569
+ };
570
+ //----------------------------------------------------------------------------------------------
571
+ typedef IADLXInterfacePtr_T<IADLXManualGraphicsTuning2_1> IADLXManualGraphicsTuning2_1Ptr;
572
+ } //namespace adlx
573
+ #else //__cplusplus
574
+ ADLX_DECLARE_IID(IADLXManualGraphicsTuning2_1, L"IADLXManualGraphicsTuning2_1")
575
+
576
+ typedef struct IADLXManualGraphicsTuning2_1 IADLXManualGraphicsTuning2_1;
577
+
578
+ typedef struct IADLXManualGraphicsTuning2_1Vtbl
579
+ {
580
+ //IADLXInterface
581
+ adlx_long(ADLX_STD_CALL* Acquire)(IADLXManualGraphicsTuning2_1* pThis);
582
+ adlx_long(ADLX_STD_CALL* Release)(IADLXManualGraphicsTuning2_1* pThis);
583
+ ADLX_RESULT(ADLX_STD_CALL* QueryInterface)(IADLXManualGraphicsTuning2_1* pThis, const wchar_t* interfaceId, void** ppInterface);
584
+
585
+ //IADLXManualGraphicsTuning2
586
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUMinFrequencyRange)(IADLXManualGraphicsTuning2_1* pThis, ADLX_IntRange* tuningRange);
587
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUMinFrequency)(IADLXManualGraphicsTuning2_1* pThis, adlx_int* minFreq);
588
+ ADLX_RESULT(ADLX_STD_CALL* SetGPUMinFrequency)(IADLXManualGraphicsTuning2_1* pThis, adlx_int minFreq);
589
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUMaxFrequencyRange)(IADLXManualGraphicsTuning2_1* pThis, ADLX_IntRange* tuningRange);
590
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUMaxFrequency)(IADLXManualGraphicsTuning2_1* pThis, adlx_int* maxFreq);
591
+ ADLX_RESULT(ADLX_STD_CALL* SetGPUMaxFrequency)(IADLXManualGraphicsTuning2_1* pThis, adlx_int maxFreq);
592
+
593
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUVoltageRange)(IADLXManualGraphicsTuning2_1* pThis, ADLX_IntRange* tuningRange);
594
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUVoltage)(IADLXManualGraphicsTuning2_1* pThis, adlx_int* volt);
595
+ ADLX_RESULT(ADLX_STD_CALL* SetGPUVoltage)(IADLXManualGraphicsTuning2_1* pThis, adlx_int volt);
596
+
597
+ //IADLXManualGraphicsTuning2_1
598
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUMinFrequencyDefault)(IADLXManualGraphicsTuning2_1* pThis, adlx_int* defaultVal);
599
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUMaxFrequencyDefault)(IADLXManualGraphicsTuning2_1* pThis, adlx_int* defaultVal);
600
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUVoltageDefault)(IADLXManualGraphicsTuning2_1* pThis, adlx_int* defaultVal);
601
+ }IADLXManualGraphicsTuning2_1Vtbl;
602
+ struct IADLXManualGraphicsTuning2_1 { const IADLXManualGraphicsTuning2_1Vtbl* pVtbl; };
603
+
604
+ #endif //__cplusplus
605
+ #pragma endregion IADLXManualGraphicsTuning2_1
606
+
607
+ #endif//ADLX_IGPUMANUALGFXTUNING_H