From d04ac3d60fb94620f635a47bcd90dedfe8f88d3f Mon Sep 17 00:00:00 2001 From: Szymon Morek Date: Tue, 25 Mar 2025 09:35:15 +0000 Subject: [PATCH] fix: flush caches after filling image Related-To: NEO-14454 Signed-off-by: Szymon Morek --- opencl/source/command_queue/command_queue.cpp | 9 ++++++++- .../test/unit_test/command_queue/command_queue_tests.cpp | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/opencl/source/command_queue/command_queue.cpp b/opencl/source/command_queue/command_queue.cpp index cf73b542de..bb68186105 100644 --- a/opencl/source/command_queue/command_queue.cpp +++ b/opencl/source/command_queue/command_queue.cpp @@ -994,7 +994,14 @@ TaskCountType CommandQueue::peekBcsTaskCount(aub_stream::EngineType bcsEngineTyp } bool CommandQueue::isTextureCacheFlushNeeded(uint32_t commandType) const { - return (commandType == CL_COMMAND_COPY_IMAGE || commandType == CL_COMMAND_WRITE_IMAGE) && getGpgpuCommandStreamReceiver().isDirectSubmissionEnabled(); + switch (commandType) { + case CL_COMMAND_COPY_IMAGE: + case CL_COMMAND_WRITE_IMAGE: + case CL_COMMAND_FILL_IMAGE: + return getGpgpuCommandStreamReceiver().isDirectSubmissionEnabled(); + default: + return false; + } } IndirectHeap &CommandQueue::getIndirectHeap(IndirectHeapType heapType, size_t minRequiredSize) { diff --git a/opencl/test/unit_test/command_queue/command_queue_tests.cpp b/opencl/test/unit_test/command_queue/command_queue_tests.cpp index 29ae81fefe..2daa9fe00d 100644 --- a/opencl/test/unit_test/command_queue/command_queue_tests.cpp +++ b/opencl/test/unit_test/command_queue/command_queue_tests.cpp @@ -451,8 +451,8 @@ HWTEST_F(CommandQueueCommandStreamTest, WhenCheckIsTextureCacheFlushNeededThenRe EXPECT_FALSE(cmdQ.isTextureCacheFlushNeeded(CL_COMMAND_COPY_BUFFER_RECT)); - for (auto i = CL_COMMAND_NDRANGE_KERNEL; i < CL_COMMAND_RELEASE_GL_OBJECTS; i++) { - if (i == CL_COMMAND_COPY_IMAGE || i == CL_COMMAND_WRITE_IMAGE) { + for (auto i = CL_COMMAND_NDRANGE_KERNEL; i < CL_COMMAND_SVM_MIGRATE_MEM; i++) { + if (i == CL_COMMAND_COPY_IMAGE || i == CL_COMMAND_WRITE_IMAGE || i == CL_COMMAND_FILL_IMAGE) { commandStreamReceiver.directSubmissionAvailable = true; EXPECT_TRUE(cmdQ.isTextureCacheFlushNeeded(i)); commandStreamReceiver.directSubmissionAvailable = false;