Skip to content

Commit ca0b6fb

Browse files
committed
Merge pull request opencv#8203 from alalek:ocl_kernelarg_validate
2 parents 0af3638 + 4c7aa86 commit ca0b6fb

File tree

4 files changed

+12
-11
lines changed

4 files changed

+12
-11
lines changed

modules/core/src/arithm.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ static bool ocl_binary_op(InputArray _src1, InputArray _src2, OutputArray _dst,
138138
convertAndUnrollScalar(src2sc, srctype, (uchar*)buf, 1);
139139
}
140140

141-
ocl::KernelArg scalararg = ocl::KernelArg(0, 0, 0, 0, buf, esz);
141+
ocl::KernelArg scalararg = ocl::KernelArg(ocl::KernelArg::CONSTANT, 0, 0, 0, buf, esz);
142142

143143
if( !haveMask )
144144
k.args(src1arg, dstarg, scalararg);
@@ -550,15 +550,15 @@ static bool ocl_arithm_op(InputArray _src1, InputArray _src2, OutputArray _dst,
550550

551551
if( !src2sc.empty() )
552552
convertAndUnrollScalar(src2sc, wtype, (uchar*)buf, 1);
553-
ocl::KernelArg scalararg = ocl::KernelArg(0, 0, 0, 0, buf, esz);
553+
ocl::KernelArg scalararg = ocl::KernelArg(ocl::KernelArg::CONSTANT, 0, 0, 0, buf, esz);
554554

555555
if( !haveMask )
556556
{
557557
if(n == 0)
558558
k.args(src1arg, dstarg, scalararg);
559559
else if(n == 1)
560560
k.args(src1arg, dstarg, scalararg,
561-
ocl::KernelArg(0, 0, 0, 0, usrdata_p, usrdata_esz));
561+
ocl::KernelArg(ocl::KernelArg::CONSTANT, 0, 0, 0, usrdata_p, usrdata_esz));
562562
else
563563
CV_Error(Error::StsNotImplemented, "unsupported number of extra parameters");
564564
}
@@ -576,12 +576,12 @@ static bool ocl_arithm_op(InputArray _src1, InputArray _src2, OutputArray _dst,
576576
k.args(src1arg, src2arg, dstarg);
577577
else if (n == 1)
578578
k.args(src1arg, src2arg, dstarg,
579-
ocl::KernelArg(0, 0, 0, 0, usrdata_p, usrdata_esz));
579+
ocl::KernelArg(ocl::KernelArg::CONSTANT, 0, 0, 0, usrdata_p, usrdata_esz));
580580
else if (n == 3)
581581
k.args(src1arg, src2arg, dstarg,
582-
ocl::KernelArg(0, 0, 0, 0, usrdata_p, usrdata_esz),
583-
ocl::KernelArg(0, 0, 0, 0, usrdata_p + usrdata_esz, usrdata_esz),
584-
ocl::KernelArg(0, 0, 0, 0, usrdata_p + usrdata_esz*2, usrdata_esz));
582+
ocl::KernelArg(ocl::KernelArg::CONSTANT, 0, 0, 0, usrdata_p, usrdata_esz),
583+
ocl::KernelArg(ocl::KernelArg::CONSTANT, 0, 0, 0, usrdata_p + usrdata_esz, usrdata_esz),
584+
ocl::KernelArg(ocl::KernelArg::CONSTANT, 0, 0, 0, usrdata_p + usrdata_esz*2, usrdata_esz));
585585
else
586586
CV_Error(Error::StsNotImplemented, "unsupported number of extra parameters");
587587
}
@@ -1204,7 +1204,7 @@ static bool ocl_compare(InputArray _src1, InputArray _src2, OutputArray _dst, in
12041204
convertAndUnrollScalar(Mat(1, 1, CV_32S, &ival), depth1, (uchar *)buf, kercn);
12051205
}
12061206

1207-
ocl::KernelArg scalararg = ocl::KernelArg(0, 0, 0, 0, buf, esz);
1207+
ocl::KernelArg scalararg = ocl::KernelArg(ocl::KernelArg::CONSTANT, 0, 0, 0, buf, esz);
12081208

12091209
k.args(ocl::KernelArg::ReadOnlyNoSize(src1, cn, kercn),
12101210
ocl::KernelArg::WriteOnly(dst, cn, kercn), scalararg);

modules/core/src/ocl.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3155,6 +3155,7 @@ KernelArg::KernelArg()
31553155
KernelArg::KernelArg(int _flags, UMat* _m, int _wscale, int _iwscale, const void* _obj, size_t _sz)
31563156
: flags(_flags), m(_m), obj(_obj), sz(_sz), wscale(_wscale), iwscale(_iwscale)
31573157
{
3158+
CV_Assert(_flags == LOCAL || _flags == CONSTANT || _m != NULL);
31583159
}
31593160

31603161
KernelArg KernelArg::Constant(const Mat& m)

modules/core/src/umatrix.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -986,7 +986,7 @@ UMat& UMat::setTo(InputArray _value, InputArray _mask)
986986
ocl::Kernel setK(haveMask ? "setMask" : "set", ocl::core::copyset_oclsrc, opts);
987987
if( !setK.empty() )
988988
{
989-
ocl::KernelArg scalararg(0, 0, 0, 0, buf, CV_ELEM_SIZE(d) * scalarcn);
989+
ocl::KernelArg scalararg(ocl::KernelArg::CONSTANT, 0, 0, 0, buf, CV_ELEM_SIZE(d) * scalarcn);
990990
UMat mask;
991991

992992
if( haveMask )

modules/imgproc/src/imgwarp.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5814,7 +5814,7 @@ static bool ocl_warpTransform_cols4(InputArray _src, OutputArray _dst, InputArra
58145814
matM.convertTo(M0, CV_32F);
58155815

58165816
k.args(ocl::KernelArg::ReadOnly(src), ocl::KernelArg::WriteOnly(dst), ocl::KernelArg::PtrReadOnly(M0),
5817-
ocl::KernelArg(0, 0, 0, 0, borderBuf, CV_ELEM_SIZE(sctype)));
5817+
ocl::KernelArg(ocl::KernelArg::CONSTANT, 0, 0, 0, borderBuf, CV_ELEM_SIZE(sctype)));
58185818

58195819
size_t globalThreads[2];
58205820
globalThreads[0] = (size_t)(dst.cols / 4);
@@ -5913,7 +5913,7 @@ static bool ocl_warpTransform(InputArray _src, OutputArray _dst, InputArray _M0,
59135913
matM.convertTo(M0, doubleSupport ? CV_64F : CV_32F);
59145914

59155915
k.args(ocl::KernelArg::ReadOnly(src), ocl::KernelArg::WriteOnly(dst), ocl::KernelArg::PtrReadOnly(M0),
5916-
ocl::KernelArg(0, 0, 0, 0, borderBuf, CV_ELEM_SIZE(sctype)));
5916+
ocl::KernelArg(ocl::KernelArg::CONSTANT, 0, 0, 0, borderBuf, CV_ELEM_SIZE(sctype)));
59175917

59185918
size_t globalThreads[2] = { (size_t)dst.cols, ((size_t)dst.rows + rowsPerWI - 1) / rowsPerWI };
59195919
return k.run(2, globalThreads, NULL, false);

0 commit comments

Comments
 (0)