744 lines
25 KiB
C++
744 lines
25 KiB
C++
/*========================== begin_copyright_notice ============================
|
|
|
|
Copyright (C) 2020-2023 Intel Corporation
|
|
|
|
SPDX-License-Identifier: MIT
|
|
|
|
============================= end_copyright_notice ===========================*/
|
|
|
|
/*
|
|
@file metrics_library_api_1_0.h
|
|
|
|
@brief Interface for Metrics Library umd dll.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <stdint.h>
|
|
|
|
#ifdef _MSC_VER
|
|
#define ML_STDCALL __stdcall
|
|
#else
|
|
#define ML_STDCALL
|
|
#endif
|
|
|
|
namespace MetricsLibraryApi
|
|
{
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Metrics Library handles.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
#define METRICS_LIBRARY_HANDLE( Object ) typedef struct Object##Handle_1_0 \
|
|
{ \
|
|
void* data; \
|
|
Object##Handle_1_0( void ) { data = nullptr; } \
|
|
Object##Handle_1_0( void* handle ) { data = handle; } \
|
|
bool IsValid( void ) const { return data != nullptr; } \
|
|
} Object##Handle_1_0;
|
|
|
|
METRICS_LIBRARY_HANDLE( Client )
|
|
METRICS_LIBRARY_HANDLE( ClientMemory )
|
|
METRICS_LIBRARY_HANDLE( Configuration )
|
|
METRICS_LIBRARY_HANDLE( Context )
|
|
METRICS_LIBRARY_HANDLE( Marker )
|
|
METRICS_LIBRARY_HANDLE( Override )
|
|
METRICS_LIBRARY_HANDLE( Query )
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Client api types.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
enum class ClientApi : uint32_t
|
|
{
|
|
Unknown = 0,
|
|
// 1-5 reserved.
|
|
OpenCL = 6,
|
|
// 7-8 reserved.
|
|
OneApi = 9,
|
|
// 10 reserved.
|
|
// ...
|
|
Last
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Client gpu generation types.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
enum class ClientGen : uint32_t
|
|
{
|
|
Unknown = 0,
|
|
Gen9 = 1,
|
|
Gen9LP = 2,
|
|
Gen11 = 4,
|
|
Gen11LP = 5,
|
|
Gen12 = 6,
|
|
XeHP = 9,
|
|
XeHPG = 10,
|
|
XeHPC = 11,
|
|
// ...
|
|
Last
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Library object types.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
enum class ObjectType : uint32_t
|
|
{
|
|
Unknown = 0,
|
|
|
|
// Context objects:
|
|
Context = 10000,
|
|
|
|
// Query objects:
|
|
QueryHwCounters = 20000,
|
|
QueryPipelineTimestamps = 20001,
|
|
QueryHwCountersCopyReports = 20002,
|
|
|
|
// Configuration objects:
|
|
ConfigurationHwCountersOa = 30000,
|
|
ConfigurationHwCountersUser,
|
|
|
|
// Override objects:
|
|
OverrideUser = 40000,
|
|
OverrideNullHardware,
|
|
OverrideFlushCaches,
|
|
OverridePoshQuery,
|
|
OverrideDisablePoshPrimitives,
|
|
|
|
// Markers:
|
|
MarkerStreamUser = 50000,
|
|
MarkerStreamUserExtended = 50001,
|
|
|
|
// ...
|
|
Last
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Client options types.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
enum class ClientOptionsType : uint32_t
|
|
{
|
|
Posh = 0,
|
|
Ptbr,
|
|
Compute,
|
|
Tbs,
|
|
SubDevice,
|
|
SubDeviceIndex,
|
|
SubDeviceCount,
|
|
WorkloadPartition,
|
|
// ...
|
|
Last
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Status code types.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
enum class StatusCode : uint32_t
|
|
{
|
|
Success = 0,
|
|
Failed,
|
|
IncorrectVersion,
|
|
IncorrectParameter,
|
|
IncorrectSlot,
|
|
IncorrectObject,
|
|
InsufficientSpace,
|
|
NotInitialized,
|
|
NotSupported,
|
|
NotImplemented,
|
|
NullPointer,
|
|
OutOfMemory,
|
|
UnknownGen,
|
|
TbsUnableToEnable,
|
|
TbsUnableToRead,
|
|
ReportNotReady,
|
|
ReportLost,
|
|
ReportInconsistent,
|
|
CannotOpenFile,
|
|
ReportContextSwitchLost,
|
|
ReportWithoutWorkload,
|
|
ContextMismatch,
|
|
ReportWithEmptyConfiguration,
|
|
ReportQueryModeMismatch,
|
|
// ...
|
|
Last
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Value types.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
enum class ValueType : uint8_t
|
|
{
|
|
Uint8 = 0,
|
|
Int8,
|
|
Uint16,
|
|
Int16,
|
|
Uint32,
|
|
Int32,
|
|
Uint64,
|
|
Int64,
|
|
Float,
|
|
Double,
|
|
Bool,
|
|
String,
|
|
// ...
|
|
Last
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Gpu configuration activation types.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
enum class GpuConfigurationActivationType : uint32_t
|
|
{
|
|
EscapeCode = 0,
|
|
Tbs,
|
|
// ...
|
|
Last
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Gpu command buffer types.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
enum class GpuCommandBufferType : uint32_t
|
|
{
|
|
Render = 0,
|
|
Posh,
|
|
Tile,
|
|
Compute,
|
|
// ...
|
|
Last
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Memory types.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
enum class MemoryType : uint32_t
|
|
{
|
|
Query = 0,
|
|
CommandBuffer,
|
|
Cpu,
|
|
// ...
|
|
Last
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Memory flags.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
enum class MemoryFlags : uint32_t
|
|
{
|
|
Linear = 1 << 0,
|
|
Cachable = 1 << 1
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Parameter types.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
enum class ParameterType : uint32_t
|
|
{
|
|
QueryHwCountersReportApiSize = 0,
|
|
QueryHwCountersReportGpuSize,
|
|
QueryPipelineTimestampsReportApiSize,
|
|
QueryPipelineTimestampsReportGpuSize,
|
|
LibraryBuildNumber,
|
|
// ...
|
|
Last
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Linux adapter types.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
enum class LinuxAdapterType : uint8_t
|
|
{
|
|
DrmFileDescriptor = 0,
|
|
// ...
|
|
Last
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Client type.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct ClientType_1_0
|
|
{
|
|
ClientApi Api;
|
|
ClientGen Gen;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Typed value.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct TypedValue_1_0
|
|
{
|
|
ValueType Type;
|
|
|
|
union
|
|
{
|
|
int8_t ValueInt8;
|
|
uint8_t ValueUInt8;
|
|
int16_t ValueInt16;
|
|
uint16_t ValueUInt16;
|
|
int32_t ValueInt32;
|
|
uint32_t ValueUInt32;
|
|
int64_t ValueInt64;
|
|
uint64_t ValueUInt64;
|
|
float ValueFloat;
|
|
bool ValueBool;
|
|
const char* ValueString;
|
|
};
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Gpu memory data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct GpuMemory_1_0
|
|
{
|
|
uint64_t GpuAddress; // Virtual gpu address.
|
|
void* CpuAddress; // Locked cpu address.
|
|
ClientMemoryHandle_1_0 HandleMemory; // Driver's handle.
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Query creation data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct QueryCreateData_1_0
|
|
{
|
|
ContextHandle_1_0 HandleContext;
|
|
ObjectType Type;
|
|
uint32_t Slots;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Query hw counters command buffer data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct CommandBufferQueryHwCounters_1_0
|
|
{
|
|
QueryHandle_1_0 Handle;
|
|
ConfigurationHandle_1_0 HandleUserConfiguration;
|
|
uint32_t Slot;
|
|
uint64_t MarkerUser;
|
|
uint64_t MarkerDriver;
|
|
uint64_t EndTag;
|
|
bool Begin;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Copy query hw counter reports command buffer data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct CommandBufferQueryHwCountersCopyReports_1_0
|
|
{
|
|
QueryHandle_1_0 HandleSource;
|
|
QueryHandle_1_0 HandleTarget;
|
|
|
|
GpuMemory_1_0 AddressSource;
|
|
GpuMemory_1_0 AddressTarget;
|
|
|
|
uint32_t SlotSource;
|
|
uint32_t SlotTarget;
|
|
|
|
uint32_t SlotCount;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Query pipeline timestamps command buffer data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct CommandBufferQueryPipelineTimestamps_1_0
|
|
{
|
|
QueryHandle_1_0 Handle;
|
|
uint64_t EndTag;
|
|
bool Begin;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Overrides commands data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct CommandBufferOverride_1_0
|
|
{
|
|
OverrideHandle_1_0 Handle;
|
|
bool Enable;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Marker stream user commands data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct CommandBufferMarkerStreamUser_1_0
|
|
{
|
|
uint32_t Reserved : 7;
|
|
uint32_t Value : 25;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Marker stream user extended commands data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct CommandBufferMarkerStreamUserExtended_1_0
|
|
{
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Command buffer data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct CommandBufferData_1_0
|
|
{
|
|
ContextHandle_1_0 HandleContext; // Context handle.
|
|
ObjectType CommandsType; // Commands type related to library object.
|
|
GpuCommandBufferType Type; // Gpu command buffer type.
|
|
GpuMemory_1_0 Allocation; // Gpu memory allocation.
|
|
void* Data; // Gpu command buffer data.
|
|
uint32_t Size; // Gpu command buffer size.
|
|
uint32_t Offset; // Gpu command buffer offset from beginning.
|
|
|
|
union
|
|
{
|
|
CommandBufferQueryHwCounters_1_0 QueryHwCounters;
|
|
CommandBufferQueryHwCountersCopyReports_1_0 QueryHwCountersCopyReports;
|
|
CommandBufferQueryPipelineTimestamps_1_0 QueryPipelineTimestamps;
|
|
CommandBufferOverride_1_0 Override;
|
|
CommandBufferMarkerStreamUser_1_0 MarkerStreamUser;
|
|
CommandBufferMarkerStreamUserExtended_1_0 MarkerStreamUserExtended;
|
|
};
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Command buffer size.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct CommandBufferSize_1_0
|
|
{
|
|
uint32_t GpuMemorySize;
|
|
uint32_t GpuMemoryPatchesCount;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Override create data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct OverrideCreateData_1_0
|
|
{
|
|
ContextHandle_1_0 HandleContext;
|
|
ObjectType Type;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Marker creation data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct MarkerCreateData_1_0
|
|
{
|
|
ContextHandle_1_0 HandleContext;
|
|
ObjectType Type;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Configuration creation data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct ConfigurationCreateData_1_0
|
|
{
|
|
ContextHandle_1_0 HandleContext;
|
|
ObjectType Type;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Configuration activate data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct ConfigurationActivateData_1_0
|
|
{
|
|
GpuConfigurationActivationType Type;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Get query report.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct GetReportQuery_1_0
|
|
{
|
|
QueryHandle_1_0 Handle; // Input.
|
|
|
|
uint32_t Slot; // Input.
|
|
uint32_t SlotsCount; // Input.
|
|
|
|
uint32_t DataSize; // Input.
|
|
void* Data; // Input / output.
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Get override report.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct GetReportOverride_1_0
|
|
{
|
|
OverrideHandle_1_0 Handle; // Input.
|
|
|
|
uint32_t DataSize; // Input.
|
|
void* Data; // Output.
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Get data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct GetReportData_1_0
|
|
{
|
|
ObjectType Type;
|
|
|
|
union
|
|
{
|
|
GetReportQuery_1_0 Query;
|
|
GetReportOverride_1_0 Override;
|
|
};
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Gpu memory allocate data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct GpuMemoryAllocateData_1_0
|
|
{
|
|
MemoryType Type; // Input.
|
|
MemoryFlags Flags; // Input.
|
|
uint32_t Size; // Input.
|
|
void* Data; // Output.
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Cpu memory allocate data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct CpuMemoryAllocateData_1_0
|
|
{
|
|
uint32_t Size; // Input.
|
|
void* Data; // Output.
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Metrics Library functions.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
using GetParameterFunction_1_0 = StatusCode( ML_STDCALL* ) ( const ParameterType parameter, ValueType* type, TypedValue_1_0* value );
|
|
|
|
using CommandBufferGetFunction_1_0 = StatusCode( ML_STDCALL* ) ( const CommandBufferData_1_0* data );
|
|
using CommandBufferGetSizeFunction_1_0 = StatusCode( ML_STDCALL* ) ( const CommandBufferData_1_0* data, CommandBufferSize_1_0* size );
|
|
|
|
using QueryCreateFunction_1_0 = StatusCode( ML_STDCALL* ) ( const QueryCreateData_1_0* createData, QueryHandle_1_0* handle );
|
|
using QueryDeleteFunction_1_0 = StatusCode( ML_STDCALL* ) ( const QueryHandle_1_0 handle );
|
|
|
|
using OverrideCreateFunction_1_0 = StatusCode( ML_STDCALL* ) ( const OverrideCreateData_1_0* createData, OverrideHandle_1_0* handle );
|
|
using OverrideDeleteFunction_1_0 = StatusCode( ML_STDCALL* ) ( const OverrideHandle_1_0 handle );
|
|
|
|
using MarkerCreateFunction_1_0 = StatusCode( ML_STDCALL* ) ( const MarkerCreateData_1_0* createData, MarkerHandle_1_0* handle );
|
|
using MarkerDeleteFunction_1_0 = StatusCode( ML_STDCALL* ) ( const MarkerHandle_1_0 handle );
|
|
|
|
using ConfigurationCreateFunction_1_0 = StatusCode( ML_STDCALL* ) ( const ConfigurationCreateData_1_0* createData, ConfigurationHandle_1_0* handle );
|
|
using ConfigurationActivateFunction_1_0 = StatusCode( ML_STDCALL* ) ( const ConfigurationHandle_1_0 handle, const ConfigurationActivateData_1_0* activateData );
|
|
using ConfigurationDeactivateFunction_1_0 = StatusCode( ML_STDCALL* ) ( const ConfigurationHandle_1_0 handle );
|
|
using ConfigurationDeleteFunction_1_0 = StatusCode( ML_STDCALL* ) ( const ConfigurationHandle_1_0 handle );
|
|
|
|
using GetDataFunction_1_0 = StatusCode( ML_STDCALL* ) ( GetReportData_1_0* data );
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Metrics Library callbacks.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
using CommandBufferFlushCallback_1_0 = StatusCode ( ML_STDCALL* ) ( const ClientHandle_1_0 handle );
|
|
using CommandBufferHasSpaceCallback_1_0 = StatusCode ( ML_STDCALL* ) ( const ClientHandle_1_0 handle );
|
|
using CommandBufferGetSpaceCallback_1_0 = StatusCode ( ML_STDCALL* ) ( const ClientHandle_1_0 handle );
|
|
|
|
using GpuMemoryAllocateCallback_1_0 = StatusCode ( ML_STDCALL* ) ( const ClientHandle_1_0 handle, GpuMemoryAllocateData_1_0* allocationData, ClientMemoryHandle_1_0* handleMemory );
|
|
using GpuMemoryPatchCallback_1_0 = StatusCode ( ML_STDCALL* ) ( const ClientHandle_1_0 handle, const ClientMemoryHandle_1_0 handleMemory, const uint64_t allocationOffset, const uint64_t buffer );
|
|
using GpuMemoryReleaseCallback_1_0 = StatusCode ( ML_STDCALL* ) ( const ClientHandle_1_0 handle );
|
|
|
|
using CpuMemoryAllocateCallback_1_0 = StatusCode ( ML_STDCALL* ) ( const ClientHandle_1_0 handle, CpuMemoryAllocateData_1_0* allocationData, ClientMemoryHandle_1_0* handleMemory );
|
|
using CpuMemoryReleaseCallback_1_0 = StatusCode ( ML_STDCALL* ) ( const ClientHandle_1_0 handle );
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Metrics Library interface.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct Interface_1_0
|
|
{
|
|
GetParameterFunction_1_0 GetParameter;
|
|
|
|
CommandBufferGetFunction_1_0 CommandBufferGet;
|
|
CommandBufferGetSizeFunction_1_0 CommandBufferGetSize;
|
|
|
|
QueryCreateFunction_1_0 QueryCreate;
|
|
QueryDeleteFunction_1_0 QueryDelete;
|
|
|
|
OverrideCreateFunction_1_0 OverrideCreate;
|
|
OverrideDeleteFunction_1_0 OverrideDelete;
|
|
|
|
MarkerCreateFunction_1_0 MarkerCreate;
|
|
MarkerDeleteFunction_1_0 MarkerDelete;
|
|
|
|
ConfigurationCreateFunction_1_0 ConfigurationCreate;
|
|
ConfigurationActivateFunction_1_0 ConfigurationActivate;
|
|
ConfigurationDeactivateFunction_1_0 ConfigurationDeactivate;
|
|
ConfigurationDeleteFunction_1_0 ConfigurationDelete;
|
|
|
|
GetDataFunction_1_0 GetData;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Metrics Library interface callbacks.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct ClientCallbacks_1_0
|
|
{
|
|
CommandBufferFlushCallback_1_0 CommandBufferFlush;
|
|
CommandBufferHasSpaceCallback_1_0 CommandBufferHasSpace;
|
|
CommandBufferGetSpaceCallback_1_0 CommandBufferGetSpace;
|
|
|
|
GpuMemoryAllocateCallback_1_0 GpuMemoryAllocate;
|
|
GpuMemoryPatchCallback_1_0 GpuMemoryPatch;
|
|
GpuMemoryReleaseCallback_1_0 GpuMemoryRelease;
|
|
|
|
CpuMemoryAllocateCallback_1_0 CpuMemoryAllocate;
|
|
CpuMemoryReleaseCallback_1_0 CpuMemoryRelease;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Linux client adapter data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct ClientDataLinuxAdapter_1_0
|
|
{
|
|
LinuxAdapterType Type;
|
|
|
|
union
|
|
{
|
|
int32_t DrmFileDescriptor;
|
|
};
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Windows client data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct ClientDataWindows_1_0
|
|
{
|
|
void* Device;
|
|
void* Adapter;
|
|
void* Escape;
|
|
bool KmdInstrumentationEnabled;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Linux client data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct ClientDataLinux_1_0
|
|
{
|
|
union
|
|
{
|
|
ClientDataLinuxAdapter_1_0* Adapter;
|
|
void* Reserved;
|
|
};
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Client options posh data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct ClientOptionsPoshData_1_0
|
|
{
|
|
bool Enabled;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Client options ptbr data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct ClientOptionsPtbrData_1_0
|
|
{
|
|
bool Enabled;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Client options compute data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct ClientOptionsComputeData_1_0
|
|
{
|
|
bool Asynchronous;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Client options time based sampling data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct ClientOptionsTbsData_1_0
|
|
{
|
|
bool Enabled;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Client options sub device data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct ClientOptionsSubDeviceData_1_0
|
|
{
|
|
bool Enabled;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Client options sub device index data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct ClientOptionsSubDeviceIndexData_1_0
|
|
{
|
|
uint8_t Index;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Client options sub device count data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct ClientOptionsSubDeviceCountData_1_0
|
|
{
|
|
uint8_t Count;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Client options workload partition data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct ClientOptionsWorkloadPartition_1_0
|
|
{
|
|
bool Enabled;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Client options data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct ClientOptionsData_1_0
|
|
{
|
|
ClientOptionsType Type;
|
|
|
|
union
|
|
{
|
|
ClientOptionsPoshData_1_0 Posh;
|
|
ClientOptionsPtbrData_1_0 Ptbr;
|
|
ClientOptionsComputeData_1_0 Compute;
|
|
ClientOptionsTbsData_1_0 Tbs;
|
|
ClientOptionsSubDeviceData_1_0 SubDevice;
|
|
ClientOptionsSubDeviceIndexData_1_0 SubDeviceIndex;
|
|
ClientOptionsSubDeviceCountData_1_0 SubDeviceCount;
|
|
ClientOptionsWorkloadPartition_1_0 WorkloadPartition;
|
|
};
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Client data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct ClientData_1_0
|
|
{
|
|
ClientHandle_1_0 Handle;
|
|
|
|
union
|
|
{
|
|
ClientDataWindows_1_0 Windows;
|
|
ClientDataLinux_1_0 Linux;
|
|
};
|
|
|
|
ClientOptionsData_1_0* ClientOptions;
|
|
uint32_t ClientOptionsCount;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Context create data.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
struct ContextCreateData_1_0
|
|
{
|
|
ClientData_1_0* ClientData;
|
|
ClientCallbacks_1_0* ClientCallbacks;
|
|
Interface_1_0* Api;
|
|
};
|
|
|
|
using ContextCreateFunction_1_0 = StatusCode ( ML_STDCALL* ) ( ClientType_1_0 clientType, ContextCreateData_1_0* createData, ContextHandle_1_0* handle );
|
|
using ContextDeleteFunction_1_0 = StatusCode ( ML_STDCALL* ) ( const ContextHandle_1_0 handle );
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Metrics Library initialize/destroy functions.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
#define METRICS_LIBRARY_CONTEXT_CREATE_1_0 "ContextCreate_1_0"
|
|
#define METRICS_LIBRARY_CONTEXT_DELETE_1_0 "ContextDelete_1_0"
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// @brief Metrics Library current version.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
#define METRICS_LIBRARY_MAJOR_NUMBER 1
|
|
#define METRICS_LIBRARY_MINOR_NUMBER 0
|
|
#define METRICS_LIBRARY_BUILD_NUMBER 152
|
|
|
|
} // namespace MetricsLibraryApi
|