| 204 | test_assert_error(((cl_uint*)pbufRes)[10] == color[3], |
| 205 | "clCloneKernel test failed."); |
| 206 | |
| 207 | return TEST_PASS; |
| 208 | } |
| 209 | |
| 210 | int test_double_arg_clone(cl_device_id device, cl_context context, |
| 211 | cl_command_queue queue, int num_elements, |
| 212 | void* pbufRes, clMemWrapper& bufOut) |
| 213 | { |
| 214 | int error = 0; |
| 215 | clProgramWrapper program; |
| 216 | clKernelWrapper kernel; |
| 217 | clKernelWrapper kernel_cloned; |
| 218 | size_t ndrange1 = 1; |
| 219 | |
| 220 | if (create_single_kernel_helper(context, &program, &kernel, 1, |
| 221 | clone_kernel_test_double, |
| 222 | "clone_kernel_test1") |
| 223 | != 0) |
| 224 | { |
| 225 | return -1; |
| 226 | } |
| 227 | |
| 228 | cl_double d = 1.23; |
| 229 | error = clSetKernelArg(kernel, 0, sizeof(double), &d); |
| 230 | error += clSetKernelArg(kernel, 1, sizeof(cl_mem), &bufOut); |
| 231 | test_error(error, "clSetKernelArg failed."); |
| 232 | |
| 233 | kernel_cloned = clCloneKernel(kernel, &error); |
| 234 | test_error(error, "clCloneKernel failed."); |
| 235 | |
| 236 | error = clEnqueueNDRangeKernel(queue, kernel_cloned, 1, NULL, &ndrange1, |
| 237 | NULL, 0, NULL, NULL); |
| 238 | test_error(error, "clEnqueueNDRangeKernel failed."); |
| 239 | |
| 240 | // read result back |
| 241 | error = clEnqueueReadBuffer(queue, bufOut, CL_TRUE, 0, BUF_SIZE, pbufRes, 0, |
| 242 | NULL, NULL); |
| 243 | test_error(error, "clEnqueueReadBuffer failed."); |
| 244 | |
| 245 | test_assert_error(abs(((cl_double*)pbufRes)[2] - d) <= 0.0000001, |
| 246 | "clCloneKernel test failed."); |
| 247 | |
| 248 | return TEST_PASS; |
no test coverage detected