Skip to content

Commit b949176

Browse files
Use mem obj offset when returning cpu ptr for read write
Change-Id: Ia624559f94e6af0ed602687814e3c11f6693f8a6 Signed-off-by: Mateusz Jablonski <[email protected]>
1 parent 128bf45 commit b949176

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

runtime/helpers/properties_helper.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ TransferProperties::TransferProperties(MemObj *memObj, cl_command_type cmdType,
4141
}
4242

4343
void *TransferProperties::getCpuPtrForReadWrite() {
44-
return ptrOffset(lockedPtr ? lockedPtr : memObj->getCpuAddressForMemoryTransfer(), offset[0]);
44+
return ptrOffset(lockedPtr ? ptrOffset(lockedPtr, memObj->getOffset()) : memObj->getCpuAddressForMemoryTransfer(), offset[0]);
4545
}
4646

4747
} // namespace OCLRT

unit_tests/helpers/transfer_properties_tests.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,3 +91,18 @@ TEST(TransferPropertiesTest, givenTransferPropertiesWhenLockedPtrIsNotSetThenItI
9191
ASSERT_EQ(nullptr, transferProperties.lockedPtr);
9292
EXPECT_NE(transferProperties.lockedPtr, transferProperties.getCpuPtrForReadWrite());
9393
}
94+
95+
TEST(TransferPropertiesTest, givenTransferPropertiesWhenLockedPtrIsSetThenLockedPtrWithMemObjOffsetIsReturnedForReadWrite) {
96+
MockBuffer buffer;
97+
98+
void *lockedPtr = reinterpret_cast<void *>(0x1000);
99+
auto memObjOffset = MemoryConstants::cacheLineSize;
100+
buffer.offset = memObjOffset;
101+
102+
size_t offset = 0;
103+
size_t size = 4096u;
104+
TransferProperties transferProperties(&buffer, CL_COMMAND_MAP_BUFFER, 0, false, &offset, &size, nullptr);
105+
transferProperties.lockedPtr = lockedPtr;
106+
auto expectedPtr = ptrOffset(lockedPtr, memObjOffset);
107+
EXPECT_EQ(expectedPtr, transferProperties.getCpuPtrForReadWrite());
108+
}

unit_tests/mocks/mock_buffer.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2017-2018 Intel Corporation
2+
* Copyright (C) 2017-2019 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -28,6 +28,7 @@ class MockBufferStorage {
2828
class MockBuffer : public MockBufferStorage, public Buffer {
2929
public:
3030
using Buffer::magic;
31+
using Buffer::offset;
3132
using MockBufferStorage::device;
3233

3334
MockBuffer(GraphicsAllocation &alloc)

0 commit comments

Comments
 (0)