[Piglit] [PATCH RESEND] cl: Fix image support when built on CL<1.2
Jan Vesely
jano.vesely at gmail.com
Tue Mar 29 01:17:21 UTC 2016
Provide our own image_desc structure since it's too tangled to remove.
Tests that require OCL 1.2 result in WARN:
Piglit was compiled with lower OpenCL version (1.1) than version_min: 12.
OCL 1.1 image tests pass on Intel CPU OCL when compiled in 1.1 environment.
Signed-off-by: Jan Vesely <jano.vesely at gmail.com>
---
Looks like the first one did not make it to the ML.
tests/cl/program/program-tester.c | 2 +-
tests/util/piglit-util-cl.c | 34 ++++++++++++++++++++--------------
tests/util/piglit-util-cl.h | 20 +++++++++++++++++++-
3 files changed, 40 insertions(+), 16 deletions(-)
diff --git a/tests/cl/program/program-tester.c b/tests/cl/program/program-tester.c
index 3e0ed43..0a3b011 100644
--- a/tests/cl/program/program-tester.c
+++ b/tests/cl/program/program-tester.c
@@ -345,7 +345,7 @@ struct test_arg {
uint64_t ulp;
/* image data */
- cl_image_desc image_desc;
+ piglit_image_desc image_desc;
cl_image_format image_format;
/* sampler data */
diff --git a/tests/util/piglit-util-cl.c b/tests/util/piglit-util-cl.c
index 9bf45a2..efa289c 100644
--- a/tests/util/piglit-util-cl.c
+++ b/tests/util/piglit-util-cl.c
@@ -1006,14 +1006,18 @@ piglit_cl_read_whole_buffer(cl_command_queue command_queue, cl_mem buffer,
cl_mem
piglit_cl_create_image(piglit_cl_context context, cl_mem_flags flags,
- const cl_image_format *format, const cl_image_desc *desc)
+ const cl_image_format *format,
+ const piglit_image_desc *desc)
{
cl_int errNo;
cl_mem image = NULL;
+#ifdef CL_VERSION_1_2
if (piglit_cl_get_platform_version(context->platform_id) >= 12) {
image = clCreateImage(context->cl_ctx, flags, format, desc, NULL, &errNo);
- } else if (desc->image_type == CL_MEM_OBJECT_IMAGE2D) {
+ } else
+#endif
+ if (desc->image_type == CL_MEM_OBJECT_IMAGE2D) {
image = clCreateImage2D(context->cl_ctx, flags, format,
desc->image_width, desc->image_height, 0,
NULL, &errNo);
@@ -1068,36 +1072,38 @@ piglit_get_image_region(cl_mem image, size_t *region)
free(p);
switch (*type) {
+#ifdef CL_VERSION_1_2
+ case CL_MEM_OBJECT_IMAGE1D_ARRAY:
+ p = piglit_cl_get_image_info(image, CL_IMAGE_ARRAY_SIZE);
+ region[1] = *p;
+ free(p);
+ region[2] = 1;
+ break;
case CL_MEM_OBJECT_IMAGE1D:
case CL_MEM_OBJECT_IMAGE1D_BUFFER:
region[1] = 1;
region[2] = 1;
break;
- case CL_MEM_OBJECT_IMAGE2D:
- p = piglit_cl_get_image_info(image, CL_IMAGE_HEIGHT);
- region[1] = *p;
- free(p);
- region[2] = 1;
- break;
- case CL_MEM_OBJECT_IMAGE3D:
+ case CL_MEM_OBJECT_IMAGE2D_ARRAY:
p = piglit_cl_get_image_info(image, CL_IMAGE_HEIGHT);
region[1] = *p;
free(p);
- p = piglit_cl_get_image_info(image, CL_IMAGE_DEPTH);
+ p = piglit_cl_get_image_info(image, CL_IMAGE_ARRAY_SIZE);
region[2] = *p;
free(p);
break;
- case CL_MEM_OBJECT_IMAGE1D_ARRAY:
- p = piglit_cl_get_image_info(image, CL_IMAGE_ARRAY_SIZE);
+#endif
+ case CL_MEM_OBJECT_IMAGE2D:
+ p = piglit_cl_get_image_info(image, CL_IMAGE_HEIGHT);
region[1] = *p;
free(p);
region[2] = 1;
break;
- case CL_MEM_OBJECT_IMAGE2D_ARRAY:
+ case CL_MEM_OBJECT_IMAGE3D:
p = piglit_cl_get_image_info(image, CL_IMAGE_HEIGHT);
region[1] = *p;
free(p);
- p = piglit_cl_get_image_info(image, CL_IMAGE_ARRAY_SIZE);
+ p = piglit_cl_get_image_info(image, CL_IMAGE_DEPTH);
region[2] = *p;
free(p);
break;
diff --git a/tests/util/piglit-util-cl.h b/tests/util/piglit-util-cl.h
index 8526a9a..0330740 100644
--- a/tests/util/piglit-util-cl.h
+++ b/tests/util/piglit-util-cl.h
@@ -527,6 +527,24 @@ bool
piglit_cl_read_whole_buffer(cl_command_queue command_queue,
cl_mem buffer,
void *ptr);
+#ifdef CL_VERSION_1_2
+typedef cl_image_desc piglit_image_desc;
+#else
+/** Taken from OpenCL 1.2 specs 5.3.1.2 */
+typedef struct {
+ cl_mem_object_type image_type;
+ size_t image_width;
+ size_t image_height;
+ size_t image_depth;
+ size_t image_array_size;
+ size_t image_row_pitch;
+ size_t image_slice_pitch;
+ cl_uint num_mip_levels;
+ cl_uint num_samples;
+ cl_mem buffer;
+} piglit_image_desc;
+#endif
+
/**
* \brief Create an image.
@@ -541,7 +559,7 @@ cl_mem
piglit_cl_create_image(piglit_cl_context context,
cl_mem_flags flags,
const cl_image_format *format,
- const cl_image_desc *desc);
+ const piglit_image_desc *desc);
/**
* \brief Blocking write to an image.
--
2.4.10
More information about the Piglit
mailing list