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,134 @@
1
+ //
2
+ // Copyright (c) 2021 - 2025 Advanced Micro Devices, Inc. All rights reserved.
3
+ //
4
+ //-------------------------------------------------------------------------------------------------
5
+
6
+ #ifndef ADLX_IPERFORMANCEMONITORING1_H
7
+ #define ADLX_IPERFORMANCEMONITORING1_H
8
+ #pragma once
9
+
10
+ #include "IPerformanceMonitoring.h"
11
+
12
+ #pragma region IADLXSystemMetricsSupport1
13
+ #if defined (__cplusplus)
14
+ namespace adlx
15
+ {
16
+ class ADLX_NO_VTABLE IADLXSystemMetricsSupport1 : public IADLXSystemMetricsSupport
17
+ {
18
+ public:
19
+ ADLX_DECLARE_IID (L"IADLXSystemMetricsSupport1")
20
+
21
+ /**
22
+ *@page DOX_IADLXSystemMetricsSupport1_IsSupportedPowerDistribution IsSupportedPowerDistribution
23
+ *@ENG_START_DOX @brief Checks if reporting of power distribution between CPU and GPU is supported on the system. @ENG_END_DOX
24
+ *
25
+ *@syntax
26
+ *@codeStart
27
+ * @ref ADLX_RESULT IsSupportedPowerDistribution (adlx_bool* supported)
28
+ *@codeEnd
29
+ *
30
+ *@params
31
+ *@paramrow{1.,[out],supported,adlx_bool*,@ENG_START_DOX The pointer to a variable where the state of reporting of power distribution is returned. The variable is __true__ if the power distribution metric reporting is supported\. The variable is __false__ if the power distribution metric reporting is not supported. @ENG_END_DOX}
32
+ *
33
+ *@retvalues
34
+ *@ENG_START_DOX If the state of power distribution metric reporting is successfully returned, __ADLX_OK__ is returned. <br>
35
+ *If the state of power distribution metric reporting is not successfully returned, an error code is returned. <br>
36
+ *Refer to @ref ADLX_RESULT for success codes and error codes. @ENG_END_DOX
37
+ *
38
+ *@copydoc IADLXSystemMetricsSupport1_REQ_TABLE
39
+ *
40
+ */
41
+ virtual ADLX_RESULT ADLX_STD_CALL IsSupportedPowerDistribution(adlx_bool* supported) = 0;
42
+ };
43
+ //----------------------------------------------------------------------------------------------
44
+ typedef IADLXInterfacePtr_T<IADLXSystemMetricsSupport1> IADLXSystemMetricsSupport1Ptr;
45
+ } //namespace adlx
46
+ #else //__cplusplus
47
+ ADLX_DECLARE_IID (IADLXSystemMetricsSupport1, L"IADLXSystemMetricsSupport1")
48
+
49
+ typedef struct IADLXSystemMetricsSupport1 IADLXSystemMetricsSupport1;
50
+ typedef struct IADLXSystemMetricsSupport1Vtbl
51
+ {
52
+ //IADLXInterface
53
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXSystemMetricsSupport1* pThis);
54
+ adlx_long (ADLX_STD_CALL *Release)(IADLXSystemMetricsSupport1* pThis);
55
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXSystemMetricsSupport1* pThis, const wchar_t* interfaceId, void** ppInterface);
56
+
57
+ //IADLXSystemMetricsSupport
58
+ ADLX_RESULT (ADLX_STD_CALL *IsSupportedCPUUsage)(IADLXSystemMetricsSupport1* pThis, adlx_bool* supported);
59
+ ADLX_RESULT (ADLX_STD_CALL *IsSupportedSystemRAM)(IADLXSystemMetricsSupport1* pThis, adlx_bool* supported);
60
+ ADLX_RESULT (ADLX_STD_CALL *IsSupportedSmartShift)(IADLXSystemMetricsSupport1* pThis, adlx_bool* supported);
61
+ ADLX_RESULT (ADLX_STD_CALL *GetCPUUsageRange)(IADLXSystemMetricsSupport1* pThis, adlx_int* minValue, adlx_int* maxValue);
62
+ ADLX_RESULT (ADLX_STD_CALL *GetSystemRAMRange)(IADLXSystemMetricsSupport1* pThis, adlx_int* minValue, adlx_int* maxValue);
63
+ ADLX_RESULT (ADLX_STD_CALL *GetSmartShiftRange)(IADLXSystemMetricsSupport1* pThis, adlx_int* minValue, adlx_int* maxValue);
64
+
65
+ //IADLXSystemMetricsSupport1
66
+ ADLX_RESULT (ADLX_STD_CALL *IsSupportedPowerDistribution)(IADLXSystemMetricsSupport1* pThis, adlx_bool* supported);
67
+ }IADLXSystemMetricsSupport1Vtbl;
68
+ struct IADLXSystemMetricsSupport1 { const IADLXSystemMetricsSupport1Vtbl *pVtbl; };
69
+ #endif //__cplusplus
70
+ #pragma endregion IADLXSystemMetricsSupport1
71
+
72
+ #pragma region IADLXSystemMetrics1
73
+ #if defined (__cplusplus)
74
+ namespace adlx
75
+ {
76
+ class ADLX_NO_VTABLE IADLXSystemMetrics1 : public IADLXSystemMetrics
77
+ {
78
+ public:
79
+ ADLX_DECLARE_IID (L"IADLXSystemMetrics1")
80
+
81
+ /**
82
+ *@page DOX_IADLXSystemMetrics1_PowerDistribution PowerDistribution
83
+ *@ENG_START_DOX @brief Gets the distribution of power between CPU and GPU of a system metric sample. @ENG_END_DOX
84
+ *
85
+ *@syntax
86
+ *@codeStart
87
+ * @ref ADLX_RESULT PowerDistribution (adlx_int* apuShiftValue, adlx_int* gpuShiftValue, adlx_int* apuShiftLimit, adlx_int* gpuShiftLimit, adlx_int* totalShiftLimit)
88
+ *@codeEnd
89
+ *
90
+ *@params
91
+ *@paramrow{1.,[out] ,apuShiftValue,adlx_int* ,@ENG_START_DOX The pointer to a variable where the apu shift value is returned. @ENG_END_DOX}
92
+ *@paramrow{1.,[out] ,gpuShiftValue,adlx_int* ,@ENG_START_DOX The pointer to a variable where the gpu shift value is returned. @ENG_END_DOX}
93
+ *@paramrow{1.,[out] ,apuShiftLimit,adlx_int* ,@ENG_START_DOX The pointer to a variable where the apu shift limit value is returned. @ENG_END_DOX}
94
+ *@paramrow{1.,[out] ,gpuShiftLimit,adlx_int* ,@ENG_START_DOX The pointer to a variable where the gpu shift limit value is returned. @ENG_END_DOX}
95
+ *@paramrow{1.,[out] ,totalShiftLimit,adlx_int* ,@ENG_START_DOX The pointer to a variable where the total shift limit value is returned. @ENG_END_DOX}
96
+ *
97
+ *@retvalues
98
+ *@ENG_START_DOX If the distribution of power is successfully returned, __ADLX_OK__ is returned. <br>
99
+ * If the distribution of power is not successfully returned, an error code is returned. <br>
100
+ * Refer to @ref ADLX_RESULT for success codes and error codes. @ENG_END_DOX
101
+ *
102
+ *@copydoc IADLXSystemMetrics1_REQ_TABLE
103
+ *
104
+ */
105
+ virtual ADLX_RESULT ADLX_STD_CALL PowerDistribution(adlx_int* apuShiftValue, adlx_int* gpuShiftValue, adlx_int* apuShiftLimit, adlx_int* gpuShiftLimit, adlx_int* totalShiftLimit) = 0;
106
+ };
107
+ //----------------------------------------------------------------------------------------------
108
+ typedef IADLXInterfacePtr_T<IADLXSystemMetrics1> IADLXSystemMetrics1Ptr;
109
+ } //namespace adlx
110
+ #else //__cplusplus
111
+ ADLX_DECLARE_IID (IADLXSystemMetrics1, L"IADLXSystemMetrics1")
112
+
113
+ typedef struct IADLXSystemMetrics1 IADLXSystemMetrics1;
114
+ typedef struct IADLXSystemMetrics1Vtbl
115
+ {
116
+ //IADLXInterface
117
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXSystemMetrics1* pThis);
118
+ adlx_long (ADLX_STD_CALL *Release)(IADLXSystemMetrics1* pThis);
119
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXSystemMetrics1* pThis, const wchar_t* interfaceId, void** ppInterface);
120
+
121
+ //IADLXSystemMetrics
122
+ ADLX_RESULT (ADLX_STD_CALL *TimeStamp)(IADLXSystemMetrics1* pThis, adlx_int64* ms);
123
+ ADLX_RESULT (ADLX_STD_CALL *CPUUsage)(IADLXSystemMetrics1* pThis, adlx_double* data);
124
+ ADLX_RESULT (ADLX_STD_CALL *SystemRAM)(IADLXSystemMetrics1* pThis, adlx_int* data);
125
+ ADLX_RESULT (ADLX_STD_CALL *SmartShift)(IADLXSystemMetrics1* pThis, adlx_int* data);
126
+
127
+ //IADLXSystemMetrics1
128
+ ADLX_RESULT (ADLX_STD_CALL *PowerDistribution)(IADLXSystemMetrics1* pThis, adlx_int* apuShiftValue, adlx_int* gpuShiftValue, adlx_int* apuShiftLimit, adlx_int* gpuShiftLimit, adlx_int* totalShiftLimit);
129
+ }IADLXSystemMetrics1Vtbl;
130
+ struct IADLXSystemMetrics1 { const IADLXSystemMetrics1Vtbl *pVtbl; };
131
+ #endif //__cplusplus
132
+ #pragma endregion IADLXSystemMetrics1
133
+
134
+ #endif//ADLX_IPERFORMANCEMONITORING1_H
@@ -0,0 +1,341 @@
1
+ //
2
+ // Copyright (c) 2021 - 2025 Advanced Micro Devices, Inc. All rights reserved.
3
+ //
4
+ //-------------------------------------------------------------------------------------------------
5
+
6
+ #ifndef ADLX_IPERFORMANCEMONITORING2_H
7
+ #define ADLX_IPERFORMANCEMONITORING2_H
8
+ #pragma once
9
+
10
+ #include "IPerformanceMonitoring1.h"
11
+
12
+ #pragma region IADLXGPUMetricsSupport1
13
+ #if defined (__cplusplus)
14
+ namespace adlx
15
+ {
16
+ class ADLX_NO_VTABLE IADLXGPUMetricsSupport1 : public IADLXGPUMetricsSupport
17
+ {
18
+ public:
19
+ ADLX_DECLARE_IID(L"IADLXGPUMetricsSupport1")
20
+
21
+ /**
22
+ *@page DOX_IADLXGPUMetricsSupport1_IsSupportedGPUMemoryTemperature IsSupportedGPUMemoryTemperature
23
+ *@ENG_START_DOX @brief Checks if the GPU memory temperature metric reporting is supported on a GPU. @ENG_END_DOX
24
+ *
25
+ *@syntax
26
+ *@codeStart
27
+ * @ref ADLX_RESULT IsSupportedGPUMemoryTemperature (adlx_bool* supported)
28
+ *@codeEnd
29
+ *
30
+ *@params
31
+ *@paramrow{1.,[out],supported,adlx_bool*,@ENG_START_DOX The pointer to a variable where the state of GPU memory temperature metric reporting is returned. The variable is __true__ if the GPU memory temperature metric reporting is supported\. The variable is __false__ if the GPU memory temperature metric reporting is not supported. @ENG_END_DOX}
32
+ *
33
+ *@retvalues
34
+ *@ENG_START_DOX If the state of GPU memory temperature metric reporting is successfully returned, __ADLX_OK__ is returned. <br>
35
+ *If the state of GPU memory temperature metric reporting is not successfully returned, an error code is returned. <br>
36
+ *Refer to @ref ADLX_RESULT for success codes and error codes. @ENG_END_DOX
37
+ *
38
+ *
39
+ *@copydoc IADLXGPUMetricsSupport1_REQ_TABLE
40
+ *
41
+ */
42
+ virtual ADLX_RESULT ADLX_STD_CALL IsSupportedGPUMemoryTemperature (adlx_bool* supported) = 0;
43
+
44
+ /**
45
+ *@page DOX_IADLXGPUMetricsSupport1_GetGPUMemoryTemperatureRange GetGPUMemoryTemperatureRange
46
+ *@ENG_START_DOX @brief Gets the minimum and maximum GPU memory temperature on a GPU. @ENG_END_DOX
47
+ *
48
+ *@syntax
49
+ *@codeStart
50
+ * @ref ADLX_RESULT GetGPUMemoryTemperatureRange (adlx_int* minValue, adlx_int* maxValue)
51
+ *@codeEnd
52
+ *
53
+ *@params
54
+ * @paramrow{1.,[out],minValue,adlx_int*,@ENG_START_DOX The pointer to a variable where the minimum GPU memory temperature (in °C) is returned. @ENG_END_DOX}
55
+ * @paramrow{2.,[out],maxValue,adlx_int*,@ENG_START_DOX The pointer to a variable where the maximum GPU memory temperature (in °C) is returned. @ENG_END_DOX}
56
+ *
57
+ *@retvalues
58
+ *@ENG_START_DOX If the GPU memory temperature range is successfully returned, __ADLX_OK__ is returned.<br>
59
+ * If the GPU memory temperature range is not successfully returned, an error code is returned.<br>
60
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
61
+ *
62
+ *@detaileddesc
63
+ *@ENG_START_DOX @details The minimum and maximum GPU memory temperature are read only. @ENG_END_DOX
64
+ *
65
+ *
66
+ *@copydoc IADLXGPUMetricsSupport1_REQ_TABLE
67
+ *
68
+ */
69
+ virtual ADLX_RESULT ADLX_STD_CALL GetGPUMemoryTemperatureRange (adlx_int* minValue, adlx_int* maxValue) = 0;
70
+
71
+ /**
72
+ *@page DOX_IADLXGPUMetricsSupport1_IsSupportedNPUFrequency IsSupportedNPUFrequency
73
+ *@ENG_START_DOX @brief Checks if the NPU frequency metric reporting is supported on a GPU. @ENG_END_DOX
74
+ *
75
+ *@syntax
76
+ *@codeStart
77
+ * @ref ADLX_RESULT IsSupportedNPUFrequency (adlx_bool* supported)
78
+ *@codeEnd
79
+ *
80
+ *@params
81
+ *@paramrow{1.,[out],supported,adlx_bool*,@ENG_START_DOX The pointer to a variable where the state of NPU frequency metric reporting is returned. The variable is __true__ if the NPU frequency metric reporting is supported\. The variable is __false__ if the NPU frequency metric reporting is not supported. @ENG_END_DOX}
82
+ *
83
+ *@retvalues
84
+ *@ENG_START_DOX If the state of NPU frequency metric reporting is successfully returned, __ADLX_OK__ is returned. <br>
85
+ *If the state of NPU frequency metric reporting is not successfully returned, an error code is returned. <br>
86
+ *Refer to @ref ADLX_RESULT for success codes and error codes. @ENG_END_DOX
87
+ *
88
+ *
89
+ *@copydoc IADLXGPUMetricsSupport1_REQ_TABLE
90
+ *
91
+ */
92
+ virtual ADLX_RESULT ADLX_STD_CALL IsSupportedNPUFrequency (adlx_bool* supported) = 0;
93
+
94
+ /**
95
+ *@page DOX_IADLXGPUMetricsSupport1_GetNPUFrequencyRange GetNPUFrequencyRange
96
+ *@ENG_START_DOX @brief Gets the minimum and maximum NPU frequency on a GPU. @ENG_END_DOX
97
+ *
98
+ *@syntax
99
+ *@codeStart
100
+ * @ref ADLX_RESULT GetNPUFrequencyRange (adlx_int* minValue, adlx_int* maxValue)
101
+ *@codeEnd
102
+ *
103
+ *@params
104
+ * @paramrow{1.,[out],minValue,adlx_int*,@ENG_START_DOX The pointer to a variable where the minimum NPU frequency (in MHZ) is returned. @ENG_END_DOX}
105
+ * @paramrow{2.,[out],maxValue,adlx_int*,@ENG_START_DOX The pointer to a variable where the maximum NPU frequency (in MHZ) is returned. @ENG_END_DOX}
106
+ *
107
+ *@retvalues
108
+ *@ENG_START_DOX If the NPU frequency range is successfully returned, __ADLX_OK__ is returned.<br>
109
+ * If the NPU frequency range is not successfully returned, an error code is returned.<br>
110
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
111
+ *
112
+ *@detaileddesc
113
+ *@ENG_START_DOX @details The minimum and maximum NPU frequency are read only. @ENG_END_DOX
114
+ *
115
+ *
116
+ *@copydoc IADLXGPUMetricsSupport1_REQ_TABLE
117
+ *
118
+ */
119
+ virtual ADLX_RESULT ADLX_STD_CALL GetNPUFrequencyRange (adlx_int* minValue, adlx_int* maxValue) = 0;
120
+
121
+ /**
122
+ *@page DOX_IADLXGPUMetricsSupport1_IsSupportedNPUActivityLevel IsSupportedNPUActivityLevel
123
+ *@ENG_START_DOX @brief Checks if the NPU activity level metric reporting is supported on a GPU. @ENG_END_DOX
124
+ *
125
+ *@syntax
126
+ *@codeStart
127
+ * @ref ADLX_RESULT IsSupportedNPUActivityLevel (adlx_bool* supported)
128
+ *@codeEnd
129
+ *
130
+ *@params
131
+ *@paramrow{1.,[out],supported,adlx_bool*,@ENG_START_DOX The pointer to a variable where the state of NPU activity level metric reporting is returned. The variable is __true__ if the NPU activity level metric reporting is supported\. The variable is __false__ if the NPU activity level metric reporting is not supported. @ENG_END_DOX}
132
+ *
133
+ *@retvalues
134
+ *@ENG_START_DOX If the state of NPU activity level metric reporting is successfully returned, __ADLX_OK__ is returned. <br>
135
+ *If the state of NPU activity level metric reporting is not successfully returned, an error code is returned. <br>
136
+ *Refer to @ref ADLX_RESULT for success codes and error codes. @ENG_END_DOX
137
+ *
138
+ *
139
+ *@copydoc IADLXGPUMetricsSupport1_REQ_TABLE
140
+ *
141
+ */
142
+ virtual ADLX_RESULT ADLX_STD_CALL IsSupportedNPUActivityLevel (adlx_bool* supported) = 0;
143
+
144
+ /**
145
+ *@page DOX_IADLXGPUMetricsSupport1_GetNPUActivityLevelRange GetNPUActivityLevelRange
146
+ *@ENG_START_DOX @brief Gets the minimum and maximum NPU activity level on a GPU. @ENG_END_DOX
147
+ *
148
+ *@syntax
149
+ *@codeStart
150
+ * @ref ADLX_RESULT GetNPUActivityLevelRange (adlx_int* minValue, adlx_int* maxValue)
151
+ *@codeEnd
152
+ *
153
+ *@params
154
+ * @paramrow{1.,[out],minValue,adlx_int*,@ENG_START_DOX The pointer to a variable where the minimum NPU activity level (in %) is returned. @ENG_END_DOX}
155
+ * @paramrow{2.,[out],maxValue,adlx_int*,@ENG_START_DOX The pointer to a variable where the maximum NPU activity level (in %) is returned. @ENG_END_DOX}
156
+ *
157
+ *@retvalues
158
+ *@ENG_START_DOX If the NPU activity level range is successfully returned, __ADLX_OK__ is returned.<br>
159
+ * If the NPU activity level range is not successfully returned, an error code is returned.<br>
160
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
161
+ *
162
+ *@detaileddesc
163
+ *@ENG_START_DOX @details The minimum and maximum NPU activity level are read only. @ENG_END_DOX
164
+ *
165
+ *
166
+ *@copydoc IADLXGPUMetricsSupport1_REQ_TABLE
167
+ *
168
+ */
169
+ virtual ADLX_RESULT ADLX_STD_CALL GetNPUActivityLevelRange (adlx_int* minValue, adlx_int* maxValue) = 0;
170
+ };
171
+ //----------------------------------------------------------------------------------------------
172
+ typedef IADLXInterfacePtr_T<IADLXGPUMetricsSupport1> IADLXGPUMetricsSupport1Ptr;
173
+ } //namespace adlx
174
+ #else //__cplusplus
175
+ ADLX_DECLARE_IID (IADLXGPUMetricsSupport1, L"IADLXGPUMetricsSupport1")
176
+
177
+ typedef struct IADLXGPUMetricsSupport1 IADLXGPUMetricsSupport1;
178
+ typedef struct IADLXGPUMetricsSupport1Vtbl
179
+ {
180
+ //IADLXInterface
181
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXGPUMetricsSupport1* pThis);
182
+ adlx_long (ADLX_STD_CALL *Release)(IADLXGPUMetricsSupport1* pThis);
183
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXGPUMetricsSupport1* pThis, const wchar_t* interfaceId, void** ppInterface);
184
+
185
+ //IADLXGPUMetricsSupport
186
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUUsage)(IADLXGPUMetricsSupport1* pThis, adlx_bool* supported);
187
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUClockSpeed)(IADLXGPUMetricsSupport1* pThis, adlx_bool* supported);
188
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUVRAMClockSpeed)(IADLXGPUMetricsSupport1* pThis, adlx_bool* supported);
189
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUTemperature)(IADLXGPUMetricsSupport1* pThis, adlx_bool* supported);
190
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUHotspotTemperature)(IADLXGPUMetricsSupport1* pThis, adlx_bool* supported);
191
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUPower)(IADLXGPUMetricsSupport1* pThis, adlx_bool* supported);
192
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUTotalBoardPower)(IADLXGPUMetricsSupport1* pThis, adlx_bool* supported);
193
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUFanSpeed)(IADLXGPUMetricsSupport1* pThis, adlx_bool* supported);
194
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUVRAM)(IADLXGPUMetricsSupport1* pThis, adlx_bool* supported);
195
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUVoltage)(IADLXGPUMetricsSupport1* pThis, adlx_bool* supported);
196
+
197
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUUsageRange)(IADLXGPUMetricsSupport1* pThis, adlx_int* minValue, adlx_int* maxValue);
198
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUClockSpeedRange)(IADLXGPUMetricsSupport1* pThis, adlx_int* minValue, adlx_int* maxValue);
199
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUVRAMClockSpeedRange)(IADLXGPUMetricsSupport1* pThis, adlx_int* minValue, adlx_int* maxValue);
200
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUTemperatureRange)(IADLXGPUMetricsSupport1* pThis, adlx_int* minValue, adlx_int* maxValue);
201
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUHotspotTemperatureRange)(IADLXGPUMetricsSupport1* pThis, adlx_int* minValue, adlx_int* maxValue);
202
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUPowerRange)(IADLXGPUMetricsSupport1* pThis, adlx_int* minValue, adlx_int* maxValue);
203
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUFanSpeedRange)(IADLXGPUMetricsSupport1* pThis, adlx_int* minValue, adlx_int* maxValue);
204
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUVRAMRange)(IADLXGPUMetricsSupport1* pThis, adlx_int* minValue, adlx_int* maxValue);
205
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUVoltageRange)(IADLXGPUMetricsSupport1* pThis, adlx_int* minValue, adlx_int* maxValue);
206
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUTotalBoardPowerRange)(IADLXGPUMetricsSupport1* pThis, adlx_int* minValue, adlx_int* maxValue);
207
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUIntakeTemperatureRange)(IADLXGPUMetricsSupport1* pThis, adlx_int* minValue, adlx_int* maxValue);
208
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUIntakeTemperature)(IADLXGPUMetricsSupport1* pThis, adlx_bool* supported);
209
+
210
+ //IADLXGPUMetricsSupport1
211
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUMemoryTemperature)(IADLXGPUMetricsSupport1* pThis, adlx_bool* supported);
212
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUMemoryTemperatureRange)(IADLXGPUMetricsSupport1* pThis, adlx_int* minValue, adlx_int* maxValue);
213
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedNPUFrequency)(IADLXGPUMetricsSupport1* pThis, adlx_bool* supported);
214
+ ADLX_RESULT(ADLX_STD_CALL* GetNPUFrequencyRange)(IADLXGPUMetricsSupport1* pThis, adlx_int* minValue, adlx_int* maxValue);
215
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedNPUActivityLevel)(IADLXGPUMetricsSupport1* pThis, adlx_bool* supported);
216
+ ADLX_RESULT(ADLX_STD_CALL* GetNPUActivityLevelRange)(IADLXGPUMetricsSupport1* pThis, adlx_int* minValue, adlx_int* maxValue);
217
+ }IADLXGPUMetricsSupport1Vtbl;
218
+ struct IADLXGPUMetricsSupport1 { const IADLXGPUMetricsSupport1Vtbl *pVtbl; };
219
+ #endif //__cplusplus
220
+ #pragma endregion IADLXGPUMetricsSupport1
221
+
222
+ #pragma region IADLXGPUMetrics1
223
+ #if defined (__cplusplus)
224
+ namespace adlx
225
+ {
226
+ class ADLX_NO_VTABLE IADLXGPUMetrics1 : public IADLXGPUMetrics
227
+ {
228
+ public:
229
+ ADLX_DECLARE_IID (L"IADLXGPUMetrics1")
230
+
231
+ /**
232
+ *@page DOX_IADLXGPUMetrics1_GPUMemoryTemperature GPUMemoryTemperature
233
+ *@ENG_START_DOX
234
+ *@brief Gets the GPU memory temperature of a GPU metric sample.
235
+ *@details GPUMemoryTemperature reports the GPU memory temperature.
236
+ *@ENG_END_DOX
237
+ *
238
+ *@syntax
239
+ *@codeStart
240
+ * @ref ADLX_RESULT GPUMemoryTemperature (adlx_double* data)
241
+ *@codeEnd
242
+ *
243
+ *@params
244
+ *@paramrow{1.,[out] ,data,adlx_double* ,@ENG_START_DOX The pointer to a variable where the GPU memory temperature (in °C) is returned. @ENG_END_DOX}
245
+ *
246
+ *@retvalues
247
+ *@ENG_START_DOX If the GPU memory temperature is successfully returned, __ADLX_OK__ is returned. <br>
248
+ * If the GPU memory temperature is not successfully returned, an error code is returned. <br>
249
+ * Refer to @ref ADLX_RESULT for success codes and error codes. @ENG_END_DOX
250
+ *
251
+ *@copydoc IADLXGPUMetrics1_REQ_TABLE
252
+ *
253
+ */
254
+ virtual ADLX_RESULT ADLX_STD_CALL GPUMemoryTemperature(adlx_double* data) = 0;
255
+
256
+ /**
257
+ *@page DOX_IADLXGPUMetrics1_NPUFrequency NPUFrequency
258
+ *@ENG_START_DOX
259
+ *@brief Gets the NPU frequency of a GPU metric sample.
260
+ *@ENG_END_DOX
261
+ *
262
+ *@syntax
263
+ *@codeStart
264
+ * @ref ADLX_RESULT NPUFrequency (adlx_int* data)
265
+ *@codeEnd
266
+ *
267
+ *@params
268
+ *@paramrow{1.,[out] ,data,adlx_int* ,@ENG_START_DOX The pointer to a variable where the NPU frequency (in MHz) is returned. @ENG_END_DOX}
269
+ *
270
+ *@retvalues
271
+ *@ENG_START_DOX If the NPU frequency is successfully returned, __ADLX_OK__ is returned. <br>
272
+ * If the NPU frequency is not successfully returned, an error code is returned. <br>
273
+ * Refer to @ref ADLX_RESULT for success codes and error codes. @ENG_END_DOX
274
+ *
275
+ *@copydoc IADLXGPUMetrics1_REQ_TABLE
276
+ *
277
+ */
278
+ virtual ADLX_RESULT ADLX_STD_CALL NPUFrequency(adlx_int* data) = 0;
279
+
280
+ /**
281
+ *@page DOX_IADLXGPUMetrics1_NPUActivityLevel NPUActivityLevel
282
+ *@ENG_START_DOX
283
+ *@brief Gets the NPU activity level of a GPU metric sample.
284
+ *@ENG_END_DOX
285
+ *
286
+ *@syntax
287
+ *@codeStart
288
+ * @ref ADLX_RESULT NPUActivityLevel (adlx_int* data)
289
+ *@codeEnd
290
+ *
291
+ *@params
292
+ *@paramrow{1.,[out] ,data,adlx_int* ,@ENG_START_DOX The pointer to a variable where the NPU activity level (in %) is returned. @ENG_END_DOX}
293
+ *
294
+ *@retvalues
295
+ *@ENG_START_DOX If the NPU activity level is successfully returned, __ADLX_OK__ is returned. <br>
296
+ * If the NPU activity level is not successfully returned, an error code is returned. <br>
297
+ * Refer to @ref ADLX_RESULT for success codes and error codes. @ENG_END_DOX
298
+ *
299
+ *@copydoc IADLXGPUMetrics1_REQ_TABLE
300
+ *
301
+ */
302
+ virtual ADLX_RESULT ADLX_STD_CALL NPUActivityLevel(adlx_int* data) = 0;
303
+ };
304
+ //----------------------------------------------------------------------------------------------
305
+ typedef IADLXInterfacePtr_T<IADLXGPUMetrics1> IADLXGPUMetrics1Ptr;
306
+ } //namespace adlx
307
+ #else //__cplusplus
308
+ ADLX_DECLARE_IID (IADLXGPUMetrics1, L"IADLXGPUMetrics1")
309
+
310
+ typedef struct IADLXGPUMetrics1 IADLXGPUMetrics1;
311
+ typedef struct IADLXGPUMetrics1Vtbl
312
+ {
313
+ //IADLXInterface
314
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXGPUMetrics1* pThis);
315
+ adlx_long (ADLX_STD_CALL *Release)(IADLXGPUMetrics1* pThis);
316
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXGPUMetrics1* pThis, const wchar_t* interfaceId, void** ppInterface);
317
+
318
+ //IADLXGPUMetrics
319
+ ADLX_RESULT(ADLX_STD_CALL* TimeStamp)(IADLXGPUMetrics1* pThis, adlx_int64* ms);
320
+ ADLX_RESULT(ADLX_STD_CALL* GPUUsage)(IADLXGPUMetrics1* pThis, adlx_double* data);
321
+ ADLX_RESULT(ADLX_STD_CALL* GPUClockSpeed)(IADLXGPUMetrics1* pThis, adlx_int* data);
322
+ ADLX_RESULT(ADLX_STD_CALL* GPUVRAMClockSpeed)(IADLXGPUMetrics1* pThis, adlx_int* data);
323
+ ADLX_RESULT(ADLX_STD_CALL* GPUTemperature)(IADLXGPUMetrics1* pThis, adlx_double* data);
324
+ ADLX_RESULT(ADLX_STD_CALL* GPUHotspotTemperature)(IADLXGPUMetrics1* pThis, adlx_double* data);
325
+ ADLX_RESULT(ADLX_STD_CALL* GPUPower)(IADLXGPUMetrics1* pThis, adlx_double* data);
326
+ ADLX_RESULT(ADLX_STD_CALL* GPUTotalBoardPower)(IADLXGPUMetrics1* pThis, adlx_double* data);
327
+ ADLX_RESULT(ADLX_STD_CALL* GPUFanSpeed)(IADLXGPUMetrics1* pThis, adlx_int* data);
328
+ ADLX_RESULT(ADLX_STD_CALL* GPUVRAM)(IADLXGPUMetrics1* pThis, adlx_int* data);
329
+ ADLX_RESULT(ADLX_STD_CALL* GPUVoltage)(IADLXGPUMetrics1* pThis, adlx_int* data);
330
+ ADLX_RESULT(ADLX_STD_CALL* GPUIntakeTemperature)(IADLXGPUMetrics1* pThis, adlx_double* data);
331
+
332
+ //IADLXGPUMetrics1
333
+ ADLX_RESULT(ADLX_STD_CALL* GPUMemoryTemperature)(IADLXGPUMetrics1* pThis, adlx_double* data);
334
+ ADLX_RESULT(ADLX_STD_CALL* NPUFrequency)(IADLXGPUMetrics1* pThis, adlx_int* data);
335
+ ADLX_RESULT(ADLX_STD_CALL* NPUActivityLevel)(IADLXGPUMetrics1* pThis, adlx_int* data);
336
+ }IADLXGPUMetrics1Vtbl;
337
+ struct IADLXGPUMetrics1 { const IADLXGPUMetrics1Vtbl *pVtbl; };
338
+ #endif //__cplusplus
339
+ #pragma endregion IADLXGPUMetrics1
340
+
341
+ #endif//ADLX_IPERFORMANCEMONITORING2_H
@@ -0,0 +1,199 @@
1
+ //
2
+ // Copyright (c) 2024 - 2025 Advanced Micro Devices, Inc. All rights reserved.
3
+ //
4
+ //-------------------------------------------------------------------------------------------------
5
+
6
+ #ifndef ADLX_IPERFORMANCEMONITORING3_H
7
+ #define ADLX_IPERFORMANCEMONITORING3_H
8
+ #pragma once
9
+
10
+ #include "IPerformanceMonitoring2.h"
11
+
12
+ #pragma region IADLXGPUMetricsSupport2
13
+ #if defined (__cplusplus)
14
+ namespace adlx
15
+ {
16
+ class ADLX_NO_VTABLE IADLXGPUMetricsSupport2 : public IADLXGPUMetricsSupport1
17
+ {
18
+ public:
19
+ ADLX_DECLARE_IID(L"IADLXGPUMetricsSupport2")
20
+
21
+ /**
22
+ *@page DOX_IADLXGPUMetricsSupport2_IsSupportedGPUSharedMemory IsSupportedGPUSharedMemory
23
+ *@ENG_START_DOX @brief Checks if the shared GPU memory metric reporting is supported on a GPU. @ENG_END_DOX
24
+ *
25
+ *@syntax
26
+ *@codeStart
27
+ * @ref ADLX_RESULT IsSupportedGPUSharedMemory (adlx_bool* supported)
28
+ *@codeEnd
29
+ *
30
+ *@params
31
+ *@paramrow{1.,[out],supported,adlx_bool*,@ENG_START_DOX The pointer to a variable where the state of shared GPU memory metric reporting is returned. The variable is __true__ if the shared GPU memory metric reporting is supported\. The variable is __false__ if the shared GPU memory metric reporting is not supported. @ENG_END_DOX}
32
+ *
33
+ *@retvalues
34
+ *@ENG_START_DOX If the state of shared GPU memory metric reporting is successfully returned, __ADLX_OK__ is returned. <br>
35
+ *If the state of shared GPU memory metric reporting is not successfully returned, an error code is returned. <br>
36
+ *Refer to @ref ADLX_RESULT for success codes and error codes. @ENG_END_DOX
37
+ *
38
+ *
39
+ *@copydoc IADLXGPUMetricsSupport2_REQ_TABLE
40
+ *
41
+ */
42
+ virtual ADLX_RESULT ADLX_STD_CALL IsSupportedGPUSharedMemory (adlx_bool* supported) = 0;
43
+
44
+ /**
45
+ *@page DOX_IADLXGPUMetricsSupport2_GetGPUSharedMemoryRange GetGPUSharedMemoryRange
46
+ *@ENG_START_DOX @brief Gets the minimum and maximum shared GPU memory on a GPU. @ENG_END_DOX
47
+ *
48
+ *@syntax
49
+ *@codeStart
50
+ * @ref ADLX_RESULT GetGPUSharedMemoryRange (adlx_int* minValue, adlx_int* maxValue)
51
+ *@codeEnd
52
+ *
53
+ *@params
54
+ * @paramrow{1.,[out],minValue,adlx_int*,@ENG_START_DOX The pointer to a variable where the minimum shared GPU memory (in MB) is returned. @ENG_END_DOX}
55
+ * @paramrow{2.,[out],maxValue,adlx_int*,@ENG_START_DOX The pointer to a variable where the maximum shared GPU memory (in MB) is returned. @ENG_END_DOX}
56
+ *
57
+ *@retvalues
58
+ *@ENG_START_DOX If the shared GPU memory range is successfully returned, __ADLX_OK__ is returned.<br>
59
+ * If the shared GPU memory range is not successfully returned, an error code is returned.<br>
60
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
61
+ *
62
+ *@detaileddesc
63
+ *@ENG_START_DOX @details The minimum and maximum shared GPU memory are read only. @ENG_END_DOX
64
+ *
65
+ *
66
+ *@copydoc IADLXGPUMetricsSupport2_REQ_TABLE
67
+ *
68
+ */
69
+ virtual ADLX_RESULT ADLX_STD_CALL GetGPUSharedMemoryRange (adlx_int* minValue, adlx_int* maxValue) = 0;
70
+ };
71
+ //----------------------------------------------------------------------------------------------
72
+ typedef IADLXInterfacePtr_T<IADLXGPUMetricsSupport2> IADLXGPUMetricsSupport2Ptr;
73
+ } //namespace adlx
74
+ #else //__cplusplus
75
+ ADLX_DECLARE_IID (IADLXGPUMetricsSupport2, L"IADLXGPUMetricsSupport2")
76
+
77
+ typedef struct IADLXGPUMetricsSupport2 IADLXGPUMetricsSupport2;
78
+ typedef struct IADLXGPUMetricsSupport2Vtbl
79
+ {
80
+ //IADLXInterface
81
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXGPUMetricsSupport2* pThis);
82
+ adlx_long (ADLX_STD_CALL *Release)(IADLXGPUMetricsSupport2* pThis);
83
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXGPUMetricsSupport2* pThis, const wchar_t* interfaceId, void** ppInterface);
84
+
85
+ //IADLXGPUMetricsSupport
86
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUUsage)(IADLXGPUMetricsSupport2* pThis, adlx_bool* supported);
87
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUClockSpeed)(IADLXGPUMetricsSupport2* pThis, adlx_bool* supported);
88
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUVRAMClockSpeed)(IADLXGPUMetricsSupport2* pThis, adlx_bool* supported);
89
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUTemperature)(IADLXGPUMetricsSupport2* pThis, adlx_bool* supported);
90
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUHotspotTemperature)(IADLXGPUMetricsSupport2* pThis, adlx_bool* supported);
91
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUPower)(IADLXGPUMetricsSupport2* pThis, adlx_bool* supported);
92
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUTotalBoardPower)(IADLXGPUMetricsSupport2* pThis, adlx_bool* supported);
93
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUFanSpeed)(IADLXGPUMetricsSupport2* pThis, adlx_bool* supported);
94
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUVRAM)(IADLXGPUMetricsSupport2* pThis, adlx_bool* supported);
95
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUVoltage)(IADLXGPUMetricsSupport2* pThis, adlx_bool* supported);
96
+
97
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUUsageRange)(IADLXGPUMetricsSupport2* pThis, adlx_int* minValue, adlx_int* maxValue);
98
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUClockSpeedRange)(IADLXGPUMetricsSupport2* pThis, adlx_int* minValue, adlx_int* maxValue);
99
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUVRAMClockSpeedRange)(IADLXGPUMetricsSupport2* pThis, adlx_int* minValue, adlx_int* maxValue);
100
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUTemperatureRange)(IADLXGPUMetricsSupport2* pThis, adlx_int* minValue, adlx_int* maxValue);
101
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUHotspotTemperatureRange)(IADLXGPUMetricsSupport2* pThis, adlx_int* minValue, adlx_int* maxValue);
102
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUPowerRange)(IADLXGPUMetricsSupport2* pThis, adlx_int* minValue, adlx_int* maxValue);
103
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUFanSpeedRange)(IADLXGPUMetricsSupport2* pThis, adlx_int* minValue, adlx_int* maxValue);
104
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUVRAMRange)(IADLXGPUMetricsSupport2* pThis, adlx_int* minValue, adlx_int* maxValue);
105
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUVoltageRange)(IADLXGPUMetricsSupport2* pThis, adlx_int* minValue, adlx_int* maxValue);
106
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUTotalBoardPowerRange)(IADLXGPUMetricsSupport2* pThis, adlx_int* minValue, adlx_int* maxValue);
107
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUIntakeTemperatureRange)(IADLXGPUMetricsSupport2* pThis, adlx_int* minValue, adlx_int* maxValue);
108
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUIntakeTemperature)(IADLXGPUMetricsSupport2* pThis, adlx_bool* supported);
109
+
110
+ //IADLXGPUMetricsSupport1
111
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUMemoryTemperature)(IADLXGPUMetricsSupport2* pThis, adlx_bool* supported);
112
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUMemoryTemperatureRange)(IADLXGPUMetricsSupport2* pThis, adlx_int* minValue, adlx_int* maxValue);
113
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedNPUFrequency)(IADLXGPUMetricsSupport2* pThis, adlx_bool* supported);
114
+ ADLX_RESULT(ADLX_STD_CALL* GetNPUFrequencyRange)(IADLXGPUMetricsSupport2* pThis, adlx_int* minValue, adlx_int* maxValue);
115
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedNPUActivityLevel)(IADLXGPUMetricsSupport2* pThis, adlx_bool* supported);
116
+ ADLX_RESULT(ADLX_STD_CALL* GetNPUActivityLevelRange)(IADLXGPUMetricsSupport2* pThis, adlx_int* minValue, adlx_int* maxValue);
117
+
118
+ //IADLXGPUMetricsSupport2
119
+ ADLX_RESULT(ADLX_STD_CALL* IsSupportedGPUSharedMemory)(IADLXGPUMetricsSupport2* pThis, adlx_bool* supported);
120
+ ADLX_RESULT(ADLX_STD_CALL* GetGPUSharedMemoryRange)(IADLXGPUMetricsSupport2* pThis, adlx_int* minValue, adlx_int* maxValue);
121
+ }IADLXGPUMetricsSupport2Vtbl;
122
+ struct IADLXGPUMetricsSupport2 { const IADLXGPUMetricsSupport2Vtbl *pVtbl; };
123
+ #endif //__cplusplus
124
+ #pragma endregion IADLXGPUMetricsSupport2
125
+
126
+ #pragma region IADLXGPUMetrics2
127
+ #if defined (__cplusplus)
128
+ namespace adlx
129
+ {
130
+ class ADLX_NO_VTABLE IADLXGPUMetrics2 : public IADLXGPUMetrics1
131
+ {
132
+ public:
133
+ ADLX_DECLARE_IID (L"IADLXGPUMetrics2")
134
+
135
+ /**
136
+ *@page DOX_IADLXGPUMetrics2_GPUSharedMemory GPUSharedMemory
137
+ *@ENG_START_DOX
138
+ *@brief Gets the shared GPU memory of a GPU metric sample.
139
+ *@ENG_END_DOX
140
+ *
141
+ *@syntax
142
+ *@codeStart
143
+ * @ref ADLX_RESULT GPUSharedMemory (adlx_int* data)
144
+ *@codeEnd
145
+ *
146
+ *@params
147
+ *@paramrow{1.,[out] ,data,adlx_int* ,@ENG_START_DOX The pointer to a variable where the shared GPU memory (in MB) is returned. @ENG_END_DOX}
148
+ *
149
+ *@retvalues
150
+ *@ENG_START_DOX If the shared GPU memory is successfully returned, __ADLX_OK__ is returned. <br>
151
+ * If the shared GPU memory is not successfully returned, an error code is returned. <br>
152
+ * Refer to @ref ADLX_RESULT for success codes and error codes. @ENG_END_DOX
153
+ *
154
+ *@copydoc IADLXGPUMetrics2_REQ_TABLE
155
+ *
156
+ */
157
+ virtual ADLX_RESULT ADLX_STD_CALL GPUSharedMemory(adlx_int* data) = 0;
158
+ };
159
+ //----------------------------------------------------------------------------------------------
160
+ typedef IADLXInterfacePtr_T<IADLXGPUMetrics2> IADLXGPUMetrics2Ptr;
161
+ } //namespace adlx
162
+ #else //__cplusplus
163
+ ADLX_DECLARE_IID (IADLXGPUMetrics2, L"IADLXGPUMetrics2")
164
+
165
+ typedef struct IADLXGPUMetrics2 IADLXGPUMetrics2;
166
+ typedef struct IADLXGPUMetrics2Vtbl
167
+ {
168
+ //IADLXInterface
169
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXGPUMetrics2* pThis);
170
+ adlx_long (ADLX_STD_CALL *Release)(IADLXGPUMetrics2* pThis);
171
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXGPUMetrics2* pThis, const wchar_t* interfaceId, void** ppInterface);
172
+
173
+ //IADLXGPUMetrics
174
+ ADLX_RESULT(ADLX_STD_CALL* TimeStamp)(IADLXGPUMetrics2* pThis, adlx_int64* ms);
175
+ ADLX_RESULT(ADLX_STD_CALL* GPUUsage)(IADLXGPUMetrics2* pThis, adlx_double* data);
176
+ ADLX_RESULT(ADLX_STD_CALL* GPUClockSpeed)(IADLXGPUMetrics2* pThis, adlx_int* data);
177
+ ADLX_RESULT(ADLX_STD_CALL* GPUVRAMClockSpeed)(IADLXGPUMetrics2* pThis, adlx_int* data);
178
+ ADLX_RESULT(ADLX_STD_CALL* GPUTemperature)(IADLXGPUMetrics2* pThis, adlx_double* data);
179
+ ADLX_RESULT(ADLX_STD_CALL* GPUHotspotTemperature)(IADLXGPUMetrics2* pThis, adlx_double* data);
180
+ ADLX_RESULT(ADLX_STD_CALL* GPUPower)(IADLXGPUMetrics2* pThis, adlx_double* data);
181
+ ADLX_RESULT(ADLX_STD_CALL* GPUTotalBoardPower)(IADLXGPUMetrics2* pThis, adlx_double* data);
182
+ ADLX_RESULT(ADLX_STD_CALL* GPUFanSpeed)(IADLXGPUMetrics2* pThis, adlx_int* data);
183
+ ADLX_RESULT(ADLX_STD_CALL* GPUVRAM)(IADLXGPUMetrics2* pThis, adlx_int* data);
184
+ ADLX_RESULT(ADLX_STD_CALL* GPUVoltage)(IADLXGPUMetrics2* pThis, adlx_int* data);
185
+ ADLX_RESULT(ADLX_STD_CALL* GPUIntakeTemperature)(IADLXGPUMetrics2* pThis, adlx_double* data);
186
+
187
+ //IADLXGPUMetrics1
188
+ ADLX_RESULT(ADLX_STD_CALL* GPUMemoryTemperature)(IADLXGPUMetrics2* pThis, adlx_double* data);
189
+ ADLX_RESULT(ADLX_STD_CALL* NPUFrequency)(IADLXGPUMetrics2* pThis, adlx_int* data);
190
+ ADLX_RESULT(ADLX_STD_CALL* NPUActivityLevel)(IADLXGPUMetrics2* pThis, adlx_int* data);
191
+
192
+ //IADLXGPUMetrics2
193
+ ADLX_RESULT(ADLX_STD_CALL* GPUSharedMemory)(IADLXGPUMetrics2* pThis, adlx_int* data);
194
+ }IADLXGPUMetrics2Vtbl;
195
+ struct IADLXGPUMetrics2 { const IADLXGPUMetrics2Vtbl *pVtbl; };
196
+ #endif //__cplusplus
197
+ #pragma endregion IADLXGPUMetrics2
198
+
199
+ #endif//ADLX_IPERFORMANCEMONITORING3_H