mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-15 13:01:45 +08:00
Add a clMemBlockingFreeINTEL function
Resolves: NEO-4482 Change-Id: I201c5ab93b3f54a3980dd1fb50be82a4a66daa67 Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:

committed by
sys_ocldev

parent
67d5c28bb1
commit
b546e89f99
@ -3576,10 +3576,9 @@ void *clSharedMemAllocINTEL(
|
||||
return neoContext->getSVMAllocsManager()->createSharedUnifiedMemoryAllocation(neoContext->getDevice(0)->getRootDeviceIndex(), size, unifiedMemoryProperties, neoContext->getSpecialQueue());
|
||||
}
|
||||
|
||||
cl_int clMemFreeINTEL(
|
||||
cl_context context,
|
||||
const void *ptr) {
|
||||
|
||||
cl_int clMemFreeCommon(cl_context context,
|
||||
const void *ptr,
|
||||
bool blocking) {
|
||||
Context *neoContext = nullptr;
|
||||
auto retVal = validateObjects(WithCastToInternal(context, &neoContext));
|
||||
|
||||
@ -3587,7 +3586,7 @@ cl_int clMemFreeINTEL(
|
||||
return retVal;
|
||||
}
|
||||
|
||||
if (ptr && !neoContext->getSVMAllocsManager()->freeSVMAlloc(const_cast<void *>(ptr))) {
|
||||
if (ptr && !neoContext->getSVMAllocsManager()->freeSVMAlloc(const_cast<void *>(ptr), blocking)) {
|
||||
return CL_INVALID_VALUE;
|
||||
}
|
||||
|
||||
@ -3598,6 +3597,18 @@ cl_int clMemFreeINTEL(
|
||||
return CL_SUCCESS;
|
||||
}
|
||||
|
||||
cl_int clMemFreeINTEL(
|
||||
cl_context context,
|
||||
const void *ptr) {
|
||||
return clMemFreeCommon(context, ptr, false);
|
||||
}
|
||||
|
||||
cl_int clMemBlockingFreeINTEL(
|
||||
cl_context context,
|
||||
void *ptr) {
|
||||
return clMemFreeCommon(context, ptr, true);
|
||||
}
|
||||
|
||||
cl_int clGetMemAllocInfoINTEL(
|
||||
cl_context context,
|
||||
const void *ptr,
|
||||
@ -4003,6 +4014,7 @@ void *CL_API_CALL clGetExtensionFunctionAddress(const char *funcName) {
|
||||
RETURN_FUNC_PTR_IF_EXIST(clDeviceMemAllocINTEL);
|
||||
RETURN_FUNC_PTR_IF_EXIST(clSharedMemAllocINTEL);
|
||||
RETURN_FUNC_PTR_IF_EXIST(clMemFreeINTEL);
|
||||
RETURN_FUNC_PTR_IF_EXIST(clMemBlockingFreeINTEL);
|
||||
RETURN_FUNC_PTR_IF_EXIST(clGetMemAllocInfoINTEL);
|
||||
RETURN_FUNC_PTR_IF_EXIST(clSetKernelArgMemPointerINTEL);
|
||||
RETURN_FUNC_PTR_IF_EXIST(clEnqueueMemsetINTEL);
|
||||
|
@ -952,6 +952,10 @@ cl_int clMemFreeINTEL(
|
||||
cl_context context,
|
||||
const void *ptr);
|
||||
|
||||
cl_int clMemBlockingFreeINTEL(
|
||||
cl_context context,
|
||||
void *ptr);
|
||||
|
||||
cl_int clGetMemAllocInfoINTEL(
|
||||
cl_context context,
|
||||
const void *ptr,
|
||||
|
@ -118,6 +118,11 @@ TEST_F(clGetExtensionFunctionAddressTests, GivenClMemFreeINTELWhenGettingExtensi
|
||||
EXPECT_EQ(retVal, reinterpret_cast<void *>(clMemFreeINTEL));
|
||||
}
|
||||
|
||||
TEST_F(clGetExtensionFunctionAddressTests, GivenClMemBlockingFreeINTELWhenGettingExtensionFunctionThenCorrectAddressIsReturned) {
|
||||
auto retVal = clGetExtensionFunctionAddress("clMemBlockingFreeINTEL");
|
||||
EXPECT_EQ(retVal, reinterpret_cast<void *>(clMemBlockingFreeINTEL));
|
||||
}
|
||||
|
||||
TEST_F(clGetExtensionFunctionAddressTests, GivenClGetMemAllocInfoINTELWhenGettingExtensionFunctionThenCorrectAddressIsReturned) {
|
||||
auto retVal = clGetExtensionFunctionAddress("clGetMemAllocInfoINTEL");
|
||||
EXPECT_EQ(retVal, reinterpret_cast<void *>(clGetMemAllocInfoINTEL));
|
||||
|
@ -134,6 +134,12 @@ TEST(clUnifiedSharedMemoryTests, whenClMemFreeINTELisCalledWithNullPointerThenNo
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
}
|
||||
|
||||
TEST(clUnifiedSharedMemoryTests, whenClMemBlockingFreeINTELisCalledWithNullPointerThenNoActionOccurs) {
|
||||
MockContext mockContext;
|
||||
auto retVal = clMemBlockingFreeINTEL(&mockContext, nullptr);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
}
|
||||
|
||||
TEST(clUnifiedSharedMemoryTests, whenClMemFreeINTELisCalledWithValidUmPointerThenMemoryIsFreed) {
|
||||
MockContext mockContext;
|
||||
cl_int retVal = CL_SUCCESS;
|
||||
|
Reference in New Issue
Block a user