diff options
Diffstat (limited to 'tests/cl/api/set-kernel-arg.c')
-rw-r--r-- | tests/cl/api/set-kernel-arg.c | 51 |
1 files changed, 37 insertions, 14 deletions
diff --git a/tests/cl/api/set-kernel-arg.c b/tests/cl/api/set-kernel-arg.c index 6bd7ec8b6..4e44fc09f 100644 --- a/tests/cl/api/set-kernel-arg.c +++ b/tests/cl/api/set-kernel-arg.c @@ -51,6 +51,21 @@ PIGLIT_CL_API_TEST_CONFIG_BEGIN PIGLIT_CL_API_TEST_CONFIG_END +static bool +get_device_image_support(cl_device_id device) +{ + cl_bool *has_image = + piglit_cl_get_device_info(device, CL_DEVICE_IMAGE_SUPPORT); + + if (!*has_image) { + fprintf(stdout, "No image support. Sampler arg won't be tested\n"); + free(has_image); + return false; + } + + free(has_image); + return true; +} static bool test (cl_kernel kernel, @@ -88,10 +103,13 @@ piglit_cl_test(const int argc, cl_mem buffer; cl_float float_num = 1.1; cl_int int_num = 1; - cl_sampler sampler; + cl_sampler sampler = NULL; cl_mem invalid_buffer; + cl_bool image_support = + get_device_image_support(env->context->device_ids[0]); + /*** Normal usage ***/ kernel = clCreateKernel(env->program, "kernel_fun", &errNo); if(!piglit_cl_check_error(errNo, CL_SUCCESS)) { @@ -113,16 +131,18 @@ piglit_cl_test(const int argc, return PIGLIT_FAIL; } - sampler = clCreateSampler(env->context->cl_ctx, - CL_TRUE, - CL_ADDRESS_NONE, - CL_FILTER_NEAREST, - &errNo); - if(!piglit_cl_check_error(errNo, CL_SUCCESS)) { - fprintf(stderr, - "Failed (error code: %s): Create sampler.\n", - piglit_cl_get_error_name(errNo)); - return PIGLIT_FAIL; + if (image_support) { + sampler = clCreateSampler(env->context->cl_ctx, + CL_TRUE, + CL_ADDRESS_NONE, + CL_FILTER_NEAREST, + &errNo); + if(!piglit_cl_check_error(errNo, CL_SUCCESS)) { + fprintf(stderr, + "Failed (error code: %s): Create sampler.\n", + piglit_cl_get_error_name(errNo)); + return PIGLIT_FAIL; + } } test(kernel, 0, sizeof(cl_mem), &buffer, @@ -134,9 +154,12 @@ piglit_cl_test(const int argc, test(kernel, 2, sizeof(cl_int), NULL, CL_SUCCESS, &result, "Set kernel argument for array"); - test(kernel, 3, sizeof(cl_sampler), &sampler, - CL_SUCCESS, &result, - "Set kernel argument for sampler"); + + if (image_support) { + test(kernel, 3, sizeof(cl_sampler), &sampler, + CL_SUCCESS, &result, + "Set kernel argument for sampler"); + } /* * Next line is also valid. |