mirror of
https://github.com/opencv/opencv.git
synced 2025-06-11 11:45:30 +08:00
Merge pull request #9394 from dkurt:fix_halide_wrapper
This commit is contained in:
commit
8e7e24ac80
@ -76,6 +76,7 @@ HalideBackendNode::HalideBackendNode(const Ptr<HalideBackendNode>& base,
|
||||
HalideBackendWrapper::HalideBackendWrapper(int targetId, const cv::Mat& m)
|
||||
: BackendWrapper(DNN_BACKEND_HALIDE, targetId)
|
||||
{
|
||||
managesDevMemory = true;
|
||||
buffer = wrapToHalideBuffer(m);
|
||||
if (targetId == DNN_TARGET_CPU)
|
||||
{
|
||||
@ -95,6 +96,7 @@ HalideBackendWrapper::HalideBackendWrapper(const Ptr<BackendWrapper>& base,
|
||||
const MatShape& shape)
|
||||
: BackendWrapper(DNN_BACKEND_HALIDE, base->targetId)
|
||||
{
|
||||
managesDevMemory = false;
|
||||
int w, h, c, n;
|
||||
getCanonicalSize(shape, &w, &h, &c, &n);
|
||||
Halide::Buffer<float> baseBuffer = halideBuffer(base);
|
||||
@ -113,6 +115,16 @@ HalideBackendWrapper::HalideBackendWrapper(const Ptr<BackendWrapper>& base,
|
||||
}
|
||||
}
|
||||
|
||||
HalideBackendWrapper::~HalideBackendWrapper()
|
||||
{
|
||||
if (buffer.has_device_allocation() && !managesDevMemory)
|
||||
{
|
||||
buffer.raw_buffer()->device = 0;
|
||||
buffer.raw_buffer()->device_interface = 0;
|
||||
buffer.set_device_dirty(false);
|
||||
}
|
||||
}
|
||||
|
||||
void HalideBackendWrapper::copyToHost()
|
||||
{
|
||||
CV_Assert(targetId == DNN_TARGET_CPU || buffer.device_dirty());
|
||||
|
@ -57,9 +57,14 @@ namespace dnn
|
||||
|
||||
HalideBackendWrapper(const Ptr<BackendWrapper>& base, const MatShape& shape);
|
||||
|
||||
~HalideBackendWrapper();
|
||||
|
||||
virtual void copyToHost();
|
||||
|
||||
Halide::Buffer<float> buffer;
|
||||
|
||||
private:
|
||||
bool managesDevMemory;
|
||||
};
|
||||
#endif // HAVE_HALIDE
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user