fix: correct gfx_core_helper definitions for EUSS
Related-To: NEO-14337 Signed-off-by: shubham kumar <shubham.kumar@intel.com>
This commit is contained in:
parent
c658720b8e
commit
48bbf12eb5
|
@ -38,182 +38,6 @@ bool L0GfxCoreHelperHw<Family>::forceDefaultUsmCompressionSupport() const {
|
|||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* stall sample data item format:
|
||||
*
|
||||
* Bits Field
|
||||
* 0 to 28 IP (addr)
|
||||
* 29 to 36 active count
|
||||
* 37 to 44 other count
|
||||
* 45 to 52 control count
|
||||
* 53 to 60 pipestall count
|
||||
* 61 to 68 send count
|
||||
* 69 to 76 dist_acc count
|
||||
* 77 to 84 sbid count
|
||||
* 85 to 92 sync count
|
||||
* 93 to 100 inst_fetch count
|
||||
*
|
||||
* bytes at index 48 and 49, subSlice
|
||||
* bytes at index 50 and 51, flags
|
||||
*
|
||||
* total size 64 bytes
|
||||
*/
|
||||
|
||||
#pragma pack(1)
|
||||
typedef struct StallSumIpData {
|
||||
uint64_t activeCount;
|
||||
uint64_t otherCount;
|
||||
uint64_t controlCount;
|
||||
uint64_t pipeStallCount;
|
||||
uint64_t sendCount;
|
||||
uint64_t distAccCount;
|
||||
uint64_t sbidCount;
|
||||
uint64_t syncCount;
|
||||
uint64_t instFetchCount;
|
||||
} StallSumIpData_t;
|
||||
#pragma pack()
|
||||
|
||||
constexpr uint32_t ipSamplingMetricCountXe = 10u;
|
||||
|
||||
template <typename Family>
|
||||
uint32_t L0GfxCoreHelperHw<Family>::getIpSamplingMetricCount() {
|
||||
return ipSamplingMetricCountXe;
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void L0GfxCoreHelperHw<Family>::stallIpDataMapDelete(std::map<uint64_t, void *> &stallSumIpDataMap) {
|
||||
for (auto i = stallSumIpDataMap.begin(); i != stallSumIpDataMap.end(); i++) {
|
||||
StallSumIpData_t *stallSumData = reinterpret_cast<StallSumIpData_t *>(i->second);
|
||||
if (stallSumData) {
|
||||
delete stallSumData;
|
||||
i->second = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
bool L0GfxCoreHelperHw<Family>::stallIpDataMapUpdate(std::map<uint64_t, void *> &stallSumIpDataMap, const uint8_t *pRawIpData) {
|
||||
constexpr int ipStallSamplingOffset = 3; // Offset to read the first Stall Sampling report after IP Address.
|
||||
constexpr int ipStallSamplingReportShift = 5; // Shift in bits required to read the stall sampling report data due to the IP address [0-28] bits to access the next report category data.
|
||||
constexpr int stallSamplingReportCategoryMask = 0xff; // Mask for Stall Sampling Report Category.
|
||||
constexpr int stallSamplingReportSubSliceAndFlagsOffset = 48; // Offset to access Stall Sampling Report Sub Slice and flags.
|
||||
|
||||
const uint8_t *tempAddr = pRawIpData;
|
||||
uint64_t ip = 0ULL;
|
||||
memcpy_s(reinterpret_cast<uint8_t *>(&ip), sizeof(ip), tempAddr, sizeof(ip));
|
||||
ip &= 0x1fffffff;
|
||||
StallSumIpData_t *stallSumData = nullptr;
|
||||
if (stallSumIpDataMap.count(ip) == 0) {
|
||||
stallSumData = new StallSumIpData_t{};
|
||||
stallSumData->activeCount = 0;
|
||||
stallSumData->otherCount = 0;
|
||||
stallSumData->controlCount = 0;
|
||||
stallSumData->pipeStallCount = 0;
|
||||
stallSumData->sendCount = 0;
|
||||
stallSumData->distAccCount = 0;
|
||||
stallSumData->sbidCount = 0;
|
||||
stallSumData->syncCount = 0;
|
||||
stallSumData->instFetchCount = 0;
|
||||
stallSumIpDataMap[ip] = stallSumData;
|
||||
} else {
|
||||
stallSumData = reinterpret_cast<StallSumIpData_t *>(stallSumIpDataMap[ip]);
|
||||
}
|
||||
tempAddr += ipStallSamplingOffset;
|
||||
|
||||
auto getCount = [&tempAddr]() {
|
||||
uint16_t tempCount = 0;
|
||||
memcpy_s(reinterpret_cast<uint8_t *>(&tempCount), sizeof(tempCount), tempAddr, sizeof(tempCount));
|
||||
tempCount = (tempCount >> ipStallSamplingReportShift) & stallSamplingReportCategoryMask;
|
||||
tempAddr += 1;
|
||||
return static_cast<uint8_t>(tempCount);
|
||||
};
|
||||
|
||||
stallSumData->activeCount += getCount();
|
||||
stallSumData->otherCount += getCount();
|
||||
stallSumData->controlCount += getCount();
|
||||
stallSumData->pipeStallCount += getCount();
|
||||
stallSumData->sendCount += getCount();
|
||||
stallSumData->distAccCount += getCount();
|
||||
stallSumData->sbidCount += getCount();
|
||||
stallSumData->syncCount += getCount();
|
||||
stallSumData->instFetchCount += getCount();
|
||||
|
||||
#pragma pack(1)
|
||||
struct StallCntrInfo {
|
||||
uint16_t subslice;
|
||||
uint16_t flags;
|
||||
} stallCntrInfo = {};
|
||||
#pragma pack()
|
||||
|
||||
tempAddr = pRawIpData + stallSamplingReportSubSliceAndFlagsOffset;
|
||||
memcpy_s(reinterpret_cast<uint8_t *>(&stallCntrInfo), sizeof(stallCntrInfo), tempAddr, sizeof(stallCntrInfo));
|
||||
|
||||
constexpr int32_t overflowDropFlag = (1 << 8);
|
||||
return stallCntrInfo.flags & overflowDropFlag;
|
||||
}
|
||||
|
||||
// Order of ipDataValues must match stallSamplingReportList
|
||||
template <typename Family>
|
||||
void L0GfxCoreHelperHw<Family>::stallSumIpDataToTypedValues(uint64_t ip, void *sumIpData, std::vector<zet_typed_value_t> &ipDataValues) {
|
||||
StallSumIpData_t *stallSumData = reinterpret_cast<StallSumIpData_t *>(sumIpData);
|
||||
zet_typed_value_t tmpValueData;
|
||||
tmpValueData.type = ZET_VALUE_TYPE_UINT64;
|
||||
tmpValueData.value.ui64 = ip;
|
||||
ipDataValues.push_back(tmpValueData);
|
||||
|
||||
tmpValueData.type = ZET_VALUE_TYPE_UINT64;
|
||||
tmpValueData.value.ui64 = stallSumData->activeCount;
|
||||
ipDataValues.push_back(tmpValueData);
|
||||
|
||||
tmpValueData.type = ZET_VALUE_TYPE_UINT64;
|
||||
tmpValueData.value.ui64 = stallSumData->controlCount;
|
||||
ipDataValues.push_back(tmpValueData);
|
||||
|
||||
tmpValueData.type = ZET_VALUE_TYPE_UINT64;
|
||||
tmpValueData.value.ui64 = stallSumData->pipeStallCount;
|
||||
ipDataValues.push_back(tmpValueData);
|
||||
|
||||
tmpValueData.type = ZET_VALUE_TYPE_UINT64;
|
||||
tmpValueData.value.ui64 = stallSumData->sendCount;
|
||||
ipDataValues.push_back(tmpValueData);
|
||||
|
||||
tmpValueData.type = ZET_VALUE_TYPE_UINT64;
|
||||
tmpValueData.value.ui64 = stallSumData->distAccCount;
|
||||
ipDataValues.push_back(tmpValueData);
|
||||
|
||||
tmpValueData.type = ZET_VALUE_TYPE_UINT64;
|
||||
tmpValueData.value.ui64 = stallSumData->sbidCount;
|
||||
ipDataValues.push_back(tmpValueData);
|
||||
|
||||
tmpValueData.type = ZET_VALUE_TYPE_UINT64;
|
||||
tmpValueData.value.ui64 = stallSumData->syncCount;
|
||||
ipDataValues.push_back(tmpValueData);
|
||||
|
||||
tmpValueData.type = ZET_VALUE_TYPE_UINT64;
|
||||
tmpValueData.value.ui64 = stallSumData->instFetchCount;
|
||||
ipDataValues.push_back(tmpValueData);
|
||||
|
||||
tmpValueData.type = ZET_VALUE_TYPE_UINT64;
|
||||
tmpValueData.value.ui64 = stallSumData->otherCount;
|
||||
ipDataValues.push_back(tmpValueData);
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
std::vector<std::pair<const char *, const char *>> L0GfxCoreHelperHw<Family>::getStallSamplingReportMetrics() const {
|
||||
std::vector<std::pair<const char *, const char *>> stallSamplingReportList = {
|
||||
{"Active", "Active cycles"},
|
||||
{"ControlStall", "Stall on control"},
|
||||
{"PipeStall", "Stall on pipe"},
|
||||
{"SendStall", "Stall on send"},
|
||||
{"DistStall", "Stall on distance"},
|
||||
{"SbidStall", "Stall on scoreboard"},
|
||||
{"SyncStall", "Stall on sync"},
|
||||
{"InstrFetchStall", "Stall on instruction fetch"},
|
||||
{"OtherStall", "Stall on other condition"},
|
||||
};
|
||||
return stallSamplingReportList;
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
uint64_t L0GfxCoreHelperHw<Family>::getOaTimestampValidBits() const {
|
||||
constexpr uint64_t oaTimestampValidBits = 32u;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2021-2024 Intel Corporation
|
||||
* Copyright (C) 2021-2025 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
|
@ -117,4 +117,31 @@ bool L0GfxCoreHelperHw<Family>::synchronizedDispatchSupported() const {
|
|||
return false;
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
uint32_t L0GfxCoreHelperHw<Family>::getIpSamplingMetricCount() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void L0GfxCoreHelperHw<Family>::stallIpDataMapDelete(std::map<uint64_t, void *> &stallSumIpDataMap) {
|
||||
return;
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
bool L0GfxCoreHelperHw<Family>::stallIpDataMapUpdate(std::map<uint64_t, void *> &stallSumIpDataMap, const uint8_t *pRawIpData) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Order of ipDataValues must match stallSamplingReportList
|
||||
template <typename Family>
|
||||
void L0GfxCoreHelperHw<Family>::stallSumIpDataToTypedValues(uint64_t ip, void *sumIpData, std::vector<zet_typed_value_t> &ipDataValues) {
|
||||
return;
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
std::vector<std::pair<const char *, const char *>> L0GfxCoreHelperHw<Family>::getStallSamplingReportMetrics() const {
|
||||
std::vector<std::pair<const char *, const char *>> stallSamplingReportList = {};
|
||||
return stallSamplingReportList;
|
||||
}
|
||||
|
||||
} // namespace L0
|
||||
|
|
|
@ -33,6 +33,182 @@ bool L0GfxCoreHelperHw<Family>::platformSupportsStateBaseAddressTracking(const N
|
|||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* stall sample data item format:
|
||||
*
|
||||
* Bits Field
|
||||
* 0 to 28 IP (addr)
|
||||
* 29 to 36 active count
|
||||
* 37 to 44 other count
|
||||
* 45 to 52 control count
|
||||
* 53 to 60 pipestall count
|
||||
* 61 to 68 send count
|
||||
* 69 to 76 dist_acc count
|
||||
* 77 to 84 sbid count
|
||||
* 85 to 92 sync count
|
||||
* 93 to 100 inst_fetch count
|
||||
*
|
||||
* bytes at index 48 and 49, subSlice
|
||||
* bytes at index 50 and 51, flags
|
||||
*
|
||||
* total size 64 bytes
|
||||
*/
|
||||
|
||||
#pragma pack(1)
|
||||
typedef struct StallSumIpData {
|
||||
uint64_t activeCount;
|
||||
uint64_t otherCount;
|
||||
uint64_t controlCount;
|
||||
uint64_t pipeStallCount;
|
||||
uint64_t sendCount;
|
||||
uint64_t distAccCount;
|
||||
uint64_t sbidCount;
|
||||
uint64_t syncCount;
|
||||
uint64_t instFetchCount;
|
||||
} StallSumIpData_t;
|
||||
#pragma pack()
|
||||
|
||||
constexpr uint32_t ipSamplingMetricCountXe = 10u;
|
||||
|
||||
template <>
|
||||
uint32_t L0GfxCoreHelperHw<Family>::getIpSamplingMetricCount() {
|
||||
return ipSamplingMetricCountXe;
|
||||
}
|
||||
|
||||
template <>
|
||||
void L0GfxCoreHelperHw<Family>::stallIpDataMapDelete(std::map<uint64_t, void *> &stallSumIpDataMap) {
|
||||
for (auto i = stallSumIpDataMap.begin(); i != stallSumIpDataMap.end(); i++) {
|
||||
StallSumIpData_t *stallSumData = reinterpret_cast<StallSumIpData_t *>(i->second);
|
||||
if (stallSumData) {
|
||||
delete stallSumData;
|
||||
i->second = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
template <>
|
||||
bool L0GfxCoreHelperHw<Family>::stallIpDataMapUpdate(std::map<uint64_t, void *> &stallSumIpDataMap, const uint8_t *pRawIpData) {
|
||||
constexpr int ipStallSamplingOffset = 3; // Offset to read the first Stall Sampling report after IP Address.
|
||||
constexpr int ipStallSamplingReportShift = 5; // Shift in bits required to read the stall sampling report data due to the IP address [0-28] bits to access the next report category data.
|
||||
constexpr int stallSamplingReportCategoryMask = 0xff; // Mask for Stall Sampling Report Category.
|
||||
constexpr int stallSamplingReportSubSliceAndFlagsOffset = 48; // Offset to access Stall Sampling Report Sub Slice and flags.
|
||||
|
||||
const uint8_t *tempAddr = pRawIpData;
|
||||
uint64_t ip = 0ULL;
|
||||
memcpy_s(reinterpret_cast<uint8_t *>(&ip), sizeof(ip), tempAddr, sizeof(ip));
|
||||
ip &= 0x1fffffff;
|
||||
StallSumIpData_t *stallSumData = nullptr;
|
||||
if (stallSumIpDataMap.count(ip) == 0) {
|
||||
stallSumData = new StallSumIpData_t{};
|
||||
stallSumData->activeCount = 0;
|
||||
stallSumData->otherCount = 0;
|
||||
stallSumData->controlCount = 0;
|
||||
stallSumData->pipeStallCount = 0;
|
||||
stallSumData->sendCount = 0;
|
||||
stallSumData->distAccCount = 0;
|
||||
stallSumData->sbidCount = 0;
|
||||
stallSumData->syncCount = 0;
|
||||
stallSumData->instFetchCount = 0;
|
||||
stallSumIpDataMap[ip] = stallSumData;
|
||||
} else {
|
||||
stallSumData = reinterpret_cast<StallSumIpData_t *>(stallSumIpDataMap[ip]);
|
||||
}
|
||||
tempAddr += ipStallSamplingOffset;
|
||||
|
||||
auto getCount = [&tempAddr]() {
|
||||
uint16_t tempCount = 0;
|
||||
memcpy_s(reinterpret_cast<uint8_t *>(&tempCount), sizeof(tempCount), tempAddr, sizeof(tempCount));
|
||||
tempCount = (tempCount >> ipStallSamplingReportShift) & stallSamplingReportCategoryMask;
|
||||
tempAddr += 1;
|
||||
return static_cast<uint8_t>(tempCount);
|
||||
};
|
||||
|
||||
stallSumData->activeCount += getCount();
|
||||
stallSumData->otherCount += getCount();
|
||||
stallSumData->controlCount += getCount();
|
||||
stallSumData->pipeStallCount += getCount();
|
||||
stallSumData->sendCount += getCount();
|
||||
stallSumData->distAccCount += getCount();
|
||||
stallSumData->sbidCount += getCount();
|
||||
stallSumData->syncCount += getCount();
|
||||
stallSumData->instFetchCount += getCount();
|
||||
|
||||
#pragma pack(1)
|
||||
struct StallCntrInfo {
|
||||
uint16_t subslice;
|
||||
uint16_t flags;
|
||||
} stallCntrInfo = {};
|
||||
#pragma pack()
|
||||
|
||||
tempAddr = pRawIpData + stallSamplingReportSubSliceAndFlagsOffset;
|
||||
memcpy_s(reinterpret_cast<uint8_t *>(&stallCntrInfo), sizeof(stallCntrInfo), tempAddr, sizeof(stallCntrInfo));
|
||||
|
||||
constexpr int32_t overflowDropFlag = (1 << 8);
|
||||
return stallCntrInfo.flags & overflowDropFlag;
|
||||
}
|
||||
|
||||
// Order of ipDataValues must match stallSamplingReportList
|
||||
template <>
|
||||
void L0GfxCoreHelperHw<Family>::stallSumIpDataToTypedValues(uint64_t ip, void *sumIpData, std::vector<zet_typed_value_t> &ipDataValues) {
|
||||
StallSumIpData_t *stallSumData = reinterpret_cast<StallSumIpData_t *>(sumIpData);
|
||||
zet_typed_value_t tmpValueData;
|
||||
tmpValueData.type = ZET_VALUE_TYPE_UINT64;
|
||||
tmpValueData.value.ui64 = ip;
|
||||
ipDataValues.push_back(tmpValueData);
|
||||
|
||||
tmpValueData.type = ZET_VALUE_TYPE_UINT64;
|
||||
tmpValueData.value.ui64 = stallSumData->activeCount;
|
||||
ipDataValues.push_back(tmpValueData);
|
||||
|
||||
tmpValueData.type = ZET_VALUE_TYPE_UINT64;
|
||||
tmpValueData.value.ui64 = stallSumData->controlCount;
|
||||
ipDataValues.push_back(tmpValueData);
|
||||
|
||||
tmpValueData.type = ZET_VALUE_TYPE_UINT64;
|
||||
tmpValueData.value.ui64 = stallSumData->pipeStallCount;
|
||||
ipDataValues.push_back(tmpValueData);
|
||||
|
||||
tmpValueData.type = ZET_VALUE_TYPE_UINT64;
|
||||
tmpValueData.value.ui64 = stallSumData->sendCount;
|
||||
ipDataValues.push_back(tmpValueData);
|
||||
|
||||
tmpValueData.type = ZET_VALUE_TYPE_UINT64;
|
||||
tmpValueData.value.ui64 = stallSumData->distAccCount;
|
||||
ipDataValues.push_back(tmpValueData);
|
||||
|
||||
tmpValueData.type = ZET_VALUE_TYPE_UINT64;
|
||||
tmpValueData.value.ui64 = stallSumData->sbidCount;
|
||||
ipDataValues.push_back(tmpValueData);
|
||||
|
||||
tmpValueData.type = ZET_VALUE_TYPE_UINT64;
|
||||
tmpValueData.value.ui64 = stallSumData->syncCount;
|
||||
ipDataValues.push_back(tmpValueData);
|
||||
|
||||
tmpValueData.type = ZET_VALUE_TYPE_UINT64;
|
||||
tmpValueData.value.ui64 = stallSumData->instFetchCount;
|
||||
ipDataValues.push_back(tmpValueData);
|
||||
|
||||
tmpValueData.type = ZET_VALUE_TYPE_UINT64;
|
||||
tmpValueData.value.ui64 = stallSumData->otherCount;
|
||||
ipDataValues.push_back(tmpValueData);
|
||||
}
|
||||
|
||||
template <>
|
||||
std::vector<std::pair<const char *, const char *>> L0GfxCoreHelperHw<Family>::getStallSamplingReportMetrics() const {
|
||||
std::vector<std::pair<const char *, const char *>> stallSamplingReportList = {
|
||||
{"Active", "Active cycles"},
|
||||
{"ControlStall", "Stall on control"},
|
||||
{"PipeStall", "Stall on pipe"},
|
||||
{"SendStall", "Stall on send"},
|
||||
{"DistStall", "Stall on distance"},
|
||||
{"SbidStall", "Stall on scoreboard"},
|
||||
{"SyncStall", "Stall on sync"},
|
||||
{"InstrFetchStall", "Stall on instruction fetch"},
|
||||
{"OtherStall", "Stall on other condition"},
|
||||
};
|
||||
return stallSamplingReportList;
|
||||
}
|
||||
|
||||
template class L0GfxCoreHelperHw<Family>;
|
||||
|
||||
} // namespace L0
|
||||
|
|
|
@ -76,5 +76,39 @@ GEN12LPTEST_F(L0GfxCoreHelperTestGen12Lp, GivenGen12LpWhenGettingSupportedRTASFo
|
|||
EXPECT_EQ(ZE_RTAS_FORMAT_EXP_INVALID, l0GfxCoreHelper.getSupportedRTASFormat());
|
||||
}
|
||||
|
||||
GEN12LPTEST_F(L0GfxCoreHelperTestGen12Lp, GivenGen12LpWhenGetIpSamplingMetricCountIsCalledThenProperValueIsReturned) {
|
||||
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
|
||||
EXPECT_EQ(0u, l0GfxCoreHelper.getIpSamplingMetricCount());
|
||||
}
|
||||
|
||||
GEN12LPTEST_F(L0GfxCoreHelperTestGen12Lp, GivenGen12LpWhenGetStallSamplingReportMetricsThenEmptyListIsReturned) {
|
||||
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
|
||||
std::vector<std::pair<const char *, const char *>> expectedStallSamplingReportList = {};
|
||||
EXPECT_EQ(expectedStallSamplingReportList, l0GfxCoreHelper.getStallSamplingReportMetrics());
|
||||
}
|
||||
|
||||
GEN12LPTEST_F(L0GfxCoreHelperTestGen12Lp, GivenGen12LpWhenStallIpDataMapUpdateIsCalledThenFalseIsReturned) {
|
||||
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
|
||||
std::map<uint64_t, void *> stallSumIpDataMap;
|
||||
EXPECT_FALSE(l0GfxCoreHelper.stallIpDataMapUpdate(stallSumIpDataMap, nullptr));
|
||||
}
|
||||
|
||||
GEN12LPTEST_F(L0GfxCoreHelperTestGen12Lp, GivenGen12LpWhenStallIpDataMapDeleteIsCalledThenMapisUnchanged) {
|
||||
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
|
||||
std::map<uint64_t, void *> stallSumIpDataMap;
|
||||
size_t mapSizeBefore = stallSumIpDataMap.size();
|
||||
l0GfxCoreHelper.stallIpDataMapDelete(stallSumIpDataMap);
|
||||
EXPECT_EQ(mapSizeBefore, stallSumIpDataMap.size());
|
||||
}
|
||||
|
||||
GEN12LPTEST_F(L0GfxCoreHelperTestGen12Lp, GivenGen12LpWhenStallSumIpDataToTypedValuesIsCalledThenNoChangeToDataValues) {
|
||||
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
|
||||
uint64_t ip = 0ull;
|
||||
void *sumIpData = nullptr;
|
||||
std::vector<zet_typed_value_t> ipDataValues;
|
||||
l0GfxCoreHelper.stallSumIpDataToTypedValues(ip, sumIpData, ipDataValues);
|
||||
EXPECT_EQ(0u, ipDataValues.size());
|
||||
}
|
||||
|
||||
} // namespace ult
|
||||
} // namespace L0
|
||||
|
|
|
@ -79,5 +79,39 @@ XE_HPG_CORETEST_F(L0GfxCoreHelperTestXeHpg, GivenXeHpgWhenGettingCmdlistUpdateCa
|
|||
EXPECT_EQ(62u, l0GfxCoreHelper.getPlatformCmdListUpdateCapabilities());
|
||||
}
|
||||
|
||||
XE_HPG_CORETEST_F(L0GfxCoreHelperTestXeHpg, GivenXeHpgWhenGetIpSamplingMetricCountIsCalledThenProperValueIsReturned) {
|
||||
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
|
||||
EXPECT_EQ(0u, l0GfxCoreHelper.getIpSamplingMetricCount());
|
||||
}
|
||||
|
||||
XE_HPG_CORETEST_F(L0GfxCoreHelperTestXeHpg, GivenXeHpgWhenGetStallSamplingReportMetricsThenEmptyListIsReturned) {
|
||||
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
|
||||
std::vector<std::pair<const char *, const char *>> expectedStallSamplingReportList = {};
|
||||
EXPECT_EQ(expectedStallSamplingReportList, l0GfxCoreHelper.getStallSamplingReportMetrics());
|
||||
}
|
||||
|
||||
XE_HPG_CORETEST_F(L0GfxCoreHelperTestXeHpg, GivenXeHpgWhenStallIpDataMapUpdateIsCalledThenFalseIsReturned) {
|
||||
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
|
||||
std::map<uint64_t, void *> stallSumIpDataMap;
|
||||
EXPECT_FALSE(l0GfxCoreHelper.stallIpDataMapUpdate(stallSumIpDataMap, nullptr));
|
||||
}
|
||||
|
||||
XE_HPG_CORETEST_F(L0GfxCoreHelperTestXeHpg, GivenXeHpgWhenStallIpDataMapDeleteIsCalledThenMapisUnchanged) {
|
||||
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
|
||||
std::map<uint64_t, void *> stallSumIpDataMap;
|
||||
size_t mapSizeBefore = stallSumIpDataMap.size();
|
||||
l0GfxCoreHelper.stallIpDataMapDelete(stallSumIpDataMap);
|
||||
EXPECT_EQ(mapSizeBefore, stallSumIpDataMap.size());
|
||||
}
|
||||
|
||||
XE_HPG_CORETEST_F(L0GfxCoreHelperTestXeHpg, GivenXeHpgWhenStallSumIpDataToTypedValuesIsCalledThenNoChangeToDataValues) {
|
||||
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
|
||||
uint64_t ip = 0ull;
|
||||
void *sumIpData = nullptr;
|
||||
std::vector<zet_typed_value_t> ipDataValues;
|
||||
l0GfxCoreHelper.stallSumIpDataToTypedValues(ip, sumIpData, ipDataValues);
|
||||
EXPECT_EQ(0u, ipDataValues.size());
|
||||
}
|
||||
|
||||
} // namespace ult
|
||||
} // namespace L0
|
||||
|
|
|
@ -18,8 +18,7 @@ namespace L0 {
|
|||
namespace ult {
|
||||
class MockMetricIpSamplingOsInterface;
|
||||
|
||||
using EustallSupportedPlatforms = IsWithinProducts<IGFX_SKYLAKE, IGFX_PVC>;
|
||||
using IsGen9ToPVC = IsWithinProducts<IGFX_SKYLAKE, IGFX_PVC>;
|
||||
using EustallSupportedPlatforms = IsProduct<IGFX_PVC>;
|
||||
|
||||
class MockStallRawIpData {
|
||||
public:
|
||||
|
|
|
@ -556,7 +556,7 @@ HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhen
|
|||
}
|
||||
}
|
||||
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhenCalculateMultipleMetricValuesExpIsCalledWithInvalidHeaderThenErrorIsReturned, IsGen9ToPVC) {
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhenCalculateMultipleMetricValuesExpIsCalledWithInvalidHeaderThenErrorIsReturned, EustallSupportedPlatforms) {
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, testDevices[0]->getMetricDeviceContext().enableMetricApi());
|
||||
|
||||
std::vector<zet_typed_value_t> metricValues(30);
|
||||
|
@ -595,7 +595,7 @@ HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhen
|
|||
}
|
||||
}
|
||||
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhenCalculateMultipleMetricValuesExpIsCalledWithDataFromSingleDeviceThenValidDataIsReturned, IsGen9ToPVC) {
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhenCalculateMultipleMetricValuesExpIsCalledWithDataFromSingleDeviceThenValidDataIsReturned, EustallSupportedPlatforms) {
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, testDevices[0]->getMetricDeviceContext().enableMetricApi());
|
||||
|
||||
std::vector<zet_typed_value_t> metricValues(30);
|
||||
|
@ -644,7 +644,7 @@ HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhen
|
|||
}
|
||||
}
|
||||
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhenCalculateMultipleMetricValuesExpIsCalledWithDataFromSingleDeviceAndInvalidRawDataThenErrorIsReturned, IsGen9ToPVC) {
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhenCalculateMultipleMetricValuesExpIsCalledWithDataFromSingleDeviceAndInvalidRawDataThenErrorIsReturned, EustallSupportedPlatforms) {
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, testDevices[0]->getMetricDeviceContext().enableMetricApi());
|
||||
|
||||
std::vector<zet_typed_value_t> metricValues(30);
|
||||
|
@ -675,7 +675,7 @@ HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhen
|
|||
}
|
||||
}
|
||||
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhenCalculateMultipleMetricValuesExpIsCalledWithLessThanRequiredMetricCountThenValidDataIsReturned, IsGen9ToPVC) {
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhenCalculateMultipleMetricValuesExpIsCalledWithLessThanRequiredMetricCountThenValidDataIsReturned, EustallSupportedPlatforms) {
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, testDevices[0]->getMetricDeviceContext().enableMetricApi());
|
||||
|
||||
std::vector<zet_typed_value_t> metricValues(30);
|
||||
|
@ -733,7 +733,7 @@ HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhen
|
|||
}
|
||||
}
|
||||
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhenCalculateMultipleMetricValuesExpIsCalledWithInvalidRawDataSizeThenErrorIsReturned, IsGen9ToPVC) {
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhenCalculateMultipleMetricValuesExpIsCalledWithInvalidRawDataSizeThenErrorIsReturned, EustallSupportedPlatforms) {
|
||||
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, testDevices[0]->getMetricDeviceContext().enableMetricApi());
|
||||
|
||||
|
@ -762,7 +762,7 @@ HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhen
|
|||
}
|
||||
}
|
||||
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, WhenCalculateMultipleMetricValuesExpIsCalledWithInvalidRawDataSizeDuringValueCalculationPhaseThenErrorIsReturned, IsGen9ToPVC) {
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, WhenCalculateMultipleMetricValuesExpIsCalledWithInvalidRawDataSizeDuringValueCalculationPhaseThenErrorIsReturned, EustallSupportedPlatforms) {
|
||||
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, testDevices[0]->getMetricDeviceContext().enableMetricApi());
|
||||
std::vector<zet_typed_value_t> metricValues(30);
|
||||
|
@ -799,7 +799,7 @@ HWTEST2_F(MetricIpSamplingCalculateMetricsTest, WhenCalculateMultipleMetricValue
|
|||
}
|
||||
}
|
||||
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, WhenCalculateMultipleMetricValuesExpCalculateSizeIsCalledWithInvalidRawDataSizeInHeaderDuringSizeCalculationThenErrorIsReturned, IsGen9ToPVC) {
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, WhenCalculateMultipleMetricValuesExpCalculateSizeIsCalledWithInvalidRawDataSizeInHeaderDuringSizeCalculationThenErrorIsReturned, EustallSupportedPlatforms) {
|
||||
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, testDevices[0]->getMetricDeviceContext().enableMetricApi());
|
||||
|
||||
|
@ -828,7 +828,7 @@ HWTEST2_F(MetricIpSamplingCalculateMetricsTest, WhenCalculateMultipleMetricValue
|
|||
}
|
||||
}
|
||||
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, WhenCalculateMultipleMetricValuesExpCalculateSizeIsCalledWithInvalidRawDataSizeInHeaderThenErrorIsReturned, IsGen9ToPVC) {
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, WhenCalculateMultipleMetricValuesExpCalculateSizeIsCalledWithInvalidRawDataSizeInHeaderThenErrorIsReturned, EustallSupportedPlatforms) {
|
||||
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, testDevices[0]->getMetricDeviceContext().enableMetricApi());
|
||||
|
||||
|
@ -858,7 +858,7 @@ HWTEST2_F(MetricIpSamplingCalculateMetricsTest, WhenCalculateMultipleMetricValue
|
|||
}
|
||||
}
|
||||
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhenCalculateMultipleMetricValuesExpCalculateDataWithBadRawDataSizeIsCalledThenErrorUnknownIsReturned, IsGen9ToPVC) {
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhenCalculateMultipleMetricValuesExpCalculateDataWithBadRawDataSizeIsCalledThenErrorUnknownIsReturned, EustallSupportedPlatforms) {
|
||||
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, testDevices[0]->getMetricDeviceContext().enableMetricApi());
|
||||
|
||||
|
@ -904,7 +904,7 @@ HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhen
|
|||
}
|
||||
}
|
||||
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhenCalculateMetricValuesIsCalledThenValidDataIsReturned, IsGen9ToPVC) {
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhenCalculateMetricValuesIsCalledThenValidDataIsReturned, EustallSupportedPlatforms) {
|
||||
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, testDevices[0]->getMetricDeviceContext().enableMetricApi());
|
||||
|
||||
|
@ -938,7 +938,7 @@ HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhen
|
|||
}
|
||||
}
|
||||
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhenCalculateMetricValuesIsCalledWithDataFromMultipleSubdevicesThenReturnError, IsGen9ToPVC) {
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhenCalculateMetricValuesIsCalledWithDataFromMultipleSubdevicesThenReturnError, EustallSupportedPlatforms) {
|
||||
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, testDevices[0]->getMetricDeviceContext().enableMetricApi());
|
||||
|
||||
|
@ -966,7 +966,7 @@ HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhen
|
|||
}
|
||||
}
|
||||
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhenCalculateMetricValuesIsCalledWithSmallValueCountThenValidDataIsReturned, IsGen9ToPVC) {
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhenCalculateMetricValuesIsCalledWithSmallValueCountThenValidDataIsReturned, EustallSupportedPlatforms) {
|
||||
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, testDevices[0]->getMetricDeviceContext().enableMetricApi());
|
||||
|
||||
|
@ -1001,7 +1001,7 @@ HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhen
|
|||
}
|
||||
}
|
||||
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWithBadRawDataSizeWhenCalculateMetricValuesCalculateSizeIsCalledThenErrorUnknownIsReturned, IsGen9ToPVC) {
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWithBadRawDataSizeWhenCalculateMetricValuesCalculateSizeIsCalledThenErrorUnknownIsReturned, EustallSupportedPlatforms) {
|
||||
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, testDevices[0]->getMetricDeviceContext().enableMetricApi());
|
||||
|
||||
|
@ -1024,7 +1024,7 @@ HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWith
|
|||
}
|
||||
}
|
||||
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhenCalculateMetricValuesWithBadRawDataSizeCalculateDataIsCalledThenUnsupportedFeatureIsReturned, IsGen9ToPVC) {
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhenCalculateMetricValuesWithBadRawDataSizeCalculateDataIsCalledThenUnsupportedFeatureIsReturned, EustallSupportedPlatforms) {
|
||||
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, testDevices[0]->getMetricDeviceContext().enableMetricApi());
|
||||
|
||||
|
@ -1053,7 +1053,7 @@ HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWhen
|
|||
}
|
||||
}
|
||||
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenDataOverflowOccurredWhenStreamerReadDataIscalledThenCalculateMultipleMetricsValulesExpReturnsOverflowWarning, IsGen9ToPVC) {
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenDataOverflowOccurredWhenStreamerReadDataIscalledThenCalculateMultipleMetricsValulesExpReturnsOverflowWarning, EustallSupportedPlatforms) {
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, testDevices[0]->getMetricDeviceContext().enableMetricApi());
|
||||
|
||||
std::vector<zet_typed_value_t> metricValues(30);
|
||||
|
@ -1103,7 +1103,7 @@ HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenDataOverflowOccurredWhenStr
|
|||
}
|
||||
}
|
||||
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWithCALCULATIONTYPEMAXWhenCalculateMetricValuesIsCalledThenErrorUnknownIsReturned, IsGen9ToPVC) {
|
||||
HWTEST2_F(MetricIpSamplingCalculateMetricsTest, GivenEnumerationIsSuccessfulWithCALCULATIONTYPEMAXWhenCalculateMetricValuesIsCalledThenErrorUnknownIsReturned, EustallSupportedPlatforms) {
|
||||
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, testDevices[0]->getMetricDeviceContext().enableMetricApi());
|
||||
|
||||
|
|
|
@ -714,6 +714,14 @@ struct IsWithinGfxCore {
|
|||
}
|
||||
};
|
||||
|
||||
template <GFXCORE_FAMILY gfxCoreFamilyMin, GFXCORE_FAMILY gfxCoreFamilyMax>
|
||||
struct IsNotWithinGfxCore {
|
||||
template <PRODUCT_FAMILY productFamily>
|
||||
static constexpr bool isMatched() {
|
||||
return NEO::ToGfxCoreFamily<productFamily>::get() < gfxCoreFamilyMin && NEO::ToGfxCoreFamily<productFamily>::get() > gfxCoreFamilyMax;
|
||||
}
|
||||
};
|
||||
|
||||
template <GFXCORE_FAMILY... args>
|
||||
struct IsAnyGfxCores {
|
||||
template <PRODUCT_FAMILY productFamily>
|
||||
|
|
Loading…
Reference in New Issue