created from RAW memory buffers (without proper lifetime management)
for( int i = 0; i < MAX_ARRS; i++ )
u[i] = 0;
haveTempDstUMats = false;
for( int i = 0; i < MAX_ARRS; i++ )
u[i] = 0;
haveTempDstUMats = false;
+ haveTempSrcUMats = false;
}
nu = 0;
haveTempDstUMats = false;
}
nu = 0;
haveTempDstUMats = false;
+ haveTempSrcUMats = false;
}
void addUMat(const UMat& m, bool dst)
}
void addUMat(const UMat& m, bool dst)
nu++;
if(dst && m.u->tempUMat())
haveTempDstUMats = true;
nu++;
if(dst && m.u->tempUMat())
haveTempDstUMats = true;
+ if(m.u->originalUMatData == NULL && m.u->tempUMat())
+ haveTempSrcUMats = true; // UMat is created on RAW memory (without proper lifetime management, even from Mat)
}
void addImage(const Image2D& image)
}
void addImage(const Image2D& image)
int nu;
std::list<Image2D> images;
bool haveTempDstUMats;
int nu;
std::list<Image2D> images;
bool haveTempDstUMats;
};
}} // namespace cv::ocl
};
}} // namespace cv::ocl
cl_command_queue qq = getQueue(q);
if (haveTempDstUMats)
sync = true;
cl_command_queue qq = getQueue(q);
if (haveTempDstUMats)
sync = true;
+ if (haveTempSrcUMats)
+ sync = true;
if (timeNS)
sync = true;
cl_event asyncEvent = 0;
if (timeNS)
sync = true;
cl_event asyncEvent = 0;