Skip to content

Commit 18ccd44

Browse files
Unify programming of semaphore command
Change-Id: Iae9060935554df366d9687e9f16c3b5dce9155ee Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
1 parent 5f4d54c commit 18ccd44

File tree

6 files changed

+16
-65
lines changed

6 files changed

+16
-65
lines changed

level_zero/core/source/cmdlist/cmdlist_hw.inl

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222
#include "shared/source/memory_manager/graphics_allocation.h"
2323
#include "shared/source/memory_manager/memory_manager.h"
2424

25-
#include "opencl/source/helpers/hardware_commands_helper.h"
26-
2725
#include "level_zero/core/source/cmdlist/cmdlist_hw.h"
2826
#include "level_zero/core/source/device/device_imp.h"
2927
#include "level_zero/core/source/event/event.h"
@@ -882,13 +880,13 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendMemoryCopyRegion(void *d
882880
size_t srcSize = 0;
883881

884882
if (srcRegion->depth > 1) {
885-
uint hostPtrDstOffset = dstRegion->originX + ((dstRegion->originY) * dstPitch) + ((dstRegion->originZ) * dstSlicePitch);
886-
uint hostPtrSrcOffset = srcRegion->originX + ((srcRegion->originY) * srcPitch) + ((srcRegion->originZ) * srcSlicePitch);
883+
uint32_t hostPtrDstOffset = dstRegion->originX + ((dstRegion->originY) * dstPitch) + ((dstRegion->originZ) * dstSlicePitch);
884+
uint32_t hostPtrSrcOffset = srcRegion->originX + ((srcRegion->originY) * srcPitch) + ((srcRegion->originZ) * srcSlicePitch);
887885
dstSize = (dstRegion->width * dstRegion->height * dstRegion->depth) + hostPtrDstOffset;
888886
srcSize = (srcRegion->width * srcRegion->height * srcRegion->depth) + hostPtrSrcOffset;
889887
} else {
890-
uint hostPtrDstOffset = dstRegion->originX + ((dstRegion->originY) * dstPitch);
891-
uint hostPtrSrcOffset = srcRegion->originX + ((srcRegion->originY) * srcPitch);
888+
uint32_t hostPtrDstOffset = dstRegion->originX + ((dstRegion->originY) * dstPitch);
889+
uint32_t hostPtrSrcOffset = srcRegion->originX + ((srcRegion->originY) * srcPitch);
892890
dstSize = (dstRegion->width * dstRegion->height) + hostPtrDstOffset;
893891
srcSize = (srcRegion->width * srcRegion->height) + hostPtrSrcOffset;
894892
}
@@ -976,10 +974,10 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendMemoryCopyKernel3d(NEO::
976974
ze_group_count_t dispatchFuncArgs{srcRegion->width / groupSizeX, srcRegion->height / groupSizeY,
977975
srcRegion->depth / groupSizeZ};
978976

979-
uint srcOrigin[3] = {(srcRegion->originX + static_cast<uint32_t>(srcOffset)), (srcRegion->originY), (srcRegion->originZ)};
980-
uint dstOrigin[3] = {(dstRegion->originX + static_cast<uint32_t>(dstOffset)), (dstRegion->originY), (dstRegion->originZ)};
981-
uint srcPitches[2] = {(srcPitch), (srcSlicePitch)};
982-
uint dstPitches[2] = {(dstPitch), (dstSlicePitch)};
977+
uint32_t srcOrigin[3] = {(srcRegion->originX + static_cast<uint32_t>(srcOffset)), (srcRegion->originY), (srcRegion->originZ)};
978+
uint32_t dstOrigin[3] = {(dstRegion->originX + static_cast<uint32_t>(dstOffset)), (dstRegion->originY), (dstRegion->originZ)};
979+
uint32_t srcPitches[2] = {(srcPitch), (srcSlicePitch)};
980+
uint32_t dstPitches[2] = {(dstPitch), (dstSlicePitch)};
983981

984982
auto dstValPtr = static_cast<uintptr_t>(dstGA->getGpuAddress());
985983
auto srcValPtr = static_cast<uintptr_t>(srcGA->getGpuAddress());
@@ -1035,8 +1033,8 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendMemoryCopyKernel2d(NEO::
10351033

10361034
ze_group_count_t dispatchFuncArgs{srcRegion->width / groupSizeX, srcRegion->height / groupSizeY, 1u};
10371035

1038-
uint srcOrigin[2] = {(srcRegion->originX + static_cast<uint32_t>(srcOffset)), (srcRegion->originY)};
1039-
uint dstOrigin[2] = {(dstRegion->originX + static_cast<uint32_t>(dstOffset)), (dstRegion->originY)};
1036+
uint32_t srcOrigin[2] = {(srcRegion->originX + static_cast<uint32_t>(srcOffset)), (srcRegion->originY)};
1037+
uint32_t dstOrigin[2] = {(dstRegion->originX + static_cast<uint32_t>(dstOffset)), (dstRegion->originY)};
10401038

10411039
auto dstValPtr = static_cast<uintptr_t>(dstGA->getGpuAddress());
10421040
auto srcValPtr = static_cast<uintptr_t>(srcGA->getGpuAddress());
@@ -1374,11 +1372,10 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendWaitOnEvents(uint32_t nu
13741372
if (event->isTimestampEvent) {
13751373
gpuAddr += offsetof(KernelTimestampEvent, contextEnd);
13761374
}
1377-
1378-
NEO::HardwareCommandsHelper<GfxFamily>::programMiSemaphoreWait(*(commandContainer.getCommandStream()),
1379-
gpuAddr,
1380-
eventStateClear,
1381-
COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD);
1375+
NEO::EncodeSempahore<GfxFamily>::addMiSemaphoreWaitCommand(*commandContainer.getCommandStream(),
1376+
gpuAddr,
1377+
eventStateClear,
1378+
COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD);
13821379

13831380
bool dcFlushEnable = (!event->waitScope) ? false : true;
13841381
if (dcFlushEnable) {

opencl/source/helpers/hardware_commands_helper.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -142,11 +142,6 @@ struct HardwareCommandsHelper : public PerThreadDataHelper {
142142
WALKER_TYPE<GfxFamily> *walkerCmd,
143143
uint32_t &interfaceDescriptorIndex);
144144

145-
static void programMiSemaphoreWait(LinearStream &commandStream,
146-
uint64_t compareAddress,
147-
uint32_t compareData,
148-
COMPARE_OPERATION compareMode);
149-
150145
static void programMiAtomic(LinearStream &commandStream, uint64_t writeAddress, typename MI_ATOMIC::ATOMIC_OPCODES opcode, typename MI_ATOMIC::DATA_SIZE dataSize);
151146
static void programMiAtomic(MI_ATOMIC &atomic, uint64_t writeAddress, typename MI_ATOMIC::ATOMIC_OPCODES opcode, typename MI_ATOMIC::DATA_SIZE dataSize);
152147
static void programCacheFlushAfterWalkerCommand(LinearStream *commandStream, const CommandQueue &commandQueue, const Kernel *kernel, uint64_t postSyncAddress);

opencl/source/helpers/hardware_commands_helper_base.inl

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -382,23 +382,6 @@ void HardwareCommandsHelper<GfxFamily>::updatePerThreadDataTotal(
382382
DEBUG_BREAK_IF(sizePerThreadDataTotal == 0); // Hardware requires at least 1 GRF of perThreadData for each thread in thread group
383383
}
384384

385-
template <typename GfxFamily>
386-
void HardwareCommandsHelper<GfxFamily>::programMiSemaphoreWait(LinearStream &commandStream,
387-
uint64_t compareAddress,
388-
uint32_t compareData,
389-
COMPARE_OPERATION compareMode) {
390-
using MI_SEMAPHORE_WAIT = typename GfxFamily::MI_SEMAPHORE_WAIT;
391-
392-
auto miSemaphoreCmd = commandStream.getSpaceForCmd<MI_SEMAPHORE_WAIT>();
393-
MI_SEMAPHORE_WAIT cmd = GfxFamily::cmdInitMiSemaphoreWait;
394-
395-
cmd.setCompareOperation(compareMode);
396-
cmd.setSemaphoreDataDword(compareData);
397-
cmd.setSemaphoreGraphicsAddress(compareAddress);
398-
cmd.setWaitMode(MI_SEMAPHORE_WAIT::WAIT_MODE::WAIT_MODE_POLLING_MODE);
399-
*miSemaphoreCmd = cmd;
400-
}
401-
402385
template <typename GfxFamily>
403386
void HardwareCommandsHelper<GfxFamily>::programMiAtomic(LinearStream &commandStream, uint64_t writeAddress,
404387
typename MI_ATOMIC::ATOMIC_OPCODES opcode,

opencl/test/unit_test/helpers/hardware_commands_helper_tests.cpp

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1053,28 +1053,6 @@ HWCMDTEST_F(IGFX_GEN8_CORE, HardwareCommandsTest, GivenKernelWithSamplersWhenInd
10531053

10541054
using HardwareCommandsHelperTests = ::testing::Test;
10551055

1056-
HWTEST_F(HardwareCommandsHelperTests, givenCompareAddressAndDataWhenProgrammingSemaphoreWaitThenSetupAllFields) {
1057-
using MI_SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT;
1058-
using COMPARE_OPERATION = typename FamilyType::MI_SEMAPHORE_WAIT::COMPARE_OPERATION;
1059-
1060-
uint64_t compareAddress = 0x10000;
1061-
uint32_t compareData = 1234;
1062-
1063-
uint8_t buffer[1024] = {};
1064-
LinearStream cmdStream(buffer, 1024);
1065-
1066-
MI_SEMAPHORE_WAIT referenceCommand = FamilyType::cmdInitMiSemaphoreWait;
1067-
referenceCommand.setCompareOperation(MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD);
1068-
referenceCommand.setSemaphoreDataDword(compareData);
1069-
referenceCommand.setSemaphoreGraphicsAddress(compareAddress);
1070-
referenceCommand.setWaitMode(MI_SEMAPHORE_WAIT::WAIT_MODE::WAIT_MODE_POLLING_MODE);
1071-
1072-
COMPARE_OPERATION compareMode = COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD;
1073-
HardwareCommandsHelper<FamilyType>::programMiSemaphoreWait(cmdStream, compareAddress, compareData, compareMode);
1074-
EXPECT_EQ(sizeof(MI_SEMAPHORE_WAIT), cmdStream.getUsed());
1075-
EXPECT_EQ(0, memcmp(&referenceCommand, buffer, sizeof(MI_SEMAPHORE_WAIT)));
1076-
}
1077-
10781056
HWTEST_F(HardwareCommandsHelperTests, whenProgrammingMiAtomicThenSetupAllFields) {
10791057
using MI_ATOMIC = typename FamilyType::MI_ATOMIC;
10801058
uint64_t writeAddress = 0x10000;

shared/source/helpers/blit_commands_helper_base.inl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,8 +251,7 @@ void BlitCommandsHelper<GfxFamily>::dispatchDebugPauseCommands(LinearStream &com
251251

252252
EncodeMiFlushDW<GfxFamily>::programMiFlushDw(commandStream, debugPauseStateGPUAddress, static_cast<uint32_t>(confirmationTrigger), false, true);
253253

254-
auto miSemaphoreCmd = commandStream.getSpaceForCmd<MI_SEMAPHORE_WAIT>();
255-
EncodeSempahore<GfxFamily>::programMiSemaphoreWait(miSemaphoreCmd, debugPauseStateGPUAddress, static_cast<uint32_t>(waitCondition), MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_EQUAL_SDD);
254+
EncodeSempahore<GfxFamily>::addMiSemaphoreWaitCommand(commandStream, debugPauseStateGPUAddress, static_cast<uint32_t>(waitCondition), MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_EQUAL_SDD);
256255
}
257256

258257
template <typename GfxFamily>

shared/source/helpers/timestamp_packet.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,7 @@ struct TimestampPacketHelper {
131131

132132
for (uint32_t packetId = 0; packetId < timestampPacketNode.tagForCpuAccess->packetsUsed; packetId++) {
133133
uint64_t compareOffset = packetId * sizeof(TimestampPacketStorage::Packet);
134-
auto miSemaphoreCmd = cmdStream.getSpaceForCmd<MI_SEMAPHORE_WAIT>();
135-
EncodeSempahore<GfxFamily>::programMiSemaphoreWait(miSemaphoreCmd, compareAddress + compareOffset, 1, COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD);
134+
EncodeSempahore<GfxFamily>::addMiSemaphoreWaitCommand(cmdStream, compareAddress + compareOffset, 1, COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD);
136135
}
137136

138137
bool trackPostSyncDependencies = true;

0 commit comments

Comments
 (0)