From 1e0064fc2f99499f0984308796924841d66ffd22 Mon Sep 17 00:00:00 2001 From: "Dunajski, Bartosz" Date: Thu, 18 Oct 2018 10:08:39 +0200 Subject: [PATCH] Allow ULTs to work with enabled TimestampPacketWrite Change-Id: Idd4622469220b859e8724d9179837c685377ce52 --- runtime/command_queue/enqueue_common.h | 4 ++- runtime/command_queue/hardware_interface.inl | 4 +-- .../command_queue/command_queue_hw_tests.cpp | 11 +------ .../enqueue_copy_buffer_event_tests.cpp | 4 +-- .../enqueue_fill_buffer_event_tests.cpp | 4 +-- .../command_queue/enqueue_handler_tests.cpp | 10 +++--- .../enqueue_kernel_event_tests.cpp | 4 +-- .../command_queue/enqueue_kernel_tests.cpp | 4 ++- .../enqueue_kernel_two_ooq_tests.cpp | 2 ++ .../enqueue_kernel_two_walker_ioq_tests.cpp | 4 ++- .../enqueue_read_buffer_event_tests.cpp | 6 ++-- .../enqueue_write_buffer_event_tests.cpp | 6 ++-- ...mmand_stream_receiver_flush_task_tests.cpp | 12 +++++-- unit_tests/helpers/timestamp_packet_tests.cpp | 33 +++++++++++++++++-- unit_tests/kernel/kernel_tests.cpp | 2 +- 15 files changed, 74 insertions(+), 36 deletions(-) diff --git a/runtime/command_queue/enqueue_common.h b/runtime/command_queue/enqueue_common.h index 4fe2d8a649..c6358d46a3 100644 --- a/runtime/command_queue/enqueue_common.h +++ b/runtime/command_queue/enqueue_common.h @@ -280,7 +280,9 @@ void CommandQueueHw::enqueueHandler(Surface **surfacesForResidency, eventBuilder.getEvent()->addTimestampPacketNodes(*timestampPacketContainer); for (size_t i = 0; i < eventsRequest.numEventsInWaitList; i++) { auto waitlistEvent = castToObjectOrAbort(eventsRequest.eventWaitList[i]); - eventBuilder.getEvent()->addTimestampPacketNodes(*waitlistEvent->getTimestampPacketNodes()); + if (!waitlistEvent->isUserEvent()) { + eventBuilder.getEvent()->addTimestampPacketNodes(*waitlistEvent->getTimestampPacketNodes()); + } } } } diff --git a/runtime/command_queue/hardware_interface.inl b/runtime/command_queue/hardware_interface.inl index b031a45ac6..7f74523028 100644 --- a/runtime/command_queue/hardware_interface.inl +++ b/runtime/command_queue/hardware_interface.inl @@ -183,7 +183,7 @@ void HardwareInterface::dispatchWalker( dispatchWorkarounds(commandStream, commandQueue, kernel, true); - if (currentTimestampPacketNodes) { + if (currentTimestampPacketNodes && commandQueue.getDevice().getCommandStreamReceiver().peekTimestampPacketWriteEnabled()) { auto timestampPacket = currentTimestampPacketNodes->peekNodes().at(currentDispatchIndex)->tag; GpgpuWalkerHelper::setupTimestampPacket(commandStream, nullptr, timestampPacket, TimestampPacket::WriteOperationType::BeforeWalker); } @@ -191,7 +191,7 @@ void HardwareInterface::dispatchWalker( // Program the walker. Invokes execution so all state should already be programmed auto walkerCmd = allocateWalkerSpace(*commandStream, kernel); - if (currentTimestampPacketNodes) { + if (currentTimestampPacketNodes && commandQueue.getDevice().getCommandStreamReceiver().peekTimestampPacketWriteEnabled()) { auto timestampPacket = currentTimestampPacketNodes->peekNodes().at(currentDispatchIndex)->tag; GpgpuWalkerHelper::setupTimestampPacket(commandStream, walkerCmd, timestampPacket, TimestampPacket::WriteOperationType::AfterWalker); } diff --git a/unit_tests/command_queue/command_queue_hw_tests.cpp b/unit_tests/command_queue/command_queue_hw_tests.cpp index 4d77817982..ab796c3c2f 100644 --- a/unit_tests/command_queue/command_queue_hw_tests.cpp +++ b/unit_tests/command_queue/command_queue_hw_tests.cpp @@ -935,11 +935,6 @@ HWTEST_F(CommandQueueHwTest, givenWalkerSplitEnqueueNDRangeWhenNoBlockedThenKern cl_int status = pCmdQ->enqueueKernel(mockKernel, 1, &offset, &gws, &lws, 0, nullptr, nullptr); EXPECT_EQ(CL_SUCCESS, status); EXPECT_EQ(1u, mockKernel->makeResidentCalls); - - std::map::iterator it = csr.makeResidentAllocations.begin(); - for (; it != csr.makeResidentAllocations.end(); it++) { - EXPECT_EQ(1u, it->second); - } } HWTEST_F(CommandQueueHwTest, givenWalkerSplitEnqueueNDRangeWhenBlockedThenKernelGetResidencyCalledOnce) { @@ -963,17 +958,13 @@ HWTEST_F(CommandQueueHwTest, givenWalkerSplitEnqueueNDRangeWhenBlockedThenKernel EXPECT_EQ(1u, mockKernel->getResidencyCalls); userEvent.setStatus(CL_COMPLETE); - - std::map::iterator it = csr.makeResidentAllocations.begin(); - for (; it != csr.makeResidentAllocations.end(); it++) { - EXPECT_EQ(1u, it->second); - } } HWTEST_F(CommandQueueHwTest, givenKernelSplitEnqueueReadBufferWhenBlockedThenEnqueueSurfacesMakeResidentIsCalledOnce) { UserEvent userEvent(context); auto &csr = pDevice->getUltCommandStreamReceiver(); csr.storeMakeResidentAllocations = true; + csr.timestampPacketWriteEnabled = false; BufferDefaults::context = context; std::unique_ptr buffer(BufferHelper<>::create()); diff --git a/unit_tests/command_queue/enqueue_copy_buffer_event_tests.cpp b/unit_tests/command_queue/enqueue_copy_buffer_event_tests.cpp index 570a28dc7d..5e364ac43d 100644 --- a/unit_tests/command_queue/enqueue_copy_buffer_event_tests.cpp +++ b/unit_tests/command_queue/enqueue_copy_buffer_event_tests.cpp @@ -59,8 +59,8 @@ TEST_F(EnqueueCopyBuffer, eventReturnedShouldBeMaxOfInputEventsAndCmdQPlus1) { uint32_t taskLevelEvent1 = 8; uint32_t taskLevelEvent2 = 19; - Event event1(nullptr, CL_COMMAND_NDRANGE_KERNEL, taskLevelEvent1, 4); - Event event2(nullptr, CL_COMMAND_NDRANGE_KERNEL, taskLevelEvent2, 10); + Event event1(pCmdQ, CL_COMMAND_NDRANGE_KERNEL, taskLevelEvent1, 4); + Event event2(pCmdQ, CL_COMMAND_NDRANGE_KERNEL, taskLevelEvent2, 10); cl_event eventWaitList[] = { &event1, diff --git a/unit_tests/command_queue/enqueue_fill_buffer_event_tests.cpp b/unit_tests/command_queue/enqueue_fill_buffer_event_tests.cpp index 1eb9b7f379..121a9ac59a 100644 --- a/unit_tests/command_queue/enqueue_fill_buffer_event_tests.cpp +++ b/unit_tests/command_queue/enqueue_fill_buffer_event_tests.cpp @@ -70,8 +70,8 @@ HWTEST_F(FillBufferEventTests, eventReturnedShouldBeMaxOfInputEventsAndCmdQPlus1 uint32_t taskLevelEvent1 = 8; uint32_t taskLevelEvent2 = 19; - Event event1(nullptr, CL_COMMAND_NDRANGE_KERNEL, taskLevelEvent1, 15); - Event event2(nullptr, CL_COMMAND_NDRANGE_KERNEL, taskLevelEvent2, 16); + Event event1(pCmdQ, CL_COMMAND_NDRANGE_KERNEL, taskLevelEvent1, 15); + Event event2(pCmdQ, CL_COMMAND_NDRANGE_KERNEL, taskLevelEvent2, 16); float pattern[] = {1.0f}; size_t patternSize = sizeof(pattern); diff --git a/unit_tests/command_queue/enqueue_handler_tests.cpp b/unit_tests/command_queue/enqueue_handler_tests.cpp index 9c9e68c9e4..fc2311f236 100644 --- a/unit_tests/command_queue/enqueue_handler_tests.cpp +++ b/unit_tests/command_queue/enqueue_handler_tests.cpp @@ -261,7 +261,7 @@ HWTEST_F(EnqueueHandlerTest, givenEnqueueHandlerWhenAddPatchInfoCommentsForAUBDu HWTEST_F(EnqueueHandlerTest, givenExternallySynchronizedParentEventWhenRequestingEnqueueWithoutGpuSubmissionThenTaskCountIsNotInherited) { struct ExternallySynchEvent : Event { - ExternallySynchEvent() : Event(nullptr, CL_COMMAND_MARKER, 0, 0) { + ExternallySynchEvent(CommandQueue *cmdQueue) : Event(cmdQueue, CL_COMMAND_MARKER, 0, 0) { transitionExecutionStatus(CL_COMPLETE); this->updateTaskCount(7); } @@ -269,11 +269,13 @@ HWTEST_F(EnqueueHandlerTest, givenExternallySynchronizedParentEventWhenRequestin return true; } }; - ExternallySynchEvent synchEvent; + + auto mockCmdQ = new MockCommandQueueHw(context, pDevice, 0); + + ExternallySynchEvent synchEvent(mockCmdQ); cl_event inEv = &synchEvent; cl_event outEv = nullptr; - auto mockCmdQ = new MockCommandQueueHw(context, pDevice, 0); bool blocking = false; MultiDispatchInfo emptyDispatchInfo; mockCmdQ->template enqueueHandler(nullptr, @@ -356,4 +358,4 @@ HWTEST_F(EnqueueHandlerTestBasic, givenEnqueueHandlerWhenCommandIsBlokingThenCom nullptr); EXPECT_EQ(mockCsr->waitForTaskCountRequiredTaskCount, mockCmdQ->completionStampTaskCount); mockCmdQ->release(); -} \ No newline at end of file +} diff --git a/unit_tests/command_queue/enqueue_kernel_event_tests.cpp b/unit_tests/command_queue/enqueue_kernel_event_tests.cpp index 8f08bcf4e1..c0153daf66 100644 --- a/unit_tests/command_queue/enqueue_kernel_event_tests.cpp +++ b/unit_tests/command_queue/enqueue_kernel_event_tests.cpp @@ -43,8 +43,8 @@ TEST_F(EventTests, eventReturnedShouldBeMaxOfInputEventsAndCmdQPlus1) { uint32_t taskLevelEvent1 = 8; uint32_t taskLevelEvent2 = 19; - Event event1(nullptr, CL_COMMAND_NDRANGE_KERNEL, taskLevelEvent1, 15); - Event event2(nullptr, CL_COMMAND_NDRANGE_KERNEL, taskLevelEvent2, 16); + Event event1(pCmdQ, CL_COMMAND_NDRANGE_KERNEL, taskLevelEvent1, 15); + Event event2(pCmdQ, CL_COMMAND_NDRANGE_KERNEL, taskLevelEvent2, 16); cl_event eventWaitList[] = { diff --git a/unit_tests/command_queue/enqueue_kernel_tests.cpp b/unit_tests/command_queue/enqueue_kernel_tests.cpp index 1804be1f06..572504a0df 100644 --- a/unit_tests/command_queue/enqueue_kernel_tests.cpp +++ b/unit_tests/command_queue/enqueue_kernel_tests.cpp @@ -1004,9 +1004,10 @@ HWTEST_F(EnqueueKernelTest, givenCommandStreamReceiverInBatchingModeWhenEnqueueK //Two more surfaces from preemptionAllocation and SipKernel size_t csrSurfaceCount = (pDevice->getPreemptionMode() == PreemptionMode::MidThread) ? 2 : 0; + size_t timestampPacketSurfacesCount = mockCsr->peekTimestampPacketWriteEnabled() ? 1 : 0; EXPECT_EQ(0, mockCsr->flushCalledCount); - EXPECT_EQ(5u + csrSurfaceCount, cmdBuffer->surfaces.size()); + EXPECT_EQ(5u + csrSurfaceCount + timestampPacketSurfacesCount, cmdBuffer->surfaces.size()); } HWTEST_F(EnqueueKernelTest, givenReducedAddressSpaceGraphicsAllocationForHostPtrWithL3FlushRequiredWhenEnqueueKernelIsCalledThenFlushIsCalledForReducedAddressSpacePlatforms) { @@ -1455,6 +1456,7 @@ HWTEST_F(EnqueueKernelTest, givenInOrderCommandQueueWhenEnqueueKernelReturningEv auto mockCsr = new MockCsrHw2(pDevice->getHardwareInfo(), *pDevice->executionEnvironment); mockCsr->overrideDispatchPolicy(DispatchMode::BatchedDispatch); + mockCsr->timestampPacketWriteEnabled = false; pDevice->resetCommandStreamReceiver(mockCsr); auto mockedSubmissionsAggregator = new mockSubmissionsAggregator(); diff --git a/unit_tests/command_queue/enqueue_kernel_two_ooq_tests.cpp b/unit_tests/command_queue/enqueue_kernel_two_ooq_tests.cpp index b96193ad40..a131accbb5 100644 --- a/unit_tests/command_queue/enqueue_kernel_two_ooq_tests.cpp +++ b/unit_tests/command_queue/enqueue_kernel_two_ooq_tests.cpp @@ -124,6 +124,8 @@ HWCMDTEST_F(IGFX_GEN8_CORE, TwoOOQsTwoDependentWalkers, shouldHaveOneVFEState) { HWTEST_F(TwoOOQsTwoDependentWalkers, shouldHaveAPipecontrolBetweenWalkers) { typedef typename FamilyType::PIPE_CONTROL PIPE_CONTROL; + pDevice->getUltCommandStreamReceiver().timestampPacketWriteEnabled = false; + parseWalkers(); auto itorCmd = find(itorWalker1, itorWalker2); diff --git a/unit_tests/command_queue/enqueue_kernel_two_walker_ioq_tests.cpp b/unit_tests/command_queue/enqueue_kernel_two_walker_ioq_tests.cpp index c1e7f32ebd..87333b9bff 100644 --- a/unit_tests/command_queue/enqueue_kernel_two_walker_ioq_tests.cpp +++ b/unit_tests/command_queue/enqueue_kernel_two_walker_ioq_tests.cpp @@ -33,8 +33,10 @@ HWCMDTEST_F(IGFX_GEN8_CORE, IOQWithTwoWalkers, shouldHaveOneVFEState) { } HWTEST_F(IOQWithTwoWalkers, shouldHaveAPipecontrolBetweenWalkers2) { + auto &commandStreamReceiver = pDevice->getUltCommandStreamReceiver(); + commandStreamReceiver.timestampPacketWriteEnabled = false; + enqueueTwoKernels(); - auto &commandStreamReceiver = pDevice->getCommandStreamReceiver(); typedef typename FamilyType::PIPE_CONTROL PIPE_CONTROL; diff --git a/unit_tests/command_queue/enqueue_read_buffer_event_tests.cpp b/unit_tests/command_queue/enqueue_read_buffer_event_tests.cpp index 5ce566e441..497146c426 100644 --- a/unit_tests/command_queue/enqueue_read_buffer_event_tests.cpp +++ b/unit_tests/command_queue/enqueue_read_buffer_event_tests.cpp @@ -61,8 +61,8 @@ TEST_F(EnqueueReadBuffer, eventReturnedShouldBeMaxOfInputEventsAndCmdQPlus1) { uint32_t taskLevelEvent1 = 8; uint32_t taskLevelEvent2 = 19; - Event event1(nullptr, CL_COMMAND_NDRANGE_KERNEL, taskLevelEvent1, 4); - Event event2(nullptr, CL_COMMAND_NDRANGE_KERNEL, taskLevelEvent2, 10); + Event event1(pCmdQ, CL_COMMAND_NDRANGE_KERNEL, taskLevelEvent1, 4); + Event event2(pCmdQ, CL_COMMAND_NDRANGE_KERNEL, taskLevelEvent2, 10); cl_bool blockingRead = CL_TRUE; size_t offset = 0; @@ -255,4 +255,4 @@ TEST_F(EnqueueReadBuffer, givenOutOfOrderQueueAndDisabledSupportCpuCopiesAndDstP EXPECT_EQ(19u, pCmdOOQ->taskLevel); pEvent->release(); -} \ No newline at end of file +} diff --git a/unit_tests/command_queue/enqueue_write_buffer_event_tests.cpp b/unit_tests/command_queue/enqueue_write_buffer_event_tests.cpp index 25e305b08d..734898212a 100644 --- a/unit_tests/command_queue/enqueue_write_buffer_event_tests.cpp +++ b/unit_tests/command_queue/enqueue_write_buffer_event_tests.cpp @@ -61,8 +61,8 @@ TEST_F(EnqueueWriteBufferTypeTest, eventReturnedShouldBeMaxOfInputEventsAndCmdQP uint32_t taskLevelEvent1 = 8; uint32_t taskLevelEvent2 = 19; - Event event1(nullptr, CL_COMMAND_NDRANGE_KERNEL, taskLevelEvent1, 4); - Event event2(nullptr, CL_COMMAND_NDRANGE_KERNEL, taskLevelEvent2, 10); + Event event1(pCmdQ, CL_COMMAND_NDRANGE_KERNEL, taskLevelEvent1, 4); + Event event2(pCmdQ, CL_COMMAND_NDRANGE_KERNEL, taskLevelEvent2, 10); cl_bool blockingWrite = CL_TRUE; size_t offset = 0; @@ -256,4 +256,4 @@ TEST_F(EnqueueWriteBufferTypeTest, givenOutOfOrderQueueAndDisabledSupportCpuCopi EXPECT_EQ(19u, pCmdOOQ->taskLevel); pEvent->release(); -} \ No newline at end of file +} diff --git a/unit_tests/command_stream/command_stream_receiver_flush_task_tests.cpp b/unit_tests/command_stream/command_stream_receiver_flush_task_tests.cpp index dc40aee07f..1f84f6616d 100644 --- a/unit_tests/command_stream/command_stream_receiver_flush_task_tests.cpp +++ b/unit_tests/command_stream/command_stream_receiver_flush_task_tests.cpp @@ -104,6 +104,7 @@ HWTEST_F(CommandStreamReceiverFlushTaskTests, givenconfigureCSRtoNonDirtyStateWh HWTEST_F(CommandStreamReceiverFlushTaskTests, givenCsrInBatchingModeWhenTaskIsSubmittedViaCsrThenBbEndCoversPaddingEnoughToFitMiBatchBufferStart) { auto &mockCsr = pDevice->getUltCommandStreamReceiver(); mockCsr.overrideDispatchPolicy(DispatchMode::BatchedDispatch); + mockCsr.timestampPacketWriteEnabled = false; configureCSRtoNonDirtyState(); @@ -269,6 +270,8 @@ HWTEST_F(CommandStreamReceiverFlushTaskTests, givenDeviceWithThreadGroupPreempti HWTEST_F(CommandStreamReceiverFlushTaskTests, higherTaskLevelShouldSendAPipeControl) { auto &commandStreamReceiver = pDevice->getUltCommandStreamReceiver(); commandStreamReceiver.isPreambleSent = true; + commandStreamReceiver.timestampPacketWriteEnabled = false; + configureCSRtoNonDirtyState(); commandStreamReceiver.taskLevel = taskLevel / 2; @@ -667,6 +670,7 @@ HWTEST_F(CommandStreamReceiverFlushTaskTests, flushTaskWithOnlyEnoughMemoryForPr pDevice->setForceWhitelistedRegs(true, &forceRegs); auto &commandStreamReceiver = pDevice->getUltCommandStreamReceiver(); + commandStreamReceiver.timestampPacketWriteEnabled = false; // Force a PIPE_CONTROL through a taskLevel transition taskLevel = commandStreamReceiver.peekTaskLevel() + 1; @@ -698,6 +702,7 @@ HWTEST_F(CommandStreamReceiverFlushTaskTests, flushTaskWithOnlyEnoughMemoryForPr pDevice->setForceWhitelistedRegs(true, &forceRegs); auto &commandStreamReceiver = pDevice->getUltCommandStreamReceiver(); + commandStreamReceiver.timestampPacketWriteEnabled = false; // Force a PIPE_CONTROL through a taskLevel transition taskLevel = commandStreamReceiver.peekTaskLevel() + 1; commandStreamReceiver.lastSentCoherencyRequest = 0; @@ -963,7 +968,8 @@ HWTEST_F(CommandStreamReceiverFlushTaskTests, GivenBlockedKernelRequiringDCFlush typedef typename FamilyType::PIPE_CONTROL PIPE_CONTROL; MockContext ctx(pDevice); CommandQueueHw commandQueue(&ctx, pDevice, 0); - auto &commandStreamReceiver = pDevice->getCommandStreamReceiver(); + auto &commandStreamReceiver = pDevice->getUltCommandStreamReceiver(); + commandStreamReceiver.timestampPacketWriteEnabled = false; cl_event blockingEvent; MockEvent mockEvent(&ctx); blockingEvent = &mockEvent; @@ -1002,7 +1008,8 @@ HWTEST_F(CommandStreamReceiverFlushTaskTests, GivenBlockedKernelNotRequiringDCFl typedef typename FamilyType::PIPE_CONTROL PIPE_CONTROL; MockContext ctx(pDevice); CommandQueueHw commandQueue(&ctx, pDevice, 0); - auto &commandStreamReceiver = pDevice->getCommandStreamReceiver(); + auto &commandStreamReceiver = pDevice->getUltCommandStreamReceiver(); + commandStreamReceiver.timestampPacketWriteEnabled = false; cl_event blockingEvent; MockEvent mockEvent(&ctx); blockingEvent = &mockEvent; @@ -2855,6 +2862,7 @@ HWTEST_F(CommandStreamReceiverFlushTaskTests, auto mockCsr = new MockCsrHw2(*platformDevices[0], *pDevice->executionEnvironment); pDevice->resetCommandStreamReceiver(mockCsr); + mockCsr->timestampPacketWriteEnabled = false; mockCsr->overrideDispatchPolicy(DispatchMode::BatchedDispatch); diff --git a/unit_tests/helpers/timestamp_packet_tests.cpp b/unit_tests/helpers/timestamp_packet_tests.cpp index 4aafd6c655..e6aec3eeb0 100644 --- a/unit_tests/helpers/timestamp_packet_tests.cpp +++ b/unit_tests/helpers/timestamp_packet_tests.cpp @@ -269,6 +269,7 @@ HWCMDTEST_F(IGFX_GEN8_CORE, TimestampPacketTests, givenTimestampPacketWhenDispat auto &cmdStream = mockCmdQ->getCS(0); + device->getUltCommandStreamReceiver().timestampPacketWriteEnabled = true; HardwareInterface::dispatchWalker( *mockCmdQ, multiDispatchInfo, @@ -305,6 +306,33 @@ HWCMDTEST_F(IGFX_GEN8_CORE, TimestampPacketTests, givenTimestampPacketWhenDispat EXPECT_EQ(2u, walkersFound); } +HWCMDTEST_F(IGFX_GEN8_CORE, TimestampPacketTests, givenTimestampPacketDisabledWhenDispatchingGpuWalkerThenDontAddPipeControls) { + MockTimestampPacketContainer timestampPacket(device->getMemoryManager(), 1); + MockMultiDispatchInfo multiDispatchInfo(kernel->mockKernel); + auto &cmdStream = mockCmdQ->getCS(0); + + device->getUltCommandStreamReceiver().timestampPacketWriteEnabled = false; + + HardwareInterface::dispatchWalker( + *mockCmdQ, + multiDispatchInfo, + 0, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + ×tampPacket, + device->getPreemptionMode(), + false); + + HardwareParse hwParser; + hwParser.parseCommands(cmdStream, 0); + + auto cmdItor = find(hwParser.cmdList.begin(), hwParser.cmdList.end()); + EXPECT_EQ(hwParser.cmdList.end(), cmdItor); +} + HWTEST_F(TimestampPacketTests, givenTimestampPacketWriteEnabledWhenEnqueueingThenObtainNewStampAndPassToEvent) { device->getUltCommandStreamReceiver().timestampPacketWriteEnabled = true; auto mockMemoryManager = new MockMemoryManager(*device->getExecutionEnvironment()); @@ -812,11 +840,12 @@ HWTEST_F(TimestampPacketTests, givenWaitlistAndOutputEventWhenEnqueueingWithoutK event0.addTimestampPacketNodes(node1); Event event1(&cmdQ, 0, 0, 0); event1.addTimestampPacketNodes(node2); + UserEvent userEvent; - cl_event waitlist[] = {&event0, &event1}; + cl_event waitlist[] = {&event0, &event1, &userEvent}; cl_event clOutEvent; - cmdQ.enqueueMarkerWithWaitList(2, waitlist, &clOutEvent); + cmdQ.enqueueMarkerWithWaitList(3, waitlist, &clOutEvent); auto outEvent = castToObject(clOutEvent); diff --git a/unit_tests/kernel/kernel_tests.cpp b/unit_tests/kernel/kernel_tests.cpp index 5ead857ae5..e4ba28b86d 100644 --- a/unit_tests/kernel/kernel_tests.cpp +++ b/unit_tests/kernel/kernel_tests.cpp @@ -1642,7 +1642,7 @@ HWTEST_F(KernelResidencyTest, givenKernelWhenMakeResidentIsCalledThenKernelIsaIs EXPECT_EQ(0u, commandStreamReceiver.makeResidentAllocations.size()); pKernel->makeResident(pDevice->getCommandStreamReceiver()); EXPECT_EQ(1u, commandStreamReceiver.makeResidentAllocations.size()); - EXPECT_EQ(commandStreamReceiver.makeResidentAllocations.begin()->first, pKernel->getKernelInfo().getGraphicsAllocation()); + EXPECT_TRUE(commandStreamReceiver.isMadeResident(pKernel->getKernelInfo().getGraphicsAllocation())); memoryManager->freeGraphicsMemory(pKernelInfo->kernelAllocation); }