Commit Graph

628 Commits

Author SHA1 Message Date
Tom Stellard
42b1bd56cc ocl: Move static oclMat variables into FarnebackOpticalFlow class
Move some static functions into the FarnebackOpticalFlow class as well,
so they can access these new class variables.

oclMat objects cannot be declared statically, because their destructor
depends on the statically defined __module variable from cl_context.cpp.
Since statically defined variables in separate compilation units have
an undefined destruction order there is always the possibility the
__module will be destructed before an oclMat object, which results
in a segfault.
2014-11-13 11:16:10 -05:00
Tom Stellard
ec335b7398 ocl: Fix crash during destruction of gauss_w_lut object in hog.cpp
gauss_w_lut is a statically defined variable of type oclMat.  The oclMat
destructor calls openCLFree() which via getInitializationMutex() accesses
the __module variable which has been statically defined in cl_context.cpp

Since the destruction order of statically defined variables in different
compilation units is undefined, it is possible that __module will
be destructed before gauss_w_lut, which would result in a segfault when
getInitializationMutex() is called while destructing gauss_w_lut.

In order to avoid this issue, we need to make gauss_w_lut a private
member of the HOGDescriptors class so we know it will be destroyed
before __module.
2014-11-12 10:07:07 -05:00
Tom Stellard
8f3b876ee6 ocl: Change static variable order in cl_context.cpp to avoid crashes during destruction
ContextImpl::currentContext contains a reference to one of the
DeviceInfoImpl objects from:

static std::vector<DeviceInfoImpl> global_devices;

ContextImpl::currentContext is destroyed in the destructor
for the statically defined object __module, and relies on its
DeviceInfoImpl reference to query some hardware features while
being destroyed.

This means that we need to ensure that the global_devices vector is
destroyed affter __module, otherwise ContextImpl::currentContext's
DeviceInfoImpl reference will no longer be valid when __module is
destroyed.

Since these variables are all confined to a single compilation unit,
they will be destruct from bottom to top, so we need to make sure
that __module is the bottom definition so it can be destroyed first.
2014-10-14 20:54:13 -04:00
Tom Stellard
934394c5e2 ocl: Don't use 'inline' attribute on functions
In C99 'inline' is not a hint to the compiler to inline the function,
it is an attribute that affects the linkage of the function.  'inline'
functions are required to have a definition in a different compiliation
unit, so compilers are free to delete 'inline' functions if they want to.

This issue can be seen in Clang when compiling at -O0.  Clang
will sometimes delete 'inline' functions which creates an invalid
program.

Issue 3746: http://code.opencv.org/issues/3746
2014-09-19 16:13:57 -04:00
WilhelmHannemann
150487feda Bugfix brute_force_match.cl (see http://code.opencv.org/issues/2837): wrong results for non-float descriptors in OpenCL BruteForceMatcher 2014-09-19 16:41:54 +02:00
unknown
ade46bd428 Fixed typos in comments 2014-06-26 16:29:45 +02:00
Maks Naumov
befbe89bdf remove unused variable in ocl_moments() 2014-04-09 23:01:49 +03:00
Maks Naumov
eb45cf0c93 remove unused variable in findCorners_caller() 2014-04-09 22:59:52 +03:00
Andrey Pavlenko
3747d2643f Revert pull request #1929 from @alalek "ocl: added workaround into Haar kernels"
This reverts commit 3dcddad88a.

Conflicts:
	modules/ocl/src/opencl/haarobjectdetect.cl
2014-03-28 16:08:11 +04:00
Andrey Pavlenko
e6e817e613 Revert "Merge pull request #1779 from perping:integral_2.4"
This reverts commit 54ea5bbac7, reversing
changes made to 28e0d3d771.
2014-03-28 16:05:04 +04:00
Andrey Pavlenko
9c7ba6db90 Merge pull request #2490 from ilya-lavrenov:ocl_sep_filters 2014-03-20 13:54:27 +04:00
Firat Kalaycilar
0a16d93e1d Fixed an issue with weight assignment causing the resulting GMM weights to be unsorted in the CUDA and OCL versions of BackgroundSubtractorMOG2 2014-03-18 17:26:24 +02:00
Ilya Lavrenov
3940b6163b remove intel guard since the code is 2 times faster on AMD too 2014-03-17 19:11:21 +04:00
Ilya Lavrenov
61c347fb76 typos 2014-03-13 22:56:46 +04:00
Ilya Lavrenov
6f76e7b42d improved performance of bitwise ops 2014-03-13 19:42:13 +04:00
Ilya Lavrenov
adc15c2bba improved performance of cv::ocl::sum 2014-03-13 17:33:18 +04:00
Ilya Lavrenov
3ebfe60008 improved performance of cv::ocl::countNonZero 2014-03-13 15:35:53 +04:00
Ilya Lavrenov
8e79de35a8 changes for GFTT 2014-03-13 14:57:13 +04:00
Ilya Lavrenov
a5afcd9f11 improved performance of cv::ocl::minMax 2014-03-13 14:35:12 +04:00
Alexander Karsakov
806e9241a6 Clarifying comments 2014-03-06 16:44:46 +04:00
Alexander Karsakov
4aa891e773 Remove clReleaseDevice call (workaround for pure virtual call on Windows) 2014-03-05 17:57:06 +04:00
Ilya Lavrenov
099ea91823 typos 2014-03-04 12:47:40 +04:00
Alexander Karsakov
e6f6707558 OCL: Fix for Haar classifier (thanks to Konstantin Rodyushkin). 2014-02-26 18:11:11 +04:00
Zhigang Gong
9aef26e2ad Workaround a LLVM/Clang 3.3 bug.
The LLVM/Clang 3.3 has a bug when compile a cl kernel with
assignment of a scalar to a vector data type. This patch
could work around this bug.

Signed-off-by: Zhigang Gong <zhigang.gong@intel.com>
2014-02-12 13:14:43 +08:00
ahb
49dfa5a17f Fix the following error for ocl::getOpenCLPlatforms() on Ubuntu 12.04 with gcc 4.8
OpenCV Error: Unknown error code -6 (OpenCL function is not available: [clGetPlatformIDs]) in opencl_check_fn, file /home/ahb/software/opencv/modules/ocl/src/cl_runtime/cl_runtime.cpp, line 83

The issue results from modules/ocl/src/cl_runtime/cl_runtime.cpp checking for
"linux" instead of "__linux__" (cp.  http://sourceforge.net/p/predef/wiki/OperatingSystems/)

Adjust all other occurrences of "defined(linux)" as well.
2014-01-13 16:09:42 +01:00
Roman Donchenko
0566ab4d3d Merge pull request #2078 from ilya-lavrenov:warn 2013-12-27 18:17:21 +04:00
Ilya Lavrenov
d014cb8fb4 fixed warning [-Wempty-body] 2013-12-27 14:44:58 +04:00
Peng Xiao
0ccc903647 fixed a buffer overrun of ocl canny
the `map` buffer does not have the same size with CUDA and index starts at [1, 1] instead of [0, 0].
2013-12-27 11:54:08 +08:00
Alexander Smorkalov
4f6f6e8cac static function qualifier replaced on inline to enable kernel compilation with OpenCL 1.1 embedded profile. 2013-12-26 21:20:32 +04:00
krodyush
e8dd31aacd change code according reviewer suggesions 2013-12-20 13:51:51 +04:00
krodyush
27c1bd2762 Improve ocl cvt_color performance for the following conversions: RGB<->BGR, RGB->Gray, RGB<->XYZ, RGB<->YCrCb, RGB<->YUV, and mRGBA<->RGBA.
The improvement was done basically by processing more than 1 pixel by each work-item and using vector's operations.
new performance tests were added
2013-12-19 22:56:46 +04:00
Andrey Pavlenko
b674cd8571 Merge pull request #2007 from krodyush:pullreq/2.4-opt-131202-haar 2013-12-19 16:46:58 +04:00
Andrey Pavlenko
8c91a1af71 Merge pull request #2005 from krodyush:pullreq/2.4-opt-131114-extractCovData 2013-12-19 16:46:40 +04:00
Andrey Pavlenko
22a3cf0fba Merge pull request #2008 from krodyush:pullreq/2.4-opt-131209-hog 2013-12-19 16:14:42 +04:00
Andrey Pavlenko
0cea828a10 Merge pull request #2006 from krodyush:pullreq/2.4-opt-131120-gfft 2013-12-19 13:48:40 +04:00
krodyush
1ae71fe205 intel device guard was added because of perf degradation on some non intel platform. 2013-12-18 14:27:51 +04:00
krodyush
ea0c9b7f5c GFFT fix for linux build 2013-12-17 17:12:57 +04:00
krodyush
dfe7c98090 optimize separable filter by
Added "sep_filter_singlepass" kernel that performs separable filtering in one kernel call
Added appropriate host part - sepFilter2D_SinglePass function and SingleStepSeparableFilterEngine_GPU class
Changed function declarations to enable their usage
2013-12-17 14:09:06 +04:00
krodyush
f3ee1c3d2f Changes the datatype of the angle of the gradient for Intel platforms. 2013-12-17 14:06:14 +04:00
krodyush
917b883cf0 remove extra calculations from haar to be consistent with native implementation 2013-12-17 14:04:10 +04:00
krodyush
a63576e76d HOST side optimization for GFFT 2013-12-17 14:02:57 +04:00
krodyush
de431609db optimize Dx and Dy calcualtion to make it as single opencl kernel 2013-12-17 14:01:01 +04:00
Alexander Alekhin
17ca7f9545 ocl: add support for initialization from user-provided OpenCL handles 2013-12-12 19:59:22 +04:00
Alexander Alekhin
740b1f235e ocl: implemented per-thread OpenCL command queue 2013-12-11 19:12:09 +04:00
Andrey Pavlenko
72cfff4c59 Merge pull request #1940 from pentschev:ocl_bfm_oclMat_ptr_fix_2.4 2013-12-06 15:05:34 +04:00
Andrey Pavlenko
b0b199ee8a Merge pull request #1929 from alalek:ocl_haar_amd_beta 2013-12-06 14:56:47 +04:00
Peter Andreas Entschev
3bc952ed34 ocl::BruteForceMatcher fix wrong use of oclMat::ptr().
The oclMat::ptr() method was mistakenly used in ocl::BruteForceMatcher to pass a pointer to a oclMat object. The ptr() method returns a uchar pointer to the cl_mem data structure and this method will be removed.
2013-12-05 19:27:10 -02:00
Andrey Pavlenko
9dea590ada Merge pull request #1933 from gongzg:fix-ocl-kernel-2.4 2013-12-05 17:05:25 +04:00
Alexander Alekhin
3dcddad88a ocl: added workaround into Haar kernels 2013-12-05 16:56:01 +04:00
Zhigang Gong
6ce03b0484 Fixed some implicitly type conversions between vector and scalar data type.
There are some mixed implicitly/explicitly type conversion between
scalar and vector. Although the spec allows those conversion, I prefer
to make them consistent and use explicitly all the cases.

Signed-off-by: Zhigang Gong <zhigang.gong@intel.com>
2013-12-05 09:35:21 +08:00