refactor: add out cmd argument to semaphore wait encoder
Related-To: NEO-10065 Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
parent
15934ceb43
commit
4baee71974
|
@ -3410,7 +3410,7 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendWaitOnMemory(void *desc,
|
|||
UNRECOVERABLE_IF(getHighPart(data) != 0);
|
||||
}
|
||||
|
||||
NEO::EncodeSemaphore<GfxFamily>::addMiSemaphoreWaitCommand(*commandContainer.getCommandStream(), gpuAddress, data, comparator, false, useQwordData, indirectMode);
|
||||
NEO::EncodeSemaphore<GfxFamily>::addMiSemaphoreWaitCommand(*commandContainer.getCommandStream(), gpuAddress, data, comparator, false, useQwordData, indirectMode, nullptr);
|
||||
|
||||
const auto &rootDeviceEnvironment = this->device->getNEODevice()->getRootDeviceEnvironment();
|
||||
auto allocType = srcAllocationStruct.alloc->getAllocationType();
|
||||
|
@ -3648,7 +3648,7 @@ void CommandListCoreFamily<gfxCoreFamily>::appendWaitOnSingleEvent(Event *event,
|
|||
NEO::EncodeSemaphore<GfxFamily>::addMiSemaphoreWaitCommand(*commandContainer.getCommandStream(),
|
||||
gpuAddr,
|
||||
Event::STATE_CLEARED,
|
||||
COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD, false, false, false);
|
||||
COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD, false, false, false, nullptr);
|
||||
}
|
||||
|
||||
gpuAddr += event->getSinglePacketSize();
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2018-2023 Intel Corporation
|
||||
* Copyright (C) 2018-2024 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
|
@ -288,7 +288,7 @@ inline void HardwareInterface<GfxFamily>::dispatchDebugPauseCommands(
|
|||
EncodeSemaphore<GfxFamily>::addMiSemaphoreWaitCommand(*commandStream,
|
||||
address,
|
||||
static_cast<uint32_t>(waitCondition),
|
||||
COMPARE_OPERATION::COMPARE_OPERATION_SAD_EQUAL_SDD, false, false, false);
|
||||
COMPARE_OPERATION::COMPARE_OPERATION_SAD_EQUAL_SDD, false, false, false, nullptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -424,7 +424,8 @@ struct EncodeSemaphore {
|
|||
COMPARE_OPERATION compareMode,
|
||||
bool registerPollMode,
|
||||
bool useQwordData,
|
||||
bool indirect);
|
||||
bool indirect,
|
||||
void **outSemWaitCmd);
|
||||
|
||||
static void applyMiSemaphoreWaitCommand(LinearStream &commandStream,
|
||||
std::list<void *> &commandsList);
|
||||
|
|
|
@ -813,8 +813,12 @@ void EncodeSemaphore<Family>::addMiSemaphoreWaitCommand(LinearStream &commandStr
|
|||
COMPARE_OPERATION compareMode,
|
||||
bool registerPollMode,
|
||||
bool useQwordData,
|
||||
bool indirect) {
|
||||
bool indirect,
|
||||
void **outSemWaitCmd) {
|
||||
auto semaphoreCommand = commandStream.getSpaceForCmd<MI_SEMAPHORE_WAIT>();
|
||||
if (outSemWaitCmd != nullptr) {
|
||||
*outSemWaitCmd = semaphoreCommand;
|
||||
}
|
||||
programMiSemaphoreWait(semaphoreCommand, compareAddress, compareData, compareMode, registerPollMode, true, useQwordData, indirect);
|
||||
}
|
||||
template <typename Family>
|
||||
|
|
|
@ -304,7 +304,7 @@ void DirectSubmissionHw<GfxFamily, Dispatcher>::dispatchRelaxedOrderingScheduler
|
|||
schedulerCmdStream.getSpace(EncodeMiPredicate<GfxFamily>::getCmdSize()); // skip patching
|
||||
|
||||
EncodeSemaphore<GfxFamily>::addMiSemaphoreWaitCommand(schedulerCmdStream, semaphoreGpuVa, value,
|
||||
COMPARE_OPERATION::COMPARE_OPERATION_SAD_GREATER_THAN_OR_EQUAL_SDD, false, false, false);
|
||||
COMPARE_OPERATION::COMPARE_OPERATION_SAD_GREATER_THAN_OR_EQUAL_SDD, false, false, false, nullptr);
|
||||
}
|
||||
|
||||
// skip patching End section
|
||||
|
@ -552,7 +552,7 @@ inline void DirectSubmissionHw<GfxFamily, Dispatcher>::dispatchSemaphoreSection(
|
|||
EncodeSemaphore<GfxFamily>::addMiSemaphoreWaitCommand(ringCommandStream,
|
||||
semaphoreGpuVa,
|
||||
value,
|
||||
COMPARE_OPERATION::COMPARE_OPERATION_SAD_GREATER_THAN_OR_EQUAL_SDD, false, false, false);
|
||||
COMPARE_OPERATION::COMPARE_OPERATION_SAD_GREATER_THAN_OR_EQUAL_SDD, false, false, false, nullptr);
|
||||
}
|
||||
|
||||
if (miMemFenceRequired) {
|
||||
|
@ -841,7 +841,7 @@ void DirectSubmissionHw<GfxFamily, Dispatcher>::preinitializeRelaxedOrderingSect
|
|||
|
||||
EncodeMiPredicate<GfxFamily>::encode(schedulerStream, MiPredicateType::disable);
|
||||
|
||||
EncodeSemaphore<GfxFamily>::addMiSemaphoreWaitCommand(schedulerStream, 0, 0, COMPARE_OPERATION::COMPARE_OPERATION_SAD_GREATER_THAN_OR_EQUAL_SDD, false, false, false);
|
||||
EncodeSemaphore<GfxFamily>::addMiSemaphoreWaitCommand(schedulerStream, 0, 0, COMPARE_OPERATION::COMPARE_OPERATION_SAD_GREATER_THAN_OR_EQUAL_SDD, false, false, false, nullptr);
|
||||
}
|
||||
|
||||
// 3. End section
|
||||
|
|
|
@ -349,7 +349,7 @@ void BlitCommandsHelper<GfxFamily>::dispatchDebugPauseCommands(LinearStream &com
|
|||
EncodeMiFlushDW<GfxFamily>::programWithWa(commandStream, debugPauseStateGPUAddress, static_cast<uint32_t>(confirmationTrigger),
|
||||
args);
|
||||
|
||||
EncodeSemaphore<GfxFamily>::addMiSemaphoreWaitCommand(commandStream, debugPauseStateGPUAddress, static_cast<uint32_t>(waitCondition), COMPARE_OPERATION::COMPARE_OPERATION_SAD_EQUAL_SDD, false, false, false);
|
||||
EncodeSemaphore<GfxFamily>::addMiSemaphoreWaitCommand(commandStream, debugPauseStateGPUAddress, static_cast<uint32_t>(waitCondition), COMPARE_OPERATION::COMPARE_OPERATION_SAD_EQUAL_SDD, false, false, false, nullptr);
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
|
|
|
@ -293,7 +293,7 @@ void BlitCommandsHelper<GfxFamily>::programGlobalSequencerFlush(LinearStream &co
|
|||
globalInvalidationRegister,
|
||||
0u,
|
||||
COMPARE_OPERATION::COMPARE_OPERATION_SAD_EQUAL_SDD,
|
||||
true, false, false);
|
||||
true, false, false, nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2018-2023 Intel Corporation
|
||||
* Copyright (C) 2018-2024 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
|
@ -104,7 +104,7 @@ struct TimestampPacketHelper {
|
|||
|
||||
for (uint32_t packetId = 0; packetId < timestampPacketNode.getPacketsUsed(); packetId++) {
|
||||
uint64_t compareOffset = packetId * timestampPacketNode.getSinglePacketSize();
|
||||
EncodeSemaphore<GfxFamily>::addMiSemaphoreWaitCommand(cmdStream, compareAddress + compareOffset, TimestampPacketConstants::initValue, COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD, false, false, false);
|
||||
EncodeSemaphore<GfxFamily>::addMiSemaphoreWaitCommand(cmdStream, compareAddress + compareOffset, TimestampPacketConstants::initValue, COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD, false, false, false, nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -91,7 +91,7 @@ template <>
|
|||
void MemorySynchronizationCommands<Family>::addAdditionalSynchronizationForDirectSubmission(LinearStream &commandStream, uint64_t gpuAddress, bool acquire, const RootDeviceEnvironment &rootDeviceEnvironment) {
|
||||
using COMPARE_OPERATION = typename Family::MI_SEMAPHORE_WAIT::COMPARE_OPERATION;
|
||||
|
||||
EncodeSemaphore<Family>::addMiSemaphoreWaitCommand(commandStream, gpuAddress, EncodeSemaphore<Family>::invalidHardwareTag, COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD, false, false, false);
|
||||
EncodeSemaphore<Family>::addMiSemaphoreWaitCommand(commandStream, gpuAddress, EncodeSemaphore<Family>::invalidHardwareTag, COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD, false, false, false, nullptr);
|
||||
}
|
||||
|
||||
template <>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2020-2023 Intel Corporation
|
||||
* Copyright (C) 2020-2024 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
|
@ -57,7 +57,7 @@ HWTEST_F(CommandEncodeSemaphore, whenAddingMiSemaphoreCommandThenExpectCompareFi
|
|||
EncodeSemaphore<FamilyType>::addMiSemaphoreWaitCommand(stream,
|
||||
0xFF00FF000u,
|
||||
5u,
|
||||
compareMode, false, false, false);
|
||||
compareMode, false, false, false, nullptr);
|
||||
|
||||
EXPECT_EQ(NEO::EncodeSemaphore<FamilyType>::getSizeMiSemaphoreWait(), stream.getUsed());
|
||||
|
||||
|
@ -81,10 +81,11 @@ HWTEST2_F(CommandEncodeSemaphore, givenIndirectModeSetWhenProgrammingSemaphoreTh
|
|||
LinearStream stream(buffer.get(), 128);
|
||||
COMPARE_OPERATION compareMode = COMPARE_OPERATION::COMPARE_OPERATION_SAD_GREATER_THAN_OR_EQUAL_SDD;
|
||||
|
||||
void *outSemWait = nullptr;
|
||||
EncodeSemaphore<FamilyType>::addMiSemaphoreWaitCommand(stream,
|
||||
0xFF00FF000u,
|
||||
5u,
|
||||
compareMode, false, false, true);
|
||||
compareMode, false, false, true, &outSemWait);
|
||||
|
||||
EXPECT_EQ(NEO::EncodeSemaphore<FamilyType>::getSizeMiSemaphoreWait(), stream.getUsed());
|
||||
|
||||
|
@ -93,6 +94,10 @@ HWTEST2_F(CommandEncodeSemaphore, givenIndirectModeSetWhenProgrammingSemaphoreTh
|
|||
MI_SEMAPHORE_WAIT *miSemaphore = hwParse.getCommand<MI_SEMAPHORE_WAIT>();
|
||||
ASSERT_NE(nullptr, miSemaphore);
|
||||
|
||||
auto outSemWaitCmd = genCmdCast<MI_SEMAPHORE_WAIT *>(outSemWait);
|
||||
ASSERT_NE(nullptr, outSemWaitCmd);
|
||||
EXPECT_EQ(miSemaphore, outSemWaitCmd);
|
||||
|
||||
EXPECT_TRUE(miSemaphore->getIndirectSemaphoreDataDword());
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue