diff --git a/level_zero/api/driver_experimental/public/zex_cmdlist.cpp b/level_zero/api/driver_experimental/public/zex_cmdlist.cpp index 45d27048f4..439146d6b9 100644 --- a/level_zero/api/driver_experimental/public/zex_cmdlist.cpp +++ b/level_zero/api/driver_experimental/public/zex_cmdlist.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Intel Corporation + * Copyright (C) 2022-2023 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -22,7 +22,7 @@ zexCommandListAppendWaitOnMemory( if (nullptr == hCommandList) return ZE_RESULT_ERROR_INVALID_ARGUMENT; } - return L0::CommandList::fromHandle(hCommandList)->appendWaitOnMemory(reinterpret_cast(desc), ptr, data, static_cast(hSignalEvent)); + return L0::CommandList::fromHandle(hCommandList)->appendWaitOnMemory(reinterpret_cast(desc), ptr, static_cast(data), static_cast(hSignalEvent), false); } catch (ze_result_t &result) { return result; } catch (std::bad_alloc &) { diff --git a/level_zero/core/source/cmdlist/cmdlist.h b/level_zero/core/source/cmdlist/cmdlist.h index 348f9ea40b..ece1cd62d0 100644 --- a/level_zero/core/source/cmdlist/cmdlist.h +++ b/level_zero/core/source/cmdlist/cmdlist.h @@ -177,8 +177,7 @@ struct CommandList : _ze_command_list_handle_t { virtual ze_result_t appendMINoop() = 0; virtual ze_result_t appendPipeControl(void *dstPtr, uint64_t value) = 0; virtual ze_result_t appendSoftwareTag(const char *data) = 0; - virtual ze_result_t appendWaitOnMemory(void *desc, void *ptr, - uint32_t data, ze_event_handle_t signalEventHandle) = 0; + virtual ze_result_t appendWaitOnMemory(void *desc, void *ptr, uint64_t data, ze_event_handle_t signalEventHandle, bool useQwordData) = 0; virtual ze_result_t appendWriteToMemory(void *desc, void *ptr, uint64_t data) = 0; virtual ze_result_t hostSynchronize(uint64_t timeout) = 0; diff --git a/level_zero/core/source/cmdlist/cmdlist_hw.h b/level_zero/core/source/cmdlist/cmdlist_hw.h index 0ecf6f5c7d..7041d23179 100644 --- a/level_zero/core/source/cmdlist/cmdlist_hw.h +++ b/level_zero/core/source/cmdlist/cmdlist_hw.h @@ -160,8 +160,7 @@ struct CommandListCoreFamily : CommandListImp { ze_result_t appendMINoop() override; ze_result_t appendPipeControl(void *dstPtr, uint64_t value) override; ze_result_t appendSoftwareTag(const char *data) override; - ze_result_t appendWaitOnMemory(void *desc, void *ptr, - uint32_t data, ze_event_handle_t signalEventHandle) override; + ze_result_t appendWaitOnMemory(void *desc, void *ptr, uint64_t data, ze_event_handle_t signalEventHandle, bool useQwordData) override; ze_result_t appendWriteToMemory(void *desc, void *ptr, uint64_t data) override; diff --git a/level_zero/core/source/cmdlist/cmdlist_hw.inl b/level_zero/core/source/cmdlist/cmdlist_hw.inl index 1b42d599b7..964bf4db12 100644 --- a/level_zero/core/source/cmdlist/cmdlist_hw.inl +++ b/level_zero/core/source/cmdlist/cmdlist_hw.inl @@ -3262,10 +3262,7 @@ void CommandListCoreFamily::setupFillKernelArguments(size_t baseO } template -ze_result_t CommandListCoreFamily::appendWaitOnMemory(void *desc, - void *ptr, - uint32_t data, - ze_event_handle_t signalEventHandle) { +ze_result_t CommandListCoreFamily::appendWaitOnMemory(void *desc, void *ptr, uint64_t data, ze_event_handle_t signalEventHandle, bool useQwordData) { using COMPARE_OPERATION = typename GfxFamily::MI_SEMAPHORE_WAIT::COMPARE_OPERATION; auto descriptor = reinterpret_cast(desc); @@ -3314,7 +3311,24 @@ ze_result_t CommandListCoreFamily::appendWaitOnMemory(void *desc, commandContainer.addToResidencyContainer(srcAllocationStruct.alloc); uint64_t gpuAddress = static_cast(srcAllocationStruct.alignedAllocationPtr); - NEO::EncodeSemaphore::addMiSemaphoreWaitCommand(*commandContainer.getCommandStream(), gpuAddress, data, comparator, false, false, false); + + bool indirectMode = false; + + if (useQwordData) { + if (isQwordInOrderCounter()) { + indirectMode = true; + + NEO::LriHelper::program(commandContainer.getCommandStream(), CS_GPR_R0, getLowPart(data), true); + NEO::LriHelper::program(commandContainer.getCommandStream(), CS_GPR_R0 + 4, getHighPart(data), true); + + } else { + return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE; + } + } else { + UNRECOVERABLE_IF(getHighPart(data) != 0); + } + + NEO::EncodeSemaphore::addMiSemaphoreWaitCommand(*commandContainer.getCommandStream(), gpuAddress, data, comparator, false, useQwordData, indirectMode); const auto &rootDeviceEnvironment = this->device->getNEODevice()->getRootDeviceEnvironment(); auto allocType = srcAllocationStruct.alloc->getAllocationType(); diff --git a/level_zero/core/source/cmdlist/cmdlist_hw_immediate.h b/level_zero/core/source/cmdlist/cmdlist_hw_immediate.h index 1845fdaefe..9e550bc499 100644 --- a/level_zero/core/source/cmdlist/cmdlist_hw_immediate.h +++ b/level_zero/core/source/cmdlist/cmdlist_hw_immediate.h @@ -149,8 +149,7 @@ struct CommandListCoreFamilyImmediate : public CommandListCoreFamily::appendLaunchCooperati } template -ze_result_t CommandListCoreFamilyImmediate::appendWaitOnMemory(void *desc, void *ptr, uint32_t data, ze_event_handle_t signalEventHandle) { +ze_result_t CommandListCoreFamilyImmediate::appendWaitOnMemory(void *desc, void *ptr, uint64_t data, ze_event_handle_t signalEventHandle, bool useQwordData) { checkAvailableSpace(0, false, commonImmediateCommandSize); - auto ret = CommandListCoreFamily::appendWaitOnMemory(desc, ptr, data, signalEventHandle); + auto ret = CommandListCoreFamily::appendWaitOnMemory(desc, ptr, data, signalEventHandle, useQwordData); return flushImmediate(ret, true, false, false, false, signalEventHandle); } diff --git a/level_zero/core/test/unit_tests/mocks/mock_cmdlist.h b/level_zero/core/test/unit_tests/mocks/mock_cmdlist.h index dbbe3818c0..2167502e89 100644 --- a/level_zero/core/test/unit_tests/mocks/mock_cmdlist.h +++ b/level_zero/core/test/unit_tests/mocks/mock_cmdlist.h @@ -502,8 +502,7 @@ struct MockCommandList : public CommandList { (void *dstPtr, uint64_t value)); ADDMETHOD_NOBASE(appendWaitOnMemory, ze_result_t, ZE_RESULT_SUCCESS, - (void *desc, void *ptr, - uint32_t data, ze_event_handle_t signalEventHandle)); + (void *desc, void *ptr, uint64_t data, ze_event_handle_t signalEventHandle, bool useQwordData)); ADDMETHOD_NOBASE(appendWriteToMemory, ze_result_t, ZE_RESULT_SUCCESS, (void *desc, void *ptr, diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_launch_kernel_3.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_launch_kernel_3.cpp index 1960e8bdc8..764e80c747 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_launch_kernel_3.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_launch_kernel_3.cpp @@ -1654,7 +1654,7 @@ HWTEST2_F(InOrderCmdListTests, givenImmediateCmdListWhenDispatchingWithRegularEv zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_NOT_EQUAL; events[0]->makeCounterBasedInitiallyDisabled(); - immCmdList->appendWaitOnMemory(reinterpret_cast(&desc), copyData, 1, eventHandle); + immCmdList->appendWaitOnMemory(reinterpret_cast(&desc), copyData, 1, eventHandle, false); EXPECT_EQ(Event::CounterBasedMode::ImplicitlyEnabled, events[0]->counterBasedMode); auto hostAddress = static_cast(immCmdList->inOrderExecInfo->inOrderDependencyCounterAllocation.getUnderlyingBuffer()); @@ -2745,7 +2745,7 @@ HWTEST2_F(InOrderCmdListTests, givenInOrderRegularCmdListWhenProgrammingNonKerne zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_NOT_EQUAL; - regularCmdList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, 1, nullptr); + regularCmdList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, 1, nullptr, false); 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 ed6559c4fa..01fa3328f0 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 @@ -9,6 +9,7 @@ #include "shared/source/execution_environment/root_device_environment.h" #include "shared/source/helpers/aligned_memory.h" #include "shared/source/helpers/gfx_core_helper.h" +#include "shared/source/helpers/register_offsets.h" #include "shared/test/common/cmd_parse/gen_cmd_parse.h" #include "shared/test/common/helpers/unit_test_helper.h" #include "shared/test/common/mocks/mock_graphics_allocation.h" @@ -69,7 +70,7 @@ class CommandListWaitOnMemFixture : public DeviceFixture { std::unique_ptr eventPool; std::unique_ptr event; void *ptr = nullptr; - uint32_t waitMemData = 1u; + uint64_t waitMemData = 1u; bool signalAllPackets = false; }; @@ -221,29 +222,109 @@ class MockCommandListExtensionHw : public WhiteBox<::L0::CommandListCoreFamily; +template +bool validateProgramming(const GenCmdList &cmdList, uint64_t compareData, uint64_t compareAddr, typename FamilyType::MI_SEMAPHORE_WAIT::COMPARE_OPERATION compareMode, bool useQwordData) { + using MI_SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT; + using MI_LOAD_REGISTER_IMM = typename FamilyType::MI_LOAD_REGISTER_IMM; + + auto itor = cmdList.begin(); + + if (useQwordData) { + auto lri = genCmdCast(*itor); + if (!lri) { + return false; + } + + EXPECT_EQ(getLowPart(compareData), lri->getDataDword()); + EXPECT_EQ(CS_GPR_R0, lri->getRegisterOffset()); + + lri = genCmdCast(*(++itor)); + if (!lri) { + return false; + } + + EXPECT_EQ(getHighPart(compareData), lri->getDataDword()); + EXPECT_EQ(CS_GPR_R0 + 4, lri->getRegisterOffset()); + + itor++; + } + + auto semaphoreCmd = genCmdCast(*itor); + if (!semaphoreCmd) { + return false; + } + + EXPECT_EQ(compareAddr, semaphoreCmd->getSemaphoreGraphicsAddress()); + EXPECT_EQ(semaphoreCmd->getCompareOperation(), compareMode); + EXPECT_EQ(semaphoreCmd->getWaitMode(), MI_SEMAPHORE_WAIT::WAIT_MODE::WAIT_MODE_POLLING_MODE); + + if (useQwordData) { + EXPECT_EQ(0u, semaphoreCmd->getSemaphoreDataDword()); + } else { + EXPECT_EQ(getLowPart(compareData), semaphoreCmd->getSemaphoreDataDword()); + EXPECT_EQ(0u, getHighPart(compareData)); + } + + return true; +} + HWTEST_F(CommandListAppendWaitOnMem, givenAppendWaitOnMemWithValidAddressAndDataAndNotEqualOpThenSemaphoreWaitProgrammedCorrectly) { using MI_SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT; ze_result_t result = ZE_RESULT_SUCCESS; - auto &commandContainer = commandList->commandContainer; + auto cmdStream = commandList->commandContainer.getCommandStream(); zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_NOT_EQUAL; - result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr); + + auto offset = cmdStream->getUsed(); + result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr, false); EXPECT_EQ(ZE_RESULT_SUCCESS, result); GenCmdList cmdList; - ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer( - cmdList, ptrOffset(commandContainer.getCommandStream()->getCpuBase(), 0), commandContainer.getCommandStream()->getUsed())); + ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer(cmdList, ptrOffset(cmdStream->getCpuBase(), offset), (cmdStream->getUsed() - offset))); - auto itor = find(cmdList.begin(), cmdList.end()); - EXPECT_NE(cmdList.end(), itor); - auto cmd = genCmdCast(*itor); - EXPECT_EQ(cmd->getCompareOperation(), - MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD); - EXPECT_EQ(static_cast(waitMemData), cmd->getSemaphoreDataDword()); + ASSERT_TRUE(validateProgramming(cmdList, waitMemData, castToUint64(ptr), MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD, false)); +} - EXPECT_EQ(cmd->getWaitMode(), - MI_SEMAPHORE_WAIT::WAIT_MODE::WAIT_MODE_POLLING_MODE); +HWTEST2_F(CommandListAppendWaitOnMem, given64bValueWhenWaitOnMemCalledThenReturnErrorIfNotSupported, IsAtLeastSkl) { + using MI_SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT; + ze_result_t result = ZE_RESULT_SUCCESS; + + waitMemData = static_cast(std::numeric_limits::max()) + 123; + + zex_wait_on_mem_desc_t desc; + desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_NOT_EQUAL; + result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr, true); + + if (FamilyType::isQwordInOrderCounter) { + EXPECT_EQ(ZE_RESULT_SUCCESS, result); + } else { + EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, result); + } +} + +HWTEST2_F(CommandListAppendWaitOnMem, given64bValueWhenWaitOnMemCalledThenProgramLri, IsAtLeastSkl) { + using MI_SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT; + using MI_LOAD_REGISTER_IMM = typename FamilyType::MI_LOAD_REGISTER_IMM; + + if (!FamilyType::isQwordInOrderCounter) { + GTEST_SKIP(); + } + + waitMemData = static_cast(std::numeric_limits::max()) + 123; + + zex_wait_on_mem_desc_t desc; + desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_NOT_EQUAL; + + auto cmdStream = commandList->getCmdContainer().getCommandStream(); + auto offset = cmdStream->getUsed(); + + commandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr, true); + + GenCmdList cmdList; + ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer(cmdList, ptrOffset(cmdStream->getCpuBase(), offset), (cmdStream->getUsed() - offset))); + + ASSERT_TRUE(validateProgramming(cmdList, waitMemData, castToUint64(ptr), MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD, true)); } HWTEST2_F(CommandListAppendWaitOnMem, givenCommandListWaitOnMemoryCalledWithNullPtrThenAppendWaitOnMemoryReturnsError, IsAtLeastSkl) { @@ -255,133 +336,93 @@ HWTEST2_F(CommandListAppendWaitOnMem, givenCommandListWaitOnMemoryCalledWithNull zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_NOT_EQUAL; void *badPtr = nullptr; - result = cmdList.appendWaitOnMemory(reinterpret_cast(&desc), badPtr, waitMemData, nullptr); + result = cmdList.appendWaitOnMemory(reinterpret_cast(&desc), badPtr, waitMemData, nullptr, false); EXPECT_EQ(ZE_RESULT_ERROR_OUT_OF_DEVICE_MEMORY, result); } HWTEST_F(CommandListAppendWaitOnMem, givenAppendWaitOnMemWithValidAddressAndDataAndEqualOpThenSemaphoreWaitProgrammedCorrectly) { using MI_SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT; ze_result_t result = ZE_RESULT_SUCCESS; - auto &commandContainer = commandList->commandContainer; + auto cmdStream = commandList->commandContainer.getCommandStream(); + auto offset = cmdStream->getUsed(); zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_EQUAL; - result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr); + result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr, false); EXPECT_EQ(ZE_RESULT_SUCCESS, result); GenCmdList cmdList; - ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer( - cmdList, ptrOffset(commandContainer.getCommandStream()->getCpuBase(), 0), commandContainer.getCommandStream()->getUsed())); + ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer(cmdList, ptrOffset(cmdStream->getCpuBase(), offset), (cmdStream->getUsed() - offset))); - auto itor = find(cmdList.begin(), cmdList.end()); - EXPECT_NE(cmdList.end(), itor); - auto cmd = genCmdCast(*itor); - EXPECT_EQ(cmd->getCompareOperation(), - MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_EQUAL_SDD); - EXPECT_EQ(static_cast(waitMemData), cmd->getSemaphoreDataDword()); - - EXPECT_EQ(cmd->getWaitMode(), - MI_SEMAPHORE_WAIT::WAIT_MODE::WAIT_MODE_POLLING_MODE); + ASSERT_TRUE(validateProgramming(cmdList, waitMemData, castToUint64(ptr), MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_EQUAL_SDD, false)); } HWTEST_F(CommandListAppendWaitOnMem, givenAppendWaitOnMemWithValidAddressAndDataGreaterOpThenSemaphoreWaitProgrammedCorrectly) { using MI_SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT; ze_result_t result = ZE_RESULT_SUCCESS; - auto &commandContainer = commandList->commandContainer; + auto cmdStream = commandList->commandContainer.getCommandStream(); + auto offset = cmdStream->getUsed(); zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_GREATER_THAN; - result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr); + result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr, false); EXPECT_EQ(ZE_RESULT_SUCCESS, result); GenCmdList cmdList; - ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer( - cmdList, ptrOffset(commandContainer.getCommandStream()->getCpuBase(), 0), commandContainer.getCommandStream()->getUsed())); + ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer(cmdList, ptrOffset(cmdStream->getCpuBase(), offset), (cmdStream->getUsed() - offset))); - auto itor = find(cmdList.begin(), cmdList.end()); - EXPECT_NE(cmdList.end(), itor); - auto cmd = genCmdCast(*itor); - EXPECT_EQ(cmd->getCompareOperation(), - MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_GREATER_THAN_SDD); - EXPECT_EQ(static_cast(waitMemData), cmd->getSemaphoreDataDword()); - - EXPECT_EQ(cmd->getWaitMode(), - MI_SEMAPHORE_WAIT::WAIT_MODE::WAIT_MODE_POLLING_MODE); + ASSERT_TRUE(validateProgramming(cmdList, waitMemData, castToUint64(ptr), MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_GREATER_THAN_SDD, false)); } HWTEST_F(CommandListAppendWaitOnMem, givenAppendWaitOnMemWithValidAddressAndDataGreaterThanEqualOpThenSemaphoreWaitProgrammedCorrectly) { using MI_SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT; ze_result_t result = ZE_RESULT_SUCCESS; - auto &commandContainer = commandList->commandContainer; + auto cmdStream = commandList->commandContainer.getCommandStream(); + auto offset = cmdStream->getUsed(); zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_GREATER_THAN_EQUAL; - result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr); + result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr, false); EXPECT_EQ(ZE_RESULT_SUCCESS, result); GenCmdList cmdList; - ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer( - cmdList, ptrOffset(commandContainer.getCommandStream()->getCpuBase(), 0), commandContainer.getCommandStream()->getUsed())); + ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer(cmdList, ptrOffset(cmdStream->getCpuBase(), offset), (cmdStream->getUsed() - offset))); - auto itor = find(cmdList.begin(), cmdList.end()); - EXPECT_NE(cmdList.end(), itor); - auto cmd = genCmdCast(*itor); - EXPECT_EQ(cmd->getCompareOperation(), - MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_GREATER_THAN_OR_EQUAL_SDD); - EXPECT_EQ(static_cast(waitMemData), cmd->getSemaphoreDataDword()); - - EXPECT_EQ(cmd->getWaitMode(), - MI_SEMAPHORE_WAIT::WAIT_MODE::WAIT_MODE_POLLING_MODE); + ASSERT_TRUE(validateProgramming(cmdList, waitMemData, castToUint64(ptr), MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_GREATER_THAN_OR_EQUAL_SDD, false)); } HWTEST_F(CommandListAppendWaitOnMem, givenAppendWaitOnMemWithValidAddressAndDataLessThanOpThenSemaphoreWaitProgrammedCorrectly) { using MI_SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT; ze_result_t result = ZE_RESULT_SUCCESS; - auto &commandContainer = commandList->commandContainer; + auto cmdStream = commandList->commandContainer.getCommandStream(); + auto offset = cmdStream->getUsed(); zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_LESSER_THAN; - result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr); + result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr, false); EXPECT_EQ(ZE_RESULT_SUCCESS, result); GenCmdList cmdList; - ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer( - cmdList, ptrOffset(commandContainer.getCommandStream()->getCpuBase(), 0), commandContainer.getCommandStream()->getUsed())); + ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer(cmdList, ptrOffset(cmdStream->getCpuBase(), offset), (cmdStream->getUsed() - offset))); - auto itor = find(cmdList.begin(), cmdList.end()); - EXPECT_NE(cmdList.end(), itor); - auto cmd = genCmdCast(*itor); - EXPECT_EQ(cmd->getCompareOperation(), - MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_LESS_THAN_SDD); - EXPECT_EQ(static_cast(waitMemData), cmd->getSemaphoreDataDword()); - - EXPECT_EQ(cmd->getWaitMode(), - MI_SEMAPHORE_WAIT::WAIT_MODE::WAIT_MODE_POLLING_MODE); + ASSERT_TRUE(validateProgramming(cmdList, waitMemData, castToUint64(ptr), MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_LESS_THAN_SDD, false)); } HWTEST_F(CommandListAppendWaitOnMem, givenAppendWaitOnMemWithValidAddressAndDataLessThanEqualOpThenSemaphoreWaitProgrammedCorrectly) { using MI_SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT; ze_result_t result = ZE_RESULT_SUCCESS; - auto &commandContainer = commandList->commandContainer; + auto cmdStream = commandList->commandContainer.getCommandStream(); + auto offset = cmdStream->getUsed(); zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_LESSER_THAN_EQUAL; - result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr); + result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr, false); EXPECT_EQ(ZE_RESULT_SUCCESS, result); GenCmdList cmdList; - ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer( - cmdList, ptrOffset(commandContainer.getCommandStream()->getCpuBase(), 0), commandContainer.getCommandStream()->getUsed())); + ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer(cmdList, ptrOffset(cmdStream->getCpuBase(), offset), (cmdStream->getUsed() - offset))); - auto itor = find(cmdList.begin(), cmdList.end()); - EXPECT_NE(cmdList.end(), itor); - auto cmd = genCmdCast(*itor); - EXPECT_EQ(cmd->getCompareOperation(), - MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_LESS_THAN_OR_EQUAL_SDD); - EXPECT_EQ(static_cast(waitMemData), cmd->getSemaphoreDataDword()); - - EXPECT_EQ(cmd->getWaitMode(), - MI_SEMAPHORE_WAIT::WAIT_MODE::WAIT_MODE_POLLING_MODE); + ASSERT_TRUE(validateProgramming(cmdList, waitMemData, castToUint64(ptr), MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_LESS_THAN_OR_EQUAL_SDD, false)); } HWTEST_F(CommandListAppendWaitOnMem, givenAppendWaitOnMemWithValidAddressAndInvalidOpThenReturnsInvalid) { @@ -390,7 +431,7 @@ HWTEST_F(CommandListAppendWaitOnMem, givenAppendWaitOnMemWithValidAddressAndInva zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_BIT(6); - result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr); + result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr, false); EXPECT_EQ(ZE_RESULT_ERROR_INVALID_ARGUMENT, result); } @@ -420,7 +461,7 @@ HWTEST_F(CommandListAppendWaitOnMem, givenAppendWaitOnMemWithSignalEventAndHostS zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_LESSER_THAN_EQUAL; - result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, signalEvent->toHandle()); + result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, signalEvent->toHandle(), false); EXPECT_EQ(ZE_RESULT_SUCCESS, result); GenCmdList cmdList; @@ -492,7 +533,7 @@ HWTEST_F(CommandListAppendWaitOnMem, givenAppendWaitOnMemWithSignalEventAndNoSco zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_LESSER_THAN_EQUAL; - result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, signalEvent->toHandle()); + result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, signalEvent->toHandle(), false); EXPECT_EQ(ZE_RESULT_SUCCESS, result); GenCmdList cmdList; @@ -562,7 +603,7 @@ HWTEST_F(CommandListAppendWaitOnMem, givenAppendWaitOnMemOnBcsWithSignalEventAnd zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_LESSER_THAN_EQUAL; - result = commandListBcs->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, signalEvent->toHandle()); + result = commandListBcs->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, signalEvent->toHandle(), false); EXPECT_EQ(ZE_RESULT_SUCCESS, result); GenCmdList cmdList; @@ -607,23 +648,25 @@ HWTEST2_F(CommandListAppendWaitOnMem, givenAppendWaitOnMemWithNoScopeAndSystemMe using MI_SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT; ze_result_t result = ZE_RESULT_SUCCESS; - auto &commandContainer = commandList->commandContainer; + auto cmdStream = commandList->commandContainer.getCommandStream(); + auto offset = cmdStream->getUsed(); zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_LESSER_THAN_EQUAL; - result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), cmdListHostBuffer, waitMemData, nullptr); + result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), cmdListHostBuffer, waitMemData, nullptr, false); EXPECT_EQ(ZE_RESULT_SUCCESS, result); auto addressSpace = device->getHwInfo().capabilityTable.gpuAddressSpace; GenCmdList cmdList; - ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer( - cmdList, ptrOffset(commandContainer.getCommandStream()->getCpuBase(), 0), commandContainer.getCommandStream()->getUsed())); + ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer(cmdList, ptrOffset(cmdStream->getCpuBase(), offset), (cmdStream->getUsed() - offset))); + + ASSERT_TRUE(validateProgramming(cmdList, waitMemData, castToUint64(cmdListHostBuffer), MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_LESS_THAN_OR_EQUAL_SDD, false)); auto itor = find(cmdList.begin(), cmdList.end()); EXPECT_NE(cmdList.end(), itor); auto cmd = genCmdCast(*itor); - EXPECT_EQ(static_cast(waitMemData), cmd->getSemaphoreDataDword()); + EXPECT_EQ(expectedGpuAddress & addressSpace, cmd->getSemaphoreGraphicsAddress() & addressSpace); commandList->removeHostPtrAllocations(); @@ -647,7 +690,7 @@ HWTEST2_F(CommandListAppendWaitOnMem, givenAppendWaitOnMemWithHostMemAndNoScopeT result = context->allocHostMem(&hostDesc, allocSize, allocSize, &dstBuffer); ASSERT_EQ(ZE_RESULT_SUCCESS, result); - result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), dstBuffer, waitMemData, nullptr); + result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), dstBuffer, waitMemData, nullptr, false); EXPECT_EQ(ZE_RESULT_SUCCESS, result); GenCmdList cmdList; @@ -673,7 +716,7 @@ HWTEST2_F(CommandListAppendWaitOnMem, givenAppendWaitOnMemWithDeviceMemAndNoScop hwInfo->platform.usRevId = 0x03; zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_LESSER_THAN_EQUAL; - result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr); + result = commandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr, false); EXPECT_EQ(ZE_RESULT_SUCCESS, result); GenCmdList cmdList; @@ -899,151 +942,103 @@ using ImmediateCommandListAppendWaitOnMem = TestcommandContainer; + auto cmdStream = immCommandList->commandContainer.getCommandStream(); + auto offset = cmdStream->getUsed(); zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_NOT_EQUAL; - result = immCommandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr); + result = immCommandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr, false); EXPECT_EQ(ZE_RESULT_SUCCESS, result); GenCmdList cmdList; - ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer( - cmdList, ptrOffset(commandContainer.getCommandStream()->getCpuBase(), 0), commandContainer.getCommandStream()->getUsed())); + ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer(cmdList, ptrOffset(cmdStream->getCpuBase(), offset), (cmdStream->getUsed() - offset))); - auto itor = find(cmdList.begin(), cmdList.end()); - EXPECT_NE(cmdList.end(), itor); - auto cmd = genCmdCast(*itor); - EXPECT_EQ(cmd->getCompareOperation(), - MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD); - EXPECT_EQ(static_cast(waitMemData), cmd->getSemaphoreDataDword()); - - EXPECT_EQ(cmd->getWaitMode(), - MI_SEMAPHORE_WAIT::WAIT_MODE::WAIT_MODE_POLLING_MODE); + ASSERT_TRUE(validateProgramming(cmdList, waitMemData, castToUint64(ptr), MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD, false)); } HWTEST_F(ImmediateCommandListAppendWaitOnMem, givenAppendWaitOnMemWithValidAddressAndDataAndEqualOpThenSemaphoreWaitProgrammedCorrectly) { using MI_SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT; ze_result_t result = ZE_RESULT_SUCCESS; - auto &commandContainer = immCommandList->commandContainer; + auto cmdStream = immCommandList->commandContainer.getCommandStream(); + auto offset = cmdStream->getUsed(); zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_EQUAL; - result = immCommandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr); + result = immCommandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr, false); EXPECT_EQ(ZE_RESULT_SUCCESS, result); GenCmdList cmdList; - ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer( - cmdList, ptrOffset(commandContainer.getCommandStream()->getCpuBase(), 0), commandContainer.getCommandStream()->getUsed())); + ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer(cmdList, ptrOffset(cmdStream->getCpuBase(), offset), (cmdStream->getUsed() - offset))); - auto itor = find(cmdList.begin(), cmdList.end()); - EXPECT_NE(cmdList.end(), itor); - auto cmd = genCmdCast(*itor); - EXPECT_EQ(cmd->getCompareOperation(), - MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_EQUAL_SDD); - EXPECT_EQ(static_cast(waitMemData), cmd->getSemaphoreDataDword()); - - EXPECT_EQ(cmd->getWaitMode(), - MI_SEMAPHORE_WAIT::WAIT_MODE::WAIT_MODE_POLLING_MODE); + ASSERT_TRUE(validateProgramming(cmdList, waitMemData, castToUint64(ptr), MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_EQUAL_SDD, false)); } HWTEST_F(ImmediateCommandListAppendWaitOnMem, givenAppendWaitOnMemWithValidAddressAndDataGreaterOpThenSemaphoreWaitProgrammedCorrectly) { using MI_SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT; ze_result_t result = ZE_RESULT_SUCCESS; - auto &commandContainer = immCommandList->commandContainer; + auto cmdStream = immCommandList->commandContainer.getCommandStream(); + auto offset = cmdStream->getUsed(); zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_GREATER_THAN; - result = immCommandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr); + result = immCommandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr, false); EXPECT_EQ(ZE_RESULT_SUCCESS, result); GenCmdList cmdList; - ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer( - cmdList, ptrOffset(commandContainer.getCommandStream()->getCpuBase(), 0), commandContainer.getCommandStream()->getUsed())); + ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer(cmdList, ptrOffset(cmdStream->getCpuBase(), offset), (cmdStream->getUsed() - offset))); - auto itor = find(cmdList.begin(), cmdList.end()); - EXPECT_NE(cmdList.end(), itor); - auto cmd = genCmdCast(*itor); - EXPECT_EQ(cmd->getCompareOperation(), - MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_GREATER_THAN_SDD); - EXPECT_EQ(static_cast(waitMemData), cmd->getSemaphoreDataDword()); - - EXPECT_EQ(cmd->getWaitMode(), - MI_SEMAPHORE_WAIT::WAIT_MODE::WAIT_MODE_POLLING_MODE); + ASSERT_TRUE(validateProgramming(cmdList, waitMemData, castToUint64(ptr), MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_GREATER_THAN_SDD, false)); } HWTEST_F(ImmediateCommandListAppendWaitOnMem, givenAppendWaitOnMemWithValidAddressAndDataGreaterThanEqualOpThenSemaphoreWaitProgrammedCorrectly) { using MI_SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT; ze_result_t result = ZE_RESULT_SUCCESS; - auto &commandContainer = immCommandList->commandContainer; + auto cmdStream = immCommandList->commandContainer.getCommandStream(); + auto offset = cmdStream->getUsed(); zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_GREATER_THAN_EQUAL; - result = immCommandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr); + result = immCommandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr, false); EXPECT_EQ(ZE_RESULT_SUCCESS, result); GenCmdList cmdList; - ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer( - cmdList, ptrOffset(commandContainer.getCommandStream()->getCpuBase(), 0), commandContainer.getCommandStream()->getUsed())); + ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer(cmdList, ptrOffset(cmdStream->getCpuBase(), offset), (cmdStream->getUsed() - offset))); - auto itor = find(cmdList.begin(), cmdList.end()); - EXPECT_NE(cmdList.end(), itor); - auto cmd = genCmdCast(*itor); - EXPECT_EQ(cmd->getCompareOperation(), - MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_GREATER_THAN_OR_EQUAL_SDD); - EXPECT_EQ(static_cast(waitMemData), cmd->getSemaphoreDataDword()); - - EXPECT_EQ(cmd->getWaitMode(), - MI_SEMAPHORE_WAIT::WAIT_MODE::WAIT_MODE_POLLING_MODE); + ASSERT_TRUE(validateProgramming(cmdList, waitMemData, castToUint64(ptr), MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_GREATER_THAN_OR_EQUAL_SDD, false)); } HWTEST_F(ImmediateCommandListAppendWaitOnMem, givenAppendWaitOnMemWithValidAddressAndDataLessThanOpThenSemaphoreWaitProgrammedCorrectly) { using MI_SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT; ze_result_t result = ZE_RESULT_SUCCESS; - auto &commandContainer = immCommandList->commandContainer; + auto cmdStream = immCommandList->commandContainer.getCommandStream(); + auto offset = cmdStream->getUsed(); zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_LESSER_THAN; - result = immCommandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr); + result = immCommandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr, false); EXPECT_EQ(ZE_RESULT_SUCCESS, result); GenCmdList cmdList; - ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer( - cmdList, ptrOffset(commandContainer.getCommandStream()->getCpuBase(), 0), commandContainer.getCommandStream()->getUsed())); + ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer(cmdList, ptrOffset(cmdStream->getCpuBase(), offset), (cmdStream->getUsed() - offset))); - auto itor = find(cmdList.begin(), cmdList.end()); - EXPECT_NE(cmdList.end(), itor); - auto cmd = genCmdCast(*itor); - EXPECT_EQ(cmd->getCompareOperation(), - MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_LESS_THAN_SDD); - EXPECT_EQ(static_cast(waitMemData), cmd->getSemaphoreDataDword()); - - EXPECT_EQ(cmd->getWaitMode(), - MI_SEMAPHORE_WAIT::WAIT_MODE::WAIT_MODE_POLLING_MODE); + ASSERT_TRUE(validateProgramming(cmdList, waitMemData, castToUint64(ptr), MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_LESS_THAN_SDD, false)); } HWTEST_F(ImmediateCommandListAppendWaitOnMem, givenAppendWaitOnMemWithValidAddressAndDataLessThanEqualOpThenSemaphoreWaitProgrammedCorrectly) { using MI_SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT; ze_result_t result = ZE_RESULT_SUCCESS; - auto &commandContainer = immCommandList->commandContainer; + auto cmdStream = immCommandList->commandContainer.getCommandStream(); + auto offset = cmdStream->getUsed(); zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_LESSER_THAN_EQUAL; - result = immCommandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr); + result = immCommandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr, false); EXPECT_EQ(ZE_RESULT_SUCCESS, result); GenCmdList cmdList; - ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer( - cmdList, ptrOffset(commandContainer.getCommandStream()->getCpuBase(), 0), commandContainer.getCommandStream()->getUsed())); + ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer(cmdList, ptrOffset(cmdStream->getCpuBase(), offset), (cmdStream->getUsed() - offset))); - auto itor = find(cmdList.begin(), cmdList.end()); - EXPECT_NE(cmdList.end(), itor); - auto cmd = genCmdCast(*itor); - EXPECT_EQ(cmd->getCompareOperation(), - MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_LESS_THAN_OR_EQUAL_SDD); - EXPECT_EQ(static_cast(waitMemData), cmd->getSemaphoreDataDword()); - - EXPECT_EQ(cmd->getWaitMode(), - MI_SEMAPHORE_WAIT::WAIT_MODE::WAIT_MODE_POLLING_MODE); + ASSERT_TRUE(validateProgramming(cmdList, waitMemData, castToUint64(ptr), MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_LESS_THAN_OR_EQUAL_SDD, false)); } HWTEST_F(ImmediateCommandListAppendWaitOnMem, givenAppendWaitOnMemWithValidAddressAndInvalidOpThenReturnsInvalid) { @@ -1052,7 +1047,7 @@ HWTEST_F(ImmediateCommandListAppendWaitOnMem, givenAppendWaitOnMemWithValidAddre zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_BIT(6); - result = immCommandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr); + result = immCommandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr, false); EXPECT_EQ(ZE_RESULT_ERROR_INVALID_ARGUMENT, result); } @@ -1082,7 +1077,7 @@ HWTEST_F(ImmediateCommandListAppendWaitOnMem, givenAppendWaitOnMemWithSignalEven zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_LESSER_THAN_EQUAL; - result = immCommandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, signalEvent->toHandle()); + result = immCommandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, signalEvent->toHandle(), false); EXPECT_EQ(ZE_RESULT_SUCCESS, result); GenCmdList cmdList; @@ -1154,7 +1149,7 @@ HWTEST_F(ImmediateCommandListAppendWaitOnMem, givenAppendWaitOnMemWithSignalEven zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_LESSER_THAN_EQUAL; - result = immCommandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, signalEvent->toHandle()); + result = immCommandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, signalEvent->toHandle(), false); EXPECT_EQ(ZE_RESULT_SUCCESS, result); GenCmdList cmdList; @@ -1224,7 +1219,7 @@ HWTEST_F(ImmediateCommandListAppendWaitOnMem, givenAppendWaitOnMemOnBcsWithSigna zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_LESSER_THAN_EQUAL; - result = immCommandListBcs->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, signalEvent->toHandle()); + result = immCommandListBcs->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, signalEvent->toHandle(), false); EXPECT_EQ(ZE_RESULT_SUCCESS, result); GenCmdList cmdList; @@ -1266,7 +1261,7 @@ HWTEST2_F(ImmediateCommandListAppendWaitOnMem, givenAppendWaitOnMemWithHostMemAn result = context->allocHostMem(&hostDesc, allocSize, allocSize, &dstBuffer); ASSERT_EQ(ZE_RESULT_SUCCESS, result); - result = immCommandList->appendWaitOnMemory(reinterpret_cast(&desc), dstBuffer, waitMemData, nullptr); + result = immCommandList->appendWaitOnMemory(reinterpret_cast(&desc), dstBuffer, waitMemData, nullptr, false); EXPECT_EQ(ZE_RESULT_SUCCESS, result); GenCmdList cmdList; @@ -1292,7 +1287,7 @@ HWTEST2_F(ImmediateCommandListAppendWaitOnMem, givenAppendWaitOnMemWithDeviceMem hwInfo->platform.usRevId = 0x03; zex_wait_on_mem_desc_t desc; desc.actionFlag = ZEX_WAIT_ON_MEMORY_FLAG_LESSER_THAN_EQUAL; - result = immCommandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr); + result = immCommandList->appendWaitOnMemory(reinterpret_cast(&desc), ptr, waitMemData, nullptr, false); EXPECT_EQ(ZE_RESULT_SUCCESS, result); GenCmdList cmdList;