Add dedicated map allocation

Related-To: NEO-2917

Change-Id: Ieeca40f5faf29433a5c464d2c3ca3b8910695a9b
Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
Zbigniew Zdanowicz
2019-04-08 14:49:35 +02:00
committed by sys_ocldev
parent 91a64c8518
commit e201725dd5
45 changed files with 287 additions and 77 deletions

View File

@@ -464,3 +464,17 @@ TEST(MemObj, givenGraphicsAllocationWhenCallingIsAllocDumpableThenItReturnsTheCo
gfxAllocation.setAllocDumpable(true);
EXPECT_TRUE(gfxAllocation.isAllocDumpable());
}
TEST(MemObj, givenMemObjNotUsingHostPtrWhenGettingBasePtrTwiceReturnSameMapPtr) {
MockContext context;
MemObj memObj(&context, CL_MEM_OBJECT_BUFFER, CL_MEM_READ_WRITE,
1, nullptr, nullptr, nullptr, true, false, false);
void *mapPtr = memObj.getBasePtrForMap();
EXPECT_NE(nullptr, mapPtr);
auto mapAllocation = memObj.getMapAllocation();
ASSERT_NE(nullptr, mapAllocation);
EXPECT_EQ(mapPtr, mapAllocation->getUnderlyingBuffer());
EXPECT_EQ(mapPtr, memObj.getAllocatedMapPtr());
}

View File

@@ -162,4 +162,47 @@ TEST_F(SubBufferTest, GivenBufferWithMemoryStorageAndNullHostPtrWhenSubBufferIsC
buffer->release();
}
TEST_F(SubBufferTest, givenBufferWithHostPtrWhenSubbufferGetsMapPtrThenExpectBufferHostPtr) {
cl_buffer_region region = {0, 16};
auto subBuffer = buffer->createSubBuffer(CL_MEM_READ_WRITE, &region, retVal);
ASSERT_NE(nullptr, subBuffer);
ASSERT_EQ(CL_SUCCESS, retVal);
void *mapPtr = subBuffer->getBasePtrForMap();
EXPECT_EQ(pHostPtr, mapPtr);
mapPtr = subBuffer->getBasePtrForMap();
EXPECT_EQ(pHostPtr, mapPtr);
subBuffer->release();
}
TEST_F(SubBufferTest, givenBufferWithNoHostPtrWhenSubbufferGetsMapPtrThenExpectBufferMap) {
cl_buffer_region region = {0, 16};
Buffer *buffer = Buffer::create(&context, CL_MEM_READ_WRITE,
MemoryConstants::pageSize, nullptr, retVal);
ASSERT_NE(nullptr, buffer);
ASSERT_EQ(CL_SUCCESS, retVal);
auto subBuffer = buffer->createSubBuffer(CL_MEM_READ_WRITE, &region, retVal);
ASSERT_NE(nullptr, subBuffer);
ASSERT_EQ(CL_SUCCESS, retVal);
void *mapPtr = subBuffer->getBasePtrForMap();
void *bufferMapPtr = buffer->getBasePtrForMap();
EXPECT_EQ(bufferMapPtr, mapPtr);
auto mapAllocation = subBuffer->getMapAllocation();
auto bufferMapAllocation = buffer->getMapAllocation();
ASSERT_NE(nullptr, bufferMapAllocation);
EXPECT_EQ(bufferMapAllocation, mapAllocation);
EXPECT_EQ(bufferMapPtr, mapAllocation->getUnderlyingBuffer());
mapPtr = subBuffer->getBasePtrForMap();
EXPECT_EQ(bufferMapPtr, mapPtr);
subBuffer->release();
buffer->release();
}
} // namespace ULT