From a0a735804f396eed3b58989a8f5c7d6bcf6ab84d Mon Sep 17 00:00:00 2001 From: Bartosz Dunajski Date: Wed, 19 Feb 2025 15:24:13 +0000 Subject: [PATCH] feature: disable counter caching for external storage Events Related-To: NEO-13971 Signed-off-by: Bartosz Dunajski --- level_zero/core/test/unit_tests/sources/event/test_event.cpp | 3 ++- shared/source/helpers/in_order_cmd_helpers.h | 4 +++- .../unit_test/command_container/command_encoder_tests.cpp | 4 ++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/level_zero/core/test/unit_tests/sources/event/test_event.cpp b/level_zero/core/test/unit_tests/sources/event/test_event.cpp index 4be311daf4..373429dde5 100644 --- a/level_zero/core/test/unit_tests/sources/event/test_event.cpp +++ b/level_zero/core/test/unit_tests/sources/event/test_event.cpp @@ -4618,7 +4618,8 @@ HWTEST2_F(EventMultiTileDynamicPacketUseTest, givenEventCounterBasedUsedCreatedO inOrderExecInfo0->setLastWaitedCounterValue(1); event0->updateInOrderExecState(inOrderExecInfo0, 1, 0); - auto inOrderExecInfo1 = NEO::InOrderExecInfo::createFromExternalAllocation(*device->getNEODevice(), nullptr, 0x1, nullptr, nullptr, 1, 1, 1); + uint64_t counter = 2; + auto inOrderExecInfo1 = NEO::InOrderExecInfo::createFromExternalAllocation(*device->getNEODevice(), nullptr, 0x1, nullptr, &counter, 1, 1, 1); inOrderExecInfo1->setLastWaitedCounterValue(1); event1->updateInOrderExecState(inOrderExecInfo1, 1, 0); diff --git a/shared/source/helpers/in_order_cmd_helpers.h b/shared/source/helpers/in_order_cmd_helpers.h index 872838daec..5365db4223 100644 --- a/shared/source/helpers/in_order_cmd_helpers.h +++ b/shared/source/helpers/in_order_cmd_helpers.h @@ -84,7 +84,9 @@ class InOrderExecInfo : public NEO::NonCopyableClass { void reset(); bool isExternalMemoryExecInfo() const { return deviceCounterNode == nullptr; } void setLastWaitedCounterValue(uint64_t value) { - lastWaitedCounterValue = std::max(value, lastWaitedCounterValue); + if (!isExternalMemoryExecInfo()) { + lastWaitedCounterValue = std::max(value, lastWaitedCounterValue); + } } bool isCounterAlreadyDone(uint64_t waitValue) const { diff --git a/shared/test/unit_test/command_container/command_encoder_tests.cpp b/shared/test/unit_test/command_container/command_encoder_tests.cpp index 00c569370f..c7db1b97c8 100644 --- a/shared/test/unit_test/command_container/command_encoder_tests.cpp +++ b/shared/test/unit_test/command_container/command_encoder_tests.cpp @@ -297,6 +297,10 @@ HWTEST_F(CommandEncoderTests, givenInOrderExecutionInfoWhenSetLastCounterValueIs EXPECT_FALSE(inOrderExecInfo->isCounterAlreadyDone(2u)); EXPECT_FALSE(inOrderExecInfo->isCounterAlreadyDone(3u)); EXPECT_FALSE(inOrderExecInfo->isCounterAlreadyDone(0u)); + + inOrderExecInfo = std::make_unique(nullptr, nullptr, mockDevice, 2, true, false); + inOrderExecInfo->setLastWaitedCounterValue(2); + EXPECT_FALSE(inOrderExecInfo->isCounterAlreadyDone(1)); } HWTEST_F(CommandEncoderTests, givenInOrderExecutionInfoWhenResetCalledThenUploadToTbx) {