Add MigrateMem and MemAdvice implementations

Related-To: NEO-3610

Change-Id: I2c5b37927bf63fbc99a8f932baabd461798a345d
Signed-off-by: Jobczyk, Lukasz <lukasz.jobczyk@intel.com>
This commit is contained in:
Jobczyk, Lukasz 2019-09-10 12:44:24 +02:00 committed by sys_ocldev
parent d37fe4904c
commit d7236d391c
2 changed files with 41 additions and 7 deletions

View File

@ -3584,7 +3584,16 @@ cl_int clEnqueueMigrateMemINTEL(
cl_uint numEventsInWaitList,
const cl_event *eventWaitList,
cl_event *event) {
return CL_OUT_OF_HOST_MEMORY;
cl_int retVal = CL_SUCCESS;
CommandQueue *pCommandQueue = nullptr;
retVal = validateObjects(WithCastToInternal(commandQueue, &pCommandQueue), ptr, EventWaitList(numEventsInWaitList, eventWaitList));
if (retVal == CL_SUCCESS) {
pCommandQueue->enqueueMarkerWithWaitList(numEventsInWaitList, eventWaitList, event);
}
return retVal;
}
cl_int clEnqueueMemAdviseINTEL(
@ -3595,7 +3604,16 @@ cl_int clEnqueueMemAdviseINTEL(
cl_uint numEventsInWaitList,
const cl_event *eventWaitList,
cl_event *event) {
return CL_OUT_OF_HOST_MEMORY;
cl_int retVal = CL_SUCCESS;
CommandQueue *pCommandQueue = nullptr;
retVal = validateObjects(WithCastToInternal(commandQueue, &pCommandQueue), ptr, EventWaitList(numEventsInWaitList, eventWaitList));
if (retVal == CL_SUCCESS) {
pCommandQueue->enqueueMarkerWithWaitList(numEventsInWaitList, eventWaitList, event);
}
return retVal;
}
cl_command_queue CL_API_CALL clCreateCommandQueueWithPropertiesKHR(cl_context context,

View File

@ -428,12 +428,28 @@ TEST(clUnifiedSharedMemoryTests, givenTwoUnifiedMemoryAllocationsWhenTheyAreCopi
clMemFreeINTEL(mockContext.get(), unfiedMemorySharedAllocation);
}
TEST(clUnifiedSharedMemoryTests, whenClEnqueueMigrateMemINTELisCalledThenOutOfHostMemoryErrorIsReturned) {
TEST(clUnifiedSharedMemoryTests, whenClEnqueueMigrateMemINTELisCalledWithWrongQueueThenInvalidQueueErrorIsReturned) {
auto retVal = clEnqueueMigrateMemINTEL(0, nullptr, 0, 0, 0, nullptr, nullptr);
EXPECT_EQ(CL_OUT_OF_HOST_MEMORY, retVal);
EXPECT_EQ(CL_INVALID_COMMAND_QUEUE, retVal);
}
TEST(clUnifiedSharedMemoryTests, whenClEnqueueMemAdviseINTELisCalledThenOutOfHostMemoryErrorIsReturned) {
auto retVal = clEnqueueMemAdviseINTEL(0, nullptr, 0, 0, 0, nullptr, nullptr);
EXPECT_EQ(CL_OUT_OF_HOST_MEMORY, retVal);
TEST(clUnifiedSharedMemoryTests, whenClEnqueueMigrateMemINTELisCalledWithProperParametersThenSuccessIsReturned) {
CommandQueue cmdQ;
void *unifiedMemoryAlloc = reinterpret_cast<void *>(0x1234);
auto retVal = clEnqueueMigrateMemINTEL(&cmdQ, unifiedMemoryAlloc, 10, 0, 0, nullptr, nullptr);
EXPECT_EQ(CL_SUCCESS, retVal);
}
TEST(clUnifiedSharedMemoryTests, whenClEnqueueMemAdviseINTELisCalledWithWrongQueueThenInvalidQueueErrorIsReturned) {
auto retVal = clEnqueueMemAdviseINTEL(0, nullptr, 0, 0, 0, nullptr, nullptr);
EXPECT_EQ(CL_INVALID_COMMAND_QUEUE, retVal);
}
TEST(clUnifiedSharedMemoryTests, whenClEnqueueMemAdviseINTELisCalledWithProperParametersThenSuccessIsReturned) {
CommandQueue cmdQ;
void *unifiedMemoryAlloc = reinterpret_cast<void *>(0x1234);
auto retVal = clEnqueueMemAdviseINTEL(&cmdQ, unifiedMemoryAlloc, 10, 0, 0, nullptr, nullptr);
EXPECT_EQ(CL_SUCCESS, retVal);
}