From 8e5faaeba359bcfe0b9e7b2ee30c04c6a6c654f3 Mon Sep 17 00:00:00 2001 From: Pan Xiuli Date: Tue, 19 Jul 2016 10:55:32 +0800 Subject: Utest: Add check for OpenCL 2.0 extension Beignet has some opencl2.0 builtin functions, add check for OpenCL 2.0 or Beignet for these test cases. Signed-off-by: Pan Xiuli Reviewed-by: Yang Rong --- utests/utest_helper.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'utests/utest_helper.cpp') diff --git a/utests/utest_helper.cpp b/utests/utest_helper.cpp index 0ecbea31..da4cfbff 100644 --- a/utests/utest_helper.cpp +++ b/utests/utest_helper.cpp @@ -896,3 +896,32 @@ int cl_check_subgroups(void) return 1; } +int cl_check_ocl20(void) +{ + size_t param_value_size; + size_t ret_sz; + OCL_CALL(clGetDeviceInfo, device, CL_DEVICE_OPENCL_C_VERSION, 0, 0, ¶m_value_size); + if(param_value_size == 0) { + printf("Not OpenCL 2.0 device, "); + if(cl_check_beignet()) { + printf("Beignet extension test!"); + return 1; + } + return 0; + } + char* device_version_str = (char* )malloc(param_value_size * sizeof(char) ); + OCL_CALL(clGetDeviceInfo, device, CL_DEVICE_OPENCL_C_VERSION, param_value_size, (void*)device_version_str, &ret_sz); + OCL_ASSERT(ret_sz == param_value_size); + + if(!strstr(device_version_str, "2.0")) { + free(device_version_str); + printf("Not OpenCL 2.0 device, "); + if(cl_check_beignet()) { + printf("Beignet extension test!"); + return 1; + } + return 0; + } + free(device_version_str); + return 1; +} -- cgit v1.2.1