diff --git a/level_zero/core/source/cmdlist/cmdlist_hw.inl b/level_zero/core/source/cmdlist/cmdlist_hw.inl index 75f0320c5a..a0c95d93f5 100644 --- a/level_zero/core/source/cmdlist/cmdlist_hw.inl +++ b/level_zero/core/source/cmdlist/cmdlist_hw.inl @@ -2009,12 +2009,9 @@ ze_result_t CommandListCoreFamily::appendWaitOnEvents(uint32_t nu for (uint32_t i = 0; i < numEvents; i++) { auto event = Event::fromHandle(phEvent[i]); commandContainer.addToResidencyContainer(&event->getAllocation(this->device)); - gpuAddr = event->getGpuAddress(this->device); + gpuAddr = event->getCompletionFieldGpuAddress(this->device); uint32_t packetsToWait = event->getPacketsInUse(); - if (event->isUsingContextEndOffset()) { - gpuAddr += event->getContextEndOffset(); - } for (uint32_t i = 0u; i < packetsToWait; i++) { if (relaxedOrdering) { NEO::EncodeBatchBufferStartOrEnd::programConditionalDataMemBatchBufferStart(*commandContainer.getCommandStream(), 0, gpuAddr, eventStateClear, @@ -2645,20 +2642,19 @@ ze_result_t CommandListCoreFamily::appendWaitOnMemory(void *desc, auto event = Event::fromHandle(hSignalEvent); commandContainer.addToResidencyContainer(&event->getAllocation(this->device)); - uint64_t baseAddr = event->getGpuAddress(this->device); - size_t eventSignalOffset = 0; + uint64_t eventGpuAddr = event->getCompletionFieldGpuAddress(this->device); if (isCopyOnly()) { NEO::MiFlushArgs args; args.commandWithPostSync = true; - NEO::EncodeMiFlushDW::programMiFlushDw(*commandContainer.getCommandStream(), ptrOffset(baseAddr, eventSignalOffset), + NEO::EncodeMiFlushDW::programMiFlushDw(*commandContainer.getCommandStream(), eventGpuAddr, Event::STATE_SIGNALED, args, hwInfo); } else { NEO::PipeControlArgs args; - args.dcFlushEnable = NEO::MemorySynchronizationCommands::getDcFlushEnable(!!event->signalScope, hwInfo); + args.dcFlushEnable = getDcFlushRequired(!!event->signalScope); NEO::MemorySynchronizationCommands::addBarrierWithPostSyncOperation( *commandContainer.getCommandStream(), NEO::PostSyncMode::ImmediateData, - ptrOffset(baseAddr, eventSignalOffset), Event::STATE_SIGNALED, + eventGpuAddr, Event::STATE_SIGNALED, hwInfo, args); } @@ -2724,12 +2720,9 @@ void CommandListCoreFamily::waitOnRemainingEventPackets(Event *ev return; } - uint64_t gpuAddress = event->getGpuAddress(this->device); + uint64_t gpuAddress = event->getCompletionFieldGpuAddress(this->device); size_t packetSize = event->getSinglePacketSize(); gpuAddress += packetSize * packetUsed; - if (event->isUsingContextEndOffset()) { - gpuAddress += event->getContextEndOffset(); - } for (uint32_t i = 0; i < packetsRemaining; i++) { NEO::EncodeSempahore::addMiSemaphoreWaitCommand(*commandContainer.getCommandStream(), @@ -2821,10 +2814,7 @@ void CommandListCoreFamily::dispatchEventPostSyncOperation(Event } auto eventPostSync = estimateEventPostSync(event, packets); - uint64_t gpuAddress = event->getGpuAddress(this->device); - if (event->isUsingContextEndOffset()) { - gpuAddress += event->getContextEndOffset(); - } + uint64_t gpuAddress = event->getCompletionFieldGpuAddress(this->device); if (omitFirstOperation) { gpuAddress += eventPostSync.operationOffset; eventPostSync.operationCount--; @@ -2839,10 +2829,8 @@ void CommandListCoreFamily::dispatchEventRemainingPacketsPostSync uint32_t packets = event->getMaxPacketsCount() - event->getPacketsInUse(); CmdListEventOperation remainingPacketsOperation = estimateEventPostSync(event, packets); - uint64_t eventAddress = event->getGpuAddress(device) + event->getSinglePacketSize() * event->getPacketsInUse(); - if (event->isUsingContextEndOffset()) { - eventAddress += event->getContextEndOffset(); - } + uint64_t eventAddress = event->getCompletionFieldGpuAddress(device); + eventAddress += event->getSinglePacketSize() * event->getPacketsInUse(); bool appendLastPipeControl = false; dispatchPostSyncCommands(remainingPacketsOperation, eventAddress, Event::STATE_SIGNALED, appendLastPipeControl, !!event->signalScope); diff --git a/level_zero/core/source/event/event.h b/level_zero/core/source/event/event.h index 395c61085d..1e524a66ec 100644 --- a/level_zero/core/source/event/event.h +++ b/level_zero/core/source/event/event.h @@ -76,7 +76,15 @@ struct Event : _ze_event_handle_t { uint32_t getCurrKernelDataIndex() const { return kernelCount - 1; } virtual void setGpuStartTimestamp() = 0; virtual void setGpuEndTimestamp() = 0; - + size_t getCompletionFieldOffset() { + return this->isUsingContextEndOffset() ? this->getContextEndOffset() : 0; + } + uint64_t getCompletionFieldGpuAddress(Device *device) { + return this->getGpuAddress(device) + getCompletionFieldOffset(); + } + void *getCompletionFieldHostAddress() { + return ptrOffset(getHostAddress(), getCompletionFieldOffset()); + } size_t getContextStartOffset() const { return contextStartOffset; } diff --git a/level_zero/core/source/event/event_impl.inl b/level_zero/core/source/event/event_impl.inl index efc125845c..53bb0fc39f 100644 --- a/level_zero/core/source/event/event_impl.inl +++ b/level_zero/core/source/event/event_impl.inl @@ -161,9 +161,7 @@ ze_result_t EventImp::queryStatusEventPackets() { if (packets < getMaxPacketsCount()) { uint32_t remainingPackets = getMaxPacketsCount() - packets; auto remainingPacketSyncAddress = ptrOffset(this->hostAddress, packets * this->singlePacketSize); - if (isUsingContextEndOffset()) { - remainingPacketSyncAddress = ptrOffset(remainingPacketSyncAddress, this->contextEndOffset); - } + remainingPacketSyncAddress = ptrOffset(remainingPacketSyncAddress, this->getCompletionFieldOffset()); for (uint32_t i = 0; i < remainingPackets; i++) { void const *queryAddress = remainingPacketSyncAddress; bool ready = NEO::WaitUtils::waitFunctionWithPredicate( @@ -266,10 +264,7 @@ ze_result_t EventImp::hostEventSetValue(TagSizeT eventVal) { return hostEventSetValueTimestamps(eventVal); } - auto packetHostAddr = this->hostAddress; - if (isUsingContextEndOffset()) { - packetHostAddr = ptrOffset(packetHostAddr, this->contextEndOffset); - } + auto packetHostAddr = getCompletionFieldHostAddress(); uint32_t packets = 0; for (uint32_t i = 0; i < kernelCount; i++) { diff --git a/level_zero/core/test/unit_tests/fixtures/cmdlist_fixture.cpp b/level_zero/core/test/unit_tests/fixtures/cmdlist_fixture.cpp index 5aa1d2ba52..03c802d212 100644 --- a/level_zero/core/test/unit_tests/fixtures/cmdlist_fixture.cpp +++ b/level_zero/core/test/unit_tests/fixtures/cmdlist_fixture.cpp @@ -190,10 +190,7 @@ void CommandListEventUsedPacketSignalFixture::setUp() { void TbxImmediateCommandListFixture::setEvent() { auto mockEvent = static_cast(event.get()); - size_t offset = 0; - if (event->isUsingContextEndOffset()) { - offset = event->getContextEndOffset(); - } + size_t offset = event->getCompletionFieldOffset(); void *completionAddress = ptrOffset(mockEvent->hostAddress, offset); size_t packets = event->getPacketsInUse(); EventFieldType signaledValue = Event::STATE_SIGNALED; diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_barrier.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_barrier.cpp index ab0f0fcce8..8588d1cb89 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_barrier.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_barrier.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2022 Intel Corporation + * Copyright (C) 2020-2023 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -317,10 +317,7 @@ HWTEST2_F(MultiTileCommandListAppendBarrier, using MI_SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT; using MI_BATCH_BUFFER_END = typename FamilyType::MI_BATCH_BUFFER_END; - uint64_t eventGpuAddress = event->getGpuAddress(device); - if (event->isUsingContextEndOffset()) { - eventGpuAddress += event->getContextEndOffset(); - } + uint64_t eventGpuAddress = event->getCompletionFieldGpuAddress(device); ze_event_handle_t eventHandle = event->toHandle(); EXPECT_EQ(2u, device->getNEODevice()->getDeviceBitfield().count()); diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_event_reset.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_event_reset.cpp index b56e36abda..e82825afb2 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_event_reset.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_event_reset.cpp @@ -42,10 +42,7 @@ HWTEST_F(CommandListAppendEventReset, givenCmdlistWhenResetEventAppendedThenStor ptrOffset(commandList->commandContainer.getCommandStream()->getCpuBase(), 0), usedSpaceAfter)); - auto gpuAddress = event->getGpuAddress(device); - if (event->isUsingContextEndOffset()) { - gpuAddress += event->getContextEndOffset(); - } + auto gpuAddress = event->getCompletionFieldGpuAddress(device); auto itorSdi = findAll(cmdList.begin(), cmdList.end()); uint32_t sdiFound = 0; ASSERT_NE(0u, itorSdi.size()); @@ -88,10 +85,7 @@ HWTEST_F(CommandListAppendEventReset, givenCmdlistWhenResetEventWithTimeStampIsA auto itorPC = findAll(cmdList.begin(), cmdList.end()); ASSERT_NE(0u, itorPC.size()); - auto gpuAddress = event->getGpuAddress(device); - if (event->isUsingContextEndOffset()) { - gpuAddress += event->getContextEndOffset(); - } + auto gpuAddress = event->getCompletionFieldGpuAddress(device); auto &hwInfo = device->getHwInfo(); auto &l0GfxCoreHelper = device->getNEODevice()->getRootDeviceEnvironment().getHelper(); @@ -171,10 +165,7 @@ HWTEST_F(CommandListAppendEventReset, givenCopyOnlyCmdlistWhenResetEventAppended ASSERT_NE(0u, itorPC.size()); bool postSyncFound = false; - auto gpuAddress = event->getGpuAddress(device); - if (event->isUsingContextEndOffset()) { - gpuAddress += event->getContextEndOffset(); - } + auto gpuAddress = event->getCompletionFieldGpuAddress(device); for (auto it : itorPC) { auto cmd = genCmdCast(*it); @@ -346,10 +337,7 @@ HWTEST2_F(CommandListAppendEventReset, givenEventWithHostScopeUsedInResetThenPip auto event = std::unique_ptr(L0::Event::create(eventPool.get(), &eventDesc, device)); commandList->appendEventReset(event->toHandle()); - auto gpuAddress = event->getGpuAddress(device); - if (event->isUsingContextEndOffset()) { - gpuAddress += event->getContextEndOffset(); - } + auto gpuAddress = event->getCompletionFieldGpuAddress(device); GenCmdList cmdList; ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer( diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_launch_kernel_1.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_launch_kernel_1.cpp index 13ba787d02..3c8b2f180e 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_launch_kernel_1.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_launch_kernel_1.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2022 Intel Corporation + * Copyright (C) 2020-2023 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -719,10 +719,7 @@ HWTEST_F(CommandListAppendLaunchKernel, givenSingleValidWaitEventsThenAddSemapho EXPECT_EQ(static_cast(-1), cmd->getSemaphoreDataDword()); auto addressSpace = device->getHwInfo().capabilityTable.gpuAddressSpace; - uint64_t gpuAddress = event->getGpuAddress(device); - if (event->isUsingContextEndOffset()) { - gpuAddress += event->getContextEndOffset(); - } + uint64_t gpuAddress = event->getCompletionFieldGpuAddress(device); EXPECT_EQ(gpuAddress & addressSpace, cmd->getSemaphoreGraphicsAddress() & addressSpace); } diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_signal_event.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_signal_event.cpp index 367bcf303b..f69fa67ee1 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_signal_event.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_signal_event.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2022 Intel Corporation + * Copyright (C) 2020-2023 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -38,10 +38,7 @@ HWTEST_F(CommandListAppendSignalEvent, WhenAppendingSignalEventWithoutScopeThenM ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer( cmdList, ptrOffset(commandList->commandContainer.getCommandStream()->getCpuBase(), 0), usedSpaceAfter)); - auto baseAddr = event->getGpuAddress(device); - if (event->isUsingContextEndOffset()) { - baseAddr += event->getContextEndOffset(); - } + auto baseAddr = event->getCompletionFieldGpuAddress(device); auto itor = find(cmdList.begin(), cmdList.end()); ASSERT_NE(itor, cmdList.end()); auto cmd = genCmdCast(*itor); @@ -323,10 +320,7 @@ HWTEST2_F(CommandListAppendUsedPacketSignalEvent, commandList->appendSignalEventPostWalker(event.get()); EXPECT_EQ(packets, event->getPacketsInUse()); - auto gpuAddress = event->getGpuAddress(device); - if (event->isUsingContextEndOffset()) { - gpuAddress += event->getContextEndOffset(); - } + auto gpuAddress = event->getCompletionFieldGpuAddress(device); auto &hwInfo = device->getNEODevice()->getHardwareInfo(); size_t expectedSize = NEO::MemorySynchronizationCommands::getSizeForBarrierWithPostSyncOperation(hwInfo, false); @@ -502,10 +496,7 @@ HWTEST2_F(CommandListAppendUsedPacketSignalEvent, auto itorMiFlush = findAll(cmdList.begin(), cmdList.end()); ASSERT_EQ(expectedMiFlushCount, static_cast(itorMiFlush.size())); - auto gpuAddress = event->getGpuAddress(device); - if (event->isUsingContextEndOffset()) { - gpuAddress += event->getContextEndOffset(); - } + auto gpuAddress = event->getCompletionFieldGpuAddress(device); for (uint32_t i = 0; i < expectedMiFlushCount; i++) { if ((expectedMiFlushCount == 2) && (i % 2 == 0)) { @@ -548,10 +539,7 @@ HWTEST2_F(CommandListAppendUsedPacketSignalEvent, auto itorMiFlush = findAll(cmdList.begin(), cmdList.end()); ASSERT_EQ(expectedMiFlushCount, static_cast(itorMiFlush.size())); - auto gpuAddress = event->getGpuAddress(device); - if (event->isUsingContextEndOffset()) { - gpuAddress += event->getContextEndOffset(); - } + auto gpuAddress = event->getCompletionFieldGpuAddress(device); for (uint32_t i = 0; i < expectedMiFlushCount; i++) { if ((expectedMiFlushCount == 2) && (i % 2 == 0)) { diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_wait_on_events.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_wait_on_events.cpp index 232cd957bc..3bd0aa7913 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_wait_on_events.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_wait_on_events.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2022 Intel Corporation + * Copyright (C) 2020-2023 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -51,10 +51,7 @@ HWTEST_F(CommandListAppendWaitOnEvent, WhenAppendingWaitOnEventThenSemaphoreWait auto addressSpace = device->getHwInfo().capabilityTable.gpuAddressSpace; - uint64_t gpuAddress = event->getGpuAddress(device); - if (event->isUsingContextEndOffset()) { - gpuAddress += event->getContextEndOffset(); - } + uint64_t gpuAddress = event->getCompletionFieldGpuAddress(device); EXPECT_EQ(gpuAddress & addressSpace, cmd->getSemaphoreGraphicsAddress() & addressSpace); EXPECT_EQ(cmd->getWaitMode(), @@ -106,10 +103,7 @@ HWTEST2_F(CommandListAppendWaitOnEvent, givenImmediateCmdListWithDirectSubmissio EXPECT_EQ(lrrCmd->getSourceRegisterAddress(), CS_GPR_R4 + 4); EXPECT_EQ(lrrCmd->getDestinationRegisterAddress(), CS_GPR_R0 + 4); - auto eventGpuAddr = event->getGpuAddress(this->device); - if (event->isUsingContextEndOffset()) { - eventGpuAddr += event->getContextEndOffset(); - } + auto eventGpuAddr = event->getCompletionFieldGpuAddress(this->device); // conditional bb_start auto lrmCmd = reinterpret_cast(++lrrCmd); @@ -290,10 +284,7 @@ HWTEST_F(CommandListAppendWaitOnEvent, givenTwoEventsWhenWaitOnEventsAppendedThe auto addressSpace = device->getHwInfo().capabilityTable.gpuAddressSpace; - uint64_t gpuAddress = event->getGpuAddress(device); - if (event->isUsingContextEndOffset()) { - gpuAddress += event->getContextEndOffset(); - } + uint64_t gpuAddress = event->getCompletionFieldGpuAddress(device); for (int i = 0; i < 2; i++) { auto cmd = genCmdCast(*itor[i]); @@ -501,10 +492,7 @@ HWTEST2_F(CommandListAppendWaitOnEvent, givenCommandListWhenAppendWriteGlobalTim auto addressSpace = device->getHwInfo().capabilityTable.gpuAddressSpace; - uint64_t gpuAddress = event->getGpuAddress(device); - if (event->isUsingContextEndOffset()) { - gpuAddress += event->getContextEndOffset(); - } + uint64_t gpuAddress = event->getCompletionFieldGpuAddress(device); EXPECT_EQ(gpuAddress & addressSpace, cmd->getSemaphoreGraphicsAddress() & addressSpace); EXPECT_EQ(cmd->getWaitMode(), @@ -561,10 +549,7 @@ HWTEST_F(CommandListAppendWaitOnEvent, givenCommandBufferIsEmptyWhenAppendingWai EXPECT_EQ(expectedConsumedSpace, usedSpaceAfter); EXPECT_NE(oldCommandBuffer, newCommandBuffer); - auto gpuAddress = event->getGpuAddress(device); - if (event->isUsingContextEndOffset()) { - gpuAddress += event->getContextEndOffset(); - } + auto gpuAddress = event->getCompletionFieldGpuAddress(device); GenCmdList cmdList; ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer(cmdList, diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_memory_extension.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_memory_extension.cpp index bf2d128072..2c526f0f8a 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_memory_extension.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_memory_extension.cpp @@ -432,7 +432,7 @@ HWTEST_F(CommandListAppendWaitOnMem, givenAppendWaitOnMemWithSignalEventAndHostS if (cmd->getPostSyncOperation() == POST_SYNC_OPERATION::POST_SYNC_OPERATION_WRITE_IMMEDIATE_DATA) { EXPECT_TRUE(cmd->getCommandStreamerStallEnable()); EXPECT_EQ(cmd->getImmediateData(), Event::STATE_SIGNALED); - auto gpuAddress = event->getGpuAddress(this->device); + auto gpuAddress = event->getCompletionFieldGpuAddress(this->device); EXPECT_EQ(gpuAddress, NEO::UnitTestHelper::getPipeControlPostSyncAddress(*cmd)); EXPECT_EQ(NEO::MemorySynchronizationCommands::getDcFlushEnable(true, *defaultHwInfo), cmd->getDcFlushEnable()); postSyncFound = true; @@ -482,7 +482,7 @@ HWTEST_F(CommandListAppendWaitOnMem, givenAppendWaitOnMemWithSignalEventAndNoSco if (cmd->getPostSyncOperation() == POST_SYNC_OPERATION::POST_SYNC_OPERATION_WRITE_IMMEDIATE_DATA) { EXPECT_TRUE(cmd->getCommandStreamerStallEnable()); EXPECT_EQ(cmd->getImmediateData(), Event::STATE_SIGNALED); - auto gpuAddress = event->getGpuAddress(this->device); + auto gpuAddress = event->getCompletionFieldGpuAddress(this->device); EXPECT_EQ(gpuAddress, NEO::UnitTestHelper::getPipeControlPostSyncAddress(*cmd)); EXPECT_FALSE(cmd->getDcFlushEnable()); postSyncFound = true; @@ -530,7 +530,7 @@ HWTEST_F(CommandListAppendWaitOnMem, givenAppendWaitOnMemOnBcsWithSignalEventAnd auto cmd = genCmdCast(*it); if (cmd->getPostSyncOperation() == MI_FLUSH_DW::POST_SYNC_OPERATION_WRITE_IMMEDIATE_DATA_QWORD) { EXPECT_EQ(cmd->getImmediateData(), Event::STATE_SIGNALED); - auto gpuAddress = event->getGpuAddress(device); + auto gpuAddress = event->getCompletionFieldGpuAddress(device); EXPECT_EQ(cmd->getDestinationAddress(), gpuAddress); postSyncFound = true; } diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_xehp_and_later.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_xehp_and_later.cpp index 88be34f1e0..efbbae55f9 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_xehp_and_later.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_xehp_and_later.cpp @@ -643,11 +643,8 @@ struct CommandListSignalAllEventPacketFixture : public ModuleFixture { remainingPackets /= commandList->partitionCount; ASSERT_EQ(remainingPackets + extraCleanupStoreDataImm, static_cast(itorStoreDataImm.size())); - uint64_t gpuAddress = event->getGpuAddress(device); + uint64_t gpuAddress = event->getCompletionFieldGpuAddress(device); gpuAddress += (packetUsed * event->getSinglePacketSize()); - if (event->isUsingContextEndOffset()) { - gpuAddress += event->getContextEndOffset(); - } uint32_t startIndex = extraCleanupStoreDataImm; for (uint32_t i = startIndex; i < remainingPackets + extraCleanupStoreDataImm; i++) { @@ -715,10 +712,7 @@ struct CommandListSignalAllEventPacketFixture : public ModuleFixture { uint32_t expectedFlushDw = event->getMaxPacketsCount() * flushCmdWaFactor; ASSERT_EQ(expectedFlushDw, itorFlushDw.size()); - uint64_t gpuAddress = event->getGpuAddress(device); - if (event->isUsingContextEndOffset()) { - gpuAddress += event->getContextEndOffset(); - } + uint64_t gpuAddress = event->getCompletionFieldGpuAddress(device); for (uint32_t i = 0; i < expectedFlushDw; i++) { auto cmd = genCmdCast(*itorFlushDw[i]); @@ -737,10 +731,7 @@ struct CommandListSignalAllEventPacketFixture : public ModuleFixture { auto itorStoreDataImm = findAll(cmdList.begin(), cmdList.end()); auto itorPipeControl = findAll(cmdList.begin(), cmdList.end()); - uint64_t gpuAddress = event->getGpuAddress(device); - if (event->isUsingContextEndOffset()) { - gpuAddress += event->getContextEndOffset(); - } + uint64_t gpuAddress = event->getCompletionFieldGpuAddress(device); uint32_t extraSignalStoreDataImm = 0; if (eventPoolFlags == 0) { @@ -868,11 +859,8 @@ struct CommandListSignalAllEventPacketFixture : public ModuleFixture { remainingPackets /= commandList->partitionCount; ASSERT_EQ(remainingPackets, static_cast(itorStoreDataImm.size())); - uint64_t gpuAddress = event->getGpuAddress(device); + uint64_t gpuAddress = event->getCompletionFieldGpuAddress(device); gpuAddress += (packetUsed * event->getSinglePacketSize()); - if (event->isUsingContextEndOffset()) { - gpuAddress += event->getContextEndOffset(); - } for (uint32_t i = 0; i < remainingPackets; i++) { auto cmd = genCmdCast(*itorStoreDataImm[i]); @@ -929,10 +917,7 @@ struct CommandListSignalAllEventPacketFixture : public ModuleFixture { ptrOffset(cmdStream->getCpuBase(), sizeBefore), (sizeAfter - sizeBefore))); - uint64_t gpuAddress = event->getGpuAddress(device); - if (event->isUsingContextEndOffset()) { - gpuAddress += event->getContextEndOffset(); - } + uint64_t gpuAddress = event->getCompletionFieldGpuAddress(device); if constexpr (copyOnly == 1) { auto itorFlushDw = findAll(cmdList.begin(), cmdList.end()); @@ -1087,10 +1072,7 @@ struct CommandListSignalAllEventPacketFixture : public ModuleFixture { uint32_t allPackets = event->getMaxPacketsCount(); ASSERT_EQ(allPackets, static_cast(itorSemWait.size())); - uint64_t gpuAddress = event->getGpuAddress(device); - if (event->isUsingContextEndOffset()) { - gpuAddress += event->getContextEndOffset(); - } + uint64_t gpuAddress = event->getCompletionFieldGpuAddress(device); for (uint32_t i = 0; i < allPackets; i++) { auto cmd = genCmdCast(*itorSemWait[i]); @@ -1139,10 +1121,7 @@ struct CommandListSignalAllEventPacketFixture : public ModuleFixture { size_t sizeAfter = cmdStream->getUsed(); EXPECT_EQ(ZE_RESULT_SUCCESS, result); - uint64_t gpuAddress = event->getGpuAddress(device); - if (event->isUsingContextEndOffset()) { - gpuAddress += event->getContextEndOffset(); - } + uint64_t gpuAddress = event->getCompletionFieldGpuAddress(device); GenCmdList cmdList; ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer( 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 0890c3c9eb..cf2e77afbd 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 @@ -858,10 +858,7 @@ TEST_F(EventCreate, givenEventWhenSignaledAndResetFromTheHostThenCorrectDataAndO EXPECT_FALSE(event->isUsingContextEndOffset()); } - uint32_t *eventCompletionMemory = reinterpret_cast(event->getHostAddress()); - if (event->isUsingContextEndOffset()) { - eventCompletionMemory = ptrOffset(eventCompletionMemory, event->getContextEndOffset()); - } + uint32_t *eventCompletionMemory = reinterpret_cast(event->getCompletionFieldHostAddress()); uint32_t maxPacketsCount = EventPacketsCount::maxKernelSplit * NEO::TimestampPacketSizeControl::preferredPacketCount; if (l0GfxCoreHelper.useDynamicEventPacketsCount(hwInfo)) { maxPacketsCount = l0GfxCoreHelper.getEventBaseMaxPacketCount(hwInfo); @@ -1203,10 +1200,7 @@ TEST_F(EventPoolIPCEventResetTests, whenOpeningIpcHandleForEventPoolCreateWithIp device))); EXPECT_NE(nullptr, event0); - uint32_t *hostAddr = static_cast(event0->getHostAddress()); - if (event0->isUsingContextEndOffset()) { - hostAddr = ptrOffset(hostAddr, event0->getContextEndOffset()); - } + uint32_t *hostAddr = static_cast(event0->getCompletionFieldHostAddress()); EXPECT_EQ(*hostAddr, Event::STATE_INITIAL); // change state @@ -1221,10 +1215,7 @@ TEST_F(EventPoolIPCEventResetTests, whenOpeningIpcHandleForEventPoolCreateWithIp device))); EXPECT_NE(nullptr, event1); - uint32_t *hostAddr1 = static_cast(event1->getHostAddress()); - if (event1->isUsingContextEndOffset()) { - hostAddr1 = ptrOffset(hostAddr1, event1->getContextEndOffset()); - } + uint32_t *hostAddr1 = static_cast(event1->getCompletionFieldHostAddress()); EXPECT_EQ(*hostAddr1, Event::STATE_SIGNALED); // create another event from the pool with the same index, but this time, since isImportedIpcPool is false, reset should happen @@ -1235,10 +1226,7 @@ TEST_F(EventPoolIPCEventResetTests, whenOpeningIpcHandleForEventPoolCreateWithIp device))); EXPECT_NE(nullptr, event2); - uint32_t *hostAddr2 = static_cast(event2->getHostAddress()); - if (event2->isUsingContextEndOffset()) { - hostAddr2 = ptrOffset(hostAddr2, event2->getContextEndOffset()); - } + uint32_t *hostAddr2 = static_cast(event2->getCompletionFieldHostAddress()); EXPECT_EQ(*hostAddr2, Event::STATE_INITIAL); } @@ -2054,10 +2042,7 @@ TEST_F(EventTests, givenRegularEventUseMultiplePacketsWhenHostSignalThenExpectAl device))); ASSERT_NE(event, nullptr); - uint32_t *hostAddr = static_cast(event->getHostAddress()); - if (event->isUsingContextEndOffset()) { - hostAddr = ptrOffset(hostAddr, event->getContextEndOffset()); - } + uint32_t *hostAddr = static_cast(event->getCompletionFieldHostAddress()); EXPECT_EQ(*hostAddr, Event::STATE_INITIAL); EXPECT_EQ(1u, event->getPacketsInUse()); @@ -2080,10 +2065,7 @@ TEST_F(EventUsedPacketSignalTests, givenEventUseMultiplePacketsWhenHostSignalThe device))); ASSERT_NE(event, nullptr); - size_t eventOffset = 0; - if (event->isUsingContextEndOffset()) { - eventOffset = event->getContextEndOffset(); - } + size_t eventOffset = event->getCompletionFieldOffset(); uint32_t *hostAddr = static_cast(ptrOffset(event->getHostAddress(), eventOffset)); @@ -2334,10 +2316,7 @@ HWTEST_F(EventTests, GivenEventIsReadyToDownloadAllAlocationsWhenDownloadAllocat auto event = whiteboxCast(Event::create(eventPool.get(), &eventDesc, device)); - size_t offset = 0; - if (event->isUsingContextEndOffset()) { - offset = event->getContextEndOffset(); - } + size_t offset = event->getCompletionFieldOffset(); void *completionAddress = ptrOffset(event->hostAddress, offset); size_t packets = event->getPacketsInUse(); uint32_t signaledValue = Event::STATE_SIGNALED; @@ -2368,10 +2347,7 @@ HWTEST_F(EventTests, GivenNotReadyEventBecomesReadyWhenDownloadAllocationRequire EXPECT_FALSE(ultCsr.downloadAllocationsCalled); EXPECT_EQ(0u, ultCsr.downloadAllocationsCalledCount); - size_t offset = 0; - if (event->isUsingContextEndOffset()) { - offset = event->getContextEndOffset(); - } + size_t offset = event->getCompletionFieldOffset(); void *completionAddress = ptrOffset(event->hostAddress, offset); size_t packets = event->getPacketsInUse(); uint32_t signaledValue = Event::STATE_SIGNALED; @@ -2423,10 +2399,7 @@ HWTEST_F(EventTests, GivenCsrTbxModeWhenEventCreatedAndSignaledThenEventAllocati EXPECT_EQ(3u, mockMemIface->isResidentCalledCount); EXPECT_EQ(1, mockMemIface->makeResidentCalledCount); - size_t offset = 0; - if (event->isUsingContextEndOffset()) { - offset = event->getContextEndOffset(); - } + size_t offset = event->getCompletionFieldOffset(); void *completionAddress = ptrOffset(event->hostAddress, offset); size_t packets = event->getPacketsInUse(); uint32_t signaledValue = Event::STATE_SIGNALED; @@ -2853,10 +2826,7 @@ void testQueryAllPackets(L0::Event *event, bool singlePacket) { uint32_t maxPackets = event->getMaxPacketsCount(); size_t packetSize = event->getSinglePacketSize(); - void *firstPacketAddress = event->getHostAddress(); - if (event->isUsingContextEndOffset()) { - firstPacketAddress = ptrOffset(firstPacketAddress, event->getContextEndOffset()); - } + void *firstPacketAddress = event->getCompletionFieldHostAddress(); void *eventHostAddress = firstPacketAddress; for (uint32_t i = 0; i < usedPackets; i++) { uint32_t *completionField = reinterpret_cast(eventHostAddress);