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