|
|
|
@ -1,5 +1,5 @@
|
|
|
|
|
/*
|
|
|
|
|
* Copyright (C) 2018-2021 Intel Corporation
|
|
|
|
|
* Copyright (C) 2018-2022 Intel Corporation
|
|
|
|
|
*
|
|
|
|
|
* SPDX-License-Identifier: MIT
|
|
|
|
|
*
|
|
|
|
@ -63,10 +63,10 @@ TEST_F(PerformanceCountersTest, WhenCreatingPerformanceCountersThenObjectIsNotNu
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersTest, givenPerformanceCountersWhenCreatedThenAllValuesProperlyInitialized) {
|
|
|
|
|
createPerfCounters();
|
|
|
|
|
auto performanceCounters = MockPerformanceCounters::create();
|
|
|
|
|
|
|
|
|
|
EXPECT_NE(nullptr, performanceCountersBase->getMetricsLibraryInterface());
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
EXPECT_NE(nullptr, performanceCounters->getMetricsLibraryInterface());
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct PerformanceCountersProcessEventTest : public PerformanceCountersTest,
|
|
|
|
@ -74,18 +74,19 @@ struct PerformanceCountersProcessEventTest : public PerformanceCountersTest,
|
|
|
|
|
|
|
|
|
|
void SetUp() override {
|
|
|
|
|
PerformanceCountersTest::SetUp();
|
|
|
|
|
createPerfCounters();
|
|
|
|
|
perfCounters = MockPerformanceCounters::create();
|
|
|
|
|
eventComplete = true;
|
|
|
|
|
outputParamSize = 0;
|
|
|
|
|
inputParamSize = performanceCountersBase->getApiReportSize();
|
|
|
|
|
inputParamSize = perfCounters->getApiReportSize();
|
|
|
|
|
inputParam.reset(new uint8_t);
|
|
|
|
|
}
|
|
|
|
|
void TearDown() override {
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
perfCounters->shutdown();
|
|
|
|
|
PerformanceCountersTest::TearDown();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
std::unique_ptr<uint8_t> inputParam;
|
|
|
|
|
std::unique_ptr<PerformanceCounters> perfCounters;
|
|
|
|
|
size_t inputParamSize;
|
|
|
|
|
size_t outputParamSize;
|
|
|
|
|
bool eventComplete;
|
|
|
|
@ -98,9 +99,9 @@ TEST_P(PerformanceCountersProcessEventTest, givenNullptrInputParamWhenProcessEve
|
|
|
|
|
TagNode<HwPerfCounter> query = {};
|
|
|
|
|
query.tagForCpuAccess = &counters;
|
|
|
|
|
|
|
|
|
|
performanceCountersBase->getQueryHandleRef(counters.query.handle);
|
|
|
|
|
auto retVal = performanceCountersBase->getApiReport(&query, inputParamSize, nullptr, &outputParamSize, eventComplete);
|
|
|
|
|
performanceCountersBase->deleteQuery(counters.query.handle);
|
|
|
|
|
perfCounters->getQueryHandleRef(counters.query.handle);
|
|
|
|
|
auto retVal = perfCounters->getApiReport(&query, inputParamSize, nullptr, &outputParamSize, eventComplete);
|
|
|
|
|
perfCounters->deleteQuery(counters.query.handle);
|
|
|
|
|
|
|
|
|
|
EXPECT_FALSE(retVal);
|
|
|
|
|
}
|
|
|
|
@ -112,9 +113,9 @@ TEST_P(PerformanceCountersProcessEventTest, givenCorrectInputParamWhenProcessEve
|
|
|
|
|
TagNode<HwPerfCounter> query = {};
|
|
|
|
|
query.tagForCpuAccess = &counters;
|
|
|
|
|
|
|
|
|
|
performanceCountersBase->getQueryHandleRef(counters.query.handle);
|
|
|
|
|
auto retVal = performanceCountersBase->getApiReport(&query, inputParamSize, inputParam.get(), &outputParamSize, eventComplete);
|
|
|
|
|
performanceCountersBase->deleteQuery(counters.query.handle);
|
|
|
|
|
perfCounters->getQueryHandleRef(counters.query.handle);
|
|
|
|
|
auto retVal = perfCounters->getApiReport(&query, inputParamSize, inputParam.get(), &outputParamSize, eventComplete);
|
|
|
|
|
perfCounters->deleteQuery(counters.query.handle);
|
|
|
|
|
|
|
|
|
|
if (eventComplete) {
|
|
|
|
|
EXPECT_TRUE(retVal);
|
|
|
|
@ -132,7 +133,7 @@ TEST_P(PerformanceCountersProcessEventTest, givenCorrectInputParamWhenProcessEve
|
|
|
|
|
TagNode<HwPerfCounter> query = {};
|
|
|
|
|
query.tagForCpuAccess = &tag;
|
|
|
|
|
|
|
|
|
|
auto retVal = performanceCountersBase->getApiReport(&query, inputParamSize, inputParam.get(), &outputParamSize, eventComplete);
|
|
|
|
|
auto retVal = perfCounters->getApiReport(&query, inputParamSize, inputParam.get(), &outputParamSize, eventComplete);
|
|
|
|
|
EXPECT_EQ(eventComplete, retVal);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -143,9 +144,9 @@ TEST_F(PerformanceCountersProcessEventTest, givenInvalidInputParamSizeWhenProces
|
|
|
|
|
TagNode<HwPerfCounter> query = {};
|
|
|
|
|
query.tagForCpuAccess = &counters;
|
|
|
|
|
|
|
|
|
|
performanceCountersBase->getQueryHandleRef(counters.query.handle);
|
|
|
|
|
auto retVal = performanceCountersBase->getApiReport(&query, inputParamSize - 1, inputParam.get(), &outputParamSize, eventComplete);
|
|
|
|
|
performanceCountersBase->deleteQuery(counters.query.handle);
|
|
|
|
|
perfCounters->getQueryHandleRef(counters.query.handle);
|
|
|
|
|
auto retVal = perfCounters->getApiReport(&query, inputParamSize - 1, inputParam.get(), &outputParamSize, eventComplete);
|
|
|
|
|
perfCounters->deleteQuery(counters.query.handle);
|
|
|
|
|
|
|
|
|
|
EXPECT_FALSE(retVal);
|
|
|
|
|
EXPECT_EQ(outputParamSize, inputParamSize);
|
|
|
|
@ -158,9 +159,9 @@ TEST_F(PerformanceCountersProcessEventTest, givenNullptrOutputParamSizeWhenProce
|
|
|
|
|
TagNode<HwPerfCounter> query = {};
|
|
|
|
|
query.tagForCpuAccess = &counters;
|
|
|
|
|
|
|
|
|
|
performanceCountersBase->getQueryHandleRef(counters.query.handle);
|
|
|
|
|
auto retVal = performanceCountersBase->getApiReport(&query, inputParamSize, inputParam.get(), nullptr, eventComplete);
|
|
|
|
|
performanceCountersBase->deleteQuery(counters.query.handle);
|
|
|
|
|
perfCounters->getQueryHandleRef(counters.query.handle);
|
|
|
|
|
auto retVal = perfCounters->getApiReport(&query, inputParamSize, inputParam.get(), nullptr, eventComplete);
|
|
|
|
|
perfCounters->deleteQuery(counters.query.handle);
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(retVal);
|
|
|
|
|
EXPECT_EQ(0ull, outputParamSize);
|
|
|
|
@ -173,9 +174,9 @@ TEST_F(PerformanceCountersProcessEventTest, givenNullptrInputZeroSizeWhenProcess
|
|
|
|
|
TagNode<HwPerfCounter> query = {};
|
|
|
|
|
query.tagForCpuAccess = &counters;
|
|
|
|
|
|
|
|
|
|
performanceCountersBase->getQueryHandleRef(counters.query.handle);
|
|
|
|
|
auto retVal = performanceCountersBase->getApiReport(&query, 0, nullptr, &outputParamSize, eventComplete);
|
|
|
|
|
performanceCountersBase->deleteQuery(counters.query.handle);
|
|
|
|
|
perfCounters->getQueryHandleRef(counters.query.handle);
|
|
|
|
|
auto retVal = perfCounters->getApiReport(&query, 0, nullptr, &outputParamSize, eventComplete);
|
|
|
|
|
perfCounters->deleteQuery(counters.query.handle);
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(retVal);
|
|
|
|
|
EXPECT_EQ(inputParamSize, outputParamSize);
|
|
|
|
@ -188,9 +189,9 @@ TEST_F(PerformanceCountersProcessEventTest, givenNullptrInputZeroSizeAndNullptrO
|
|
|
|
|
TagNode<HwPerfCounter> query = {};
|
|
|
|
|
query.tagForCpuAccess = &counters;
|
|
|
|
|
|
|
|
|
|
performanceCountersBase->getQueryHandleRef(counters.query.handle);
|
|
|
|
|
auto retVal = performanceCountersBase->getApiReport(&query, 0, nullptr, nullptr, eventComplete);
|
|
|
|
|
performanceCountersBase->deleteQuery(counters.query.handle);
|
|
|
|
|
perfCounters->getQueryHandleRef(counters.query.handle);
|
|
|
|
|
auto retVal = perfCounters->getApiReport(&query, 0, nullptr, nullptr, eventComplete);
|
|
|
|
|
perfCounters->deleteQuery(counters.query.handle);
|
|
|
|
|
|
|
|
|
|
EXPECT_FALSE(retVal);
|
|
|
|
|
EXPECT_EQ(0ull, outputParamSize);
|
|
|
|
@ -199,7 +200,7 @@ TEST_F(PerformanceCountersProcessEventTest, givenNullptrInputZeroSizeAndNullptrO
|
|
|
|
|
TEST_F(PerformanceCountersProcessEventTest, givenNullptrQueryWhenProcessEventPerfCountersIsCalledThenReturnFalse) {
|
|
|
|
|
EXPECT_EQ(0ull, outputParamSize);
|
|
|
|
|
|
|
|
|
|
auto retVal = performanceCountersBase->getApiReport(nullptr, 0, nullptr, nullptr, eventComplete);
|
|
|
|
|
auto retVal = perfCounters->getApiReport(nullptr, 0, nullptr, nullptr, eventComplete);
|
|
|
|
|
EXPECT_FALSE(retVal);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -228,30 +229,30 @@ struct PerformanceCountersMetricsLibraryTest : public PerformanceCountersMetrics
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersMetricsLibraryTest, givenPerformanceCountersWhenMetricLibraryIsValidThenQueryIsCreated) {
|
|
|
|
|
// Create performance counters.
|
|
|
|
|
createPerformanceCounters(true, true);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCountersBase);
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
auto *performanceCounters = initDeviceWithPerformanceCounters(true, true);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCounters);
|
|
|
|
|
EXPECT_TRUE(performanceCounters->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCounters->getReferenceNumber());
|
|
|
|
|
|
|
|
|
|
// Check metric library context.
|
|
|
|
|
auto context = static_cast<MockMetricsLibrary *>(performanceCountersBase->getMetricsLibraryContext().data);
|
|
|
|
|
auto context = static_cast<MockMetricsLibrary *>(performanceCounters->getMetricsLibraryContext().data);
|
|
|
|
|
EXPECT_NE(nullptr, context);
|
|
|
|
|
EXPECT_EQ(1u, context->contextCount);
|
|
|
|
|
|
|
|
|
|
// Close library.
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersMetricsLibraryTest, givenPerformanceCountersWhenMetricLibraryIsValidThenQueryReturnsValidGpuCommands) {
|
|
|
|
|
// Create performance counters.
|
|
|
|
|
createPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCountersBase);
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
auto *performanceCounters = initDeviceWithPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCounters);
|
|
|
|
|
EXPECT_TRUE(performanceCounters->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCounters->getReferenceNumber());
|
|
|
|
|
|
|
|
|
|
// Obtain required command buffer size.
|
|
|
|
|
uint32_t commandsSize = performanceCountersBase->getGpuCommandsSize(MetricsLibraryApi::GpuCommandBufferType::Render, true);
|
|
|
|
|
uint32_t commandsSize = performanceCounters->getGpuCommandsSize(MetricsLibraryApi::GpuCommandBufferType::Render, true);
|
|
|
|
|
EXPECT_NE(0u, commandsSize);
|
|
|
|
|
|
|
|
|
|
// Fill command buffer.
|
|
|
|
@ -259,178 +260,178 @@ TEST_F(PerformanceCountersMetricsLibraryTest, givenPerformanceCountersWhenMetric
|
|
|
|
|
HwPerfCounter perfCounter = {};
|
|
|
|
|
TagNode<HwPerfCounter> query = {};
|
|
|
|
|
query.tagForCpuAccess = &perfCounter;
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->getGpuCommands(MetricsLibraryApi::GpuCommandBufferType::Render, query, true, sizeof(buffer), buffer));
|
|
|
|
|
EXPECT_TRUE(performanceCounters->getGpuCommands(MetricsLibraryApi::GpuCommandBufferType::Render, query, true, sizeof(buffer), buffer));
|
|
|
|
|
|
|
|
|
|
// Close library.
|
|
|
|
|
performanceCountersBase->deleteQuery(perfCounter.query.handle);
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
performanceCounters->deleteQuery(perfCounter.query.handle);
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersMetricsLibraryTest, givenInitialNonCcsEngineWhenEnablingThenDontAllowCcsOnNextCalls) {
|
|
|
|
|
createPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCountersBase);
|
|
|
|
|
auto *performanceCounters = initDeviceWithPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCounters);
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->enable(false));
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->enable(false));
|
|
|
|
|
EXPECT_FALSE(performanceCountersBase->enable(true));
|
|
|
|
|
EXPECT_TRUE(performanceCounters->enable(false));
|
|
|
|
|
EXPECT_TRUE(performanceCounters->enable(false));
|
|
|
|
|
EXPECT_FALSE(performanceCounters->enable(true));
|
|
|
|
|
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->enable(true));
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_TRUE(performanceCounters->enable(true));
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersMetricsLibraryTest, givenInitialCcsEngineWhenEnablingThenDontAllowNonCcsOnNextCalls) {
|
|
|
|
|
createPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCountersBase);
|
|
|
|
|
auto *performanceCounters = initDeviceWithPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCounters);
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->enable(true));
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->enable(true));
|
|
|
|
|
EXPECT_FALSE(performanceCountersBase->enable(false));
|
|
|
|
|
EXPECT_TRUE(performanceCounters->enable(true));
|
|
|
|
|
EXPECT_TRUE(performanceCounters->enable(true));
|
|
|
|
|
EXPECT_FALSE(performanceCounters->enable(false));
|
|
|
|
|
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->enable(false));
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_TRUE(performanceCounters->enable(false));
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersMetricsLibraryTest, givenPerformanceCountersWhenMetricLibraryIsInvalidThenQueryReturnsInvalidGpuCommands) {
|
|
|
|
|
// Create performance counters.
|
|
|
|
|
createPerformanceCounters(false, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCountersBase);
|
|
|
|
|
EXPECT_FALSE(performanceCountersBase->enable(true));
|
|
|
|
|
auto *performanceCounters = initDeviceWithPerformanceCounters(false, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCounters);
|
|
|
|
|
EXPECT_FALSE(performanceCounters->enable(true));
|
|
|
|
|
|
|
|
|
|
// Obtain required command buffer size.
|
|
|
|
|
uint32_t commandsSize = performanceCountersBase->getGpuCommandsSize(MetricsLibraryApi::GpuCommandBufferType::Render, true);
|
|
|
|
|
uint32_t commandsSize = performanceCounters->getGpuCommandsSize(MetricsLibraryApi::GpuCommandBufferType::Render, true);
|
|
|
|
|
EXPECT_EQ(0u, commandsSize);
|
|
|
|
|
|
|
|
|
|
// Close library.
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersMetricsLibraryTest, givenPerformanceCountersWhenMetricLibraryIsValidThenApiReportSizeIsValid) {
|
|
|
|
|
// Create performance counters.
|
|
|
|
|
createPerformanceCounters(true, true);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCountersBase);
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
auto *performanceCounters = initDeviceWithPerformanceCounters(true, true);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCounters);
|
|
|
|
|
EXPECT_TRUE(performanceCounters->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCounters->getReferenceNumber());
|
|
|
|
|
|
|
|
|
|
// Obtain api report size.
|
|
|
|
|
uint32_t apiReportSize = performanceCountersBase->getApiReportSize();
|
|
|
|
|
uint32_t apiReportSize = performanceCounters->getApiReportSize();
|
|
|
|
|
EXPECT_GT(apiReportSize, 0u);
|
|
|
|
|
|
|
|
|
|
// Close library.
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersMetricsLibraryTest, givenPerformanceCountersWhenMetricLibraryIsInvalidThenApiReportSizeIsInvalid) {
|
|
|
|
|
// Create performance counters.
|
|
|
|
|
createPerformanceCounters(false, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCountersBase);
|
|
|
|
|
EXPECT_FALSE(performanceCountersBase->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
auto *performanceCounters = initDeviceWithPerformanceCounters(false, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCounters);
|
|
|
|
|
EXPECT_FALSE(performanceCounters->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCounters->getReferenceNumber());
|
|
|
|
|
|
|
|
|
|
// Obtain api report size.
|
|
|
|
|
uint32_t apiReportSize = performanceCountersBase->getApiReportSize();
|
|
|
|
|
uint32_t apiReportSize = performanceCounters->getApiReportSize();
|
|
|
|
|
EXPECT_EQ(0u, apiReportSize);
|
|
|
|
|
|
|
|
|
|
// Close library.
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersMetricsLibraryTest, givenPerformanceCountersWhenMetricLibraryIsInvalidThenGpuReportSizeIsInvalid) {
|
|
|
|
|
// Create performance counters.
|
|
|
|
|
createPerformanceCounters(false, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCountersBase);
|
|
|
|
|
EXPECT_FALSE(performanceCountersBase->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
auto *performanceCounters = initDeviceWithPerformanceCounters(false, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCounters);
|
|
|
|
|
EXPECT_FALSE(performanceCounters->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCounters->getReferenceNumber());
|
|
|
|
|
|
|
|
|
|
// Obtain gpu report size.
|
|
|
|
|
uint32_t gpuReportSize = performanceCountersBase->getGpuReportSize();
|
|
|
|
|
uint32_t gpuReportSize = performanceCounters->getGpuReportSize();
|
|
|
|
|
EXPECT_EQ(0u, gpuReportSize);
|
|
|
|
|
|
|
|
|
|
// Close library.
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersMetricsLibraryTest, givenPerformanceCountersWhenMetricLibraryIsValidThenQueryIsAvailable) {
|
|
|
|
|
// Create performance counters.
|
|
|
|
|
createPerformanceCounters(true, true);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCountersBase);
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
auto *performanceCounters = initDeviceWithPerformanceCounters(true, true);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCounters);
|
|
|
|
|
EXPECT_TRUE(performanceCounters->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCounters->getReferenceNumber());
|
|
|
|
|
|
|
|
|
|
// Close library.
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersMetricsLibraryTest, givenPerformanceCountersWhenMetricLibraryIsInvalidThenQueryIsNotAvailable) {
|
|
|
|
|
// Create performance counters.
|
|
|
|
|
createPerformanceCounters(false, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCountersBase);
|
|
|
|
|
EXPECT_FALSE(performanceCountersBase->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
auto *performanceCounters = initDeviceWithPerformanceCounters(false, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCounters);
|
|
|
|
|
EXPECT_FALSE(performanceCounters->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCounters->getReferenceNumber());
|
|
|
|
|
|
|
|
|
|
// Close library.
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersMetricsLibraryTest, givenPerformanceCountersWhenMetricLibraryHasInvalidExportFunctionsDestroyThenQueryIsNotAvailable) {
|
|
|
|
|
createPerformanceCounters(true, false);
|
|
|
|
|
auto metricsLibraryInterface = performanceCountersBase->getMetricsLibraryInterface();
|
|
|
|
|
auto *performanceCounters = initDeviceWithPerformanceCounters(true, false);
|
|
|
|
|
auto metricsLibraryInterface = performanceCounters->getMetricsLibraryInterface();
|
|
|
|
|
auto metricsLibraryDll = reinterpret_cast<MockMetricsLibraryDll *>(metricsLibraryInterface->osLibrary.get());
|
|
|
|
|
metricsLibraryDll->validContextCreate = true;
|
|
|
|
|
metricsLibraryDll->validContextDelete = false;
|
|
|
|
|
EXPECT_NE(nullptr, performanceCountersBase);
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
EXPECT_FALSE(performanceCountersBase->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
EXPECT_NE(nullptr, performanceCounters);
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
EXPECT_FALSE(performanceCounters->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCounters->getReferenceNumber());
|
|
|
|
|
|
|
|
|
|
// Close library.
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersMetricsLibraryTest, givenPerformanceCountersWhenMetricLibraryHasInvalidExportFunctionsCreateAndDestroyThenQueryIsNotAvailable) {
|
|
|
|
|
createPerformanceCounters(true, false);
|
|
|
|
|
auto metricsLibraryInterface = performanceCountersBase->getMetricsLibraryInterface();
|
|
|
|
|
auto *performanceCounters = initDeviceWithPerformanceCounters(true, false);
|
|
|
|
|
auto metricsLibraryInterface = performanceCounters->getMetricsLibraryInterface();
|
|
|
|
|
auto metricsLibraryDll = reinterpret_cast<MockMetricsLibraryDll *>(metricsLibraryInterface->osLibrary.get());
|
|
|
|
|
metricsLibraryDll->validContextCreate = false;
|
|
|
|
|
metricsLibraryDll->validContextDelete = false;
|
|
|
|
|
EXPECT_NE(nullptr, performanceCountersBase);
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
EXPECT_FALSE(performanceCountersBase->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
EXPECT_NE(nullptr, performanceCounters);
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
EXPECT_FALSE(performanceCounters->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCounters->getReferenceNumber());
|
|
|
|
|
|
|
|
|
|
// Close library.
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersMetricsLibraryTest, givenPerformanceCountersWhenMetricLibraryIsValidThenQueryReturnsCorrectApiReport) {
|
|
|
|
|
// Create performance counters.
|
|
|
|
|
createPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCountersBase);
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
auto *performanceCounters = initDeviceWithPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCounters);
|
|
|
|
|
EXPECT_TRUE(performanceCounters->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCounters->getReferenceNumber());
|
|
|
|
|
|
|
|
|
|
// Obtain required command buffer size.
|
|
|
|
|
uint32_t commandsSize = performanceCountersBase->getGpuCommandsSize(MetricsLibraryApi::GpuCommandBufferType::Render, true);
|
|
|
|
|
uint32_t commandsSize = performanceCounters->getGpuCommandsSize(MetricsLibraryApi::GpuCommandBufferType::Render, true);
|
|
|
|
|
EXPECT_NE(0u, commandsSize);
|
|
|
|
|
|
|
|
|
|
// Fill command buffer.
|
|
|
|
@ -438,14 +439,14 @@ TEST_F(PerformanceCountersMetricsLibraryTest, givenPerformanceCountersWhenMetric
|
|
|
|
|
TagNode<HwPerfCounter> query = {};
|
|
|
|
|
HwPerfCounter perfCounter = {};
|
|
|
|
|
query.tagForCpuAccess = &perfCounter;
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->getGpuCommands(MetricsLibraryApi::GpuCommandBufferType::Render, query, true, sizeof(buffer), buffer));
|
|
|
|
|
EXPECT_TRUE(performanceCounters->getGpuCommands(MetricsLibraryApi::GpuCommandBufferType::Render, query, true, sizeof(buffer), buffer));
|
|
|
|
|
|
|
|
|
|
// Obtain api report size.
|
|
|
|
|
uint32_t apiReportSize = performanceCountersBase->getApiReportSize();
|
|
|
|
|
uint32_t apiReportSize = performanceCounters->getApiReportSize();
|
|
|
|
|
EXPECT_GT(apiReportSize, 0u);
|
|
|
|
|
|
|
|
|
|
// Obtain gpu report size.
|
|
|
|
|
uint32_t gpuReportSize = performanceCountersBase->getGpuReportSize();
|
|
|
|
|
uint32_t gpuReportSize = performanceCounters->getGpuReportSize();
|
|
|
|
|
EXPECT_GT(gpuReportSize, 0u);
|
|
|
|
|
|
|
|
|
|
// Allocate memory for api report.
|
|
|
|
@ -453,136 +454,136 @@ TEST_F(PerformanceCountersMetricsLibraryTest, givenPerformanceCountersWhenMetric
|
|
|
|
|
EXPECT_NE(apiReport, nullptr);
|
|
|
|
|
|
|
|
|
|
// Obtain api report.
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->getApiReport(&query, apiReportSize, apiReport, nullptr, true));
|
|
|
|
|
EXPECT_TRUE(performanceCounters->getApiReport(&query, apiReportSize, apiReport, nullptr, true));
|
|
|
|
|
|
|
|
|
|
delete[] apiReport;
|
|
|
|
|
apiReport = nullptr;
|
|
|
|
|
|
|
|
|
|
// Close library.
|
|
|
|
|
performanceCountersBase->deleteQuery(perfCounter.query.handle);
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
performanceCounters->deleteQuery(perfCounter.query.handle);
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersMetricsLibraryTest, givenPerformanceCountersWhenMetricLibraryIsValidThenReferenceCounterIsValid) {
|
|
|
|
|
createPerformanceCounters(true, true);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCountersBase);
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->enable(false));
|
|
|
|
|
EXPECT_EQ(2u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_EQ(1u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
auto *performanceCounters = initDeviceWithPerformanceCounters(true, true);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCounters);
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
EXPECT_TRUE(performanceCounters->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCounters->getReferenceNumber());
|
|
|
|
|
EXPECT_TRUE(performanceCounters->enable(false));
|
|
|
|
|
EXPECT_EQ(2u, performanceCounters->getReferenceNumber());
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
EXPECT_EQ(1u, performanceCounters->getReferenceNumber());
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersMetricsLibraryTest, givenPerformanceCountersWhenMetricLibraryIsValidThenQueryHandleIsValid) {
|
|
|
|
|
createPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCountersBase);
|
|
|
|
|
auto *performanceCounters = initDeviceWithPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCounters);
|
|
|
|
|
|
|
|
|
|
MetricsLibraryApi::QueryHandle_1_0 query = {};
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->enable(false));
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
EXPECT_TRUE(performanceCounters->enable(false));
|
|
|
|
|
|
|
|
|
|
performanceCountersBase->getQueryHandleRef(query);
|
|
|
|
|
performanceCounters->getQueryHandleRef(query);
|
|
|
|
|
EXPECT_TRUE(query.IsValid());
|
|
|
|
|
|
|
|
|
|
performanceCountersBase->deleteQuery(query);
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
performanceCounters->deleteQuery(query);
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersMetricsLibraryTest, givenPerformanceCountersWhenOaConfigurationIsInvalidThenGpuReportSizeIsInvalid) {
|
|
|
|
|
createPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCountersBase);
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
auto *performanceCounters = initDeviceWithPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCounters);
|
|
|
|
|
EXPECT_TRUE(performanceCounters->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCounters->getReferenceNumber());
|
|
|
|
|
|
|
|
|
|
auto metricLibraryApi = static_cast<MockMetricsLibraryValidInterface *>(performanceCountersBase->getMetricsLibraryContext().data);
|
|
|
|
|
auto metricLibraryApi = static_cast<MockMetricsLibraryValidInterface *>(performanceCounters->getMetricsLibraryContext().data);
|
|
|
|
|
metricLibraryApi->validCreateConfigurationOa = false;
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getGpuCommandsSize(MetricsLibraryApi::GpuCommandBufferType::Render, true));
|
|
|
|
|
EXPECT_GT(performanceCountersBase->getGpuCommandsSize(MetricsLibraryApi::GpuCommandBufferType::Render, false), 0u);
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getGpuCommandsSize(MetricsLibraryApi::GpuCommandBufferType::Render, true));
|
|
|
|
|
EXPECT_GT(performanceCounters->getGpuCommandsSize(MetricsLibraryApi::GpuCommandBufferType::Render, false), 0u);
|
|
|
|
|
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersMetricsLibraryTest, GivenInvalidMetricsLibraryWhenGettingGpuCommandSizeThenZeroIsReported) {
|
|
|
|
|
createPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCountersBase);
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
auto *performanceCounters = initDeviceWithPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCounters);
|
|
|
|
|
EXPECT_TRUE(performanceCounters->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCounters->getReferenceNumber());
|
|
|
|
|
|
|
|
|
|
auto metricLibraryApi = static_cast<MockMetricsLibraryValidInterface *>(performanceCountersBase->getMetricsLibraryContext().data);
|
|
|
|
|
auto metricLibraryApi = static_cast<MockMetricsLibraryValidInterface *>(performanceCounters->getMetricsLibraryContext().data);
|
|
|
|
|
metricLibraryApi->validGpuReportSize = false;
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getGpuCommandsSize(MetricsLibraryApi::GpuCommandBufferType::Render, true));
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getGpuCommandsSize(MetricsLibraryApi::GpuCommandBufferType::Render, false));
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getGpuCommandsSize(MetricsLibraryApi::GpuCommandBufferType::Render, true));
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getGpuCommandsSize(MetricsLibraryApi::GpuCommandBufferType::Render, false));
|
|
|
|
|
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersMetricsLibraryTest, givenPerformanceCountersWhenAllConfigurationsAreValidThenGpuReportSizeIsValid) {
|
|
|
|
|
createPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCountersBase);
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
auto *performanceCounters = initDeviceWithPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCounters);
|
|
|
|
|
EXPECT_TRUE(performanceCounters->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCounters->getReferenceNumber());
|
|
|
|
|
|
|
|
|
|
auto metricLibraryApi = static_cast<MockMetricsLibraryValidInterface *>(performanceCountersBase->getMetricsLibraryContext().data);
|
|
|
|
|
auto metricLibraryApi = static_cast<MockMetricsLibraryValidInterface *>(performanceCounters->getMetricsLibraryContext().data);
|
|
|
|
|
metricLibraryApi->validCreateConfigurationOa = true;
|
|
|
|
|
metricLibraryApi->validCreateConfigurationUser = true;
|
|
|
|
|
|
|
|
|
|
EXPECT_GT(performanceCountersBase->getGpuCommandsSize(MetricsLibraryApi::GpuCommandBufferType::Render, true), 0u);
|
|
|
|
|
EXPECT_GT(performanceCountersBase->getGpuCommandsSize(MetricsLibraryApi::GpuCommandBufferType::Render, false), 0u);
|
|
|
|
|
EXPECT_GT(performanceCounters->getGpuCommandsSize(MetricsLibraryApi::GpuCommandBufferType::Render, true), 0u);
|
|
|
|
|
EXPECT_GT(performanceCounters->getGpuCommandsSize(MetricsLibraryApi::GpuCommandBufferType::Render, false), 0u);
|
|
|
|
|
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersMetricsLibraryTest, givenPerformanceCountersWhenOaConfigurationsActivationIsInvalidThenGpuReportSizeIsInvalid) {
|
|
|
|
|
createPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCountersBase);
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
auto *performanceCounters = initDeviceWithPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCounters);
|
|
|
|
|
EXPECT_TRUE(performanceCounters->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCounters->getReferenceNumber());
|
|
|
|
|
|
|
|
|
|
auto metricLibraryApi = static_cast<MockMetricsLibraryValidInterface *>(performanceCountersBase->getMetricsLibraryContext().data);
|
|
|
|
|
auto metricLibraryApi = static_cast<MockMetricsLibraryValidInterface *>(performanceCounters->getMetricsLibraryContext().data);
|
|
|
|
|
metricLibraryApi->validActivateConfigurationOa = false;
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getGpuCommandsSize(MetricsLibraryApi::GpuCommandBufferType::Render, true));
|
|
|
|
|
EXPECT_GT(performanceCountersBase->getGpuCommandsSize(MetricsLibraryApi::GpuCommandBufferType::Render, false), 0u);
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getGpuCommandsSize(MetricsLibraryApi::GpuCommandBufferType::Render, true));
|
|
|
|
|
EXPECT_GT(performanceCounters->getGpuCommandsSize(MetricsLibraryApi::GpuCommandBufferType::Render, false), 0u);
|
|
|
|
|
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersMetricsLibraryTest, givenPerformanceCountersWhenCreatingUserConfigurationThenReturnSuccess) {
|
|
|
|
|
createPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCountersBase);
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
auto *performanceCounters = initDeviceWithPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCounters);
|
|
|
|
|
EXPECT_TRUE(performanceCounters->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCounters->getReferenceNumber());
|
|
|
|
|
|
|
|
|
|
ConfigurationHandle_1_0 configurationHandle = {};
|
|
|
|
|
auto metricsLibrary = performanceCountersBase->getMetricsLibraryInterface();
|
|
|
|
|
auto contextHandle = performanceCountersBase->getMetricsLibraryContext();
|
|
|
|
|
auto metricsLibrary = performanceCounters->getMetricsLibraryInterface();
|
|
|
|
|
auto contextHandle = performanceCounters->getMetricsLibraryContext();
|
|
|
|
|
EXPECT_TRUE(metricsLibrary->userConfigurationCreate(contextHandle, configurationHandle));
|
|
|
|
|
EXPECT_TRUE(metricsLibrary->userConfigurationDelete(configurationHandle));
|
|
|
|
|
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersMetricsLibraryTest, WhenGettingHwPerfCounterThenValidPointerIsReturned) {
|
|
|
|
|
createPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCountersBase);
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
auto *performanceCounters = initDeviceWithPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCounters);
|
|
|
|
|
EXPECT_TRUE(performanceCounters->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCounters->getReferenceNumber());
|
|
|
|
|
|
|
|
|
|
ASSERT_NE(nullptr, queue->getPerfCounters());
|
|
|
|
|
|
|
|
|
@ -597,15 +598,15 @@ TEST_F(PerformanceCountersMetricsLibraryTest, WhenGettingHwPerfCounterThenValidP
|
|
|
|
|
auto perfCounter2 = event->getHwPerfCounterNode();
|
|
|
|
|
ASSERT_EQ(perfCounter, perfCounter2);
|
|
|
|
|
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersMetricsLibraryTest, WhenGettingHwPerfCounterAllocationThenValidPointerIsReturned) {
|
|
|
|
|
createPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCountersBase);
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
auto *performanceCounters = initDeviceWithPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCounters);
|
|
|
|
|
EXPECT_TRUE(performanceCounters->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCounters->getReferenceNumber());
|
|
|
|
|
ASSERT_NE(nullptr, queue->getPerfCounters());
|
|
|
|
|
|
|
|
|
|
std::unique_ptr<Event> event(new Event(queue.get(), CL_COMMAND_COPY_BUFFER, 0, 0));
|
|
|
|
@ -620,15 +621,15 @@ TEST_F(PerformanceCountersMetricsLibraryTest, WhenGettingHwPerfCounterAllocation
|
|
|
|
|
EXPECT_NE(nullptr, memoryStorage);
|
|
|
|
|
EXPECT_GT(memoryStorageSize, 0u);
|
|
|
|
|
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersMetricsLibraryTest, WhenCreatingEventThenHwPerfCounterMemoryIsPlacedInGraphicsAllocation) {
|
|
|
|
|
createPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCountersBase);
|
|
|
|
|
EXPECT_TRUE(performanceCountersBase->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
auto *performanceCounters = initDeviceWithPerformanceCounters(true, false);
|
|
|
|
|
EXPECT_NE(nullptr, performanceCounters);
|
|
|
|
|
EXPECT_TRUE(performanceCounters->enable(false));
|
|
|
|
|
EXPECT_EQ(1u, performanceCounters->getReferenceNumber());
|
|
|
|
|
ASSERT_NE(nullptr, queue->getPerfCounters());
|
|
|
|
|
|
|
|
|
|
std::unique_ptr<Event> event(new Event(queue.get(), CL_COMMAND_COPY_BUFFER, 0, 0));
|
|
|
|
@ -646,8 +647,8 @@ TEST_F(PerformanceCountersMetricsLibraryTest, WhenCreatingEventThenHwPerfCounter
|
|
|
|
|
EXPECT_GE(perfCounter, memoryStorage);
|
|
|
|
|
EXPECT_LE(perfCounter + 1, ptrOffset(memoryStorage, graphicsAllocationSize));
|
|
|
|
|
|
|
|
|
|
performanceCountersBase->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCountersBase->getReferenceNumber());
|
|
|
|
|
performanceCounters->shutdown();
|
|
|
|
|
EXPECT_EQ(0u, performanceCounters->getReferenceNumber());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(PerformanceCountersMetricsLibraryTest, GivenPerformanceCountersObjectIsNotPresentWhenCreatingEventThenNodeisNull) {
|
|
|
|
|