| 705 | } |
| 706 | |
| 707 | void copyBufferToImage(OpenCLRuntime *runtime, const cl::Buffer &buffer, const cl::Image &image, int w, int h, int precision) { |
| 708 | std::set<std::string> buildOptions; |
| 709 | buildOptions.emplace("-DBUFFER_INP_FP32"); |
| 710 | auto kernelW = runtime->buildKernelWithCache("copy_buffer_to_image2d", "copy_buffer_to_image2d", buildOptions, precision); |
| 711 | auto kernel = kernelW->get(); |
| 712 | auto status = kernel.setArg(0, buffer); |
| 713 | MNN_ASSERT(status == CL_SUCCESS); |
| 714 | status = kernel.setArg(1, image); |
| 715 | MNN_ASSERT(status == CL_SUCCESS); |
| 716 | status = kernel.setArg(2, w); |
| 717 | MNN_ASSERT(status == CL_SUCCESS); |
| 718 | status = kernel.setArg(3, h); |
| 719 | MNN_ASSERT(status == CL_SUCCESS); |
| 720 | auto comandQueue = runtime->commandQueue(); |
| 721 | comandQueue.enqueueNDRangeKernel(kernel, cl::NullRange, cl::NDRange(w, h, 1)); |
| 722 | } |
| 723 | |
| 724 | bool localWSTune(const std::map<std::string, std::vector<TuneInfo>>& tuneMap, const std::vector<uint32_t>& gws, |
| 725 | const std::string& kernelName, std::pair<std::vector<uint32_t>, uint32_t>& res, int tuneLevel) { |
no test coverage detected