diff --git a/opencl/source/command_queue/command_queue.cpp b/opencl/source/command_queue/command_queue.cpp index f4a7a27195..7e07297e87 100644 --- a/opencl/source/command_queue/command_queue.cpp +++ b/opencl/source/command_queue/command_queue.cpp @@ -649,6 +649,10 @@ void CommandQueue::obtainNewTimestampPacketNodes(size_t numberOfNodes, Timestamp previousNodes.swapNodes(*timestampPacketContainer); + if ((previousNodes.peekNodes().size() > 0) && (previousNodes.peekNodes()[0]->getAllocator() != allocator)) { + clearAllDependencies = false; + } + if (clearAllDependencies) { previousNodes.moveNodesToNewContainer(*deferredTimestampPackets); } diff --git a/opencl/test/unit_test/command_queue/blit_enqueue_tests.cpp b/opencl/test/unit_test/command_queue/blit_enqueue_tests.cpp index 362345103f..d844551bcf 100644 --- a/opencl/test/unit_test/command_queue/blit_enqueue_tests.cpp +++ b/opencl/test/unit_test/command_queue/blit_enqueue_tests.cpp @@ -1726,7 +1726,7 @@ HWTEST_TEMPLATED_F(BlitEnqueueWithDisabledGpgpuSubmissionTests, givenSubmissionT { TimestampPacketContainer previousNodes; mockCommandQueue->obtainNewTimestampPacketNodes(1, previousNodes, clearDependencies, *bcsCsr); - EXPECT_EQ(0u, previousNodes.peekNodes().size()); + EXPECT_EQ(1u, previousNodes.peekNodes().size()); } { diff --git a/shared/source/utilities/tag_allocator.h b/shared/source/utilities/tag_allocator.h index 6424c4d4a2..26f59336e0 100644 --- a/shared/source/utilities/tag_allocator.h +++ b/shared/source/utilities/tag_allocator.h @@ -54,6 +54,8 @@ class TagNodeBase : public NonCopyableOrMovableClass { bool isProfilingCapable() const { return profilingCapable; } + const TagAllocatorBase *getAllocator() const { return allocator; } + // TagType specific calls virtual void assignDataToAllTimestamps(uint32_t packetIndex, void *source) = 0;