1*6467f958SSadaf Ebrahimi // 2*6467f958SSadaf Ebrahimi // Copyright (c) 2017 The Khronos Group Inc. 3*6467f958SSadaf Ebrahimi // 4*6467f958SSadaf Ebrahimi // Licensed under the Apache License, Version 2.0 (the "License"); 5*6467f958SSadaf Ebrahimi // you may not use this file except in compliance with the License. 6*6467f958SSadaf Ebrahimi // You may obtain a copy of the License at 7*6467f958SSadaf Ebrahimi // 8*6467f958SSadaf Ebrahimi // http://www.apache.org/licenses/LICENSE-2.0 9*6467f958SSadaf Ebrahimi // 10*6467f958SSadaf Ebrahimi // Unless required by applicable law or agreed to in writing, software 11*6467f958SSadaf Ebrahimi // distributed under the License is distributed on an "AS IS" BASIS, 12*6467f958SSadaf Ebrahimi // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*6467f958SSadaf Ebrahimi // See the License for the specific language governing permissions and 14*6467f958SSadaf Ebrahimi // limitations under the License. 15*6467f958SSadaf Ebrahimi // 16*6467f958SSadaf Ebrahimi #include "harness/errorHelpers.h" 17*6467f958SSadaf Ebrahimi #include "harness/kernelHelpers.h" 18*6467f958SSadaf Ebrahimi #include "harness/typeWrappers.h" 19*6467f958SSadaf Ebrahimi #include "harness/clImageHelper.h" 20*6467f958SSadaf Ebrahimi #include "harness/imageHelpers.h" 21*6467f958SSadaf Ebrahimi extern float calculate_ulperror(float a, float b); 22*6467f958SSadaf Ebrahimi 23*6467f958SSadaf Ebrahimi extern int test_load_single_kernel(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 24*6467f958SSadaf Ebrahimi extern int test_load_two_kernels(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 25*6467f958SSadaf Ebrahimi extern int test_load_two_kernels_in_one(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 26*6467f958SSadaf Ebrahimi extern int test_load_two_kernels_manually(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 27*6467f958SSadaf Ebrahimi extern int test_get_program_info_kernel_names( cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 28*6467f958SSadaf Ebrahimi extern int test_create_kernels_in_program(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 29*6467f958SSadaf Ebrahimi extern int test_enqueue_task(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 30*6467f958SSadaf Ebrahimi extern int test_repeated_setup_cleanup(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 31*6467f958SSadaf Ebrahimi 32*6467f958SSadaf Ebrahimi extern int test_bool_type(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 33*6467f958SSadaf Ebrahimi extern int test_platform_extensions(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 34*6467f958SSadaf Ebrahimi extern int test_get_platform_info(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 35*6467f958SSadaf Ebrahimi extern int test_get_sampler_info(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 36*6467f958SSadaf Ebrahimi extern int test_get_sampler_info_compatibility(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 37*6467f958SSadaf Ebrahimi extern int test_get_command_queue_info(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 38*6467f958SSadaf Ebrahimi extern int test_get_command_queue_info_compatibility(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 39*6467f958SSadaf Ebrahimi extern int test_get_context_info(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 40*6467f958SSadaf Ebrahimi extern int test_get_device_info(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 41*6467f958SSadaf Ebrahimi extern int test_kernel_required_group_size(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 42*6467f958SSadaf Ebrahimi 43*6467f958SSadaf Ebrahimi extern int test_binary_get(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 44*6467f958SSadaf Ebrahimi extern int test_binary_create(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 45*6467f958SSadaf Ebrahimi 46*6467f958SSadaf Ebrahimi extern int test_release_kernel_order(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 47*6467f958SSadaf Ebrahimi extern int test_release_during_execute(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 48*6467f958SSadaf Ebrahimi 49*6467f958SSadaf Ebrahimi extern int test_get_kernel_info(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 50*6467f958SSadaf Ebrahimi extern int test_kernel_private_memory_size(cl_device_id deviceID, 51*6467f958SSadaf Ebrahimi cl_context context, 52*6467f958SSadaf Ebrahimi cl_command_queue queue, 53*6467f958SSadaf Ebrahimi int num_elements); 54*6467f958SSadaf Ebrahimi extern int test_execute_kernel_local_sizes(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 55*6467f958SSadaf Ebrahimi extern int test_set_kernel_arg_by_index(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 56*6467f958SSadaf Ebrahimi extern int test_set_kernel_arg_struct(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 57*6467f958SSadaf Ebrahimi extern int test_set_kernel_arg_constant(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 58*6467f958SSadaf Ebrahimi extern int test_set_kernel_arg_struct_array(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 59*6467f958SSadaf Ebrahimi extern int test_kernel_global_constant(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 60*6467f958SSadaf Ebrahimi 61*6467f958SSadaf Ebrahimi extern int test_min_max_thread_dimensions(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 62*6467f958SSadaf Ebrahimi extern int test_min_max_work_items_sizes(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 63*6467f958SSadaf Ebrahimi extern int test_min_max_work_group_size(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 64*6467f958SSadaf Ebrahimi extern int test_min_max_read_image_args(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 65*6467f958SSadaf Ebrahimi extern int test_min_max_write_image_args(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 66*6467f958SSadaf Ebrahimi extern int test_min_max_mem_alloc_size(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 67*6467f958SSadaf Ebrahimi extern int test_min_max_image_2d_width(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 68*6467f958SSadaf Ebrahimi extern int test_min_max_image_2d_height(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 69*6467f958SSadaf Ebrahimi extern int test_min_max_image_3d_width(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 70*6467f958SSadaf Ebrahimi extern int test_min_max_image_3d_height(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 71*6467f958SSadaf Ebrahimi extern int test_min_max_image_3d_depth(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 72*6467f958SSadaf Ebrahimi extern int test_min_max_image_array_size(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 73*6467f958SSadaf Ebrahimi extern int test_min_max_image_buffer_size(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 74*6467f958SSadaf Ebrahimi extern int test_min_max_parameter_size(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 75*6467f958SSadaf Ebrahimi extern int test_min_max_samplers(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 76*6467f958SSadaf Ebrahimi extern int test_min_max_constant_buffer_size(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 77*6467f958SSadaf Ebrahimi extern int test_min_max_constant_args(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 78*6467f958SSadaf Ebrahimi extern int test_min_max_compute_units(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 79*6467f958SSadaf Ebrahimi extern int test_min_max_address_bits(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 80*6467f958SSadaf Ebrahimi extern int test_min_max_single_fp_config(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 81*6467f958SSadaf Ebrahimi extern int test_min_max_double_fp_config(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 82*6467f958SSadaf Ebrahimi extern int test_min_max_local_mem_size(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 83*6467f958SSadaf Ebrahimi extern int test_min_max_kernel_preferred_work_group_size_multiple(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 84*6467f958SSadaf Ebrahimi extern int test_min_max_execution_capabilities(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 85*6467f958SSadaf Ebrahimi extern int test_min_max_queue_properties(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 86*6467f958SSadaf Ebrahimi extern int test_min_max_device_version(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 87*6467f958SSadaf Ebrahimi extern int test_min_max_language_version(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 88*6467f958SSadaf Ebrahimi 89*6467f958SSadaf Ebrahimi extern int test_native_kernel(cl_device_id device, cl_context context, cl_command_queue queue, int n_elems ); 90*6467f958SSadaf Ebrahimi 91*6467f958SSadaf Ebrahimi extern int test_create_context_from_type(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 92*6467f958SSadaf Ebrahimi 93*6467f958SSadaf Ebrahimi extern int test_get_platform_ids(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 94*6467f958SSadaf Ebrahimi 95*6467f958SSadaf Ebrahimi extern int test_kernel_arg_changes(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 96*6467f958SSadaf Ebrahimi extern int test_kernel_arg_multi_setup_random(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 97*6467f958SSadaf Ebrahimi 98*6467f958SSadaf Ebrahimi extern int test_retain_queue_single(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 99*6467f958SSadaf Ebrahimi extern int test_retain_queue_multiple(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 100*6467f958SSadaf Ebrahimi extern int test_retain_mem_object_single(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 101*6467f958SSadaf Ebrahimi extern int test_retain_mem_object_multiple(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 102*6467f958SSadaf Ebrahimi extern int test_retain_mem_object_set_kernel_arg(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 103*6467f958SSadaf Ebrahimi extern int test_min_data_type_align_size_alignment(cl_device_id device, cl_context context, cl_command_queue queue, int n_elems ); 104*6467f958SSadaf Ebrahimi 105*6467f958SSadaf Ebrahimi extern int test_context_destructor_callback(cl_device_id deviceID, 106*6467f958SSadaf Ebrahimi cl_context context, 107*6467f958SSadaf Ebrahimi cl_command_queue queue, 108*6467f958SSadaf Ebrahimi int num_elements); 109*6467f958SSadaf Ebrahimi extern int test_mem_object_destructor_callback(cl_device_id deviceID, 110*6467f958SSadaf Ebrahimi cl_context context, 111*6467f958SSadaf Ebrahimi cl_command_queue queue, 112*6467f958SSadaf Ebrahimi int num_elements); 113*6467f958SSadaf Ebrahimi 114*6467f958SSadaf Ebrahimi extern int test_null_buffer_arg( cl_device_id device_id, cl_context context, cl_command_queue queue, int num_elements ); 115*6467f958SSadaf Ebrahimi extern int test_get_buffer_info( cl_device_id deviceID, cl_context context, cl_command_queue ignoreQueue, int num_elements ); 116*6467f958SSadaf Ebrahimi extern int test_get_image2d_info( cl_device_id deviceID, cl_context context, cl_command_queue ignoreQueue, int num_elements ); 117*6467f958SSadaf Ebrahimi extern int test_get_image3d_info( cl_device_id deviceID, cl_context context, cl_command_queue ignoreQueue, int num_elements ); 118*6467f958SSadaf Ebrahimi extern int test_get_image1d_info( cl_device_id deviceID, cl_context context, cl_command_queue ignoreQueue, int num_elements ); 119*6467f958SSadaf Ebrahimi extern int test_get_image1d_array_info( cl_device_id deviceID, cl_context context, cl_command_queue ignoreQueue, int num_elements ); 120*6467f958SSadaf Ebrahimi extern int test_get_image2d_array_info( cl_device_id deviceID, cl_context context, cl_command_queue ignoreQueue, int num_elements ); 121*6467f958SSadaf Ebrahimi extern int test_get_kernel_arg_info( cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements ); 122*6467f958SSadaf Ebrahimi extern int test_queue_hint(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 123*6467f958SSadaf Ebrahimi extern int test_sub_group_dispatch(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 124*6467f958SSadaf Ebrahimi extern int test_clone_kernel(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 125*6467f958SSadaf Ebrahimi extern int test_zero_sized_enqueue(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 126*6467f958SSadaf Ebrahimi extern int test_queue_properties( cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements ); 127*6467f958SSadaf Ebrahimi extern int test_queue_flush_on_release(cl_device_id deviceID, 128*6467f958SSadaf Ebrahimi cl_context context, 129*6467f958SSadaf Ebrahimi cl_command_queue queue, 130*6467f958SSadaf Ebrahimi int num_elements); 131*6467f958SSadaf Ebrahimi extern int test_buffer_properties_queries(cl_device_id deviceID, 132*6467f958SSadaf Ebrahimi cl_context context, 133*6467f958SSadaf Ebrahimi cl_command_queue queue, 134*6467f958SSadaf Ebrahimi int num_elements); 135*6467f958SSadaf Ebrahimi extern int test_image_properties_queries(cl_device_id deviceID, 136*6467f958SSadaf Ebrahimi cl_context context, 137*6467f958SSadaf Ebrahimi cl_command_queue queue, 138*6467f958SSadaf Ebrahimi int num_elements); 139*6467f958SSadaf Ebrahimi extern int test_queue_properties_queries(cl_device_id deviceID, 140*6467f958SSadaf Ebrahimi cl_context context, 141*6467f958SSadaf Ebrahimi cl_command_queue queue, 142*6467f958SSadaf Ebrahimi int num_elements); 143*6467f958SSadaf Ebrahimi int test_pipe_properties_queries(cl_device_id deviceID, cl_context context, 144*6467f958SSadaf Ebrahimi cl_command_queue queue, int num_elements); 145*6467f958SSadaf Ebrahimi 146*6467f958SSadaf Ebrahimi extern int test_consistency_svm(cl_device_id deviceID, cl_context context, 147*6467f958SSadaf Ebrahimi cl_command_queue queue, int num_elements); 148*6467f958SSadaf Ebrahimi extern int test_consistency_memory_model(cl_device_id deviceID, 149*6467f958SSadaf Ebrahimi cl_context context, 150*6467f958SSadaf Ebrahimi cl_command_queue queue, 151*6467f958SSadaf Ebrahimi int num_elements); 152*6467f958SSadaf Ebrahimi extern int test_consistency_device_enqueue(cl_device_id deviceID, 153*6467f958SSadaf Ebrahimi cl_context context, 154*6467f958SSadaf Ebrahimi cl_command_queue queue, 155*6467f958SSadaf Ebrahimi int num_elements); 156*6467f958SSadaf Ebrahimi extern int test_consistency_pipes(cl_device_id deviceID, cl_context context, 157*6467f958SSadaf Ebrahimi cl_command_queue queue, int num_elements); 158*6467f958SSadaf Ebrahimi extern int test_consistency_progvar(cl_device_id deviceID, cl_context context, 159*6467f958SSadaf Ebrahimi cl_command_queue queue, int num_elements); 160*6467f958SSadaf Ebrahimi extern int test_consistency_non_uniform_work_group(cl_device_id deviceID, 161*6467f958SSadaf Ebrahimi cl_context context, 162*6467f958SSadaf Ebrahimi cl_command_queue queue, 163*6467f958SSadaf Ebrahimi int num_elements); 164*6467f958SSadaf Ebrahimi extern int test_consistency_read_write_images(cl_device_id deviceID, 165*6467f958SSadaf Ebrahimi cl_context context, 166*6467f958SSadaf Ebrahimi cl_command_queue queue, 167*6467f958SSadaf Ebrahimi int num_elements); 168*6467f958SSadaf Ebrahimi extern int test_consistency_2d_image_from_buffer(cl_device_id deviceID, 169*6467f958SSadaf Ebrahimi cl_context context, 170*6467f958SSadaf Ebrahimi cl_command_queue queue, 171*6467f958SSadaf Ebrahimi int num_elements); 172*6467f958SSadaf Ebrahimi extern int test_consistency_depth_images(cl_device_id deviceID, 173*6467f958SSadaf Ebrahimi cl_context context, 174*6467f958SSadaf Ebrahimi cl_command_queue queue, 175*6467f958SSadaf Ebrahimi int num_elements); 176*6467f958SSadaf Ebrahimi extern int test_consistency_device_and_host_timer(cl_device_id deviceID, 177*6467f958SSadaf Ebrahimi cl_context context, 178*6467f958SSadaf Ebrahimi cl_command_queue queue, 179*6467f958SSadaf Ebrahimi int num_elements); 180*6467f958SSadaf Ebrahimi extern int test_consistency_il_programs(cl_device_id deviceID, 181*6467f958SSadaf Ebrahimi cl_context context, 182*6467f958SSadaf Ebrahimi cl_command_queue queue, 183*6467f958SSadaf Ebrahimi int num_elements); 184*6467f958SSadaf Ebrahimi extern int test_consistency_subgroups(cl_device_id deviceID, cl_context context, 185*6467f958SSadaf Ebrahimi cl_command_queue queue, int num_elements); 186*6467f958SSadaf Ebrahimi extern int test_consistency_prog_ctor_dtor(cl_device_id deviceID, 187*6467f958SSadaf Ebrahimi cl_context context, 188*6467f958SSadaf Ebrahimi cl_command_queue queue, 189*6467f958SSadaf Ebrahimi int num_elements); 190*6467f958SSadaf Ebrahimi extern int test_consistency_3d_image_writes(cl_device_id deviceID, 191*6467f958SSadaf Ebrahimi cl_context context, 192*6467f958SSadaf Ebrahimi cl_command_queue queue, 193*6467f958SSadaf Ebrahimi int num_elements); 194*6467f958SSadaf Ebrahimi 195*6467f958SSadaf Ebrahimi extern int test_min_image_formats(cl_device_id deviceID, cl_context context, 196*6467f958SSadaf Ebrahimi cl_command_queue queue, int num_elements); 197*6467f958SSadaf Ebrahimi extern int test_negative_get_platform_info(cl_device_id deviceID, 198*6467f958SSadaf Ebrahimi cl_context context, 199*6467f958SSadaf Ebrahimi cl_command_queue queue, 200*6467f958SSadaf Ebrahimi int num_elements); 201*6467f958SSadaf Ebrahimi extern int test_negative_get_platform_ids(cl_device_id deviceID, 202*6467f958SSadaf Ebrahimi cl_context context, 203*6467f958SSadaf Ebrahimi cl_command_queue queue, 204*6467f958SSadaf Ebrahimi int num_elements); 205*6467f958SSadaf Ebrahimi extern int test_kernel_attributes(cl_device_id deviceID, cl_context context, 206*6467f958SSadaf Ebrahimi cl_command_queue queue, int num_elements); 207