1namespace dnnl {
2namespace impl {
3namespace gpu {
4namespace ocl {
5const char *metrics_discovery_api_header = R"==(/*****************************************************************************\ )==""\n"
6R"==(Copyright © 2019, Intel Corporation )==""\n"
7R"==(Permission is hereby granted, free of charge, to any person obtaining a )==""\n"
8R"==(copy of this software and associated documentation files (the "Software"), )==""\n"
9R"==(to deal in the Software without restriction, including without limitation )==""\n"
10R"==(the rights to use, copy, modify, merge, publish, distribute, sublicense, )==""\n"
11R"==(and/or sell copies of the Software, and to permit persons to whom the )==""\n"
12R"==(Software is furnished to do so, subject to the following conditions: )==""\n"
13R"==(The above copyright notice and this permission notice shall be included )==""\n"
14R"==(in all copies or substantial portions of the Software. )==""\n"
15R"==(THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR )==""\n"
16R"==(IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, )==""\n"
17R"==(FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL )==""\n"
18R"==(THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER )==""\n"
19R"==(LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING )==""\n"
20R"==(FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS )==""\n"
21R"==(IN THE SOFTWARE. )==""\n"
22R"==(File Name: metrics_discovery_api.h )==""\n"
23R"==(Abstract: Interface for metrics discovery DLL )==""\n"
24R"==(Notes: )==""\n"
25R"==(\*****************************************************************************/ )==""\n"
26R"==(#include <stdint.h> )==""\n"
27R"==(#ifndef __METRICS_DISCOVERY_H_ )==""\n"
28R"==(#define __METRICS_DISCOVERY_H_ )==""\n"
29R"==(#ifdef _MSC_VER )==""\n"
30R"==(#define MD_STDCALL __stdcall )==""\n"
31R"==(#else )==""\n"
32R"==(#define MD_STDCALL )==""\n"
33R"==(#endif )==""\n"
34R"==(namespace MetricsDiscovery { )==""\n"
35R"==(typedef enum EMD_API_MAJOR_VERSION { )==""\n"
36R"==(MD_API_MAJOR_NUMBER_1 = 1, )==""\n"
37R"==(MD_API_MAJOR_NUMBER_CURRENT = MD_API_MAJOR_NUMBER_1, )==""\n"
38R"==(MD_API_MAJOR_NUMBER_CEIL = 0xFFFFFFFF )==""\n"
39R"==(} MD_API_MAJOR_VERSION; )==""\n"
40R"==(typedef enum EMD_API_MINOR_VERSION { )==""\n"
41R"==(MD_API_MINOR_NUMBER_0 = 0, )==""\n"
42R"==(MD_API_MINOR_NUMBER_1 = 1, )==""\n"
43R"==(MD_API_MINOR_NUMBER_2 = 2, )==""\n"
44R"==(MD_API_MINOR_NUMBER_3 = 3, )==""\n"
45R"==(MD_API_MINOR_NUMBER_4 = 4, )==""\n"
46R"==(MD_API_MINOR_NUMBER_5 = 5, )==""\n"
47R"==(MD_API_MINOR_NUMBER_CURRENT = MD_API_MINOR_NUMBER_5, )==""\n"
48R"==(MD_API_MINOR_NUMBER_CEIL = 0xFFFFFFFF )==""\n"
49R"==(} MD_API_MINOR_VERSION; )==""\n"
50R"==(#define MD_API_BUILD_NUMBER_CURRENT 115 )==""\n"
51R"==(typedef enum ECompletionCode { )==""\n"
52R"==(CC_OK = 0, )==""\n"
53R"==(CC_READ_PENDING = 1, )==""\n"
54R"==(CC_ALREADY_INITIALIZED = 2, )==""\n"
55R"==(CC_STILL_INITIALIZED = 3, )==""\n"
56R"==(CC_CONCURRENT_GROUP_LOCKED = 4, )==""\n"
57R"==(CC_WAIT_TIMEOUT = 5, )==""\n"
58R"==(CC_TRY_AGAIN = 6, )==""\n"
59R"==(CC_INTERRUPTED = 7, )==""\n"
60R"==(CC_ERROR_INVALID_PARAMETER = 40, )==""\n"
61R"==(CC_ERROR_NO_MEMORY = 41, )==""\n"
62R"==(CC_ERROR_GENERAL = 42, )==""\n"
63R"==(CC_ERROR_FILE_NOT_FOUND = 43, )==""\n"
64R"==(CC_ERROR_NOT_SUPPORTED = 44, )==""\n"
65R"==(CC_LAST_1_0 = 45 )==""\n"
66R"==(} TCompletionCode; )==""\n"
67R"==(/* Forward declarations */ )==""\n"
68R"==(class IMetricsDevice_1_0; )==""\n"
69R"==(class IMetricsDevice_1_1; )==""\n"
70R"==(class IMetricsDevice_1_2; )==""\n"
71R"==(class IMetricsDevice_1_5; )==""\n"
72R"==(class IOverride_1_2; )==""\n"
73R"==(class IConcurrentGroup_1_0; )==""\n"
74R"==(class IConcurrentGroup_1_1; )==""\n"
75R"==(class IConcurrentGroup_1_5; )==""\n"
76R"==(class IMetricSet_1_0; )==""\n"
77R"==(class IMetricSet_1_1; )==""\n"
78R"==(class IMetricSet_1_4; )==""\n"
79R"==(class IMetricSet_1_5; )==""\n"
80R"==(class IMetric_1_0; )==""\n"
81R"==(class IInformation_1_0; )==""\n"
82R"==(class IEquation_1_0; )==""\n"
83R"==(typedef enum EValueType { )==""\n"
84R"==(VALUE_TYPE_UINT32, )==""\n"
85R"==(VALUE_TYPE_UINT64, )==""\n"
86R"==(VALUE_TYPE_FLOAT, )==""\n"
87R"==(VALUE_TYPE_BOOL, )==""\n"
88R"==(VALUE_TYPE_CSTRING, )==""\n"
89R"==(VALUE_TYPE_LAST, )==""\n"
90R"==(} TValueType; )==""\n"
91R"==(typedef struct STypedValue_1_0 { )==""\n"
92R"==(TValueType ValueType; )==""\n"
93R"==(union { )==""\n"
94R"==(uint32_t ValueUInt32; )==""\n"
95R"==(uint64_t ValueUInt64; )==""\n"
96R"==(struct { )==""\n"
97R"==(uint32_t Low; )==""\n"
98R"==(uint32_t High; )==""\n"
99R"==(} ValueUInt64Fields; )==""\n"
100R"==(float ValueFloat; )==""\n"
101R"==(bool ValueBool; )==""\n"
102R"==(char *ValueCString; )==""\n"
103R"==(}; )==""\n"
104R"==(} TTypedValue_1_0; )==""\n"
105R"==(typedef struct SGlobalSymbol_1_0 { )==""\n"
106R"==(const char *SymbolName; )==""\n"
107R"==(TTypedValue_1_0 SymbolTypedValue; )==""\n"
108R"==(} TGlobalSymbol_1_0; )==""\n"
109R"==(typedef struct SMetricsDeviceParams_1_0 { )==""\n"
110R"==(struct SApiVersion { )==""\n"
111R"==(uint32_t MajorNumber; )==""\n"
112R"==(uint32_t MinorNumber; )==""\n"
113R"==(uint32_t BuildNumber; )==""\n"
114R"==(} Version; )==""\n"
115R"==(uint32_t ConcurrentGroupsCount; )==""\n"
116R"==(uint32_t GlobalSymbolsCount; )==""\n"
117R"==(uint32_t DeltaFunctionsCount; )==""\n"
118R"==(uint32_t EquationElementTypesCount; )==""\n"
119R"==(uint32_t EquationOperationsCount; )==""\n"
120R"==(const char *DeviceName; )==""\n"
121R"==(} TMetricsDeviceParams_1_0; )==""\n"
122R"==(typedef struct SMetricsDeviceParams_1_2 : public SMetricsDeviceParams_1_0 { )==""\n"
123R"==(uint32_t OverrideCount; )==""\n"
124R"==(} TMetricsDeviceParams_1_2; )==""\n"
125R"==(typedef enum EMetricApiType { )==""\n"
126R"==(API_TYPE_IOSTREAM = 0x00000001, )==""\n"
127R"==(API_TYPE_DX9 = 0x00000002, )==""\n"
128R"==(API_TYPE_DX10 = 0x00000004, )==""\n"
129R"==(API_TYPE_DX11 = 0x00000008, )==""\n"
130R"==(API_TYPE_OGL = 0x00000010, )==""\n"
131R"==(API_TYPE_OGL4_X = 0x00000020, )==""\n"
132R"==(API_TYPE_OCL = 0x00000040, )==""\n"
133R"==(API_TYPE_MEDIA )==""\n"
134R"==(= 0x00000080, )==""\n"
135R"==(API_TYPE_DX12 = 0x00000100, )==""\n"
136R"==(API_TYPE_BBSTREAM = 0x00000200, )==""\n"
137R"==(API_TYPE_VULKAN = 0x00000400, )==""\n"
138R"==(API_TYPE_RESERVED = 0x00000800, )==""\n"
139R"==(API_TYPE_ALL = 0xffffffff )==""\n"
140R"==(} TMetricApiType; )==""\n"
141R"==(typedef enum EMeasurementType { )==""\n"
142R"==(MEASUREMENT_TYPE_SNAPSHOT_IO = 0x00000001, )==""\n"
143R"==(MEASUREMENT_TYPE_SNAPSHOT_QUERY = 0x00000002, )==""\n"
144R"==(MEASUREMENT_TYPE_DELTA_QUERY = 0x00000004, )==""\n"
145R"==(MEASUREMENT_TYPE_ALL = 0x0000ffff, )==""\n"
146R"==(} TMeasurementType; )==""\n"
147R"==(typedef enum EMetricUsageFlag { )==""\n"
148R"==(USAGE_FLAG_OVERVIEW = 0x00000001, )==""\n"
149R"==(USAGE_FLAG_INDICATE = 0x00000002, )==""\n"
150R"==(USAGE_FLAG_CORRELATE )==""\n"
151R"==(= 0x00000004, )==""\n"
152R"==(USAGE_FLAG_SYSTEM = 0x00000020, )==""\n"
153R"==(USAGE_FLAG_FRAME = 0x00000040, )==""\n"
154R"==(USAGE_FLAG_BATCH = 0x00000080, )==""\n"
155R"==(USAGE_FLAG_DRAW = 0x00000100, )==""\n"
156R"==(USAGE_FLAG_TIER_1 = 0x00000400, )==""\n"
157R"==(USAGE_FLAG_TIER_2 = 0x00000800, )==""\n"
158R"==(USAGE_FLAG_TIER_3 = 0x00001000, )==""\n"
159R"==(USAGE_FLAG_TIER_4 = 0x00002000, )==""\n"
160R"==(USAGE_FLAG_GLASS_JAW = 0x00004000, )==""\n"
161R"==(USAGE_FLAG_ALL = 0x0000ffff, )==""\n"
162R"==(} TMetricUsageFlag; )==""\n"
163R"==(typedef enum ESamplingType { )==""\n"
164R"==(SAMPLING_TYPE_OA_TIMER = 0x00000001, )==""\n"
165R"==(SAMPLING_TYPE_OA_EVENT = 0x00000002, )==""\n"
166R"==(SAMPLING_TYPE_GPU_QUERY = 0x00000004, )==""\n"
167R"==(SAMPLING_TYPE_DMA_BUFFER )==""\n"
168R"==(= 0x00000008, )==""\n"
169R"==(SAMPLING_TYPE_ALL = 0x0000ffff, )==""\n"
170R"==(} TSamplingType; )==""\n"
171R"==(typedef enum EMetricCategory { )==""\n"
172R"==(GPU_RENDER = 0x0001, )==""\n"
173R"==(GPU_COMPUTE = 0x0002, )==""\n"
174R"==(GPU_MEDIA = 0x0004, )==""\n"
175R"==(GPU_GENERIC )==""\n"
176R"==(= 0x0008, )==""\n"
177R"==(} TMetricCategory; )==""\n"
178R"==(typedef enum EIoReadFlag { )==""\n"
179R"==(IO_READ_FLAG_DROP_OLD_REPORTS = 0x00000001, )==""\n"
180R"==(IO_READ_FLAG_GET_CONTEXT_ID_TAGS = 0x00000002, )==""\n"
181R"==(} TIoReadFlag; )==""\n"
182R"==(typedef enum EOverrideMode { )==""\n"
183R"==(OVERRIDE_MODE_GLOBAL = 0x0001, )==""\n"
184R"==(OVERRIDE_MODE_LOCAL = 0x0002, )==""\n"
185R"==(} TOverrideMode; )==""\n"
186R"==(typedef struct SConcurrentGroupParams_1_0 { )==""\n"
187R"==(const char *SymbolName; )==""\n"
188R"==(const char * )==""\n"
189R"==(Description; )==""\n"
190R"==(uint32_t MeasurementTypeMask; )==""\n"
191R"==(uint32_t MetricSetsCount; )==""\n"
192R"==(uint32_t IoMeasurementInformationCount; )==""\n"
193R"==(uint32_t IoGpuContextInformationCount; )==""\n"
194R"==(} TConcurrentGroupParams_1_0; )==""\n"
195R"==(typedef struct SOverrideParams_1_2 { )==""\n"
196R"==(const char *SymbolName; )==""\n"
197R"==(const char * )==""\n"
198R"==(Description; )==""\n"
199R"==(uint32_t ApiMask; )==""\n"
200R"==(uint32_t PlatformMask; )==""\n"
201R"==(uint32_t OverrideModeMask; )==""\n"
202R"==(} TOverrideParams_1_2; )==""\n"
203R"==(typedef struct SSetOverrideParams_1_2 { )==""\n"
204R"==(bool Enable; )==""\n"
205R"==(} TSetOverrideParams_1_2; )==""\n"
206R"==(typedef struct SSetFrequencyOverrideParams_1_2 : SSetOverrideParams_1_2 { )==""\n"
207R"==(uint32_t FrequencyMhz; )==""\n"
208R"==(uint32_t Pid; )==""\n"
209R"==(} TSetFrequencyOverrideParams_1_2; )==""\n"
210R"==(typedef struct SSetQueryOverrideParams_1_2 : SSetOverrideParams_1_2 { )==""\n"
211R"==(uint32_t Period; )==""\n"
212R"==(} TSetQueryOverrideParams_1_2; )==""\n"
213R"==(typedef struct SSetDriverOverrideParams_1_2 : SSetOverrideParams_1_2 { )==""\n"
214R"==(uint32_t Value; )==""\n"
215R"==(} SSetDriverOverrideParams_1_2; )==""\n"
216R"==(typedef struct SApiSpecificId_1_0 { )==""\n"
217R"==(uint32_t D3D9QueryId; )==""\n"
218R"==(uint32_t D3D9Fourcc; )==""\n"
219R"==(uint32_t D3D1XQueryId; )==""\n"
220R"==(uint32_t D3D1XDevDependentId; )==""\n"
221R"==(const char *D3D1XDevDependentName; )==""\n"
222R"==(uint32_t OGLQueryIntelId; )==""\n"
223R"==(const char *OGLQueryIntelName; )==""\n"
224R"==(uint32_t OGLQueryARBTargetId; )==""\n"
225R"==(uint32_t OCL; )==""\n"
226R"==(uint32_t HwConfigId; )==""\n"
227R"==(uint32_t placeholder[1]; )==""\n"
228R"==(} TApiSpecificId_1_0; )==""\n"
229R"==(typedef struct SMetricSetParams_1_0 { )==""\n"
230R"==(const char *SymbolName; )==""\n"
231R"==(const char *ShortName; )==""\n"
232R"==(uint32_t ApiMask; )==""\n"
233R"==(uint32_t CategoryMask; )==""\n"
234R"==(uint32_t RawReportSize; )==""\n"
235R"==(uint32_t QueryReportSize; )==""\n"
236R"==(uint32_t MetricsCount; )==""\n"
237R"==(uint32_t InformationCount; )==""\n"
238R"==(uint32_t ComplementarySetsCount; )==""\n"
239R"==(TApiSpecificId_1_0 ApiSpecificId; )==""\n"
240R"==(uint32_t PlatformMask; )==""\n"
241R"==(} TMetricSetParams_1_0; )==""\n"
242R"==(typedef struct SMetricSetParams_1_4 : SMetricSetParams_1_0 { )==""\n"
243R"==(uint32_t GtMask; )==""\n"
244R"==(} TMetricSetParams_1_4; )==""\n"
245R"==(typedef enum EMetricResultType { )==""\n"
246R"==(RESULT_UINT32, )==""\n"
247R"==(RESULT_UINT64, )==""\n"
248R"==(RESULT_BOOL, )==""\n"
249R"==(RESULT_FLOAT, )==""\n"
250R"==(RESULT_LAST )==""\n"
251R"==(} TMetricResultType; )==""\n"
252R"==(typedef enum EMetricType { )==""\n"
253R"==(METRIC_TYPE_DURATION, )==""\n"
254R"==(METRIC_TYPE_EVENT, )==""\n"
255R"==(METRIC_TYPE_EVENT_WITH_RANGE, )==""\n"
256R"==(METRIC_TYPE_THROUGHPUT, )==""\n"
257R"==(METRIC_TYPE_TIMESTAMP, )==""\n"
258R"==(METRIC_TYPE_FLAG, )==""\n"
259R"==(METRIC_TYPE_RATIO, )==""\n"
260R"==(METRIC_TYPE_RAW, )==""\n"
261R"==(METRIC_TYPE_LAST )==""\n"
262R"==(} TMetricType; )==""\n"
263R"==(typedef enum EInformationType { )==""\n"
264R"==(INFORMATION_TYPE_REPORT_REASON, )==""\n"
265R"==(INFORMATION_TYPE_VALUE, )==""\n"
266R"==(INFORMATION_TYPE_FLAG, )==""\n"
267R"==(INFORMATION_TYPE_TIMESTAMP, )==""\n"
268R"==(INFORMATION_TYPE_CONTEXT_ID_TAG, )==""\n"
269R"==(INFORMATION_TYPE_SAMPLE_PHASE, )==""\n"
270R"==(INFORMATION_TYPE_GPU_NODE, )==""\n"
271R"==(INFORMATION_TYPE_LAST )==""\n"
272R"==(} TInformationType; )==""\n"
273R"==(typedef enum EReportReason { )==""\n"
274R"==(REPORT_REASON_UNDEFINED = 0x0000, )==""\n"
275R"==(REPORT_REASON_INTERNAL_TIMER = 0x0001, )==""\n"
276R"==(REPORT_REASON_INTERNAL_TRIGGER1 = 0x0002, )==""\n"
277R"==(REPORT_REASON_INTERNAL_TRIGGER2 = 0x0004, )==""\n"
278R"==(REPORT_REASON_INTERNAL_CONTEXT_SWITCH = 0x0008, )==""\n"
279R"==(REPORT_REASON_INTERNAL_GO = 0x0010, )==""\n"
280R"==(REPORT_REASON_INTERNAL_FREQUENCY_CHANGE = 0x0020, )==""\n"
281R"==(REPORT_REASON_QUERY_DEFAULT = 0x0100, )==""\n"
282R"==(REPORT_REASON_QUERY_INTERNAL_RESOLVE = 0x0200, )==""\n"
283R"==(REPORT_REASON_QUERY_INTERNAL_CLEAR = 0x0400, )==""\n"
284R"==(} TReportReason; )==""\n"
285R"==(typedef enum ESamplePhase { )==""\n"
286R"==(SAMPLE_PHASE_END, )==""\n"
287R"==(SAMPLE_PHASE_BEGIN, )==""\n"
288R"==(SAMPLE_PHASE_LAST )==""\n"
289R"==(} TSamplePhase; )==""\n"
290R"==(typedef enum EInformationGpuNode { )==""\n"
291R"==(INFORMATION_GPUNODE_3D = 0, )==""\n"
292R"==(INFORMATION_GPUNODE_VIDEO = 1, )==""\n"
293R"==(INFORMATION_GPUNODE_BLT = 2, )==""\n"
294R"==(INFORMATION_GPUNODE_VE = 3, )==""\n"
295R"==(INFORMATION_GPUNODE_VCS2 = 4, )==""\n"
296R"==(INFORMATION_GPUNODE_REAL_MAX )==""\n"
297R"==(= 5, )==""\n"
298R"==(INFORMATION_GPUNODE_LAST )==""\n"
299R"==(} TInformationGpuNode; )==""\n"
300R"==(typedef enum EHwUnitType { )==""\n"
301R"==(HW_UNIT_GPU, )==""\n"
302R"==(HW_UNIT_SLICE, )==""\n"
303R"==(HW_UNIT_SUBSLICE, )==""\n"
304R"==(HW_UNIT_SUBSLICE_BANK, )==""\n"
305R"==(HW_UNIT_EU_UNIT, )==""\n"
306R"==(HW_UNIT_UNCORE, )==""\n"
307R"==(HW_UNIT_LAST )==""\n"
308R"==(} THwUnitType; )==""\n"
309R"==(typedef enum EDeltaFunctionType { )==""\n"
310R"==(DELTA_FUNCTION_NULL = 0, )==""\n"
311R"==(DELTA_N_BITS, )==""\n"
312R"==(DELTA_BOOL_OR, )==""\n"
313R"==(DELTA_BOOL_XOR, )==""\n"
314R"==(DELTA_GET_PREVIOUS, )==""\n"
315R"==(DELTA_GET_LAST, )==""\n"
316R"==(DELTA_NS_TIME, )==""\n"
317R"==(DELTA_FUNCTION_LAST_1_0 )==""\n"
318R"==(} TDeltaFunctionType; )==""\n"
319R"==(typedef struct SDeltaFunction_1_0 { )==""\n"
320R"==(TDeltaFunctionType FunctionType; )==""\n"
321R"==(union { )==""\n"
322R"==(uint32_t BitsCount; )==""\n"
323R"==(}; )==""\n"
324R"==(} TDeltaFunction_1_0; )==""\n"
325R"==(typedef enum EEquationElementType { )==""\n"
326R"==(EQUATION_ELEM_OPERATION, )==""\n"
327R"==(EQUATION_ELEM_RD_BITFIELD, )==""\n"
328R"==(EQUATION_ELEM_RD_UINT8, )==""\n"
329R"==(EQUATION_ELEM_RD_UINT16, )==""\n"
330R"==(EQUATION_ELEM_RD_UINT32, )==""\n"
331R"==(EQUATION_ELEM_RD_UINT64, )==""\n"
332R"==(EQUATION_ELEM_RD_FLOAT, )==""\n"
333R"==(EQUATION_ELEM_RD_40BIT_CNTR, )==""\n"
334R"==(EQUATION_ELEM_IMM_UINT64, )==""\n"
335R"==(EQUATION_ELEM_IMM_FLOAT, )==""\n"
336R"==(EQUATION_ELEM_SELF_COUNTER_VALUE, )==""\n"
337R"==(EQUATION_ELEM_GLOBAL_SYMBOL, )==""\n"
338R"==(EQUATION_ELEM_LOCAL_COUNTER_SYMBOL, )==""\n"
339R"==(EQUATION_ELEM_OTHER_SET_COUNTER_SYMBOL, )==""\n"
340R"==(EQUATION_ELEM_LOCAL_METRIC_SYMBOL, )==""\n"
341R"==(EQUATION_ELEM_OTHER_SET_METRIC_SYMBOL, )==""\n"
342R"==(EQUATION_ELEM_INFORMATION_SYMBOL, )==""\n"
343R"==(EQUATION_ELEM_STD_NORM_GPU_DURATION, )==""\n"
344R"==(EQUATION_ELEM_STD_NORM_EU_AGGR_DURATION, )==""\n"
345R"==(EQUATION_ELEM_LAST_1_0 )==""\n"
346R"==(} TEquationElementType; )==""\n"
347R"==(typedef enum EEquationOperation { )==""\n"
348R"==(EQUATION_OPER_RSHIFT, )==""\n"
349R"==(EQUATION_OPER_LSHIFT, )==""\n"
350R"==(EQUATION_OPER_AND, )==""\n"
351R"==(EQUATION_OPER_OR, )==""\n"
352R"==(EQUATION_OPER_XOR, )==""\n"
353R"==(EQUATION_OPER_XNOR, )==""\n"
354R"==(EQUATION_OPER_AND_L, )==""\n"
355R"==(EQUATION_OPER_EQUALS, )==""\n"
356R"==(EQUATION_OPER_UADD, )==""\n"
357R"==(EQUATION_OPER_USUB, )==""\n"
358R"==(EQUATION_OPER_UMUL, )==""\n"
359R"==(EQUATION_OPER_UDIV, )==""\n"
360R"==(EQUATION_OPER_FADD, )==""\n"
361R"==(EQUATION_OPER_FSUB, )==""\n"
362R"==(EQUATION_OPER_FMUL, )==""\n"
363R"==(EQUATION_OPER_FDIV, )==""\n"
364R"==(EQUATION_OPER_UGT, )==""\n"
365R"==(EQUATION_OPER_ULT, )==""\n"
366R"==(EQUATION_OPER_UGTE, )==""\n"
367R"==(EQUATION_OPER_ULTE, )==""\n"
368R"==(EQUATION_OPER_FGT, )==""\n"
369R"==(EQUATION_OPER_FLT, )==""\n"
370R"==(EQUATION_OPER_FGTE, )==""\n"
371R"==(EQUATION_OPER_FLTE, )==""\n"
372R"==(EQUATION_OPER_UMIN, )==""\n"
373R"==(EQUATION_OPER_UMAX, )==""\n"
374R"==(EQUATION_OPER_FMIN, )==""\n"
375R"==(EQUATION_OPER_FMAX, )==""\n"
376R"==(EQUATION_OPER_LAST_1_0 )==""\n"
377R"==(} TEquationOperation; )==""\n"
378R"==(typedef struct SReadParams_1_0 { )==""\n"
379R"==(uint32_t ByteOffset; )==""\n"
380R"==(uint32_t BitOffset; )==""\n"
381R"==(uint32_t BitsCount; )==""\n"
382R"==(uint32_t ByteOffsetExt; )==""\n"
383R"==(} TReadParams_1_0; )==""\n"
384R"==(typedef struct SEquationElement_1_0 { )==""\n"
385R"==(TEquationElementType Type; )==""\n"
386R"==(union { )==""\n"
387R"==(uint64_t ImmediateUInt64; )==""\n"
388R"==(float ImmediateFloat; )==""\n"
389R"==(TEquationOperation Operation; )==""\n"
390R"==(TReadParams_1_0 ReadParams; )==""\n"
391R"==(}; )==""\n"
392R"==(char *SymbolName; )==""\n"
393R"==(} TEquationElement_1_0; )==""\n"
394R"==(/*****************************************************************************\ )==""\n"
395R"==(Class: )==""\n"
396R"==(IEquation_1_0 )==""\n"
397R"==(Description: )==""\n"
398R"==(Abstract interface for the equation object. )==""\n"
399R"==(\*****************************************************************************/ )==""\n"
400R"==(class IEquation_1_0 { )==""\n"
401R"==(public: )==""\n"
402R"==(virtual ~IEquation_1_0(); )==""\n"
403R"==(virtual uint32_t GetEquationElementsCount(void); )==""\n"
404R"==(virtual TEquationElement_1_0 *GetEquationElement(uint32_t index); )==""\n"
405R"==(}; )==""\n"
406R"==(typedef struct SMetricParams_1_0 { )==""\n"
407R"==(uint32_t IdInSet; )==""\n"
408R"==(uint32_t GroupId; )==""\n"
409R"==(const char *SymbolName; )==""\n"
410R"==(const char * )==""\n"
411R"==(ShortName; )==""\n"
412R"==(const char *GroupName; )==""\n"
413R"==(const char *LongName; )==""\n"
414R"==(const char *DxToOglAlias; )==""\n"
415R"==(uint32_t UsageFlagsMask; )==""\n"
416R"==(uint32_t ApiMask; )==""\n"
417R"==(TMetricResultType ResultType; )==""\n"
418R"==(const char *MetricResultUnits; )==""\n"
419R"==(TMetricType MetricType; )==""\n"
420R"==(uint64_t )==""\n"
421R"==(LowWatermark; )==""\n"
422R"==(uint64_t )==""\n"
423R"==(HighWatermark; )==""\n"
424R"==(THwUnitType HwUnitType; )==""\n"
425R"==(IEquation_1_0 *IoReadEquation; )==""\n"
426R"==(IEquation_1_0 *QueryReadEquation; )==""\n"
427R"==(TDeltaFunction_1_0 DeltaFunction; )==""\n"
428R"==(IEquation_1_0 *NormEquation; )==""\n"
429R"==(IEquation_1_0 *MaxValueEquation; )==""\n"
430R"==(} TMetricParams_1_0; )==""\n"
431R"==(typedef struct SInformationParams_1_0 { )==""\n"
432R"==(uint32_t IdInSet; )==""\n"
433R"==(const char *SymbolName; )==""\n"
434R"==(const char *ShortName; )==""\n"
435R"==(const char *GroupName; )==""\n"
436R"==(const char *LongName; )==""\n"
437R"==(uint32_t ApiMask; )==""\n"
438R"==(TInformationType InfoType; )==""\n"
439R"==(const char *InfoUnits; )==""\n"
440R"==(IEquation_1_0 *IoReadEquation; )==""\n"
441R"==(IEquation_1_0 *QueryReadEquation; )==""\n"
442R"==(TDeltaFunction_1_0 OverflowFunction; )==""\n"
443R"==(} TInformationParams_1_0; )==""\n"
444R"==(/*****************************************************************************\ )==""\n"
445R"==(Class: )==""\n"
446R"==(IInformation_1_0 )==""\n"
447R"==(Description: )==""\n"
448R"==(Abstract interface for the measurement information parameter. )==""\n"
449R"==(\*****************************************************************************/ )==""\n"
450R"==(class IInformation_1_0 { )==""\n"
451R"==(public: )==""\n"
452R"==(virtual ~IInformation_1_0(); )==""\n"
453R"==(virtual TInformationParams_1_0 *GetParams(); )==""\n"
454R"==(}; )==""\n"
455R"==(/*****************************************************************************\ )==""\n"
456R"==(Class: )==""\n"
457R"==(IMetric_1_0 )==""\n"
458R"==(Description: )==""\n"
459R"==(Abstract interface for the metric that is sampled. )==""\n"
460R"==(\*****************************************************************************/ )==""\n"
461R"==(class IMetric_1_0 { )==""\n"
462R"==(public: )==""\n"
463R"==(virtual ~IMetric_1_0(); )==""\n"
464R"==(virtual TMetricParams_1_0 *GetParams(); )==""\n"
465R"==(}; )==""\n"
466R"==(/*****************************************************************************\ )==""\n"
467R"==(Class: )==""\n"
468R"==(IMetricSet_1_0 )==""\n"
469R"==(Description: )==""\n"
470R"==(Abstract interface for the metric sets mapping to different HW configuration that should be used )==""\n"
471R"==(exclusively to each other metric set in the concurrent group. )==""\n"
472R"==(\*****************************************************************************/ )==""\n"
473R"==(class IMetricSet_1_0 { )==""\n"
474R"==(public: )==""\n"
475R"==(virtual ~IMetricSet_1_0(); )==""\n"
476R"==(virtual TMetricSetParams_1_0 *GetParams(void); )==""\n"
477R"==(virtual IMetric_1_0 *GetMetric(uint32_t index); )==""\n"
478R"==(virtual IInformation_1_0 *GetInformation(uint32_t index); )==""\n"
479R"==(virtual IMetricSet_1_0 *GetComplementaryMetricSet(uint32_t index); )==""\n"
480R"==(virtual TCompletionCode Activate(void); )==""\n"
481R"==(virtual TCompletionCode Deactivate(void); )==""\n"
482R"==(virtual IMetric_1_0 *AddCustomMetric(const char *symbolName, )==""\n"
483R"==(const char *shortName, const char *groupName, const char *longName, )==""\n"
484R"==(const char *dxToOglAlias, uint32_t usageFlagsMask, uint32_t apiMask, )==""\n"
485R"==(TMetricResultType resultType, const char *resultUnits, )==""\n"
486R"==(TMetricType metricType, int64_t loWatermark, int64_t hiWatermark, )==""\n"
487R"==(THwUnitType hwType, const char *ioReadEquation, )==""\n"
488R"==(const char *deltaFunction, const char *queryReadEquation, )==""\n"
489R"==(const char *normalizationEquation, const char *maxValueEquation, )==""\n"
490R"==(const char *signalName); )==""\n"
491R"==(}; )==""\n"
492R"==(/*****************************************************************************\ )==""\n"
493R"==(Class: )==""\n"
494R"==(IMetricSet_1_1 )==""\n"
495R"==(Description: )==""\n"
496R"==(Updated 1.0 version to use with 1.1 interface version. )==""\n"
497R"==(Introduces an ability to calculate metrics from raw data. )==""\n"
498R"==(New: )==""\n"
499R"==(- SetApiFiltering )==""\n"
500R"==(- CalculateMetrics )==""\n"
501R"==(- CalculateIoMeasurementInformation )==""\n"
502R"==(\*****************************************************************************/ )==""\n"
503R"==(class IMetricSet_1_1 : public IMetricSet_1_0 { )==""\n"
504R"==(public: )==""\n"
505R"==(virtual ~IMetricSet_1_1(); )==""\n"
506R"==(virtual TCompletionCode SetApiFiltering(uint32_t apiMask); )==""\n"
507R"==(virtual TCompletionCode CalculateMetrics(const unsigned char *rawData, )==""\n"
508R"==(uint32_t rawDataSize, TTypedValue_1_0 *out, uint32_t outSize, )==""\n"
509R"==(uint32_t *outReportCount, bool enableContextFiltering); )==""\n"
510R"==(virtual TCompletionCode CalculateIoMeasurementInformation( )==""\n"
511R"==(TTypedValue_1_0 *out, uint32_t outSize); )==""\n"
512R"==(}; )==""\n"
513R"==(/*****************************************************************************\ )==""\n"
514R"==(Class: )==""\n"
515R"==(IMetricSet_1_4 )==""\n"
516R"==(Description: )==""\n"
517R"==(Updated 1.1 version to use with 1.4 interface version. )==""\n"
518R"==(Extends set params with gtType information. )==""\n"
519R"==(Updates: )==""\n"
520R"==(- GetParams )==""\n"
521R"==(\*****************************************************************************/ )==""\n"
522R"==(class IMetricSet_1_4 : public IMetricSet_1_1 { )==""\n"
523R"==(public: )==""\n"
524R"==(virtual ~IMetricSet_1_4(); )==""\n"
525R"==(virtual TMetricSetParams_1_4 *GetParams(void); )==""\n"
526R"==(}; )==""\n"
527R"==(/*****************************************************************************\ )==""\n"
528R"==(Class: )==""\n"
529R"==(IMetricSet_1_5 )==""\n"
530R"==(Description: )==""\n"
531R"==(Updated 1.4 version to use with 1.5 interface version. )==""\n"
532R"==(Adds an ability to calculate MaxValueEquations (maximal value) for each metric. )==""\n"
533R"==(Param 'enableContextFiltering' becomes deprecated. )==""\n"
534R"==(Updates: )==""\n"
535R"==(- GetComplementaryMetricSet )==""\n"
536R"==(- CalculateMetrics )==""\n"
537R"==(\*****************************************************************************/ )==""\n"
538R"==(class IMetricSet_1_5 : public IMetricSet_1_4 { )==""\n"
539R"==(public: )==""\n"
540R"==(using IMetricSet_1_1::CalculateMetrics; )==""\n"
541R"==(virtual IMetricSet_1_5 *GetComplementaryMetricSet(uint32_t index); )==""\n"
542R"==(virtual TCompletionCode CalculateMetrics(const unsigned char *rawData, )==""\n"
543R"==(uint32_t rawDataSize, TTypedValue_1_0 *out, uint32_t outSize, )==""\n"
544R"==(uint32_t *outReportCount, TTypedValue_1_0 *outMaxValues, )==""\n"
545R"==(uint32_t outMaxValuesSize); )==""\n"
546R"==(}; )==""\n"
547R"==(/*****************************************************************************\ )==""\n"
548R"==(Class: )==""\n"
549R"==(IConcurrentGroup_1_0 )==""\n"
550R"==(Description: )==""\n"
551R"==(Abstract interface for the metrics groups that can be collected concurrently to another group. )==""\n"
552R"==(\*****************************************************************************/ )==""\n"
553R"==(class IConcurrentGroup_1_0 { )==""\n"
554R"==(public: )==""\n"
555R"==(virtual ~IConcurrentGroup_1_0(); )==""\n"
556R"==(virtual TConcurrentGroupParams_1_0 *GetParams(void); )==""\n"
557R"==(virtual IMetricSet_1_0 *GetMetricSet(uint32_t index); )==""\n"
558R"==(virtual TCompletionCode OpenIoStream(IMetricSet_1_0 *metricSet, )==""\n"
559R"==(uint32_t processId, uint32_t *nsTimerPeriod, )==""\n"
560R"==(uint32_t *oaBufferSize); )==""\n"
561R"==(virtual TCompletionCode ReadIoStream( )==""\n"
562R"==(uint32_t *reportsCount, char *reportData, uint32_t readFlags); )==""\n"
563R"==(virtual TCompletionCode CloseIoStream(void); )==""\n"
564R"==(virtual TCompletionCode WaitForReports(uint32_t milliseconds); )==""\n"
565R"==(virtual IInformation_1_0 *GetIoMeasurementInformation(uint32_t index); )==""\n"
566R"==(virtual IInformation_1_0 *GetIoGpuContextInformation(uint32_t index); )==""\n"
567R"==(}; )==""\n"
568R"==(/*****************************************************************************\ )==""\n"
569R"==(Class: )==""\n"
570R"==(IConcurrentGroup_1_1 )==""\n"
571R"==(Description: )==""\n"
572R"==(Updated 1.0 version to use with 1.1 interface version. )==""\n"
573R"==(Updates: )==""\n"
574R"==(- GetMetricSet )==""\n"
575R"==(\*****************************************************************************/ )==""\n"
576R"==(class IConcurrentGroup_1_1 : public IConcurrentGroup_1_0 { )==""\n"
577R"==(public: )==""\n"
578R"==(virtual IMetricSet_1_1 *GetMetricSet(uint32_t index); )==""\n"
579R"==(}; )==""\n"
580R"==(/*****************************************************************************\ )==""\n"
581R"==(Class: )==""\n"
582R"==(IConcurrentGroup_1_3 )==""\n"
583R"==(Description: )==""\n"
584R"==(Updated 1.1 version to use with 1.3 interface version. )==""\n"
585R"==(Introduces setting Stream Sampling Type. )==""\n"
586R"==(New: )==""\n"
587R"==(- SetIoStreamSamplingType )==""\n"
588R"==(\*****************************************************************************/ )==""\n"
589R"==(class IConcurrentGroup_1_3 : public IConcurrentGroup_1_1 { )==""\n"
590R"==(public: )==""\n"
591R"==(virtual TCompletionCode SetIoStreamSamplingType(TSamplingType type); )==""\n"
592R"==(}; )==""\n"
593R"==(/*****************************************************************************\ )==""\n"
594R"==(Class: )==""\n"
595R"==(IConcurrentGroup_1_5 )==""\n"
596R"==(Description: )==""\n"
597R"==(Updated 1.3 version to use with 1.5 interface version. )==""\n"
598R"==(Updates: )==""\n"
599R"==(- GetMetricSet )==""\n"
600R"==(\*****************************************************************************/ )==""\n"
601R"==(class IConcurrentGroup_1_5 : public IConcurrentGroup_1_3 { )==""\n"
602R"==(public: )==""\n"
603R"==(virtual IMetricSet_1_5 *GetMetricSet(uint32_t index); )==""\n"
604R"==(}; )==""\n"
605R"==(/*****************************************************************************\ )==""\n"
606R"==(Class: )==""\n"
607R"==(IOverride_1_2 )==""\n"
608R"==(Description: )==""\n"
609R"==(Abstract interface for Metrics Device overrides. )==""\n"
610R"==(\*****************************************************************************/ )==""\n"
611R"==(class IOverride_1_2 { )==""\n"
612R"==(public: )==""\n"
613R"==(virtual ~IOverride_1_2(); )==""\n"
614R"==(virtual TOverrideParams_1_2 *GetParams(void); )==""\n"
615R"==(virtual TCompletionCode SetOverride( )==""\n"
616R"==(TSetOverrideParams_1_2 *params, uint32_t paramsSize); )==""\n"
617R"==(}; )==""\n"
618R"==(/*****************************************************************************\ )==""\n"
619R"==(Class: )==""\n"
620R"==(IMetricsDevice_1_0 )==""\n"
621R"==(Description: )==""\n"
622R"==(Abstract interface for the GPU metrics root object. )==""\n"
623R"==(\*****************************************************************************/ )==""\n"
624R"==(class IMetricsDevice_1_0 { )==""\n"
625R"==(public: )==""\n"
626R"==(virtual ~IMetricsDevice_1_0(); )==""\n"
627R"==(virtual TMetricsDeviceParams_1_0 *GetParams(void); )==""\n"
628R"==(virtual IConcurrentGroup_1_0 *GetConcurrentGroup(uint32_t index); )==""\n"
629R"==(virtual TGlobalSymbol_1_0 *GetGlobalSymbol(uint32_t index); )==""\n"
630R"==(virtual TTypedValue_1_0 *GetGlobalSymbolValueByName(const char *name); )==""\n"
631R"==(virtual TCompletionCode GetLastError(void); )==""\n"
632R"==(virtual TCompletionCode GetGpuCpuTimestamps(uint64_t *gpuTimestampNs, )==""\n"
633R"==(uint64_t *cpuTimestampNs, uint32_t *cpuId); )==""\n"
634R"==(}; )==""\n"
635R"==(/*****************************************************************************\ )==""\n"
636R"==(Class: )==""\n"
637R"==(IMetricsDevice_1_1 )==""\n"
638R"==(Description: )==""\n"
639R"==(Updated 1.0 version to use with 1.1 interface version. )==""\n"
640R"==(Updates: )==""\n"
641R"==(- GetConcurrentGroup )==""\n"
642R"==(\*****************************************************************************/ )==""\n"
643R"==(class IMetricsDevice_1_1 : public IMetricsDevice_1_0 { )==""\n"
644R"==(public: )==""\n"
645R"==(virtual IConcurrentGroup_1_1 *GetConcurrentGroup(uint32_t index); )==""\n"
646R"==(}; )==""\n"
647R"==(/*****************************************************************************\ )==""\n"
648R"==(Class: )==""\n"
649R"==(IMetricsDevice_1_2 )==""\n"
650R"==(Description: )==""\n"
651R"==(Updated 1.1 version to use with 1.2 interface version. )==""\n"
652R"==(Introduces an interface for getting overrides. )==""\n"
653R"==(Updates: )==""\n"
654R"==(- GetParams )==""\n"
655R"==(New: )==""\n"
656R"==(- GetOverride )==""\n"
657R"==(- GetOverrideByName )==""\n"
658R"==(\*****************************************************************************/ )==""\n"
659R"==(class IMetricsDevice_1_2 : public IMetricsDevice_1_1 { )==""\n"
660R"==(public: )==""\n"
661R"==(virtual TMetricsDeviceParams_1_2 *GetParams(void); )==""\n"
662R"==(virtual IOverride_1_2 *GetOverride(uint32_t index); )==""\n"
663R"==(virtual IOverride_1_2 *GetOverrideByName(const char *symbolName); )==""\n"
664R"==(}; )==""\n"
665R"==(/*****************************************************************************\ )==""\n"
666R"==(Class: )==""\n"
667R"==(IMetricsDevice_1_5 )==""\n"
668R"==(Description: )==""\n"
669R"==(Updated 1.2 version to use with 1.5 interface version. )==""\n"
670R"==(Updates: )==""\n"
671R"==(- GetConcurrentGroup )==""\n"
672R"==(\*****************************************************************************/ )==""\n"
673R"==(class IMetricsDevice_1_5 : public IMetricsDevice_1_2 { )==""\n"
674R"==(public: )==""\n"
675R"==(virtual IConcurrentGroup_1_5 *GetConcurrentGroup(uint32_t index); )==""\n"
676R"==(}; )==""\n"
677R"==(#ifdef __cplusplus )==""\n"
678R"==(extern "C" { )==""\n"
679R"==(#endif )==""\n"
680R"==(typedef TCompletionCode(MD_STDCALL *OpenMetricsDevice_fn)( )==""\n"
681R"==(IMetricsDevice_1_5 **device); )==""\n"
682R"==(typedef TCompletionCode(MD_STDCALL *OpenMetricsDeviceFromFile_fn)( )==""\n"
683R"==(const char *fileName, void *openParams, IMetricsDevice_1_5 **device); )==""\n"
684R"==(typedef TCompletionCode(MD_STDCALL *CloseMetricsDevice_fn)( )==""\n"
685R"==(IMetricsDevice_1_5 *device); )==""\n"
686R"==(typedef TCompletionCode(MD_STDCALL *SaveMetricsDeviceToFile_fn)( )==""\n"
687R"==(const char *fileName, void *saveParams, IMetricsDevice_1_5 *device); )==""\n"
688R"==(#ifdef __cplusplus )==""\n"
689R"==(} )==""\n"
690R"==(#endif )==""\n"
691R"==(}; )==""\n"
692R"==(#endif )==""\n"
693R"==()==";
694}
695}
696}
697}