From 5149de22777158936b8c078a234206e1ffcfbde6 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Tue, 17 May 2022 17:51:10 +0200 Subject: [PATCH] api/kernel_arg_info: Check for read_write image support before testing it (#1420) Code taken from api/test_min_image_formats.cpp --- test_conformance/api/test_kernel_arg_info.cpp | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/test_conformance/api/test_kernel_arg_info.cpp b/test_conformance/api/test_kernel_arg_info.cpp index dddb4a23..28825f10 100644 --- a/test_conformance/api/test_kernel_arg_info.cpp +++ b/test_conformance/api/test_kernel_arg_info.cpp @@ -814,8 +814,34 @@ static int run_image_tests(cl_context context, cl_device_id deviceID) cl_kernel_arg_address_qualifier address_qualifier = CL_KERNEL_ARG_ADDRESS_GLOBAL; + Version version = get_device_cl_version(deviceID); + bool supports_read_write_images = false; + if (version >= Version(3, 0)) + { + cl_uint maxReadWriteImageArgs = 0; + cl_int error = clGetDeviceInfo( + deviceID, CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS, + sizeof(maxReadWriteImageArgs), &maxReadWriteImageArgs, NULL); + test_error(error, + "Unable to query " + "CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS"); + + // read-write images are supported if MAX_READ_WRITE_IMAGE_ARGS is + // nonzero + supports_read_write_images = maxReadWriteImageArgs != 0; + } + else if (version >= Version(2, 0)) + { + // read-write images are required for OpenCL 2.x + supports_read_write_images = true; + } + for (auto access_qualifier : access_qualifiers) { + if (access_qualifier == CL_KERNEL_ARG_ACCESS_READ_WRITE + && !supports_read_write_images) + continue; + bool is_write = (access_qualifier == CL_KERNEL_ARG_ACCESS_WRITE_ONLY || access_qualifier == CL_KERNEL_ARG_ACCESS_READ_WRITE);