From 70de319f3385caaabb76fa25b527a0ecd0027b0d Mon Sep 17 00:00:00 2001 From: "Dunajski, Bartosz" Date: Mon, 9 Sep 2019 08:45:37 +0200 Subject: [PATCH] Allow for blit enqueue on read/write buffer operations Change-Id: Iacdd2b75c671209d961fdf1754ff348af45ae56c Signed-off-by: Dunajski, Bartosz Related-To: NEO-3020 --- runtime/command_queue/command_queue.cpp | 5 ++--- unit_tests/mem_obj/buffer_tests.cpp | 6 +++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/runtime/command_queue/command_queue.cpp b/runtime/command_queue/command_queue.cpp index 4026e31b7f..96057b760b 100644 --- a/runtime/command_queue/command_queue.cpp +++ b/runtime/command_queue/command_queue.cpp @@ -578,11 +578,10 @@ bool CommandQueue::queueDependenciesClearRequired() const { } bool CommandQueue::blitEnqueueAllowed(cl_command_type cmdType) const { - bool blitAllowed = false; + bool blitAllowed = device->getExecutionEnvironment()->getHardwareInfo()->capabilityTable.blitterOperationsSupported; if (DebugManager.flags.EnableBlitterOperationsForReadWriteBuffers.get() != -1) { - blitAllowed = !!DebugManager.flags.EnableBlitterOperationsForReadWriteBuffers.get() && - device->getExecutionEnvironment()->getHardwareInfo()->capabilityTable.blitterOperationsSupported; + blitAllowed &= !!DebugManager.flags.EnableBlitterOperationsForReadWriteBuffers.get(); } bool commandAllowed = (CL_COMMAND_READ_BUFFER == cmdType) || (CL_COMMAND_WRITE_BUFFER == cmdType); diff --git a/unit_tests/mem_obj/buffer_tests.cpp b/unit_tests/mem_obj/buffer_tests.cpp index b1a3bb0bf1..a60ea1f8bd 100644 --- a/unit_tests/mem_obj/buffer_tests.cpp +++ b/unit_tests/mem_obj/buffer_tests.cpp @@ -757,14 +757,14 @@ HWTEST_TEMPLATED_F(BcsBufferTests, givenBcsSupportedWhenEnqueueReadWriteBufferIs commandQueue->enqueueWriteBuffer(bufferForBlt.get(), CL_TRUE, 0, 1, &hostPtr, nullptr, 0, nullptr, nullptr); commandQueue->enqueueReadBuffer(bufferForBlt.get(), CL_TRUE, 0, 1, &hostPtr, nullptr, 0, nullptr, nullptr); - EXPECT_EQ(0u, bcsCsr->blitBufferCalled); + EXPECT_EQ(2u, bcsCsr->blitBufferCalled); DebugManager.flags.EnableBlitterOperationsForReadWriteBuffers.set(1); hwInfo->capabilityTable.blitterOperationsSupported = true; commandQueue->enqueueWriteBuffer(bufferForBlt.get(), CL_TRUE, 0, 1, &hostPtr, nullptr, 0, nullptr, nullptr); - EXPECT_EQ(1u, bcsCsr->blitBufferCalled); + EXPECT_EQ(3u, bcsCsr->blitBufferCalled); commandQueue->enqueueReadBuffer(bufferForBlt.get(), CL_TRUE, 0, 1, &hostPtr, nullptr, 0, nullptr, nullptr); - EXPECT_EQ(2u, bcsCsr->blitBufferCalled); + EXPECT_EQ(4u, bcsCsr->blitBufferCalled); } HWTEST_TEMPLATED_F(BcsBufferTests, givenBcsSupportedWhenQueueIsBlockedThenDispatchBlitWhenUnblocked) {