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.
- package/LICENSE +674 -0
- package/README.md +336 -0
- package/binding.gyp +69 -0
- package/build/Release/gpu.exp +0 -0
- package/build/Release/gpu.lib +0 -0
- package/build/Release/gpu.node +0 -0
- package/build/Release/gpu.pdb +0 -0
- package/build/binding.sln +19 -0
- package/build/gpu.vcxproj +175 -0
- package/build/gpu.vcxproj.filters +169 -0
- package/example.js +69 -0
- package/index.js +33 -0
- package/package.json +68 -0
- package/src/binding.cpp +201 -0
- package/src/gpu_info.c +130 -0
- package/src/gpu_info.h +86 -0
- package/src/includes/adlx/ADLX.h +367 -0
- package/src/includes/adlx/ADLXDefines.h +1345 -0
- package/src/includes/adlx/ADLXHelper/ADLXHelper.c +175 -0
- package/src/includes/adlx/ADLXHelper/ADLXHelper.h +245 -0
- package/src/includes/adlx/ADLXHelper/WinAPIS.c +64 -0
- package/src/includes/adlx/ADLXStructures.h +206 -0
- package/src/includes/adlx/ADLXVersion.h +18 -0
- package/src/includes/adlx/I3DSettings.h +3476 -0
- package/src/includes/adlx/I3DSettings1.h +292 -0
- package/src/includes/adlx/I3DSettings2.h +317 -0
- package/src/includes/adlx/IApplications.h +397 -0
- package/src/includes/adlx/IChangedEvent.h +71 -0
- package/src/includes/adlx/ICollections.h +325 -0
- package/src/includes/adlx/IDesktops.h +918 -0
- package/src/includes/adlx/IDisplay3DLUT.h +663 -0
- package/src/includes/adlx/IDisplayGamma.h +683 -0
- package/src/includes/adlx/IDisplayGamut.h +760 -0
- package/src/includes/adlx/IDisplaySettings.h +3476 -0
- package/src/includes/adlx/IDisplays.h +2676 -0
- package/src/includes/adlx/IDisplays1.h +191 -0
- package/src/includes/adlx/IDisplays2.h +188 -0
- package/src/includes/adlx/IDisplays3.h +256 -0
- package/src/includes/adlx/IGPUAutoTuning.h +460 -0
- package/src/includes/adlx/IGPUManualFanTuning.h +1007 -0
- package/src/includes/adlx/IGPUManualGFXTuning.h +607 -0
- package/src/includes/adlx/IGPUManualPowerTuning.h +340 -0
- package/src/includes/adlx/IGPUManualVRAMTuning.h +576 -0
- package/src/includes/adlx/IGPUPresetTuning.h +469 -0
- package/src/includes/adlx/IGPUTuning.h +1239 -0
- package/src/includes/adlx/IGPUTuning1.h +197 -0
- package/src/includes/adlx/II2C.h +198 -0
- package/src/includes/adlx/ILog.h +72 -0
- package/src/includes/adlx/IMultiMedia.h +578 -0
- package/src/includes/adlx/IPerformanceMonitoring.h +2520 -0
- package/src/includes/adlx/IPerformanceMonitoring1.h +134 -0
- package/src/includes/adlx/IPerformanceMonitoring2.h +341 -0
- package/src/includes/adlx/IPerformanceMonitoring3.h +199 -0
- package/src/includes/adlx/IPowerTuning.h +473 -0
- package/src/includes/adlx/IPowerTuning1.h +515 -0
- package/src/includes/adlx/ISmartAccessMemory.h +114 -0
- package/src/includes/adlx/ISystem.h +1557 -0
- package/src/includes/adlx/ISystem1.h +237 -0
- package/src/includes/adlx/ISystem2.h +643 -0
- package/src/linux/amd_linux.c +269 -0
- package/src/linux/intel_linux.c +20 -0
- package/src/linux/nvidia_linux.c +257 -0
- package/src/macos/amd_mac.c +131 -0
- package/src/macos/intel_mac.c +131 -0
- package/src/macos/nvidia_mac.c +21 -0
- package/src/vendor/amd.c +37 -0
- package/src/vendor/intel.c +37 -0
- package/src/vendor/nvidia.c +37 -0
- package/src/windows/amd_windows.c +468 -0
- package/src/windows/intel_windows.c +157 -0
- 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
|