Skip to content

Basic implementation of cl_ext_image_requirements_info - #887

Open
kpet wants to merge 3 commits into
mainfrom
image-requirements-info
Open

Basic implementation of cl_ext_image_requirements_info#887
kpet wants to merge 3 commits into
mainfrom
image-requirements-info

Conversation

@kpet

@kpet kpet commented Jul 26, 2026

Copy link
Copy Markdown
Owner

Change-Id: Ie87de001b88df9cc4bf8fcf7165852952e29a24d

Change-Id: Ie87de001b88df9cc4bf8fcf7165852952e29a24d
Signed-off-by: Kévin Petit <kpet@free.fr>
Comment thread src/device.cpp
Comment thread src/device.hpp Outdated
Comment thread src/api.cpp
Comment on lines +6720 to +6766
switch (param_name) {
case CL_IMAGE_REQUIREMENTS_MAX_WIDTH_EXT:
val_uint = device->image_max_width(flags, image_desc, image_format);
copy_ptr = &val_uint;
size_ret = sizeof(val_uint);
break;
case CL_IMAGE_REQUIREMENTS_MAX_HEIGHT_EXT:
if ((image_desc != nullptr) &&
!(image_desc->image_type == 0 ||
image_desc->image_type == CL_MEM_OBJECT_IMAGE2D ||
image_desc->image_type == CL_MEM_OBJECT_IMAGE2D_ARRAY ||
image_desc->image_type == CL_MEM_OBJECT_IMAGE3D)) {
ret = CL_INVALID_IMAGE_DESCRIPTOR;
break;
}
val_uint = device->image_max_height(flags, image_desc, image_format);
copy_ptr = &val_uint;
size_ret = sizeof(val_uint);
break;
case CL_IMAGE_REQUIREMENTS_MAX_DEPTH_EXT:
if ((image_desc != nullptr) &&
!(image_desc->image_type == 0 ||
image_desc->image_type == CL_MEM_OBJECT_IMAGE3D)) {
ret = CL_INVALID_IMAGE_DESCRIPTOR;
break;
}
val_uint = device->image_max_depth(flags, image_desc, image_format);
copy_ptr = &val_uint;
size_ret = sizeof(val_uint);
break;
case CL_IMAGE_REQUIREMENTS_MAX_ARRAY_SIZE_EXT:
if ((image_desc != nullptr) &&
!(image_desc->image_type == 0 ||
image_desc->image_type == CL_MEM_OBJECT_IMAGE1D_ARRAY ||
image_desc->image_type == CL_MEM_OBJECT_IMAGE2D_ARRAY)) {
ret = CL_INVALID_IMAGE_DESCRIPTOR;
break;
}
val_uint =
device->image_max_array_size(flags, image_desc, image_format);
copy_ptr = &val_uint;
size_ret = sizeof(val_uint);
break;
default:
ret = CL_INVALID_VALUE;
break;
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
switch (param_name) {
case CL_IMAGE_REQUIREMENTS_MAX_WIDTH_EXT:
val_uint = device->image_max_width(flags, image_desc, image_format);
copy_ptr = &val_uint;
size_ret = sizeof(val_uint);
break;
case CL_IMAGE_REQUIREMENTS_MAX_HEIGHT_EXT:
if ((image_desc != nullptr) &&
!(image_desc->image_type == 0 ||
image_desc->image_type == CL_MEM_OBJECT_IMAGE2D ||
image_desc->image_type == CL_MEM_OBJECT_IMAGE2D_ARRAY ||
image_desc->image_type == CL_MEM_OBJECT_IMAGE3D)) {
ret = CL_INVALID_IMAGE_DESCRIPTOR;
break;
}
val_uint = device->image_max_height(flags, image_desc, image_format);
copy_ptr = &val_uint;
size_ret = sizeof(val_uint);
break;
case CL_IMAGE_REQUIREMENTS_MAX_DEPTH_EXT:
if ((image_desc != nullptr) &&
!(image_desc->image_type == 0 ||
image_desc->image_type == CL_MEM_OBJECT_IMAGE3D)) {
ret = CL_INVALID_IMAGE_DESCRIPTOR;
break;
}
val_uint = device->image_max_depth(flags, image_desc, image_format);
copy_ptr = &val_uint;
size_ret = sizeof(val_uint);
break;
case CL_IMAGE_REQUIREMENTS_MAX_ARRAY_SIZE_EXT:
if ((image_desc != nullptr) &&
!(image_desc->image_type == 0 ||
image_desc->image_type == CL_MEM_OBJECT_IMAGE1D_ARRAY ||
image_desc->image_type == CL_MEM_OBJECT_IMAGE2D_ARRAY)) {
ret = CL_INVALID_IMAGE_DESCRIPTOR;
break;
}
val_uint =
device->image_max_array_size(flags, image_desc, image_format);
copy_ptr = &val_uint;
size_ret = sizeof(val_uint);
break;
default:
ret = CL_INVALID_VALUE;
break;
}
switch (param_name) {
case CL_IMAGE_REQUIREMENTS_MAX_WIDTH_EXT:
val_uint = device->image_max_width(flags, image_desc, image_format);
copy_ptr = &val_uint;
size_ret = sizeof(val_uint);
break;
case CL_IMAGE_REQUIREMENTS_MAX_HEIGHT_EXT:
if ((image_desc != nullptr) &&
!(image_desc->image_type == CL_MEM_OBJECT_IMAGE2D ||
image_desc->image_type == CL_MEM_OBJECT_IMAGE2D_ARRAY ||
image_desc->image_type == CL_MEM_OBJECT_IMAGE3D)) {
ret = CL_INVALID_IMAGE_DESCRIPTOR;
break;
}
val_uint = device->image_max_height(flags, image_desc, image_format);
copy_ptr = &val_uint;
size_ret = sizeof(val_uint);
break;
case CL_IMAGE_REQUIREMENTS_MAX_DEPTH_EXT:
if ((image_desc != nullptr) &&
!(image_desc->image_type == CL_MEM_OBJECT_IMAGE3D)) {
ret = CL_INVALID_IMAGE_DESCRIPTOR;
break;
}
val_uint = device->image_max_depth(flags, image_desc, image_format);
copy_ptr = &val_uint;
size_ret = sizeof(val_uint);
break;
case CL_IMAGE_REQUIREMENTS_MAX_ARRAY_SIZE_EXT:
if ((image_desc != nullptr) &&
!(image_desc->image_type == CL_MEM_OBJECT_IMAGE1D_ARRAY ||
image_desc->image_type == CL_MEM_OBJECT_IMAGE2D_ARRAY)) {
ret = CL_INVALID_IMAGE_DESCRIPTOR;
break;
}
val_uint =
device->image_max_array_size(flags, image_desc, image_format);
copy_ptr = &val_uint;
size_ret = sizeof(val_uint);
break;
default:
ret = CL_INVALID_VALUE;
break;
}

image_desc->image_type != 0 for sure because of the call to is_valid_image_descriptor earlier in the function.

kpet and others added 2 commits July 29, 2026 18:39
Co-authored-by: Romaric Jodin <rjodin@google.com>
Co-authored-by: Romaric Jodin <rjodin@google.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants