From f805bd974140b44b43ccf54d723e282a3ed3c3f5 Mon Sep 17 00:00:00 2001 From: Artur Harasimiuk Date: Mon, 19 Feb 2018 22:37:20 +0100 Subject: [PATCH] perfCounters: querySize now depends on gfx core Change-Id: I7ad493f87debd1c2c642f695f0e836f010c2aa0c --- runtime/os_interface/performance_counters.cpp | 10 ++++++---- runtime/os_interface/performance_counters.h | 1 - .../os_interface/performance_counters_gen_tests.cpp | 8 +++++++- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/runtime/os_interface/performance_counters.cpp b/runtime/os_interface/performance_counters.cpp index 3240c327b9..d4232ce564 100644 --- a/runtime/os_interface/performance_counters.cpp +++ b/runtime/os_interface/performance_counters.cpp @@ -30,6 +30,9 @@ namespace OCLRT { decltype(&instrGetPerfCountersQueryData) getPerfCountersQueryDataFactory[IGFX_MAX_CORE] = { nullptr, }; +size_t perfCountersQuerySize[IGFX_MAX_CORE] = { + 0, +}; PerformanceCounters::PerformanceCounters(OSTime *osTime) { this->osTime = osTime; @@ -73,6 +76,8 @@ void PerformanceCounters::initialize(const HardwareInfo *hwInfo) { if (getPerfCountersQueryDataFactory[gfxFamily] != nullptr) { getPerfCountersQueryDataFunc = getPerfCountersQueryDataFactory[gfxFamily]; + } else { + perfCountersQuerySize[gfxFamily] = sizeof(GTDI_QUERY); } } void PerformanceCounters::enableImpl() { @@ -146,7 +151,7 @@ bool PerformanceCounters::sendPmRegsCfgCommands(InstrPmRegsCfg *pCfg, uint32_t * return false; } bool PerformanceCounters::processEventReport(size_t inputParamSize, void *inputParam, size_t *outputParamSize, HwPerfCounter *pPrivateData, InstrPmRegsCfg *countersConfiguration, bool isEventComplete) { - size_t outputSize = querySize(); + size_t outputSize = perfCountersQuerySize[gfxFamily]; if (outputParamSize) { *outputParamSize = outputSize; } @@ -183,9 +188,6 @@ int PerformanceCounters::sendPerfConfiguration(uint32_t count, uint32_t *pOffset return ret ? CL_SUCCESS : CL_PROFILING_INFO_NOT_AVAILABLE; } -size_t PerformanceCounters::querySize() { - return sizeof(GTDI_QUERY); -} uint32_t PerformanceCounters::getCurrentReportId() { return (osInterface->getHwContextId() << 12) | getReportId(); } diff --git a/runtime/os_interface/performance_counters.h b/runtime/os_interface/performance_counters.h index 542c2d924e..fe7e14859d 100644 --- a/runtime/os_interface/performance_counters.h +++ b/runtime/os_interface/performance_counters.h @@ -60,7 +60,6 @@ class PerformanceCounters { protected: PerformanceCounters(OSTime *osTime); virtual bool verifyPmRegsCfg(InstrPmRegsCfg *pCfg, uint32_t *pLastPmRegsCfgHandle, bool *pLastPmRegsCfgPending); - size_t querySize(); virtual void enableImpl(); void shutdownImpl(); MOCKABLE_VIRTUAL uint32_t getReportId() { diff --git a/unit_tests/os_interface/performance_counters_gen_tests.cpp b/unit_tests/os_interface/performance_counters_gen_tests.cpp index 00f84c185d..263db417ad 100644 --- a/unit_tests/os_interface/performance_counters_gen_tests.cpp +++ b/unit_tests/os_interface/performance_counters_gen_tests.cpp @@ -34,6 +34,7 @@ struct PerformanceCountersGenTest : public ::testing::Test { namespace OCLRT { extern decltype(&instrGetPerfCountersQueryData) getPerfCountersQueryDataFactory[IGFX_MAX_CORE]; +extern size_t perfCountersQuerySize[IGFX_MAX_CORE]; } class MockPerformanceCountersGen : public PerformanceCounters { @@ -47,7 +48,9 @@ class MockPerformanceCountersGen : public PerformanceCounters { }; HWTEST_F(PerformanceCountersGenTest, givenPerfCountersWhenInitializedWithoutGenSpecificThenDefaultFunctionIsUsed) { - VariableBackup bkp(&getPerfCountersQueryDataFactory[platformDevices[0]->pPlatform->eRenderCoreFamily]); + auto gfxCore = platformDevices[0]->pPlatform->eRenderCoreFamily; + + VariableBackup bkp(&getPerfCountersQueryDataFactory[gfxCore]); MockOSTime osTime; std::unique_ptr counters(new MockPerformanceCountersGen(&osTime)); @@ -55,6 +58,9 @@ HWTEST_F(PerformanceCountersGenTest, givenPerfCountersWhenInitializedWithoutGenS counters->initialize(platformDevices[0]); EXPECT_EQ(counters->getFn(), &instrGetPerfCountersQueryData); + + size_t expected = sizeof(GTDI_QUERY); + EXPECT_EQ(expected, perfCountersQuerySize[gfxCore]); } HWTEST_F(PerformanceCountersGenTest, givenPerfCountersWhenInitializedWithGenSpecificThenGenFunctionIsUsed) {