diff --git a/level_zero/core/source/event/event.h b/level_zero/core/source/event/event.h index bcb05bce05..99128f01eb 100644 --- a/level_zero/core/source/event/event.h +++ b/level_zero/core/source/event/event.h @@ -282,6 +282,10 @@ struct Event : _ze_event_handle_t { void unsetInOrderExecInfo(); uint32_t getCounterBasedFlags() const { return counterBasedFlags; } + uint32_t getPacketsToWait() const { + return this->signalAllEventPackets ? getMaxPacketsCount() : getPacketsInUse(); + } + protected: Event(int index, Device *device) : device(device), index(index) {} diff --git a/level_zero/core/test/unit_tests/mocks/mock_event.h b/level_zero/core/test/unit_tests/mocks/mock_event.h index 3ff727d367..e446699551 100644 --- a/level_zero/core/test/unit_tests/mocks/mock_event.h +++ b/level_zero/core/test/unit_tests/mocks/mock_event.h @@ -27,6 +27,7 @@ struct WhiteBox<::L0::Event> : public ::L0::Event { using BaseClass::isFromIpcPool; using BaseClass::l3FlushAppliedOnKernel; using BaseClass::maxKernelCount; + using BaseClass::maxPacketCount; using BaseClass::signalAllEventPackets; using BaseClass::signalScope; using BaseClass::waitScope; @@ -44,6 +45,7 @@ struct WhiteBox<::L0::EventImp> : public L0::EventImp { using BaseClass::isFromIpcPool; using BaseClass::l3FlushAppliedOnKernel; using BaseClass::maxKernelCount; + using BaseClass::maxPacketCount; using BaseClass::signalAllEventPackets; using BaseClass::signalScope; using BaseClass::waitScope; @@ -106,6 +108,7 @@ class MockEvent : public ::L0::Event { using ::L0::Event::isFromIpcPool; using ::L0::Event::l3FlushAppliedOnKernel; using ::L0::Event::maxKernelCount; + using ::L0::Event::maxPacketCount; using ::L0::Event::signalAllEventPackets; using ::L0::Event::signalScope; using ::L0::Event::waitScope; 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 c773cde807..a22337e7e2 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 @@ -3903,6 +3903,16 @@ TEST_F(EventTests, givenCallToEventQueryStatusWithNullKernelPointerReturnsCounte EXPECT_EQ(nullptr, event->getKernelWithPrintfDeviceMutex()); } +HWTEST_F(EventTests, givenSignalAllPacketsValueWhenGettingEventPacketToWaitThenReturnCorrectValue) { + event->maxPacketCount = 4; + + event->signalAllEventPackets = true; + EXPECT_EQ(4u, event->getPacketsToWait()); + + event->signalAllEventPackets = false; + EXPECT_EQ(event->getPacketsInUse(), event->getPacketsToWait()); +} + TEST_F(EventSynchronizeTest, whenEventSetCsrThenCorrectCsrSet) { auto defaultCsr = neoDevice->getDefaultEngine().commandStreamReceiver; const auto mockCsr = std::make_unique(*neoDevice->getExecutionEnvironment(), 0, neoDevice->getDeviceBitfield());