mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-30 09:58:55 +08:00
Add implementation of new OpenCL 3.0 API functions
Additionally unify implementation of API functions related to creating buffers and images. Related-To: NEO-4368 Change-Id: Icfafc32f15e667e249fb318072194b6f76bd6481 Signed-off-by: Filip Hazubski <filip.hazubski@intel.com>
This commit is contained in:
committed by
sys_ocldev
parent
37a6a900a8
commit
0a6da52bd4
@@ -649,36 +649,45 @@ cl_mem CL_API_CALL clCreateBuffer(cl_context context,
|
||||
|
||||
cl_int retVal = CL_SUCCESS;
|
||||
API_ENTER(&retVal);
|
||||
cl_mem buffer = nullptr;
|
||||
ErrorCodeHelper err(errcodeRet, CL_SUCCESS);
|
||||
|
||||
Context *pContext = nullptr;
|
||||
retVal = validateObjects(WithCastToInternal(context, &pContext));
|
||||
if (retVal != CL_SUCCESS) {
|
||||
err.set(retVal);
|
||||
TRACING_EXIT(clCreateBuffer, &buffer);
|
||||
return nullptr;
|
||||
}
|
||||
cl_mem_properties *properties = nullptr;
|
||||
cl_mem_flags_intel flagsIntel = 0;
|
||||
cl_mem buffer = BufferFunctions::validateInputAndCreateBuffer(context, properties, flags, flagsIntel, size, hostPtr, retVal);
|
||||
|
||||
MemoryProperties memoryProperties = MemoryPropertiesHelper::createMemoryProperties(flags, 0, 0);
|
||||
if (isFieldValid(flags, MemObjHelper::validFlagsForBuffer)) {
|
||||
Buffer::validateInputAndCreateBuffer(*pContext, memoryProperties, flags, 0, size, hostPtr, retVal, buffer);
|
||||
} else {
|
||||
retVal = CL_INVALID_VALUE;
|
||||
}
|
||||
|
||||
err.set(retVal);
|
||||
ErrorCodeHelper{errcodeRet, retVal};
|
||||
DBG_LOG_INPUTS("buffer", buffer);
|
||||
TRACING_EXIT(clCreateBuffer, &buffer);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
cl_mem CL_API_CALL clCreateBufferWithProperties(cl_context context,
|
||||
const cl_mem_properties *properties,
|
||||
cl_mem_flags flags,
|
||||
size_t size,
|
||||
void *hostPtr,
|
||||
cl_int *errcodeRet) {
|
||||
DBG_LOG_INPUTS("cl_context", context,
|
||||
"cl_mem_properties", properties,
|
||||
"cl_mem_flags", flags,
|
||||
"size", size,
|
||||
"hostPtr", NEO::FileLoggerInstance().infoPointerToString(hostPtr, size));
|
||||
|
||||
cl_int retVal = CL_SUCCESS;
|
||||
API_ENTER(&retVal);
|
||||
|
||||
cl_mem_flags_intel flagsIntel = 0;
|
||||
cl_mem buffer = BufferFunctions::validateInputAndCreateBuffer(context, properties, flags, flagsIntel, size, hostPtr, retVal);
|
||||
|
||||
ErrorCodeHelper{errcodeRet, retVal};
|
||||
DBG_LOG_INPUTS("buffer", buffer);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
cl_mem CL_API_CALL clCreateBufferWithPropertiesINTEL(cl_context context,
|
||||
const cl_mem_properties_intel *properties,
|
||||
size_t size,
|
||||
void *hostPtr,
|
||||
cl_int *errcodeRet) {
|
||||
|
||||
DBG_LOG_INPUTS("cl_context", context,
|
||||
"cl_mem_properties_intel", properties,
|
||||
"size", size,
|
||||
@@ -686,28 +695,12 @@ cl_mem CL_API_CALL clCreateBufferWithPropertiesINTEL(cl_context context,
|
||||
|
||||
cl_int retVal = CL_SUCCESS;
|
||||
API_ENTER(&retVal);
|
||||
cl_mem buffer = nullptr;
|
||||
ErrorCodeHelper err(errcodeRet, CL_SUCCESS);
|
||||
|
||||
Context *pContext = nullptr;
|
||||
retVal = validateObjects(WithCastToInternal(context, &pContext));
|
||||
if (retVal != CL_SUCCESS) {
|
||||
err.set(retVal);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
MemoryProperties memoryProperties;
|
||||
cl_mem_flags flags = 0;
|
||||
cl_mem_flags_intel flagsIntel = 0;
|
||||
cl_mem_alloc_flags_intel allocflags = 0;
|
||||
if (MemoryPropertiesHelper::parseMemoryProperties(properties, memoryProperties, flags, flagsIntel, allocflags,
|
||||
MemoryPropertiesHelper::ObjType::BUFFER, *pContext)) {
|
||||
Buffer::validateInputAndCreateBuffer(*pContext, memoryProperties, flags, flagsIntel, size, hostPtr, retVal, buffer);
|
||||
} else {
|
||||
retVal = CL_INVALID_VALUE;
|
||||
}
|
||||
cl_mem buffer = BufferFunctions::validateInputAndCreateBuffer(context, properties, flags, flagsIntel, size, hostPtr, retVal);
|
||||
|
||||
err.set(retVal);
|
||||
ErrorCodeHelper{errcodeRet, retVal};
|
||||
DBG_LOG_INPUTS("buffer", buffer);
|
||||
return buffer;
|
||||
}
|
||||
@@ -825,9 +818,6 @@ cl_mem CL_API_CALL clCreateImage(cl_context context,
|
||||
cl_int *errcodeRet) {
|
||||
TRACING_ENTER(clCreateImage, &context, &flags, &imageFormat, &imageDesc, &hostPtr, &errcodeRet);
|
||||
|
||||
cl_int retVal = CL_SUCCESS;
|
||||
|
||||
API_ENTER(&retVal);
|
||||
DBG_LOG_INPUTS("cl_context", context,
|
||||
"cl_mem_flags", flags,
|
||||
"cl_image_format.channel_data_type", imageFormat->image_channel_data_type,
|
||||
@@ -839,18 +829,12 @@ cl_mem CL_API_CALL clCreateImage(cl_context context,
|
||||
"cl_image_desc.array_size", imageDesc->image_array_size,
|
||||
"hostPtr", hostPtr);
|
||||
|
||||
cl_mem image = nullptr;
|
||||
Context *pContext = nullptr;
|
||||
retVal = validateObjects(WithCastToInternal(context, &pContext));
|
||||
cl_int retVal = CL_SUCCESS;
|
||||
API_ENTER(&retVal);
|
||||
|
||||
if (retVal == CL_SUCCESS) {
|
||||
MemoryProperties memoryProperties = MemoryPropertiesHelper::createMemoryProperties(flags, 0, 0);
|
||||
if (isFieldValid(flags, MemObjHelper::validFlagsForImage)) {
|
||||
image = Image::validateAndCreateImage(pContext, memoryProperties, flags, 0, imageFormat, imageDesc, hostPtr, retVal);
|
||||
} else {
|
||||
retVal = CL_INVALID_VALUE;
|
||||
}
|
||||
}
|
||||
cl_mem_properties *properties = nullptr;
|
||||
cl_mem_flags_intel flagsIntel = 0;
|
||||
cl_mem image = ImageFunctions::validateAndCreateImage(context, properties, flags, flagsIntel, imageFormat, imageDesc, hostPtr, retVal);
|
||||
|
||||
ErrorCodeHelper err(errcodeRet, retVal);
|
||||
DBG_LOG_INPUTS("image", image);
|
||||
@@ -858,15 +842,44 @@ cl_mem CL_API_CALL clCreateImage(cl_context context,
|
||||
return image;
|
||||
}
|
||||
|
||||
cl_mem CL_API_CALL clCreateImageWithProperties(cl_context context,
|
||||
const cl_mem_properties *properties,
|
||||
cl_mem_flags flags,
|
||||
const cl_image_format *imageFormat,
|
||||
const cl_image_desc *imageDesc,
|
||||
void *hostPtr,
|
||||
cl_int *errcodeRet) {
|
||||
|
||||
DBG_LOG_INPUTS("cl_context", context,
|
||||
"cl_mem_properties", properties,
|
||||
"cl_mem_flags", flags,
|
||||
"cl_image_format.channel_data_type", imageFormat->image_channel_data_type,
|
||||
"cl_image_format.channel_order", imageFormat->image_channel_order,
|
||||
"cl_image_desc.width", imageDesc->image_width,
|
||||
"cl_image_desc.heigth", imageDesc->image_height,
|
||||
"cl_image_desc.depth", imageDesc->image_depth,
|
||||
"cl_image_desc.type", imageDesc->image_type,
|
||||
"cl_image_desc.array_size", imageDesc->image_array_size,
|
||||
"hostPtr", hostPtr);
|
||||
|
||||
cl_int retVal = CL_SUCCESS;
|
||||
API_ENTER(&retVal);
|
||||
|
||||
cl_mem_flags_intel flagsIntel = 0;
|
||||
cl_mem image = ImageFunctions::validateAndCreateImage(context, properties, flags, flagsIntel, imageFormat, imageDesc, hostPtr, retVal);
|
||||
|
||||
ErrorCodeHelper{errcodeRet, retVal};
|
||||
DBG_LOG_INPUTS("image", image);
|
||||
return image;
|
||||
}
|
||||
|
||||
cl_mem CL_API_CALL clCreateImageWithPropertiesINTEL(cl_context context,
|
||||
cl_mem_properties_intel *properties,
|
||||
const cl_mem_properties_intel *properties,
|
||||
const cl_image_format *imageFormat,
|
||||
const cl_image_desc *imageDesc,
|
||||
void *hostPtr,
|
||||
cl_int *errcodeRet) {
|
||||
cl_int retVal = CL_SUCCESS;
|
||||
|
||||
API_ENTER(&retVal);
|
||||
DBG_LOG_INPUTS("cl_context", context,
|
||||
"cl_mem_properties_intel", properties,
|
||||
"cl_image_format.channel_data_type", imageFormat->image_channel_data_type,
|
||||
@@ -878,24 +891,14 @@ cl_mem CL_API_CALL clCreateImageWithPropertiesINTEL(cl_context context,
|
||||
"cl_image_desc.array_size", imageDesc->image_array_size,
|
||||
"hostPtr", hostPtr);
|
||||
|
||||
cl_mem image = nullptr;
|
||||
Context *pContext = nullptr;
|
||||
MemoryProperties memoryProperties;
|
||||
cl_int retVal = CL_SUCCESS;
|
||||
API_ENTER(&retVal);
|
||||
|
||||
cl_mem_flags flags = 0;
|
||||
cl_mem_flags_intel flagsIntel = 0;
|
||||
cl_mem_alloc_flags_intel allocflags = 0;
|
||||
retVal = validateObjects(WithCastToInternal(context, &pContext));
|
||||
cl_mem image = ImageFunctions::validateAndCreateImage(context, properties, flags, flagsIntel, imageFormat, imageDesc, hostPtr, retVal);
|
||||
|
||||
if (retVal == CL_SUCCESS) {
|
||||
if (MemoryPropertiesHelper::parseMemoryProperties(properties, memoryProperties, flags, flagsIntel, allocflags,
|
||||
MemoryPropertiesHelper::ObjType::IMAGE, *pContext)) {
|
||||
image = Image::validateAndCreateImage(pContext, memoryProperties, flags, flagsIntel, imageFormat, imageDesc, hostPtr, retVal);
|
||||
} else {
|
||||
retVal = CL_INVALID_VALUE;
|
||||
}
|
||||
}
|
||||
|
||||
ErrorCodeHelper err(errcodeRet, retVal);
|
||||
ErrorCodeHelper{errcodeRet, retVal};
|
||||
DBG_LOG_INPUTS("image", image);
|
||||
return image;
|
||||
}
|
||||
@@ -911,9 +914,6 @@ cl_mem CL_API_CALL clCreateImage2D(cl_context context,
|
||||
cl_int *errcodeRet) {
|
||||
TRACING_ENTER(clCreateImage2D, &context, &flags, &imageFormat, &imageWidth, &imageHeight, &imageRowPitch, &hostPtr, &errcodeRet);
|
||||
|
||||
cl_int retVal = CL_SUCCESS;
|
||||
API_ENTER(&retVal);
|
||||
|
||||
DBG_LOG_INPUTS("context", context,
|
||||
"flags", flags,
|
||||
"imageFormat", imageFormat,
|
||||
@@ -922,7 +922,9 @@ cl_mem CL_API_CALL clCreateImage2D(cl_context context,
|
||||
"imageRowPitch", imageRowPitch,
|
||||
"hostPtr", hostPtr);
|
||||
|
||||
cl_mem image2D = nullptr;
|
||||
cl_int retVal = CL_SUCCESS;
|
||||
API_ENTER(&retVal);
|
||||
|
||||
cl_image_desc imageDesc;
|
||||
memset(&imageDesc, 0, sizeof(cl_image_desc));
|
||||
|
||||
@@ -931,15 +933,11 @@ cl_mem CL_API_CALL clCreateImage2D(cl_context context,
|
||||
imageDesc.image_row_pitch = imageRowPitch;
|
||||
imageDesc.image_type = CL_MEM_OBJECT_IMAGE2D;
|
||||
|
||||
Context *pContext = nullptr;
|
||||
retVal = validateObjects(WithCastToInternal(context, &pContext));
|
||||
cl_mem_properties *properties = nullptr;
|
||||
cl_mem_flags_intel flagsIntel = 0;
|
||||
cl_mem image2D = ImageFunctions::validateAndCreateImage(context, properties, flags, flagsIntel, imageFormat, &imageDesc, hostPtr, retVal);
|
||||
|
||||
if (retVal == CL_SUCCESS) {
|
||||
MemoryProperties memoryProperties = MemoryPropertiesHelper::createMemoryProperties(flags, 0, 0);
|
||||
image2D = Image::validateAndCreateImage(pContext, memoryProperties, flags, 0, imageFormat, &imageDesc, hostPtr, retVal);
|
||||
}
|
||||
|
||||
ErrorCodeHelper err(errcodeRet, retVal);
|
||||
ErrorCodeHelper{errcodeRet, retVal};
|
||||
DBG_LOG_INPUTS("image 2D", image2D);
|
||||
TRACING_EXIT(clCreateImage2D, &image2D);
|
||||
return image2D;
|
||||
@@ -958,9 +956,6 @@ cl_mem CL_API_CALL clCreateImage3D(cl_context context,
|
||||
cl_int *errcodeRet) {
|
||||
TRACING_ENTER(clCreateImage3D, &context, &flags, &imageFormat, &imageWidth, &imageHeight, &imageDepth, &imageRowPitch, &imageSlicePitch, &hostPtr, &errcodeRet);
|
||||
|
||||
cl_int retVal = CL_SUCCESS;
|
||||
API_ENTER(&retVal);
|
||||
|
||||
DBG_LOG_INPUTS("context", context,
|
||||
"flags", flags,
|
||||
"imageFormat", imageFormat,
|
||||
@@ -971,7 +966,9 @@ cl_mem CL_API_CALL clCreateImage3D(cl_context context,
|
||||
"imageSlicePitch", imageSlicePitch,
|
||||
"hostPtr", hostPtr);
|
||||
|
||||
cl_mem image3D = nullptr;
|
||||
cl_int retVal = CL_SUCCESS;
|
||||
API_ENTER(&retVal);
|
||||
|
||||
cl_image_desc imageDesc;
|
||||
memset(&imageDesc, 0, sizeof(cl_image_desc));
|
||||
|
||||
@@ -982,15 +979,11 @@ cl_mem CL_API_CALL clCreateImage3D(cl_context context,
|
||||
imageDesc.image_slice_pitch = imageSlicePitch;
|
||||
imageDesc.image_type = CL_MEM_OBJECT_IMAGE3D;
|
||||
|
||||
Context *pContext = nullptr;
|
||||
retVal = validateObjects(WithCastToInternal(context, &pContext));
|
||||
cl_mem_properties *properties = nullptr;
|
||||
cl_mem_flags_intel intelFlags = 0;
|
||||
cl_mem image3D = ImageFunctions::validateAndCreateImage(context, properties, flags, intelFlags, imageFormat, &imageDesc, hostPtr, retVal);
|
||||
|
||||
if (retVal == CL_SUCCESS) {
|
||||
MemoryProperties memoryProperties = MemoryPropertiesHelper::createMemoryProperties(flags, 0, 0);
|
||||
image3D = Image::validateAndCreateImage(pContext, memoryProperties, flags, 0, imageFormat, &imageDesc, hostPtr, retVal);
|
||||
}
|
||||
|
||||
ErrorCodeHelper err(errcodeRet, retVal);
|
||||
ErrorCodeHelper{errcodeRet, retVal};
|
||||
DBG_LOG_INPUTS("image 3D", image3D);
|
||||
TRACING_EXIT(clCreateImage3D, &image3D);
|
||||
return image3D;
|
||||
|
||||
Reference in New Issue
Block a user