From a33d74bb79d1d2635333c8fed9824fc34c479253 Mon Sep 17 00:00:00 2001 From: Mateusz Jablonski Date: Mon, 1 Mar 2021 19:07:28 +0000 Subject: [PATCH] Disallow CPU buffer read/write operation if CPU access is disallowed Signed-off-by: Mateusz Jablonski --- opencl/source/command_queue/command_queue.cpp | 2 +- opencl/source/mem_obj/buffer.cpp | 11 ++++- opencl/source/mem_obj/buffer.h | 2 +- .../command_queue/blit_enqueue_tests.cpp | 1 + .../enqueue_read_buffer_event_tests.cpp | 3 ++ .../enqueue_read_buffer_tests.cpp | 1 + .../enqueue_unmap_memobject_tests.cpp | 1 + .../enqueue_write_buffer_event_tests.cpp | 2 + .../enqueue_write_buffer_tests.cpp | 1 + .../read_write_buffer_cpu_copy.cpp | 43 ++++++++++++++++--- .../unified_memory_manager_tests.cpp | 1 + .../sharings/gl/windows/gl_sharing_tests.cpp | 2 +- 12 files changed, 59 insertions(+), 11 deletions(-) diff --git a/opencl/source/command_queue/command_queue.cpp b/opencl/source/command_queue/command_queue.cpp index e7c1f7081a..e8a5cd3e48 100644 --- a/opencl/source/command_queue/command_queue.cpp +++ b/opencl/source/command_queue/command_queue.cpp @@ -692,7 +692,7 @@ bool CommandQueue::bufferCpuCopyAllowed(Buffer *buffer, cl_command_type commandT } //check if buffer is compatible - if (!buffer->isReadWriteOnCpuAllowed(device->getRootDeviceIndex())) { + if (!buffer->isReadWriteOnCpuAllowed(device->getDevice())) { return false; } diff --git a/opencl/source/mem_obj/buffer.cpp b/opencl/source/mem_obj/buffer.cpp index 2d6f44446e..5070482478 100644 --- a/opencl/source/mem_obj/buffer.cpp +++ b/opencl/source/mem_obj/buffer.cpp @@ -595,11 +595,13 @@ size_t Buffer::calculateHostPtrSize(const size_t *origin, const size_t *region, return hostPtrSize; } -bool Buffer::isReadWriteOnCpuAllowed(uint32_t rootDeviceIndex) { +bool Buffer::isReadWriteOnCpuAllowed(const Device &device) { if (forceDisallowCPUCopy) { return false; } + auto rootDeviceIndex = device.getRootDeviceIndex(); + if (this->isCompressed(rootDeviceIndex)) { return false; } @@ -613,6 +615,13 @@ bool Buffer::isReadWriteOnCpuAllowed(uint32_t rootDeviceIndex) { if (graphicsAllocation->storageInfo.getNumBanks() > 1) { return false; } + + const auto &hardwareInfo = device.getHardwareInfo(); + auto &hwHelper = HwHelper::get(hardwareInfo.platform.eRenderCoreFamily); + auto isCpuAccessDisallowed = LocalMemoryAccessMode::CpuAccessDisallowed == hwHelper.getLocalMemoryAccessMode(hardwareInfo); + if (isCpuAccessDisallowed) { + return false; + } return true; } diff --git a/opencl/source/mem_obj/buffer.h b/opencl/source/mem_obj/buffer.h index 6a1ee8224c..843fe88831 100644 --- a/opencl/source/mem_obj/buffer.h +++ b/opencl/source/mem_obj/buffer.h @@ -151,7 +151,7 @@ class Buffer : public MemObj { void transferDataToHostPtr(MemObjSizeArray ©Size, MemObjOffsetArray ©Offset) override; void transferDataFromHostPtr(MemObjSizeArray ©Size, MemObjOffsetArray ©Offset) override; - bool isReadWriteOnCpuAllowed(uint32_t rootDeviceIndex); + bool isReadWriteOnCpuAllowed(const Device &device); bool isReadWriteOnCpuPreferred(void *ptr, size_t size, const Device &device); uint32_t getMocsValue(bool disableL3Cache, bool isReadOnlyArgument, uint32_t rootDeviceIndex) const; 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 05f93a1962..762b9c406e 100644 --- a/opencl/test/unit_test/command_queue/blit_enqueue_tests.cpp +++ b/opencl/test/unit_test/command_queue/blit_enqueue_tests.cpp @@ -1379,6 +1379,7 @@ HWTEST_TEMPLATED_F(BlitEnqueueTaskCountTests, givenBlockedEnqueueWithoutKernelWh HWTEST_TEMPLATED_F(BlitEnqueueTaskCountTests, givenEventFromCpuCopyWhenWaitingForCompletionThenWaitForCurrentBcsTaskCount) { DebugManager.flags.DoCpuCopyOnWriteBuffer.set(1); + DebugManager.flags.ForceLocalMemoryAccessMode.set(static_cast(LocalMemoryAccessMode::Default)); auto buffer = createBuffer(1, false); int hostPtr = 0; diff --git a/opencl/test/unit_test/command_queue/enqueue_read_buffer_event_tests.cpp b/opencl/test/unit_test/command_queue/enqueue_read_buffer_event_tests.cpp index ad9f0feb92..6df2c05c1f 100644 --- a/opencl/test/unit_test/command_queue/enqueue_read_buffer_event_tests.cpp +++ b/opencl/test/unit_test/command_queue/enqueue_read_buffer_event_tests.cpp @@ -102,6 +102,7 @@ TEST_F(EnqueueReadBuffer, WhenReadingBufferThenEventReturnedShouldBeMaxOfInputEv TEST_F(EnqueueReadBuffer, givenInOrderQueueAndForcedCpuCopyOnReadBufferAndDstPtrEqualSrcPtrWithEventsNotBlockedWhenReadBufferIsExecutedThenTaskLevelShouldNotBeIncreased) { DebugManagerStateRestore dbgRestore; DebugManager.flags.DoCpuCopyOnReadBuffer.set(1); + DebugManager.flags.ForceLocalMemoryAccessMode.set(static_cast(LocalMemoryAccessMode::Default)); cl_int retVal = CL_SUCCESS; uint32_t taskLevelCmdQ = 17; pCmdQ->taskLevel = taskLevelCmdQ; @@ -144,6 +145,7 @@ TEST_F(EnqueueReadBuffer, givenInOrderQueueAndForcedCpuCopyOnReadBufferAndDstPtr TEST_F(EnqueueReadBuffer, givenInOrderQueueAndForcedCpuCopyOnReadBufferAndDstPtrEqualSrcPtrWhenReadBufferIsExecutedThenTaskLevelShouldNotBeIncreased) { DebugManagerStateRestore dbgRestore; DebugManager.flags.DoCpuCopyOnReadBuffer.set(1); + DebugManager.flags.ForceLocalMemoryAccessMode.set(static_cast(LocalMemoryAccessMode::Default)); cl_int retVal = CL_SUCCESS; uint32_t taskLevelCmdQ = 17; pCmdQ->taskLevel = taskLevelCmdQ; @@ -177,6 +179,7 @@ TEST_F(EnqueueReadBuffer, givenInOrderQueueAndForcedCpuCopyOnReadBufferAndDstPtr TEST_F(EnqueueReadBuffer, givenOutOfOrderQueueAndForcedCpuCopyOnReadBufferAndDstPtrEqualSrcPtrWithEventsNotBlockedWhenReadBufferIsExecutedThenTaskLevelShouldNotBeIncreased) { DebugManagerStateRestore dbgRestore; DebugManager.flags.DoCpuCopyOnReadBuffer.set(1); + DebugManager.flags.ForceLocalMemoryAccessMode.set(static_cast(LocalMemoryAccessMode::Default)); std::unique_ptr pCmdOOQ(createCommandQueue(pClDevice, CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE)); cl_int retVal = CL_SUCCESS; uint32_t taskLevelCmdQ = 17; diff --git a/opencl/test/unit_test/command_queue/enqueue_read_buffer_tests.cpp b/opencl/test/unit_test/command_queue/enqueue_read_buffer_tests.cpp index f6383999e9..01aca975ac 100644 --- a/opencl/test/unit_test/command_queue/enqueue_read_buffer_tests.cpp +++ b/opencl/test/unit_test/command_queue/enqueue_read_buffer_tests.cpp @@ -558,6 +558,7 @@ HWTEST_F(EnqueueReadBufferTypeTest, givenEnqueueReadBufferCalledWhenLockedPtrInT HWTEST_F(EnqueueReadBufferTypeTest, givenForcedCpuCopyWhenEnqueueReadCompressedBufferThenDontCopyOnCpu) { DebugManagerStateRestore dbgRestore; DebugManager.flags.DoCpuCopyOnReadBuffer.set(1); + DebugManager.flags.ForceLocalMemoryAccessMode.set(static_cast(LocalMemoryAccessMode::Default)); MockExecutionEnvironment executionEnvironment(defaultHwInfo.get()); MockMemoryManager memoryManager(false, true, executionEnvironment); diff --git a/opencl/test/unit_test/command_queue/enqueue_unmap_memobject_tests.cpp b/opencl/test/unit_test/command_queue/enqueue_unmap_memobject_tests.cpp index 5276d5fceb..922499d509 100644 --- a/opencl/test/unit_test/command_queue/enqueue_unmap_memobject_tests.cpp +++ b/opencl/test/unit_test/command_queue/enqueue_unmap_memobject_tests.cpp @@ -219,6 +219,7 @@ HWTEST_F(EnqueueUnmapMemObjTest, givenEnqueueUnmapMemObjectWhenNonAubWritableBuf HWTEST_F(EnqueueUnmapMemObjTest, givenWriteBufferIsServicedOnCPUWhenBufferIsNonAubTbxWriteableThanFlagsChange) { DebugManagerStateRestore restorer; DebugManager.flags.DoCpuCopyOnWriteBuffer.set(1); + DebugManager.flags.ForceLocalMemoryAccessMode.set(static_cast(LocalMemoryAccessMode::Default)); auto buffer = std::unique_ptr(BufferHelper<>::create()); ASSERT_NE(nullptr, buffer); auto graphicsAllocation = buffer->getGraphicsAllocation(pClDevice->getRootDeviceIndex()); diff --git a/opencl/test/unit_test/command_queue/enqueue_write_buffer_event_tests.cpp b/opencl/test/unit_test/command_queue/enqueue_write_buffer_event_tests.cpp index fd0c7b0944..af68e726db 100644 --- a/opencl/test/unit_test/command_queue/enqueue_write_buffer_event_tests.cpp +++ b/opencl/test/unit_test/command_queue/enqueue_write_buffer_event_tests.cpp @@ -103,6 +103,7 @@ TEST_F(EnqueueWriteBufferTypeTest, WhenWritingBufferThenReturnedEventShouldBeMax TEST_F(EnqueueWriteBufferTypeTest, givenInOrderQueueAndForcedCpuCopyOnWriteBufferAndDstPtrEqualSrcPtrWithEventsNotBlockedWhenWriteBufferIsExecutedThenTaskLevelShouldNotBeIncreased) { DebugManagerStateRestore dbgRestore; DebugManager.flags.DoCpuCopyOnWriteBuffer.set(1); + DebugManager.flags.ForceLocalMemoryAccessMode.set(static_cast(LocalMemoryAccessMode::Default)); cl_int retVal = CL_SUCCESS; uint32_t taskLevelCmdQ = 17; pCmdQ->taskLevel = taskLevelCmdQ; @@ -217,6 +218,7 @@ TEST_F(EnqueueWriteBufferTypeTest, givenInOrderQueueAndForcedCpuCopyOnWriteBuffe TEST_F(EnqueueWriteBufferTypeTest, givenOutOfOrderQueueAndForcedCpuCopyOnWriteBufferAndDstPtrEqualSrcPtrWithEventsWhenWriteBufferIsExecutedThenTaskLevelShouldNotBeIncreased) { DebugManagerStateRestore dbgRestore; DebugManager.flags.DoCpuCopyOnWriteBuffer.set(1); + DebugManager.flags.ForceLocalMemoryAccessMode.set(static_cast(LocalMemoryAccessMode::Default)); std::unique_ptr pCmdOOQ(createCommandQueue(pClDevice, CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE)); cl_int retVal = CL_SUCCESS; uint32_t taskLevelCmdQ = 17; diff --git a/opencl/test/unit_test/command_queue/enqueue_write_buffer_tests.cpp b/opencl/test/unit_test/command_queue/enqueue_write_buffer_tests.cpp index 6ab9310b7f..f3a51b2270 100644 --- a/opencl/test/unit_test/command_queue/enqueue_write_buffer_tests.cpp +++ b/opencl/test/unit_test/command_queue/enqueue_write_buffer_tests.cpp @@ -414,6 +414,7 @@ HWTEST_F(EnqueueWriteBufferTypeTest, givenEnqueueWriteBufferCalledWhenLockedPtrI HWTEST_F(EnqueueWriteBufferTypeTest, givenForcedCpuCopyWhenEnqueueWriteCompressedBufferThenDontCopyOnCpu) { DebugManagerStateRestore dbgRestore; DebugManager.flags.DoCpuCopyOnWriteBuffer.set(1); + DebugManager.flags.ForceLocalMemoryAccessMode.set(static_cast(LocalMemoryAccessMode::Default)); MockExecutionEnvironment executionEnvironment(defaultHwInfo.get()); MockMemoryManager memoryManager(false, true, executionEnvironment); diff --git a/opencl/test/unit_test/command_queue/read_write_buffer_cpu_copy.cpp b/opencl/test/unit_test/command_queue/read_write_buffer_cpu_copy.cpp index e85c2a2dc8..57a5f8b79c 100644 --- a/opencl/test/unit_test/command_queue/read_write_buffer_cpu_copy.cpp +++ b/opencl/test/unit_test/command_queue/read_write_buffer_cpu_copy.cpp @@ -18,6 +18,8 @@ using namespace NEO; typedef EnqueueReadBufferTypeTest ReadWriteBufferCpuCopyTest; HWTEST_F(ReadWriteBufferCpuCopyTest, givenRenderCompressedGmmWhenAskingForCpuOperationThenDisallow) { + DebugManagerStateRestore restorer; + DebugManager.flags.ForceLocalMemoryAccessMode.set(static_cast(LocalMemoryAccessMode::Default)); cl_int retVal; auto rootDeviceIndex = context->getDevice(0)->getRootDeviceIndex(); std::unique_ptr buffer(Buffer::create(context, CL_MEM_READ_WRITE, 1, nullptr, retVal)); @@ -29,17 +31,31 @@ HWTEST_F(ReadWriteBufferCpuCopyTest, givenRenderCompressedGmmWhenAskingForCpuOpe auto alignedPtr = alignedMalloc(2, MemoryConstants::cacheLineSize); auto unalignedPtr = ptrOffset(alignedPtr, 1); EXPECT_EQ(1u, allocation->storageInfo.getNumBanks()); - EXPECT_TRUE(buffer->isReadWriteOnCpuAllowed(rootDeviceIndex)); + EXPECT_TRUE(buffer->isReadWriteOnCpuAllowed(*pDevice)); EXPECT_TRUE(buffer->isReadWriteOnCpuPreferred(unalignedPtr, 1, *pDevice)); gmm->isRenderCompressed = true; - EXPECT_FALSE(buffer->isReadWriteOnCpuAllowed(rootDeviceIndex)); + EXPECT_FALSE(buffer->isReadWriteOnCpuAllowed(*pDevice)); EXPECT_TRUE(buffer->isReadWriteOnCpuPreferred(unalignedPtr, 1, *pDevice)); alignedFree(alignedPtr); } +HWTEST_F(ReadWriteBufferCpuCopyTest, givenDisallowedCpuAccessWhenAskingForCpuOperationThenDisallow) { + DebugManagerStateRestore restorer; + DebugManager.flags.ForceLocalMemoryAccessMode.set(static_cast(LocalMemoryAccessMode::Default)); + cl_int retVal; + std::unique_ptr buffer(Buffer::create(context, CL_MEM_READ_WRITE, 1, nullptr, retVal)); + + EXPECT_TRUE(buffer->isReadWriteOnCpuAllowed(*pDevice)); + + DebugManager.flags.ForceLocalMemoryAccessMode.set(static_cast(LocalMemoryAccessMode::CpuAccessDisallowed)); + EXPECT_FALSE(buffer->isReadWriteOnCpuAllowed(*pDevice)); +} + HWTEST_F(ReadWriteBufferCpuCopyTest, GivenUnalignedReadPtrWhenReadingBufferThenMemoryIsReadCorrectly) { + DebugManagerStateRestore restorer; + DebugManager.flags.ForceLocalMemoryAccessMode.set(static_cast(LocalMemoryAccessMode::Default)); cl_int retVal; size_t offset = 1; size_t size = 4; @@ -57,7 +73,7 @@ HWTEST_F(ReadWriteBufferCpuCopyTest, GivenUnalignedReadPtrWhenReadingBufferThenM bool aligned = (reinterpret_cast(unalignedReadPtr) & (MemoryConstants::cacheLineSize - 1)) == 0; EXPECT_TRUE(!aligned || buffer->isMemObjZeroCopy()); - ASSERT_TRUE(buffer->isReadWriteOnCpuAllowed(pCmdQ->getDevice().getRootDeviceIndex())); + ASSERT_TRUE(buffer->isReadWriteOnCpuAllowed(pCmdQ->getDevice())); ASSERT_TRUE(buffer->isReadWriteOnCpuPreferred(unalignedReadPtr, size, context->getDevice(0)->getDevice())); retVal = EnqueueReadBufferHelper<>::enqueueReadBuffer(pCmdQ, @@ -79,6 +95,8 @@ HWTEST_F(ReadWriteBufferCpuCopyTest, GivenUnalignedReadPtrWhenReadingBufferThenM } HWTEST_F(ReadWriteBufferCpuCopyTest, GivenUnalignedSrcPtrWhenWritingBufferThenMemoryIsWrittenCorrectly) { + DebugManagerStateRestore restorer; + DebugManager.flags.ForceLocalMemoryAccessMode.set(static_cast(LocalMemoryAccessMode::Default)); cl_int retVal; size_t offset = 1; size_t size = 4; @@ -98,7 +116,7 @@ HWTEST_F(ReadWriteBufferCpuCopyTest, GivenUnalignedSrcPtrWhenWritingBufferThenMe bool aligned = (reinterpret_cast(unalignedWritePtr) & (MemoryConstants::cacheLineSize - 1)) == 0; EXPECT_TRUE(!aligned || buffer->isMemObjZeroCopy()); - ASSERT_TRUE(buffer->isReadWriteOnCpuAllowed(pCmdQ->getDevice().getRootDeviceIndex())); + ASSERT_TRUE(buffer->isReadWriteOnCpuAllowed(pCmdQ->getDevice())); ASSERT_TRUE(buffer->isReadWriteOnCpuPreferred(unalignedWritePtr, size, context->getDevice(0)->getDevice())); retVal = EnqueueWriteBufferHelper<>::enqueueWriteBuffer(pCmdQ, @@ -125,6 +143,8 @@ HWTEST_F(ReadWriteBufferCpuCopyTest, GivenUnalignedSrcPtrWhenWritingBufferThenMe } HWTEST_F(ReadWriteBufferCpuCopyTest, GivenSpecificMemoryStructuresWhenReadingWritingMemoryThenCpuReadWriteIsAllowed) { + DebugManagerStateRestore restorer; + DebugManager.flags.ForceLocalMemoryAccessMode.set(static_cast(LocalMemoryAccessMode::Default)); cl_int retVal; size_t size = MemoryConstants::cacheLineSize; auto alignedBufferPtr = alignedMalloc(MemoryConstants::cacheLineSize + 1, MemoryConstants::cacheLineSize); @@ -218,6 +238,7 @@ HWTEST_F(ReadWriteBufferCpuCopyTest, GivenSpecificMemoryStructuresWhenReadingWri HWTEST_F(ReadWriteBufferCpuCopyTest, givenDebugVariableToDisableCpuCopiesWhenBufferCpuCopyAllowedIsCalledThenItReturnsFalse) { DebugManagerStateRestore restorer; DebugManager.flags.EnableLocalMemory.set(false); + DebugManager.flags.ForceLocalMemoryAccessMode.set(static_cast(LocalMemoryAccessMode::Default)); cl_int retVal; @@ -242,6 +263,8 @@ HWTEST_F(ReadWriteBufferCpuCopyTest, givenDebugVariableToDisableCpuCopiesWhenBuf } TEST(ReadWriteBufferOnCpu, givenNoHostPtrAndAlignedSizeWhenMemoryAllocationIsInNonSystemMemoryPoolThenIsReadWriteOnCpuAllowedReturnsFalse) { + DebugManagerStateRestore restorer; + DebugManager.flags.ForceLocalMemoryAccessMode.set(static_cast(LocalMemoryAccessMode::Default)); auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); auto memoryManager = new MockMemoryManager(*device->getExecutionEnvironment()); @@ -254,15 +277,17 @@ TEST(ReadWriteBufferOnCpu, givenNoHostPtrAndAlignedSizeWhenMemoryAllocationIsInN std::unique_ptr buffer(Buffer::create(&ctx, flags, MemoryConstants::pageSize, nullptr, retVal)); ASSERT_NE(nullptr, buffer.get()); - EXPECT_TRUE(buffer->isReadWriteOnCpuAllowed(device->getRootDeviceIndex())); + EXPECT_TRUE(buffer->isReadWriteOnCpuAllowed(device->getDevice())); EXPECT_TRUE(buffer->isReadWriteOnCpuPreferred(reinterpret_cast(0x1000), MemoryConstants::pageSize, device->getDevice())); reinterpret_cast(buffer->getGraphicsAllocation(device->getRootDeviceIndex()))->overrideMemoryPool(MemoryPool::SystemCpuInaccessible); //read write on CPU is allowed, but not preferred. We can access this memory via Lock. - EXPECT_TRUE(buffer->isReadWriteOnCpuAllowed(device->getRootDeviceIndex())); + EXPECT_TRUE(buffer->isReadWriteOnCpuAllowed(device->getDevice())); EXPECT_FALSE(buffer->isReadWriteOnCpuPreferred(reinterpret_cast(0x1000), MemoryConstants::pageSize, device->getDevice())); } TEST(ReadWriteBufferOnCpu, givenPointerThatRequiresCpuCopyWhenCpuCopyIsEvaluatedThenTrueIsReturned) { + DebugManagerStateRestore restorer; + DebugManager.flags.ForceLocalMemoryAccessMode.set(static_cast(LocalMemoryAccessMode::Default)); auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); auto memoryManager = new MockMemoryManager(*device->getExecutionEnvironment()); @@ -283,6 +308,8 @@ TEST(ReadWriteBufferOnCpu, givenPointerThatRequiresCpuCopyWhenCpuCopyIsEvaluated } TEST(ReadWriteBufferOnCpu, givenPointerThatRequiresCpuCopyButItIsNotPossibleWhenCpuCopyIsEvaluatedThenFalseIsReturned) { + DebugManagerStateRestore restorer; + DebugManager.flags.ForceLocalMemoryAccessMode.set(static_cast(LocalMemoryAccessMode::Default)); auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); auto memoryManager = new MockMemoryManager(*device->getExecutionEnvironment()); @@ -304,6 +331,8 @@ TEST(ReadWriteBufferOnCpu, givenPointerThatRequiresCpuCopyButItIsNotPossibleWhen } TEST(ReadWriteBufferOnCpu, whenLocalMemoryPoolAllocationIsAskedForPreferenceThenCpuIsNotChoosen) { + DebugManagerStateRestore restorer; + DebugManager.flags.ForceLocalMemoryAccessMode.set(static_cast(LocalMemoryAccessMode::Default)); auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); MockContext ctx(device.get()); @@ -312,6 +341,6 @@ TEST(ReadWriteBufferOnCpu, whenLocalMemoryPoolAllocationIsAskedForPreferenceThen ASSERT_NE(nullptr, buffer.get()); reinterpret_cast(buffer->getGraphicsAllocation(device->getRootDeviceIndex()))->overrideMemoryPool(MemoryPool::LocalMemory); - EXPECT_TRUE(buffer->isReadWriteOnCpuAllowed(device->getRootDeviceIndex())); + EXPECT_TRUE(buffer->isReadWriteOnCpuAllowed(device->getDevice())); EXPECT_FALSE(buffer->isReadWriteOnCpuPreferred(reinterpret_cast(0x1000), MemoryConstants::pageSize, device->getDevice())); } diff --git a/opencl/test/unit_test/memory_manager/unified_memory_manager_tests.cpp b/opencl/test/unit_test/memory_manager/unified_memory_manager_tests.cpp index 7199600cf1..3de579ec8a 100644 --- a/opencl/test/unit_test/memory_manager/unified_memory_manager_tests.cpp +++ b/opencl/test/unit_test/memory_manager/unified_memory_manager_tests.cpp @@ -761,6 +761,7 @@ TEST(UnfiedSharedMemoryTransferCalls, givenDeviceUsmAllocationWhenPtrIsUsedForTr TEST(UnfiedSharedMemoryTransferCalls, givenHostUsmAllocationWhenPtrIsUsedForTransferCallsThenCPUPathIsChoosen) { DebugManagerStateRestore restorer; DebugManager.flags.EnableLocalMemory.set(false); + DebugManager.flags.ForceLocalMemoryAccessMode.set(static_cast(LocalMemoryAccessMode::Default)); MockContext mockContext; cl_context clContext = &mockContext; diff --git a/opencl/test/unit_test/sharings/gl/windows/gl_sharing_tests.cpp b/opencl/test/unit_test/sharings/gl/windows/gl_sharing_tests.cpp index a51f904395..87e4a22f3b 100644 --- a/opencl/test/unit_test/sharings/gl/windows/gl_sharing_tests.cpp +++ b/opencl/test/unit_test/sharings/gl/windows/gl_sharing_tests.cpp @@ -217,7 +217,7 @@ TEST_F(glSharingTests, givenClGLBufferWhenItIsAcquiredThenAcuqireCountIsIncremen auto memObject = castToObject(glBuffer); EXPECT_FALSE(memObject->isMemObjZeroCopy()); - EXPECT_FALSE(memObject->isReadWriteOnCpuAllowed(rootDeviceIndex)); + EXPECT_FALSE(memObject->isReadWriteOnCpuAllowed(context.getDevice(0)->getDevice())); auto currentGraphicsAllocation = memObject->getGraphicsAllocation(rootDeviceIndex); memObject->peekSharingHandler()->acquire(memObject, rootDeviceIndex);