[Piglit] [PATCH v2] cl: fix clGetKernelWorkGroupInfo

EdB edb+piglit at sigluy.net
Sun Nov 2 05:35:56 PST 2014


If there is only one device associed with the kernel and device arg is NULL
you don't have to trigger CL_INVALID_DEVICE

v2:
Test for CL_SUCCESS instead of disabling it (Jan Vesely)
---
 tests/cl/api/get-kernel-work-group-info.c | 28 +++++++++++++++++++++-------
 1 file changed, 21 insertions(+), 7 deletions(-)

diff --git a/tests/cl/api/get-kernel-work-group-info.c b/tests/cl/api/get-kernel-work-group-info.c
index 47d09da..a38cdf0 100644
--- a/tests/cl/api/get-kernel-work-group-info.c
+++ b/tests/cl/api/get-kernel-work-group-info.c
@@ -61,6 +61,7 @@ piglit_cl_test(const int argc,
 	int i;
 	cl_int errNo;
 	cl_kernel kernel;
+	cl_uint* dev_count_ptr;
 
 	size_t param_value_size;
 	void* param_value;
@@ -168,24 +169,37 @@ piglit_cl_test(const int argc,
 		        piglit_cl_get_error_name(errNo));
 		piglit_merge_result(&result, PIGLIT_FAIL);
 	}
-	
+
 	/*
 	 * CL_INVALID_DEVICE if device is not in the list of devices associated with
 	 * kernel or if device is NULL but there is more than one device associated
-	 * with kernel.
+	 * with kernel
+	 * or
+	 * CL_SUCCESS if device is NULL but there is only one device associated with kernel.
 	 */
+	dev_count_ptr = piglit_cl_get_program_info(env->program, CL_PROGRAM_NUM_DEVICES);
 	errNo = clGetKernelWorkGroupInfo(kernel,
 	                                 NULL,
 	                                 CL_KERNEL_WORK_GROUP_SIZE,
 	                                 0,
 	                                 NULL,
 	                                 &param_value_size);
-	if(!piglit_cl_check_error(errNo, CL_INVALID_DEVICE)) {
-		fprintf(stderr,
-		        "Failed (error code: %s): Trigger CL_INVALID_DEVICE if device is NULL but there is more than one device associated with kernel.\n",
-		        piglit_cl_get_error_name(errNo));
-		piglit_merge_result(&result, PIGLIT_FAIL);
+	if (*dev_count_ptr == 1) {
+		if(!piglit_cl_check_error(errNo, CL_SUCCESS)) {
+			fprintf(stderr,
+			        "Failed (error code: %s): Trigger CL_SUCCESS if device is NULL but there is only one device associated with kernel.\n",
+			        piglit_cl_get_error_name(errNo));
+			piglit_merge_result(&result, PIGLIT_FAIL);
+		}
+	} else {
+		if(!piglit_cl_check_error(errNo, CL_INVALID_DEVICE)) {
+			fprintf(stderr,
+			        "Failed (error code: %s): Trigger CL_INVALID_DEVICE if device is NULL but there is more than one device associated with kernel.\n",
+			        piglit_cl_get_error_name(errNo));
+			piglit_merge_result(&result, PIGLIT_FAIL);
+		}
 	}
+	free(dev_count_ptr);
 
 	clReleaseKernel(kernel);
 
-- 
1.9.3



More information about the Piglit mailing list