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:
shubham kumar 2025-04-15 06:45:56 +00:00 committed by Compute-Runtime-Automation
parent c658720b8e
commit 48bbf12eb5
8 changed files with 297 additions and 195 deletions

View File

@ -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;

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -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());

View File

@ -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>