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,175 @@
1
+ //
2
+ // Copyright (c) 2021 - 2025 Advanced Micro Devices, Inc. All rights reserved.
3
+ //
4
+ //-------------------------------------------------------------------------------------------------
5
+ #include "ADLXHelper.h"
6
+
7
+ typedef struct ADLXHelper
8
+ {
9
+ //Handle to the ADLX dll
10
+ adlx_handle m_hDLLHandle;
11
+
12
+ //Full Version of this ADLX instance
13
+ adlx_uint64 m_ADLXFullVersion;
14
+
15
+ //Version of this ADLX instance
16
+ const char* m_ADLXVersion;
17
+
18
+ //The ADLX system services interface
19
+ IADLXSystem* m_pSystemServices;
20
+
21
+ //the ADL mapping interface
22
+ IADLMapping* m_pAdlMapping;
23
+
24
+ //ADLX function - query full version
25
+ ADLXQueryFullVersion_Fn m_fullVersionFn;
26
+
27
+ //ADLX function - qery version
28
+ ADLXQueryVersion_Fn m_versionFn;
29
+
30
+ //ADLX function - initialize with ADL
31
+ ADLXInitializeWithCallerAdl_Fn m_initWithADLFn;
32
+
33
+ //ADLX function - initialize with incompatible driver
34
+ ADLXInitialize_Fn m_initFnEx;
35
+
36
+ //ADLX function - initialize
37
+ ADLXInitialize_Fn m_initFn;
38
+
39
+ //ADLX function - terminate
40
+ ADLXTerminate_Fn m_terminateFn;
41
+ }ADLXHelper;
42
+
43
+ static ADLXHelper g_ADLX = {NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL};
44
+
45
+ ADLX_RESULT InitializePrivate (adlx_handle adlContext, ADLX_ADL_Main_Memory_Free adlMainMemoryFree, adlx_bool useIncompatibleDriver);
46
+
47
+ //-------------------------------------------------------------------------------------------------
48
+ //Initialization
49
+ ADLX_RESULT ADLXHelper_Initialize ()
50
+ {
51
+ return InitializePrivate (NULL, NULL, false);
52
+ }
53
+
54
+ ADLX_RESULT ADLXHelper_InitializeWithIncompatibleDriver()
55
+ {
56
+ return InitializePrivate(NULL, NULL, true);
57
+ }
58
+
59
+ ADLX_RESULT ADLXHelper_InitializeWithCallerAdl (adlx_handle adlContext, ADLX_ADL_Main_Memory_Free adlMainMemoryFree)
60
+ {
61
+ if (adlContext == NULL || adlMainMemoryFree == NULL)
62
+ {
63
+ return ADLX_INVALID_ARGS;
64
+ }
65
+ return InitializePrivate (adlContext, adlMainMemoryFree, false);
66
+ }
67
+
68
+ //-------------------------------------------------------------------------------------------------
69
+ //Termination
70
+ ADLX_RESULT ADLXHelper_Terminate()
71
+ {
72
+ ADLX_RESULT res = ADLX_OK;
73
+ if (g_ADLX.m_hDLLHandle != NULL)
74
+ {
75
+ g_ADLX.m_ADLXFullVersion = 0;
76
+ g_ADLX.m_ADLXVersion = NULL;
77
+ g_ADLX.m_pSystemServices = NULL;
78
+ g_ADLX.m_pAdlMapping = NULL;
79
+ if (NULL != g_ADLX.m_terminateFn)
80
+ {
81
+ res = g_ADLX.m_terminateFn();
82
+ }
83
+ g_ADLX.m_fullVersionFn = NULL;
84
+ g_ADLX.m_versionFn = NULL;
85
+ g_ADLX.m_initWithADLFn = NULL;
86
+ g_ADLX.m_initFnEx = NULL;
87
+ g_ADLX.m_initFn = NULL;
88
+ g_ADLX.m_terminateFn = NULL;
89
+ adlx_free_library(g_ADLX.m_hDLLHandle);
90
+ g_ADLX.m_hDLLHandle = NULL;
91
+ }
92
+ return res;
93
+ }
94
+
95
+ //-------------------------------------------------------------------------------------------------
96
+ //Get the full version for this ADLX instance
97
+ adlx_uint64 ADLXHelper_QueryFullVersion()
98
+ {
99
+ return g_ADLX.m_ADLXFullVersion;
100
+ }
101
+
102
+ //-------------------------------------------------------------------------------------------------
103
+ //Get the version for this ADLX instance
104
+ const char* ADLXHelper_QueryVersion()
105
+ {
106
+ return g_ADLX.m_ADLXVersion;
107
+ }
108
+
109
+ //-------------------------------------------------------------------------------------------------
110
+ //Get the IADLXSystem interface
111
+ IADLXSystem* ADLXHelper_GetSystemServices()
112
+ {
113
+ return g_ADLX.m_pSystemServices;
114
+ }
115
+
116
+ //-------------------------------------------------------------------------------------------------
117
+ //Get the IADLMapping interface
118
+ IADLMapping* ADLXHelper_GetAdlMapping ()
119
+ {
120
+ return g_ADLX.m_pAdlMapping;
121
+ }
122
+
123
+ //-------------------------------------------------------------------------------------------------
124
+ //Loads ADLX and finds the function pointers to the ADLX functions
125
+ ADLX_RESULT LoadADLXDll()
126
+ {
127
+ if (g_ADLX.m_hDLLHandle == NULL)
128
+ {
129
+ g_ADLX.m_hDLLHandle = adlx_load_library(ADLX_DLL_NAME);
130
+ if (g_ADLX.m_hDLLHandle)
131
+ {
132
+ g_ADLX.m_fullVersionFn = (ADLXQueryFullVersion_Fn)adlx_get_proc_address(g_ADLX.m_hDLLHandle, ADLX_QUERY_FULL_VERSION_FUNCTION_NAME);
133
+ g_ADLX.m_versionFn = (ADLXQueryVersion_Fn)adlx_get_proc_address(g_ADLX.m_hDLLHandle, ADLX_QUERY_VERSION_FUNCTION_NAME);
134
+ g_ADLX.m_initWithADLFn = (ADLXInitializeWithCallerAdl_Fn)adlx_get_proc_address(g_ADLX.m_hDLLHandle, ADLX_INIT_WITH_CALLER_ADL_FUNCTION_NAME);
135
+ g_ADLX.m_initFnEx = (ADLXInitialize_Fn)adlx_get_proc_address(g_ADLX.m_hDLLHandle, ADLX_INIT_WITH_INCOMPATIBLE_DRIVER_FUNCTION_NAME);
136
+ g_ADLX.m_initFn = (ADLXInitialize_Fn)adlx_get_proc_address(g_ADLX.m_hDLLHandle, ADLX_INIT_FUNCTION_NAME);
137
+ g_ADLX.m_terminateFn = (ADLXTerminate_Fn)adlx_get_proc_address(g_ADLX.m_hDLLHandle, ADLX_TERMINATE_FUNCTION_NAME);
138
+ }
139
+ }
140
+ if (g_ADLX.m_fullVersionFn && g_ADLX.m_versionFn && g_ADLX.m_initWithADLFn && g_ADLX.m_initFnEx && g_ADLX.m_initFn && g_ADLX.m_terminateFn)
141
+ {
142
+ return ADLX_OK;
143
+ }
144
+ return ADLX_FAIL;
145
+ }
146
+
147
+ //-------------------------------------------------------------------------------------------------
148
+ //Initializes ADLX based on the parameters
149
+ ADLX_RESULT InitializePrivate (adlx_handle adlContext, ADLX_ADL_Main_Memory_Free adlMainMemoryFree, adlx_bool useIncompatibleDriver)
150
+ {
151
+ ADLX_RESULT res = LoadADLXDll();
152
+ if (ADLX_OK == res)
153
+ {
154
+ g_ADLX.m_fullVersionFn(&g_ADLX.m_ADLXFullVersion);
155
+ g_ADLX.m_versionFn(&g_ADLX.m_ADLXVersion);
156
+ if (adlContext != NULL && adlMainMemoryFree != NULL)
157
+ {
158
+ res = g_ADLX.m_initWithADLFn(ADLX_FULL_VERSION, &g_ADLX.m_pSystemServices, &g_ADLX.m_pAdlMapping, adlContext, adlMainMemoryFree);
159
+ }
160
+ else
161
+ {
162
+ if (useIncompatibleDriver)
163
+ {
164
+ res = g_ADLX.m_initFnEx(ADLX_FULL_VERSION, &g_ADLX.m_pSystemServices);
165
+ }
166
+ else
167
+ {
168
+ res = g_ADLX.m_initFn(ADLX_FULL_VERSION, &g_ADLX.m_pSystemServices);
169
+ }
170
+ }
171
+ return res;
172
+ }
173
+
174
+ return ADLX_FAIL;
175
+ }
@@ -0,0 +1,245 @@
1
+ //
2
+ // Copyright (c) 2021 - 2025 Advanced Micro Devices, Inc. All rights reserved.
3
+ //
4
+ //-------------------------------------------------------------------------------------------------
5
+
6
+ #ifndef ADLX_ADLXFactory_h
7
+ #define ADLX_ADLXFactory_h
8
+ #pragma once
9
+
10
+ #include "../ADLX.h"
11
+
12
+ /**
13
+ * @page page_cHelpADLXHelper_Initialize ADLXHelper_Initialize
14
+ * @ENG_START_DOX
15
+ * @brief Initializes ADLX with default parameters.<br>
16
+ * @ENG_END_DOX
17
+ *
18
+ * @syntax
19
+ * @codeStart
20
+ * @ref ADLX_RESULT ADLXHelper_Initialize ()
21
+ * @codeEnd
22
+ * @params
23
+ * N/A
24
+ *
25
+ * @retvalues
26
+ * @ENG_START_DOX
27
+ * If __ADLXHelper_Initialize__ is successfully executed, __ADLX_OK__ is returned.<br>
28
+ * If __ADLXHelper_Initialize__ is not successfully executed, an error code is returned.<br>
29
+ * If ADLX was previously successfully initialized with any of the initialization functions, __ADLX_ALREADY_INITIALIZED__ is returned.<br>
30
+ * Refer to @ref ADLX_RESULT for success codes and error codes.
31
+ * @ENG_END_DOX
32
+ *
33
+ * @detaileddesc
34
+ * @ENG_START_DOX
35
+ * @details This function is used when an application does not use the ADL library and initializes ADLX with default parameters.<br>
36
+ * For more information for initializing ADLX with default parameters, refer to @ref @adlx_gpu_support "ADLX GPU Support".<br>
37
+ * @ENG_END_DOX
38
+ *
39
+ * @requirements
40
+ * @DetailsTable{#include "ADLXHelper/Windows/C/ADLXHelper.h", @ADLX_First_Ver}
41
+ */
42
+ ADLX_RESULT ADLXHelper_Initialize();
43
+
44
+ /**
45
+ * @page page_cHelpADLXHelper_InitializeWithIncompatibleDriver ADLXHelper_InitializeWithIncompatibleDriver
46
+ * @ENG_START_DOX
47
+ * @brief Initializes ADLX with a legacy driver.<br>
48
+ * @ENG_END_DOX
49
+ *
50
+ * @syntax
51
+ * @codeStart
52
+ * @ref ADLX_RESULT ADLXHelper_InitializeWithIncompatibleDriver ()
53
+ * @codeEnd
54
+ * @params
55
+ * N/A
56
+ *
57
+ * @retvalues
58
+ * @ENG_START_DOX
59
+ * If __ADLXHelper_InitializeWithIncompatibleDriver__ is successfully executed, __ADLX_OK__ is returned.<br>
60
+ * If __ADLXHelper_InitializeWithIncompatibleDriver__ is not successfully executed, an error code is returned.<br>
61
+ * If ADLX was previously successfully initialized with any of the initialization functions, __ADLX_ALREADY_INITIALIZED__ is returned.<br>
62
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
63
+ * @ENG_END_DOX
64
+ *
65
+ * @detaileddesc
66
+ * @ENG_START_DOX
67
+ * @details This function is used when an application does not use the ADL library and initializes ADLX to consider AMD GPUs using legacy AMD graphics driver.<br>
68
+ * For more information for initializing ADLX with a legacy driver, refer to @ref @adlx_gpu_support "ADLX GPU Support".<br>
69
+ * @ENG_END_DOX
70
+ *
71
+ * @requirements
72
+ * @DetailsTable{#include "ADLXHelper/Windows/C/ADLXHelper.h", @ADLX_First_Ver}
73
+ */
74
+ ADLX_RESULT ADLXHelper_InitializeWithIncompatibleDriver();
75
+
76
+ /**
77
+ * @page page_cHelpADLXHelper_InitializeWithCallerAdl ADLXHelper_InitializeWithCallerAdl
78
+ * @ENG_START_DOX
79
+ * @brief Initializes ADLX with an ADL context.
80
+ * @ENG_END_DOX
81
+ *
82
+ * @syntax
83
+ * @codeStart
84
+ * @ref ADLX_RESULT ADLXHelper_InitializeWithCallerAdl (adlx_handle adlContext, @ref ADLX_ADL_Main_Memory_Free adlMainMemoryFree)
85
+ * @codeEnd
86
+ * @params
87
+ * @paramrow{1.,[in],adlContext,adlx_handle,@ENG_START_DOX The ADL context. @ENG_END_DOX}
88
+ * @paramrow{2.,[in],adlMainMemoryFree,@ref ADLX_ADL_Main_Memory_Free,@ENG_START_DOX The callback handler of the memory deallocation function. @ENG_END_DOX}
89
+ *
90
+ * @retvalues
91
+ * @ENG_START_DOX
92
+ * If __ADLXHelper_InitializeWithCallerAdl__ is successfully executed, __ADLX_OK__ is returned.<br>
93
+ * If __ADLXHelper_InitializeWithCallerAdl__ is not successfully executed, an error code is returned.<br>
94
+ * If ADLX was previously successfully initialized with any of the Initialize versions, __ADLX_ALREADY_INITIALIZED__ is returned.<br>
95
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
96
+ * @ENG_END_DOX
97
+ *
98
+ * @detaileddesc
99
+ * @ENG_START_DOX
100
+ * @details
101
+ * This function is used when an application also uses ADL. A typical scenario is the application is transitioning from ADL to ADLX with some programming already completed with ADL.<br>
102
+ * In such case, the application shall pass the parameters in this function that corresponds to the current ADL initialization already in use, which are: an ADL context and a callback for the memory deallocation when ADL was initialized.<br>
103
+ * For more information for initializing ADLX with an ADL context, refer to @ref page_guide_use_ADLX "Using ADLX in an ADL application".<br>
104
+ * @ENG_END_DOX
105
+ *
106
+ * @requirements
107
+ * @DetailsTable{#include "ADLXHelper/Windows/C/ADLXHelper.h", @ADLX_First_Ver}
108
+ */
109
+ ADLX_RESULT ADLXHelper_InitializeWithCallerAdl (adlx_handle adlContext, ADLX_ADL_Main_Memory_Free adlMainMemoryFree);
110
+
111
+ /**
112
+ * @page page_cHelpADLXHelper_Terminate ADLXHelper_Terminate
113
+ * @ENG_START_DOX
114
+ * @brief Terminates ADLX and releases ADLX library.
115
+ * @ENG_END_DOX
116
+ *
117
+ * @syntax
118
+ * @codeStart
119
+ * @ref ADLX_RESULT ADLXHelper_Terminate ()
120
+ * @codeEnd
121
+ * @params
122
+ * N/A
123
+ *
124
+ * @retvalues
125
+ * @ENG_START_DOX
126
+ * If __ADLXHelper_Terminate__ is successfully executed, __ADLX_OK__ is returned.<br>
127
+ * If __ADLXHelper_Terminate__ is not successfully executed, an error code is returned.<br>
128
+ * Refer to @ref ADLX_RESULT for success codes and error codes.
129
+ * @ENG_END_DOX
130
+ *
131
+ * @detaileddesc
132
+ * @ENG_START_DOX
133
+ * @details
134
+ * Any interface obtained from ADLX that is not released becomes invalid.<br>
135
+ * Any attempt of calling ADLX interface after termination could result in errors such as exceptions or crashes.<br>
136
+ * @ENG_END_DOX
137
+ *
138
+ * @requirements
139
+ * @DetailsTable{#include "ADLXHelper/Windows/C/ADLXHelper.h", @ADLX_First_Ver}
140
+ */
141
+ ADLX_RESULT ADLXHelper_Terminate();
142
+
143
+ /**
144
+ * @page page_cHelpADLXHelper_GetSystemServices ADLXHelper_GetSystemServices
145
+ * @ENG_START_DOX
146
+ * @brief Gets the ADLX system interface.
147
+ * @ENG_END_DOX
148
+ *
149
+ * @syntax
150
+ * @codeStart
151
+ * @ref DOX_IADLXSystem* ADLXHelper_GetSystemServices ()
152
+ * @codeEnd
153
+ * @params
154
+ * N/A
155
+ *
156
+ * @retvalues
157
+ * @ENG_START_DOX
158
+ * If ADLX was successfully initialized before this function call, the @ref DOX_IADLXSystem interface is returned.<br>
159
+ * If ADLX was not successfully initialized, __nullptr__ is returned.
160
+ * @ENG_END_DOX
161
+ *
162
+ * @requirements
163
+ * @DetailsTable{#include "ADLXHelper/Windows/C/ADLXHelper.h", @ADLX_First_Ver}
164
+ */
165
+ IADLXSystem* ADLXHelper_GetSystemServices ();
166
+
167
+ /**
168
+ * @page page_cHelpADLXHelper_GetAdlMapping ADLXHelper_GetAdlMapping
169
+ * @ENG_START_DOX
170
+ * @brief Gets the ADL Mapping interface.
171
+ * @ENG_END_DOX
172
+ *
173
+ * @syntax
174
+ * @codeStart
175
+ * @ref DOX_IADLMapping* ADLXHelper_GetAdlMapping ()
176
+ * @codeEnd
177
+ * @params
178
+ * N/A
179
+ *
180
+ * @retvalues
181
+ * @ENG_START_DOX
182
+ * If ADLX was successfully initialized with ADL, a valid pointer of the @ref DOX_IADLMapping interface is returned.<br>
183
+ * If ADLX was initialized under any of the following circumstances, __nullptr__ is returned.<br>
184
+ * - ADLX initialization was with other initialization methods.<br>
185
+ * - ADLX initialization was failed.<br>
186
+ * - ADLX initialization was not called.<br>
187
+ * @ENG_END_DOX
188
+ *
189
+ * @detaileddesc
190
+ * @ENG_START_DOX
191
+ * @details __ADLXHelper_GetAdlMapping__ is used to convert data between ADL and ADLX in applications where ADLX was initialized with @ref page_cHelpADLXHelper_InitializeWithCallerAdl.
192
+ * @ENG_END_DOX
193
+ *
194
+ * @requirements
195
+ * @DetailsTable{#include "ADLXHelper/Windows/C/ADLXHelper.h", @ADLX_First_Ver}
196
+ */
197
+ IADLMapping* ADLXHelper_GetAdlMapping();
198
+
199
+ /**
200
+ * @page page_cHelpADLXHelper_QueryFullVersion ADLXHelper_QueryFullVersion
201
+ * @ENG_START_DOX
202
+ * @brief Gets the full version of ADLX.
203
+ * @ENG_END_DOX
204
+ *
205
+ * @syntax
206
+ * @codeStart
207
+ * adlx_uint64 ADLXHelper_QueryFullVersion ()
208
+ * @codeEnd
209
+ * @params
210
+ * N/A
211
+ *
212
+ * @retvalues
213
+ * @ENG_START_DOX
214
+ * The full version of ADLX.
215
+ * @ENG_END_DOX
216
+ *
217
+ * @requirements
218
+ * @DetailsTable{#include "ADLXHelper/Windows/C/ADLXHelper.h", @ADLX_First_Ver}
219
+ */
220
+ adlx_uint64 ADLXHelper_QueryFullVersion();
221
+
222
+ /**
223
+ * @page page_cHelpADLXHelper_QueryVersion ADLXHelper_QueryVersion
224
+ * @ENG_START_DOX
225
+ * @brief Gets the version of ADLX.
226
+ * @ENG_END_DOX
227
+ *
228
+ * @syntax
229
+ * @codeStart
230
+ * const char* ADLXHelper_QueryVersion ();
231
+ * @codeEnd
232
+ * @params
233
+ * N/A
234
+ *
235
+ * @retvalues
236
+ * @ENG_START_DOX
237
+ * The version of ADLX.
238
+ * @ENG_END_DOX
239
+ *
240
+ * @requirements
241
+ * @DetailsTable{#include "ADLXHelper/Windows/C/ADLXHelper.h", @ADLX_First_Ver}
242
+ */
243
+ const char* ADLXHelper_QueryVersion();
244
+ #endif // __ADLXFactoryC_h__
245
+
@@ -0,0 +1,64 @@
1
+ //
2
+ // Copyright (c) 2021 - 2025 Advanced Micro Devices, Inc. All rights reserved.
3
+ //
4
+ //-------------------------------------------------------------------------------------------------
5
+ //This abstracts Win32 APIs in ADLX ones so we insulate from platform
6
+ #include "../ADLXDefines.h"
7
+
8
+ #if defined(_WIN32) // Microsoft compiler
9
+ #include <Windows.h>
10
+ #else
11
+ #error define your copiler
12
+ #endif
13
+ static volatile uint64_t v = 0;
14
+
15
+ //----------------------------------------------------------------------------------------
16
+ // threading
17
+ //----------------------------------------------------------------------------------------
18
+ adlx_long ADLX_CDECL_CALL adlx_atomic_inc (adlx_long* X)
19
+ {
20
+ #if defined(_WIN32) // Microsoft compiler
21
+ return InterlockedIncrement((long*)X);
22
+ #endif
23
+ }
24
+
25
+ //----------------------------------------------------------------------------------------
26
+ adlx_long ADLX_CDECL_CALL adlx_atomic_dec (adlx_long* X)
27
+ {
28
+ #if defined(_WIN32) // Microsoft compiler
29
+ return InterlockedDecrement((long*)X);
30
+ #endif
31
+
32
+ }
33
+
34
+ //----------------------------------------------------------------------------------------
35
+ adlx_handle ADLX_CDECL_CALL adlx_load_library (const TCHAR* filename)
36
+ {
37
+ #if defined(METRO_APP)
38
+ return LoadPackagedLibrary (filename, 0);
39
+ #elif defined(_WIN32) // Microsoft compiler
40
+ return LoadLibraryEx(filename, NULL, LOAD_LIBRARY_SEARCH_USER_DIRS |
41
+ LOAD_LIBRARY_SEARCH_APPLICATION_DIR |
42
+ LOAD_LIBRARY_SEARCH_DEFAULT_DIRS |
43
+ LOAD_LIBRARY_SEARCH_SYSTEM32);
44
+ #endif
45
+ }
46
+
47
+ //----------------------------------------------------------------------------------------
48
+ int ADLX_CDECL_CALL adlx_free_library (adlx_handle module)
49
+ {
50
+ #if defined(_WIN32) // Microsoft compiler
51
+ return FreeLibrary((HMODULE)module) == TRUE;
52
+ #endif
53
+ }
54
+
55
+ //----------------------------------------------------------------------------------------
56
+ void* ADLX_CDECL_CALL adlx_get_proc_address (adlx_handle module, const char* procName)
57
+ {
58
+ #if defined(_WIN32) // Microsoft compiler
59
+ return (void*)GetProcAddress((HMODULE)module, procName);
60
+ #endif
61
+ }
62
+
63
+
64
+ //#endif //_WIN32
@@ -0,0 +1,206 @@
1
+ //
2
+ // Copyright (c) 2021 - 2025 Advanced Micro Devices, Inc. All rights reserved.
3
+ //
4
+ //-------------------------------------------------------------------------------------------------
5
+
6
+ #ifndef ADLX_STRUCTURES_H
7
+ #define ADLX_STRUCTURES_H
8
+ #pragma once
9
+ #include "ADLXDefines.h"
10
+
11
+ /** @file */
12
+ //-------------------------------------------------------------------------------------------------
13
+ #pragma region ADLX_RGB
14
+ /**
15
+ * @struct ADLX_RGB
16
+ * @ingroup structuresVal
17
+ * @ENG_START_DOX
18
+ * @brief This structure contains RGB information.
19
+ * @ENG_END_DOX
20
+ */
21
+ typedef struct
22
+ {
23
+ adlx_double gamutR; /**< @ENG_START_DOX Red @ENG_END_DOX */
24
+ adlx_double gamutG; /**< @ENG_START_DOX Green @ENG_END_DOX */
25
+ adlx_double gamutB; /**< @ENG_START_DOX Blue @ENG_END_DOX */
26
+ } ADLX_RGB;
27
+ #pragma endregion ADLX_RGB
28
+
29
+ #pragma region ADLX_Point
30
+ /**
31
+ * @struct ADLX_Point
32
+ * @ingroup structuresVal
33
+ * @ENG_START_DOX
34
+ * @brief This structure contains information on driver point coordinates, and is used to store the driver-point coodinates for gamut, as well as white point.
35
+ * @ENG_END_DOX
36
+ */
37
+ typedef struct
38
+ {
39
+ adlx_int x; /**< @ENG_START_DOX The x coordinate. @ENG_END_DOX */
40
+ adlx_int y; /**< @ENG_START_DOX The y coordinate. @ENG_END_DOX */
41
+ } ADLX_Point;
42
+ #pragma endregion ADLX_Point
43
+
44
+ #pragma region ADLX_GamutColorSpace
45
+ /**
46
+ * @struct ADLX_GamutColorSpace
47
+ * @ingroup structuresVal
48
+ * @ENG_START_DOX
49
+ * @brief This structure contains information on driver-supported gamut coordinates
50
+ * @ENG_END_DOX
51
+ */
52
+ typedef struct
53
+ {
54
+ ADLX_Point red; /**< @ENG_START_DOX The red channel chromaticity coordinate. @ENG_END_DOX */
55
+ ADLX_Point green; /**< @ENG_START_DOX The green channel chromaticity coordinate. @ENG_END_DOX */
56
+ ADLX_Point blue; /**< @ENG_START_DOX The blue channel chromaticity coordinate. @ENG_END_DOX */
57
+ } ADLX_GamutColorSpace;
58
+ #pragma endregion ADLX_GamutColorSpace
59
+
60
+ #pragma region ADLX_GammaRamp
61
+ /**
62
+ * @struct ADLX_GammaRamp
63
+ * @ingroup structuresVal
64
+ * @ENG_START_DOX
65
+ * @brief This structure contains the display gamma ramp used to program the re-gamma LUT.
66
+ * @ENG_END_DOX
67
+ */
68
+ typedef struct
69
+ {
70
+ adlx_uint16 gamma[256 * 3]; /**< @ENG_START_DOX The gamma ramp is a buffer containing 256 triplets of adlx_uint16 values.
71
+ Each triplet consists of red, green and blue values. @ENG_END_DOX */
72
+ } ADLX_GammaRamp;
73
+ #pragma endregion ADLX_GammaRamp
74
+
75
+ #pragma region ADLX_RegammaCoeff
76
+ /**
77
+ * @struct ADLX_RegammaCoeff
78
+ * @ingroup structuresVal
79
+ * @ENG_START_DOX
80
+ * @brief This structure contains information on driver-supported re-gamma coefficients used to build the re-gamma curve.
81
+ * @ENG_END_DOX
82
+ */
83
+ typedef struct
84
+ {
85
+ adlx_int coefficientA0; /**< @ENG_START_DOX The a0 gamma coefficient. @ENG_END_DOX */
86
+ adlx_int coefficientA1; /**< @ENG_START_DOX The a1 gamma coefficient. @ENG_END_DOX */
87
+ adlx_int coefficientA2; /**< @ENG_START_DOX The a2 gamma coefficient. @ENG_END_DOX */
88
+ adlx_int coefficientA3; /**< @ENG_START_DOX The a3 gamma coefficient. @ENG_END_DOX */
89
+ adlx_int gamma; /**< @ENG_START_DOX The regamma divider. @ENG_END_DOX */
90
+ } ADLX_RegammaCoeff;
91
+ #pragma endregion ADLX_RegammaCoeff
92
+
93
+ #pragma region ADLX_TimingInfo
94
+ /**
95
+ * @struct ADLX_TimingInfo
96
+ * @ingroup structuresVal
97
+ * @ENG_START_DOX
98
+ * @brief This structure contains display timing information.
99
+ * @ENG_END_DOX
100
+ */
101
+ typedef struct
102
+ {
103
+ adlx_int timingFlags; /**< @ENG_START_DOX The detailed timing flag. @ENG_END_DOX */
104
+ adlx_int hTotal; /**< @ENG_START_DOX The total number of pixels that compose all scan lines during a horizontal sync. @ENG_END_DOX */
105
+ adlx_int vTotal; /**< @ENG_START_DOX The total number of vertical pixels permitted/processed per sync. @ENG_END_DOX */
106
+
107
+ adlx_int hDisplay; /**< @ENG_START_DOX The number of horizontal pixels within the active area. @ENG_END_DOX */
108
+ adlx_int vDisplay; /**< @ENG_START_DOX The number of vertical pixels within the active display area. @ENG_END_DOX */
109
+
110
+ adlx_int hFrontPorch; /**< @ENG_START_DOX The number of horizontal pixels between the end of the active area and the next sync. This is the distance between the right/bottom portion of the display up to the right/bottom portion of the actual image. @ENG_END_DOX */
111
+ adlx_int vFrontPorch; /**< @ENG_START_DOX The number of vertical pixels between the end of the active area and the next sync. This is the distance between the right/bottom portion of the display to the right/bottom portion of the actual image. @ENG_END_DOX */
112
+
113
+ adlx_int hSyncWidth; /**< @ENG_START_DOX The number of pixels that compose a scan line during a horizontal sync. @ENG_END_DOX */
114
+ adlx_int vSyncWidth; /**< @ENG_START_DOX The number of vertical pixels permitted/processed during a sync. @ENG_END_DOX */
115
+
116
+ adlx_int hPolarity; /**< @ENG_START_DOX The horizontal polarity of sync signals, 0 POSITIVE; 1 NEGATIVE. Positive makes the active signals high while negative makes the active signals low. @ENG_END_DOX */
117
+ adlx_int vPolarity; /**< @ENG_START_DOX The vertical polarity of sync signals, 0 POSITIVE; 1 NEGATIVE. Positive makes the active signals high while negative makes the active signals low. @ENG_END_DOX */
118
+ } ADLX_TimingInfo;
119
+
120
+ #pragma endregion ADLX_TimingInfo
121
+
122
+ #pragma region ADLX_CustomResolution
123
+ /** @struct ADLX_CustomResolution
124
+ * @ingroup structuresVal
125
+ * @ENG_START_DOX
126
+ * @brief This structure contains information for custom resolution parameters on a given display.
127
+ * @ENG_END_DOX
128
+ *
129
+ */
130
+ typedef struct
131
+ {
132
+ adlx_int resWidth; /**< @ENG_START_DOX The resolution width. @ENG_END_DOX */
133
+ adlx_int resHeight; /**< @ENG_START_DOX The resolution height. @ENG_END_DOX */
134
+ adlx_int refreshRate; /**< @ENG_START_DOX The refresh rate. @ENG_END_DOX */
135
+ ADLX_DISPLAY_SCAN_TYPE presentation; /**< @ENG_START_DOX The presentation method, 0 PROGRESSIVE; 1 INTERLACED. @ENG_END_DOX */
136
+ ADLX_TIMING_STANDARD timingStandard; /**< @ENG_START_DOX The display timing standard. @ENG_END_DOX */
137
+ adlx_long GPixelClock; /**< @ENG_START_DOX The speed at which pixels are transmitted within on a refresh cycle. @ENG_END_DOX */
138
+ ADLX_TimingInfo detailedTiming; /**< @ENG_START_DOX The detailed timing information. @ENG_END_DOX */
139
+ } ADLX_CustomResolution;
140
+
141
+ #pragma endregion ADLX_CustomResolution
142
+
143
+ #pragma region ADLX_IntRange
144
+ /** @struct ADLX_IntRange
145
+ * @ingroup structuresVal
146
+ * @ENG_START_DOX
147
+ * @brief This structure contains information on the integer range.
148
+ * @ENG_END_DOX
149
+ *
150
+ */
151
+ typedef struct
152
+ {
153
+ adlx_int minValue; /**< @ENG_START_DOX The minimum integer value. @ENG_END_DOX */
154
+ adlx_int maxValue; /**< @ENG_START_DOX The maximum integer value. @ENG_END_DOX */
155
+ adlx_int step; /**< @ENG_START_DOX The accepted integer range step. @ENG_END_DOX */
156
+ } ADLX_IntRange;
157
+ #pragma endregion ADLX_IntRange
158
+
159
+ #pragma region ADLX_UINT16_RGB
160
+ /** @struct ADLX_UINT16_RGB
161
+ * @ingroup structuresVal
162
+ * @ENG_START_DOX
163
+ * @brief This structure contains UINT16 RGB information.
164
+ * @ENG_END_DOX
165
+ *
166
+ */
167
+ typedef struct ADLX_UINT16_RGB
168
+ {
169
+ adlx_uint16 red; /**< @ENG_START_DOX Red @ENG_END_DOX */
170
+ adlx_uint16 green; /**< @ENG_START_DOX Green @ENG_END_DOX */
171
+ adlx_uint16 blue; /**< @ENG_START_DOX Blue @ENG_END_DOX */
172
+ } ADLX_UINT16_RGB;
173
+ #pragma endregion ADLX_UINT16_RGB
174
+
175
+ #pragma region ADLX_3DLUT_Data
176
+ /** @struct ADLX_3DLUT_Data
177
+ * @ingroup structuresVal
178
+ * @ENG_START_DOX
179
+ * @brief This structure contains custom 3D LUT information.
180
+ * @ENG_END_DOX
181
+ *
182
+ */
183
+
184
+ typedef struct ADLX_3DLUT_Data
185
+ {
186
+ ADLX_UINT16_RGB data[MAX_USER_3DLUT_NUM_POINTS * MAX_USER_3DLUT_NUM_POINTS * MAX_USER_3DLUT_NUM_POINTS]; /**< @ENG_START_DOX The data is a buffer containing 17*17*17 triplets of @ref ADLX_UINT16_RGB values. Each triplet consists of red, green and blue values.
187
+ For 3D LUT data we use ushort 0 - 0xFFFF, data must be zero-padded to 16-bit. @ENG_END_DOX */
188
+ } ADLX_3DLUT_Data;
189
+ #pragma endregion ADLX_3DLUT_Data
190
+
191
+ #pragma region ADLX_LUID
192
+ /**
193
+ * @struct ADLX_LUID
194
+ * @ingroup structuresVal
195
+ * @ENG_START_DOX
196
+ * @brief This structure contains the local identifier information of the adapter.
197
+ * @ENG_END_DOX
198
+ */
199
+ typedef struct ADLX_LUID
200
+ {
201
+ adlx_ulong lowPart; /**< @ENG_START_DOX Specifies the low part of the local id. @ENG_END_DOX */
202
+ adlx_long highPart; /**< @ENG_START_DOX Specifies the high part of the local id. @ENG_END_DOX */
203
+ } ADLX_LUID;
204
+ #pragma endregion ADLX_LUID
205
+
206
+ #endif //ADLX_STRUCTURES_H