Merge pull request #3144 from ElenaGvozdeva:ocl_morphSmall
This commit is contained in:
commit
e7539bd2c8
@ -1434,7 +1434,7 @@ static bool ocl_morphSmall( InputArray _src, OutputArray _dst, InputArray _kerne
|
|||||||
"-D PX_PER_WI_X=%d -D PX_PER_WI_Y=%d -D PRIV_DATA_WIDTH=%d -D %s -D %s "
|
"-D PX_PER_WI_X=%d -D PX_PER_WI_Y=%d -D PRIV_DATA_WIDTH=%d -D %s -D %s "
|
||||||
"-D PX_LOAD_X_ITERATIONS=%d -D PX_LOAD_Y_ITERATIONS=%d "
|
"-D PX_LOAD_X_ITERATIONS=%d -D PX_LOAD_Y_ITERATIONS=%d "
|
||||||
"-D srcT=%s -D srcT1=%s -D dstT=srcT -D dstT1=srcT1 -D WT=%s -D WT1=%s "
|
"-D srcT=%s -D srcT1=%s -D dstT=srcT -D dstT1=srcT1 -D WT=%s -D WT1=%s "
|
||||||
"-D convertToWT=%s -D convertToDstT=%s -D PROCESS_ELEM_=%s -D %s%s",
|
"-D convertToWT=%s -D convertToDstT=%s -D PX_LOAD_FLOAT_VEC_CONV=convert_%s -D PROCESS_ELEM_=%s -D %s%s",
|
||||||
cn, anchor.x, anchor.y, ksize.width, ksize.height,
|
cn, anchor.x, anchor.y, ksize.width, ksize.height,
|
||||||
pxLoadVecSize, pxLoadNumPixels, depth,
|
pxLoadVecSize, pxLoadNumPixels, depth,
|
||||||
pxPerWorkItemX, pxPerWorkItemY, privDataWidth, borderMap[borderType],
|
pxPerWorkItemX, pxPerWorkItemY, privDataWidth, borderMap[borderType],
|
||||||
@ -1445,6 +1445,7 @@ static bool ocl_morphSmall( InputArray _src, OutputArray _dst, InputArray _kerne
|
|||||||
haveExtraMat ? ocl::typeToStr(wdepth):"srcT1",//to prevent overflow - WT1
|
haveExtraMat ? ocl::typeToStr(wdepth):"srcT1",//to prevent overflow - WT1
|
||||||
haveExtraMat ? ocl::convertTypeStr(depth, wdepth, cn, cvt[0]) : "noconvert",//to prevent overflow - src to WT
|
haveExtraMat ? ocl::convertTypeStr(depth, wdepth, cn, cvt[0]) : "noconvert",//to prevent overflow - src to WT
|
||||||
haveExtraMat ? ocl::convertTypeStr(wdepth, depth, cn, cvt[1]) : "noconvert",//to prevent overflow - WT to dst
|
haveExtraMat ? ocl::convertTypeStr(wdepth, depth, cn, cvt[1]) : "noconvert",//to prevent overflow - WT to dst
|
||||||
|
ocl::typeToStr(CV_MAKE_TYPE(haveExtraMat ? wdepth : depth, pxLoadVecSize)), //PX_LOAD_FLOAT_VEC_CONV
|
||||||
processing.c_str(), op2str[op],
|
processing.c_str(), op2str[op],
|
||||||
actual_op == op ? "" : cv::format(" -D %s", op2str[actual_op]).c_str());
|
actual_op == op ? "" : cv::format(" -D %s", op2str[actual_op]).c_str());
|
||||||
|
|
||||||
@ -1531,7 +1532,11 @@ static bool ocl_morphOp(InputArray _src, OutputArray _dst, InputArray _kernel,
|
|||||||
if (dev.isIntel() && !(dev.type() & ocl::Device::TYPE_CPU) &&
|
if (dev.isIntel() && !(dev.type() & ocl::Device::TYPE_CPU) &&
|
||||||
((ksize.width < 5 && ksize.height < 5 && esz <= 4) ||
|
((ksize.width < 5 && ksize.height < 5 && esz <= 4) ||
|
||||||
(ksize.width == 5 && ksize.height == 5 && cn == 1)) &&
|
(ksize.width == 5 && ksize.height == 5 && cn == 1)) &&
|
||||||
(iterations == 1) && cn == 1)
|
(iterations == 1)
|
||||||
|
#if defined __APPLE__
|
||||||
|
&& cn == 1
|
||||||
|
#endif
|
||||||
|
)
|
||||||
{
|
{
|
||||||
if (ocl_morphSmall(_src, _dst, kernel, anchor, borderType, op, actual_op, _extraMat))
|
if (ocl_morphSmall(_src, _dst, kernel, anchor, borderType, op, actual_op, _extraMat))
|
||||||
return true;
|
return true;
|
||||||
|
@ -164,18 +164,6 @@ inline bool isBorder(const struct RectCoords bounds, int2 coord, int numPixels)
|
|||||||
#define vload1(OFFSET, PTR) (*(PTR + OFFSET))
|
#define vload1(OFFSET, PTR) (*(PTR + OFFSET))
|
||||||
#define PX_LOAD_VEC_TYPE CAT(srcT1, PX_LOAD_VEC_SIZE)
|
#define PX_LOAD_VEC_TYPE CAT(srcT1, PX_LOAD_VEC_SIZE)
|
||||||
#define PX_LOAD_FLOAT_VEC_TYPE CAT(WT1, PX_LOAD_VEC_SIZE)
|
#define PX_LOAD_FLOAT_VEC_TYPE CAT(WT1, PX_LOAD_VEC_SIZE)
|
||||||
|
|
||||||
#if PX_LOAD_VEC_SIZE == 1
|
|
||||||
#define PX_LOAD_FLOAT_VEC_CONV (float)
|
|
||||||
#elif PX_LOAD_VEC_SIZE == 2
|
|
||||||
#define PX_LOAD_FLOAT_VEC_CONV convert_float2
|
|
||||||
#elif PX_LOAD_VEC_SIZE == 3
|
|
||||||
#define PX_LOAD_FLOAT_VEC_CONV convert_float3
|
|
||||||
#elif PX_LOAD_VEC_SIZE == 4
|
|
||||||
#define PX_LOAD_FLOAT_VEC_CONV convert_float4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//#define PX_LOAD_FLOAT_VEC_CONV CAT(convert_, PX_LOAD_FLOAT_VEC_TYPE)
|
|
||||||
#define PX_LOAD CAT(vload, PX_LOAD_VEC_SIZE)
|
#define PX_LOAD CAT(vload, PX_LOAD_VEC_SIZE)
|
||||||
|
|
||||||
|
|
||||||
|
@ -720,7 +720,7 @@ static bool ocl_boxFilter( InputArray _src, OutputArray _dst, int ddepth,
|
|||||||
"-D PX_PER_WI_X=%d -D PX_PER_WI_Y=%d -D PRIV_DATA_WIDTH=%d -D %s -D %s "
|
"-D PX_PER_WI_X=%d -D PX_PER_WI_Y=%d -D PRIV_DATA_WIDTH=%d -D %s -D %s "
|
||||||
"-D PX_LOAD_X_ITERATIONS=%d -D PX_LOAD_Y_ITERATIONS=%d "
|
"-D PX_LOAD_X_ITERATIONS=%d -D PX_LOAD_Y_ITERATIONS=%d "
|
||||||
"-D srcT=%s -D srcT1=%s -D dstT=%s -D dstT1=%s -D WT=%s -D WT1=%s "
|
"-D srcT=%s -D srcT1=%s -D dstT=%s -D dstT1=%s -D WT=%s -D WT1=%s "
|
||||||
"-D convertToWT=%s -D convertToDstT=%s%s%s -D OP_BOX_FILTER",
|
"-D convertToWT=%s -D convertToDstT=%s%s%s -D PX_LOAD_FLOAT_VEC_CONV=convert_%s -D OP_BOX_FILTER",
|
||||||
cn, anchor.x, anchor.y, ksize.width, ksize.height,
|
cn, anchor.x, anchor.y, ksize.width, ksize.height,
|
||||||
pxLoadVecSize, pxLoadNumPixels,
|
pxLoadVecSize, pxLoadNumPixels,
|
||||||
pxPerWorkItemX, pxPerWorkItemY, privDataWidth, borderMap[borderType],
|
pxPerWorkItemX, pxPerWorkItemY, privDataWidth, borderMap[borderType],
|
||||||
@ -730,8 +730,9 @@ static bool ocl_boxFilter( InputArray _src, OutputArray _dst, int ddepth,
|
|||||||
ocl::typeToStr(ddepth), ocl::typeToStr(wtype), ocl::typeToStr(wdepth),
|
ocl::typeToStr(ddepth), ocl::typeToStr(wtype), ocl::typeToStr(wdepth),
|
||||||
ocl::convertTypeStr(sdepth, wdepth, cn, cvt[0]),
|
ocl::convertTypeStr(sdepth, wdepth, cn, cvt[0]),
|
||||||
ocl::convertTypeStr(wdepth, ddepth, cn, cvt[1]),
|
ocl::convertTypeStr(wdepth, ddepth, cn, cvt[1]),
|
||||||
normalize ? " -D NORMALIZE" : "", sqr ? " -D SQR" : "");
|
normalize ? " -D NORMALIZE" : "", sqr ? " -D SQR" : "",
|
||||||
|
ocl::typeToStr(CV_MAKE_TYPE(wdepth, pxLoadVecSize)) //PX_LOAD_FLOAT_VEC_CONV
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
if (!kernel.create("filterSmall", cv::ocl::imgproc::filterSmall_oclsrc, build_options))
|
if (!kernel.create("filterSmall", cv::ocl::imgproc::filterSmall_oclsrc, build_options))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user