HalideBackendWrapper::HalideBackendWrapper(const Ptr<BackendWrapper>& base, const MatShape& shape) : BackendWrapper(DNN_BACKEND_HALIDE, base->targetId) { managesDevMemory = false; Halide::Buffer<float> baseBuffer = halideBuffer(base); buffer = Halide::Buffer<float>((float*)baseBuffer.raw_buffer()->host, getBufferShape(shape)); if (baseBuffer.has_device_allocation()) { buffer.raw_buffer()->device = baseBuffer.raw_buffer()->device; buffer.raw_buffer()->device_interface = baseBuffer.raw_buffer()->device_interface; buffer.set_device_dirty(); } else { buffer.set_host_dirty(); // Indicate that data is on CPU. CV_Assert(targetId == DNN_TARGET_CPU); } }
HalideBackendWrapper::HalideBackendWrapper(const Ptr<BackendWrapper>& base, const MatShape& shape) : BackendWrapper(DNN_BACKEND_HALIDE, base->targetId) { int w, h, c, n; getCanonicalSize(shape, &w, &h, &c, &n); Halide::Buffer<float> baseBuffer = halideBuffer(base); buffer = Halide::Buffer<float>((float*)baseBuffer.raw_buffer()->host, {w, h, c, n}); if (baseBuffer.has_device_allocation()) { buffer.raw_buffer()->device = baseBuffer.raw_buffer()->device; buffer.raw_buffer()->device_interface = baseBuffer.raw_buffer()->device_interface; buffer.set_device_dirty(); } else { buffer.set_host_dirty(); // Indicate that data is on CPU. CV_Assert(targetId == DNN_TARGET_CPU); } }