diff --git a/opencl/source/mem_obj/buffer.cpp b/opencl/source/mem_obj/buffer.cpp index a645173849..a7308e6cfb 100644 --- a/opencl/source/mem_obj/buffer.cpp +++ b/opencl/source/mem_obj/buffer.cpp @@ -381,7 +381,7 @@ Buffer *Buffer::create(Context *context, bool gpuCopyRequired = (gmm && gmm->isRenderCompressed) || !MemoryPool::isSystemMemoryPool(allocationInfo[rootDeviceIndex].memory->getMemoryPool()); if (gpuCopyRequired) { - auto blitMemoryToAllocationResult = BlitHelperFunctions::blitMemoryToAllocation(pBuffer->getContext()->getDevice(rootDeviceIndex)->getDevice(), allocationInfo[rootDeviceIndex].memory, pBuffer->getOffset(), hostPtr, {size, 1, 1}); + auto blitMemoryToAllocationResult = BlitHelperFunctions::blitMemoryToAllocation(pBuffer->getContext()->getDevice(0u)->getDevice(), allocationInfo[rootDeviceIndex].memory, pBuffer->getOffset(), hostPtr, {size, 1, 1}); if (blitMemoryToAllocationResult != BlitOperationResult::Success) { auto cmdQ = context->getSpecialQueue(rootDeviceIndex); diff --git a/opencl/test/unit_test/mem_obj/buffer_bcs_tests.cpp b/opencl/test/unit_test/mem_obj/buffer_bcs_tests.cpp index 5a98581bc2..02bd1fb1f9 100644 --- a/opencl/test/unit_test/mem_obj/buffer_bcs_tests.cpp +++ b/opencl/test/unit_test/mem_obj/buffer_bcs_tests.cpp @@ -139,6 +139,22 @@ HWTEST_TEMPLATED_F(BcsBufferTests, givenBufferWithInitializationDataAndBcsCsrWhe EXPECT_EQ(1u, bcsCsr->blitBufferCalled); } +HWTEST_TEMPLATED_F(BcsBufferTests, givenBufferWithNotDefaultRootDeviceIndexAndBcsCsrWhenCreatingThenUseBlitOperation) { + + std::unique_ptr newDevice = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr, 1u)); + std::unique_ptr newBcsMockContext = std::make_unique(newDevice.get()); + + auto bcsCsr = static_cast *>(newBcsMockContext->bcsCsr.get()); + auto newMemoryManager = new MockMemoryManager(true, true, *newDevice->getExecutionEnvironment()); + + newDevice->getExecutionEnvironment()->memoryManager.reset(newMemoryManager); + newBcsMockContext->memoryManager = newMemoryManager; + + EXPECT_EQ(0u, bcsCsr->blitBufferCalled); + auto bufferForBlt = clUniquePtr(Buffer::create(newBcsMockContext.get(), CL_MEM_COPY_HOST_PTR, 2000, &hostPtr, retVal)); + EXPECT_EQ(1u, bcsCsr->blitBufferCalled); +} + HWTEST_TEMPLATED_F(BcsBufferTests, givenBcsSupportedWhenEnqueueBufferOperationIsCalledThenUseBcsCsr) { DebugManager.flags.EnableBlitterForEnqueueOperations.set(0); auto bcsCsr = static_cast *>(commandQueue->getBcsCommandStreamReceiver());