| 558 | |
| 559 | |
| 560 | static int test_buffer_fill(cl_device_id deviceID, cl_context context, |
| 561 | cl_command_queue queue, int num_elements, |
| 562 | size_t size, char *type, int loops, void *inptr[5], |
| 563 | void *hostptr[5], void *pattern[5], |
| 564 | size_t offset_elements, size_t fill_elements, |
| 565 | const char *kernelCode[], const char *kernelName[], |
| 566 | int (*fn)(void *, void *, int)) |
| 567 | { |
| 568 | void *outptr[5]; |
| 569 | clProgramWrapper program[5]; |
| 570 | clKernelWrapper kernel[5]; |
| 571 | size_t ptrSizes[5]; |
| 572 | size_t global_work_size[3]; |
| 573 | int err; |
| 574 | int i; |
| 575 | int src_flag_id; |
| 576 | int total_errors = 0; |
| 577 | |
| 578 | size_t min_alignment = get_min_alignment(context); |
| 579 | |
| 580 | global_work_size[0] = (size_t)num_elements; |
| 581 | |
| 582 | ptrSizes[0] = size; |
| 583 | ptrSizes[1] = ptrSizes[0] << 1; |
| 584 | ptrSizes[2] = ptrSizes[1] << 1; |
| 585 | ptrSizes[3] = ptrSizes[2] << 1; |
| 586 | ptrSizes[4] = ptrSizes[3] << 1; |
| 587 | |
| 588 | loops = (loops < 5 ? loops : 5); |
| 589 | for (i = 0; i < loops; i++) |
| 590 | { |
| 591 | err = create_single_kernel_helper(context, &program[i], &kernel[i], 1, |
| 592 | &kernelCode[i], kernelName[i]); |
| 593 | if (err) |
| 594 | { |
| 595 | log_error(" Error creating program for %s\n", type); |
| 596 | return -1; |
| 597 | } |
| 598 | |
| 599 | for (src_flag_id = 0; src_flag_id < NUM_FLAGS; src_flag_id++) |
| 600 | { |
| 601 | // Skip immutable memory flags |
| 602 | if (flag_set[src_flag_id] & CL_MEM_IMMUTABLE_EXT) |
| 603 | { |
| 604 | continue; |
| 605 | } |
| 606 | |
| 607 | clEventWrapper event[2]; |
| 608 | clMemWrapper buffers[2]; |
| 609 | if ((flag_set[src_flag_id] & CL_MEM_USE_HOST_PTR) || (flag_set[src_flag_id] & CL_MEM_COPY_HOST_PTR)) |
| 610 | buffers[0] = clCreateBuffer(context, flag_set[src_flag_id], |
| 611 | ptrSizes[i] * num_elements, |
| 612 | hostptr[i], &err); |
| 613 | else |
| 614 | buffers[0] = |
| 615 | clCreateBuffer(context, flag_set[src_flag_id], |
| 616 | ptrSizes[i] * num_elements, NULL, &err); |
| 617 | if (!buffers[0] || err) |
no test coverage detected