Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
4c5593b6
Commit
4c5593b6
authored
Nov 25, 2013
by
Roman Donchenko
Committed by
OpenCV Buildbot
Nov 25, 2013
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1837 from asmorkalov:android_opencl
parents
06f6f74e
514e9722
Show whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
262 additions
and
47 deletions
+262
-47
CMakeLists.txt
CMakeLists.txt
+1
-1
arithm.cpp
modules/ocl/src/arithm.cpp
+58
-3
brute_force_matcher.cpp
modules/ocl/src/brute_force_matcher.cpp
+3
-2
build_warps.cpp
modules/ocl/src/build_warps.cpp
+20
-6
cl_context.cpp
modules/ocl/src/cl_context.cpp
+2
-0
color.cpp
modules/ocl/src/color.cpp
+30
-5
filtering.cpp
modules/ocl/src/filtering.cpp
+16
-0
imgproc.cpp
modules/ocl/src/imgproc.cpp
+22
-1
matrix_operations.cpp
modules/ocl/src/matrix_operations.cpp
+11
-2
mssegmentation.cpp
modules/ocl/src/mssegmentation.cpp
+1
-1
brute_force_match.cl
modules/ocl/src/opencl/brute_force_match.cl
+4
-4
imgproc_clahe.cl
modules/ocl/src/opencl/imgproc_clahe.cl
+3
-3
kernel_stablesort_by_key.cl
modules/ocl/src/opencl/kernel_stablesort_by_key.cl
+2
-2
stereobm.cl
modules/ocl/src/opencl/stereobm.cl
+6
-6
stereocsbp.cl
modules/ocl/src/opencl/stereocsbp.cl
+3
-3
svm.cl
modules/ocl/src/opencl/svm.cl
+6
-4
optical_flow_farneback.cpp
modules/ocl/src/optical_flow_farneback.cpp
+25
-0
sort_by_key.cpp
modules/ocl/src/sort_by_key.cpp
+22
-2
test_brute_force_matcher.cpp
modules/ocl/test/test_brute_force_matcher.cpp
+12
-0
test_filters.cpp
modules/ocl/test/test_filters.cpp
+5
-1
test_split_merge.cpp
modules/ocl/test/test_split_merge.cpp
+6
-0
run.py
modules/ts/misc/run.py
+4
-1
No files found.
CMakeLists.txt
View file @
4c5593b6
...
@@ -160,7 +160,7 @@ OCV_OPTION(WITH_DSHOW "Build HighGUI with DirectShow support" ON
...
@@ -160,7 +160,7 @@ OCV_OPTION(WITH_DSHOW "Build HighGUI with DirectShow support" ON
OCV_OPTION
(
WITH_MSMF
"Build HighGUI with Media Foundation support"
OFF IF WIN32
)
OCV_OPTION
(
WITH_MSMF
"Build HighGUI with Media Foundation support"
OFF IF WIN32
)
OCV_OPTION
(
WITH_XIMEA
"Include XIMEA cameras support"
OFF
IF
(
NOT ANDROID AND NOT APPLE
)
)
OCV_OPTION
(
WITH_XIMEA
"Include XIMEA cameras support"
OFF
IF
(
NOT ANDROID AND NOT APPLE
)
)
OCV_OPTION
(
WITH_XINE
"Include Xine support (GPL)"
OFF
IF
(
UNIX AND NOT APPLE AND NOT ANDROID
)
)
OCV_OPTION
(
WITH_XINE
"Include Xine support (GPL)"
OFF
IF
(
UNIX AND NOT APPLE AND NOT ANDROID
)
)
OCV_OPTION
(
WITH_OPENCL
"Include OpenCL Runtime support"
ON
IF
(
NOT
ANDROID AND NOT
IOS
)
)
OCV_OPTION
(
WITH_OPENCL
"Include OpenCL Runtime support"
ON
IF
(
NOT IOS
)
)
OCV_OPTION
(
WITH_OPENCLAMDFFT
"Include AMD OpenCL FFT library support"
ON
IF
(
NOT ANDROID AND NOT IOS
)
)
OCV_OPTION
(
WITH_OPENCLAMDFFT
"Include AMD OpenCL FFT library support"
ON
IF
(
NOT ANDROID AND NOT IOS
)
)
OCV_OPTION
(
WITH_OPENCLAMDBLAS
"Include AMD OpenCL BLAS library support"
ON
IF
(
NOT ANDROID AND NOT IOS
)
)
OCV_OPTION
(
WITH_OPENCLAMDBLAS
"Include AMD OpenCL BLAS library support"
ON
IF
(
NOT ANDROID AND NOT IOS
)
)
...
...
modules/ocl/src/arithm.cpp
View file @
4c5593b6
...
@@ -103,7 +103,11 @@ static void arithmetic_run_generic(const oclMat &src1, const oclMat &src2, const
...
@@ -103,7 +103,11 @@ static void arithmetic_run_generic(const oclMat &src1, const oclMat &src2, const
int
dststep1
=
dst
.
step
/
dst
.
elemSize
(),
dstoffset1
=
dst
.
offset
/
dst
.
elemSize
();
int
dststep1
=
dst
.
step
/
dst
.
elemSize
(),
dstoffset1
=
dst
.
offset
/
dst
.
elemSize
();
std
::
vector
<
uchar
>
m
;
std
::
vector
<
uchar
>
m
;
#ifdef ANDROID
size_t
localThreads
[
3
]
=
{
16
,
10
,
1
};
#else
size_t
localThreads
[
3
]
=
{
16
,
16
,
1
};
size_t
localThreads
[
3
]
=
{
16
,
16
,
1
};
#endif
size_t
globalThreads
[
3
]
=
{
dst
.
cols
,
dst
.
rows
,
1
};
size_t
globalThreads
[
3
]
=
{
dst
.
cols
,
dst
.
rows
,
1
};
std
::
string
kernelName
=
"arithm_binary_op"
;
std
::
string
kernelName
=
"arithm_binary_op"
;
...
@@ -337,10 +341,15 @@ static void arithmetic_sum_buffer_run(const oclMat &src, cl_mem &dst, int groupn
...
@@ -337,10 +341,15 @@ static void arithmetic_sum_buffer_run(const oclMat &src, cl_mem &dst, int groupn
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
)
,
(
void
*
)
&
src
.
data
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
)
,
(
void
*
)
&
src
.
data
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
)
,
(
void
*
)
&
dst
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
)
,
(
void
*
)
&
dst
));
size_t
globalThreads
[
3
]
=
{
groupnum
*
256
,
1
,
1
};
size_t
globalThreads
[
3
]
=
{
groupnum
*
256
,
1
,
1
};
size_t
localThreads
[
3
]
=
{
256
,
1
,
1
};
#ifdef ANDROID
openCLExecuteKernel
(
src
.
clCxt
,
&
arithm_sum
,
"arithm_op_sum"
,
globalThreads
,
NULL
,
args
,
-
1
,
-
1
,
buildOptions
.
c_str
());
#else
size_t
localThreads
[
3
]
=
{
256
,
1
,
1
};
openCLExecuteKernel
(
src
.
clCxt
,
&
arithm_sum
,
"arithm_op_sum"
,
globalThreads
,
localThreads
,
openCLExecuteKernel
(
src
.
clCxt
,
&
arithm_sum
,
"arithm_op_sum"
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
,
buildOptions
.
c_str
());
args
,
-
1
,
-
1
,
buildOptions
.
c_str
());
#endif
}
}
template
<
typename
T
>
template
<
typename
T
>
...
@@ -515,6 +524,7 @@ static void arithmetic_minMax_run(const oclMat &src, const oclMat & mask, cl_mem
...
@@ -515,6 +524,7 @@ static void arithmetic_minMax_run(const oclMat &src, const oclMat & mask, cl_mem
size_t
globalThreads
[
3
]
=
{
groupnum
*
256
,
1
,
1
};
size_t
globalThreads
[
3
]
=
{
groupnum
*
256
,
1
,
1
};
size_t
localThreads
[
3
]
=
{
256
,
1
,
1
};
size_t
localThreads
[
3
]
=
{
256
,
1
,
1
};
// kernel use fixed grid size, replace lt on NULL is imposible without kernel changes
openCLExecuteKernel
(
src
.
clCxt
,
&
arithm_minMax
,
kernelName
,
globalThreads
,
localThreads
,
openCLExecuteKernel
(
src
.
clCxt
,
&
arithm_minMax
,
kernelName
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
,
buildOptions
.
c_str
());
args
,
-
1
,
-
1
,
buildOptions
.
c_str
());
}
}
...
@@ -622,7 +632,11 @@ static void arithm_absdiff_nonsaturate_run(const oclMat & src1, const oclMat & s
...
@@ -622,7 +632,11 @@ static void arithm_absdiff_nonsaturate_run(const oclMat & src1, const oclMat & s
int
diffstep1
=
diff
.
step
/
diff
.
elemSize
(),
diffoffset1
=
diff
.
offset
/
diff
.
elemSize
();
int
diffstep1
=
diff
.
step
/
diff
.
elemSize
(),
diffoffset1
=
diff
.
offset
/
diff
.
elemSize
();
string
kernelName
=
"arithm_absdiff_nonsaturate"
;
string
kernelName
=
"arithm_absdiff_nonsaturate"
;
#ifdef ANDROID
size_t
localThreads
[
3
]
=
{
16
,
10
,
1
};
#else
size_t
localThreads
[
3
]
=
{
16
,
16
,
1
};
size_t
localThreads
[
3
]
=
{
16
,
16
,
1
};
#endif
size_t
globalThreads
[
3
]
=
{
diff
.
cols
,
diff
.
rows
,
1
};
size_t
globalThreads
[
3
]
=
{
diff
.
cols
,
diff
.
rows
,
1
};
const
char
*
const
typeMap
[]
=
{
"uchar"
,
"char"
,
"ushort"
,
"short"
,
"int"
,
"float"
,
"double"
};
const
char
*
const
typeMap
[]
=
{
"uchar"
,
"char"
,
"ushort"
,
"short"
,
"int"
,
"float"
,
"double"
};
...
@@ -842,7 +856,11 @@ static void arithmetic_exp_log_run(const oclMat &src, oclMat &dst, string kernel
...
@@ -842,7 +856,11 @@ static void arithmetic_exp_log_run(const oclMat &src, oclMat &dst, string kernel
int
srcoffset1
=
src
.
offset
/
src
.
elemSize1
(),
dstoffset1
=
dst
.
offset
/
dst
.
elemSize1
();
int
srcoffset1
=
src
.
offset
/
src
.
elemSize1
(),
dstoffset1
=
dst
.
offset
/
dst
.
elemSize1
();
int
srcstep1
=
src
.
step1
(),
dststep1
=
dst
.
step1
();
int
srcstep1
=
src
.
step1
(),
dststep1
=
dst
.
step1
();
#ifdef ANDROID
size_t
localThreads
[
3
]
=
{
64
,
2
,
1
};
#else
size_t
localThreads
[
3
]
=
{
64
,
4
,
1
};
size_t
localThreads
[
3
]
=
{
64
,
4
,
1
};
#endif
size_t
globalThreads
[
3
]
=
{
dst
.
cols
,
dst
.
rows
,
1
};
size_t
globalThreads
[
3
]
=
{
dst
.
cols
,
dst
.
rows
,
1
};
std
::
string
buildOptions
=
format
(
"-D srcT=%s"
,
std
::
string
buildOptions
=
format
(
"-D srcT=%s"
,
...
@@ -880,7 +898,11 @@ static void arithmetic_magnitude_phase_run(const oclMat &src1, const oclMat &src
...
@@ -880,7 +898,11 @@ static void arithmetic_magnitude_phase_run(const oclMat &src1, const oclMat &src
{
{
int
depth
=
dst
.
depth
();
int
depth
=
dst
.
depth
();
#ifdef ANDROID
size_t
localThreads
[
3
]
=
{
64
,
2
,
1
};
#else
size_t
localThreads
[
3
]
=
{
64
,
4
,
1
};
size_t
localThreads
[
3
]
=
{
64
,
4
,
1
};
#endif
size_t
globalThreads
[
3
]
=
{
dst
.
cols
,
dst
.
rows
,
1
};
size_t
globalThreads
[
3
]
=
{
dst
.
cols
,
dst
.
rows
,
1
};
int
src1_step
=
src1
.
step
/
src1
.
elemSize
(),
src1_offset
=
src1
.
offset
/
src1
.
elemSize
();
int
src1_step
=
src1
.
step
/
src1
.
elemSize
(),
src1_offset
=
src1
.
offset
/
src1
.
elemSize
();
...
@@ -928,7 +950,11 @@ static void arithmetic_phase_run(const oclMat &src1, const oclMat &src2, oclMat
...
@@ -928,7 +950,11 @@ static void arithmetic_phase_run(const oclMat &src1, const oclMat &src2, oclMat
int
src2step1
=
src2
.
step
/
src2
.
elemSize1
(),
src2offset1
=
src2
.
offset
/
src2
.
elemSize1
();
int
src2step1
=
src2
.
step
/
src2
.
elemSize1
(),
src2offset1
=
src2
.
offset
/
src2
.
elemSize1
();
int
dststep1
=
dst
.
step
/
dst
.
elemSize1
(),
dstoffset1
=
dst
.
offset
/
dst
.
elemSize1
();
int
dststep1
=
dst
.
step
/
dst
.
elemSize1
(),
dstoffset1
=
dst
.
offset
/
dst
.
elemSize1
();
#ifdef ANDROID
size_t
localThreads
[
3
]
=
{
64
,
2
,
1
};
#else
size_t
localThreads
[
3
]
=
{
64
,
4
,
1
};
size_t
localThreads
[
3
]
=
{
64
,
4
,
1
};
#endif
size_t
globalThreads
[
3
]
=
{
cols1
,
dst
.
rows
,
1
};
size_t
globalThreads
[
3
]
=
{
cols1
,
dst
.
rows
,
1
};
vector
<
pair
<
size_t
,
const
void
*>
>
args
;
vector
<
pair
<
size_t
,
const
void
*>
>
args
;
...
@@ -974,7 +1000,11 @@ static void arithmetic_cartToPolar_run(const oclMat &src1, const oclMat &src2, o
...
@@ -974,7 +1000,11 @@ static void arithmetic_cartToPolar_run(const oclMat &src1, const oclMat &src2, o
int
cols
=
src1
.
cols
*
channels
;
int
cols
=
src1
.
cols
*
channels
;
#ifdef ANDROID
size_t
localThreads
[
3
]
=
{
64
,
2
,
1
};
#else
size_t
localThreads
[
3
]
=
{
64
,
4
,
1
};
size_t
localThreads
[
3
]
=
{
64
,
4
,
1
};
#endif
size_t
globalThreads
[
3
]
=
{
cols
,
src1
.
rows
,
1
};
size_t
globalThreads
[
3
]
=
{
cols
,
src1
.
rows
,
1
};
int
src1_step
=
src1
.
step
/
src1
.
elemSize1
(),
src1_offset
=
src1
.
offset
/
src1
.
elemSize1
();
int
src1_step
=
src1
.
step
/
src1
.
elemSize1
(),
src1_offset
=
src1
.
offset
/
src1
.
elemSize1
();
...
@@ -1028,7 +1058,11 @@ static void arithmetic_ptc_run(const oclMat &src1, const oclMat &src2, oclMat &d
...
@@ -1028,7 +1058,11 @@ static void arithmetic_ptc_run(const oclMat &src1, const oclMat &src2, oclMat &d
int
channels
=
src2
.
oclchannels
(),
depth
=
src2
.
depth
();
int
channels
=
src2
.
oclchannels
(),
depth
=
src2
.
depth
();
int
cols
=
src2
.
cols
*
channels
,
rows
=
src2
.
rows
;
int
cols
=
src2
.
cols
*
channels
,
rows
=
src2
.
rows
;
#ifdef ANDROID
size_t
localThreads
[
3
]
=
{
64
,
2
,
1
};
#else
size_t
localThreads
[
3
]
=
{
64
,
4
,
1
};
size_t
localThreads
[
3
]
=
{
64
,
4
,
1
};
#endif
size_t
globalThreads
[
3
]
=
{
cols
,
rows
,
1
};
size_t
globalThreads
[
3
]
=
{
cols
,
rows
,
1
};
int
src1_step
=
src1
.
step
/
src1
.
elemSize1
(),
src1_offset
=
src1
.
offset
/
src1
.
elemSize1
();
int
src1_step
=
src1
.
step
/
src1
.
elemSize1
(),
src1_offset
=
src1
.
offset
/
src1
.
elemSize1
();
...
@@ -1104,6 +1138,8 @@ static void arithmetic_minMaxLoc_run(const oclMat &src, cl_mem &dst, int vlen ,
...
@@ -1104,6 +1138,8 @@ static void arithmetic_minMaxLoc_run(const oclMat &src, cl_mem &dst, int vlen ,
char
build_options
[
50
];
char
build_options
[
50
];
sprintf
(
build_options
,
"-D DEPTH_%d -D REPEAT_S%d -D REPEAT_E%d"
,
src
.
depth
(),
repeat_s
,
repeat_e
);
sprintf
(
build_options
,
"-D DEPTH_%d -D REPEAT_S%d -D REPEAT_E%d"
,
src
.
depth
(),
repeat_s
,
repeat_e
);
size_t
gt
[
3
]
=
{
groupnum
*
256
,
1
,
1
},
lt
[
3
]
=
{
256
,
1
,
1
};
size_t
gt
[
3
]
=
{
groupnum
*
256
,
1
,
1
},
lt
[
3
]
=
{
256
,
1
,
1
};
// kernel use fixed grid size, replace lt on NULL is imposible without kernel changes
openCLExecuteKernel
(
src
.
clCxt
,
&
arithm_minMaxLoc
,
"arithm_op_minMaxLoc"
,
gt
,
lt
,
args
,
-
1
,
-
1
,
build_options
);
openCLExecuteKernel
(
src
.
clCxt
,
&
arithm_minMaxLoc
,
"arithm_op_minMaxLoc"
,
gt
,
lt
,
args
,
-
1
,
-
1
,
build_options
);
}
}
...
@@ -1133,6 +1169,7 @@ static void arithmetic_minMaxLoc_mask_run(const oclMat &src, const oclMat &mask,
...
@@ -1133,6 +1169,7 @@ static void arithmetic_minMaxLoc_mask_run(const oclMat &src, const oclMat &mask,
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
)
,
(
void
*
)
&
mask
.
data
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
)
,
(
void
*
)
&
mask
.
data
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
)
,
(
void
*
)
&
dst
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
)
,
(
void
*
)
&
dst
));
// kernel use fixed grid size, replace lt on NULL is imposible without kernel changes
openCLExecuteKernel
(
src
.
clCxt
,
&
arithm_minMaxLoc_mask
,
"arithm_op_minMaxLoc_mask"
,
gt
,
lt
,
args
,
-
1
,
-
1
,
build_options
);
openCLExecuteKernel
(
src
.
clCxt
,
&
arithm_minMaxLoc_mask
,
"arithm_op_minMaxLoc_mask"
,
gt
,
lt
,
args
,
-
1
,
-
1
,
build_options
);
}
}
}
}
...
@@ -1250,10 +1287,15 @@ static void arithmetic_countNonZero_run(const oclMat &src, cl_mem &dst, int grou
...
@@ -1250,10 +1287,15 @@ static void arithmetic_countNonZero_run(const oclMat &src, cl_mem &dst, int grou
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
)
,
(
void
*
)
&
dst
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
)
,
(
void
*
)
&
dst
));
size_t
globalThreads
[
3
]
=
{
groupnum
*
256
,
1
,
1
};
size_t
globalThreads
[
3
]
=
{
groupnum
*
256
,
1
,
1
};
size_t
localThreads
[
3
]
=
{
256
,
1
,
1
};
#ifdef ANDROID
openCLExecuteKernel
(
src
.
clCxt
,
&
arithm_nonzero
,
kernelName
,
globalThreads
,
NULL
,
args
,
-
1
,
-
1
,
buildOptions
.
c_str
());
#else
size_t
localThreads
[
3
]
=
{
256
,
1
,
1
};
openCLExecuteKernel
(
src
.
clCxt
,
&
arithm_nonzero
,
kernelName
,
globalThreads
,
localThreads
,
openCLExecuteKernel
(
src
.
clCxt
,
&
arithm_nonzero
,
kernelName
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
,
buildOptions
.
c_str
());
args
,
-
1
,
-
1
,
buildOptions
.
c_str
());
#endif
}
}
int
cv
::
ocl
::
countNonZero
(
const
oclMat
&
src
)
int
cv
::
ocl
::
countNonZero
(
const
oclMat
&
src
)
...
@@ -1311,7 +1353,11 @@ static void bitwise_unary_run(const oclMat &src1, oclMat &dst, string kernelName
...
@@ -1311,7 +1353,11 @@ static void bitwise_unary_run(const oclMat &src1, oclMat &dst, string kernelName
int
offset_cols
=
(
dst
.
offset
/
dst
.
elemSize1
())
&
(
vector_length
-
1
);
int
offset_cols
=
(
dst
.
offset
/
dst
.
elemSize1
())
&
(
vector_length
-
1
);
int
cols
=
divUp
(
dst
.
cols
*
channels
+
offset_cols
,
vector_length
);
int
cols
=
divUp
(
dst
.
cols
*
channels
+
offset_cols
,
vector_length
);
#ifdef ANDROID
size_t
localThreads
[
3
]
=
{
64
,
2
,
1
};
#else
size_t
localThreads
[
3
]
=
{
64
,
4
,
1
};
size_t
localThreads
[
3
]
=
{
64
,
4
,
1
};
#endif
size_t
globalThreads
[
3
]
=
{
cols
,
dst
.
rows
,
1
};
size_t
globalThreads
[
3
]
=
{
cols
,
dst
.
rows
,
1
};
int
dst_step1
=
dst
.
cols
*
dst
.
elemSize
();
int
dst_step1
=
dst
.
cols
*
dst
.
elemSize
();
...
@@ -1351,7 +1397,11 @@ static void bitwise_binary_run(const oclMat &src1, const oclMat &src2, const Sca
...
@@ -1351,7 +1397,11 @@ static void bitwise_binary_run(const oclMat &src1, const oclMat &src2, const Sca
operationMap
[
operationType
],
vlenstr
.
c_str
(),
vlenstr
.
c_str
(),
operationMap
[
operationType
],
vlenstr
.
c_str
(),
vlenstr
.
c_str
(),
(
int
)
src1
.
elemSize
(),
vlen
,
vlenstr
.
c_str
());
(
int
)
src1
.
elemSize
(),
vlen
,
vlenstr
.
c_str
());
#ifdef ANDROID
size_t
localThreads
[
3
]
=
{
16
,
10
,
1
};
#else
size_t
localThreads
[
3
]
=
{
16
,
16
,
1
};
size_t
localThreads
[
3
]
=
{
16
,
16
,
1
};
#endif
size_t
globalThreads
[
3
]
=
{
dst
.
cols
,
dst
.
rows
,
1
};
size_t
globalThreads
[
3
]
=
{
dst
.
cols
,
dst
.
rows
,
1
};
vector
<
pair
<
size_t
,
const
void
*>
>
args
;
vector
<
pair
<
size_t
,
const
void
*>
>
args
;
...
@@ -1599,7 +1649,6 @@ void cv::ocl::addWeighted(const oclMat &src1, double alpha, const oclMat &src2,
...
@@ -1599,7 +1649,6 @@ void cv::ocl::addWeighted(const oclMat &src1, double alpha, const oclMat &src2,
typeMap
[
depth
],
hasDouble
?
"double"
:
"float"
,
typeMap
[
depth
],
typeMap
[
depth
],
hasDouble
?
"double"
:
"float"
,
typeMap
[
depth
],
depth
>=
CV_32F
?
""
:
"_sat_rte"
);
depth
>=
CV_32F
?
""
:
"_sat_rte"
);
size_t
localThreads
[
3
]
=
{
256
,
1
,
1
};
size_t
globalThreads
[
3
]
=
{
cols1
,
dst
.
rows
,
1
};
size_t
globalThreads
[
3
]
=
{
cols1
,
dst
.
rows
,
1
};
float
alpha_f
=
static_cast
<
float
>
(
alpha
),
float
alpha_f
=
static_cast
<
float
>
(
alpha
),
...
@@ -1633,8 +1682,14 @@ void cv::ocl::addWeighted(const oclMat &src1, double alpha, const oclMat &src2,
...
@@ -1633,8 +1682,14 @@ void cv::ocl::addWeighted(const oclMat &src1, double alpha, const oclMat &src2,
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
),
(
void
*
)
&
cols1
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
),
(
void
*
)
&
cols1
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
),
(
void
*
)
&
src1
.
rows
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
),
(
void
*
)
&
src1
.
rows
));
#ifdef ANDROID
openCLExecuteKernel
(
clCxt
,
&
arithm_addWeighted
,
"addWeighted"
,
globalThreads
,
NULL
,
args
,
-
1
,
-
1
,
buildOptions
.
c_str
());
#else
size_t
localThreads
[
3
]
=
{
256
,
1
,
1
};
openCLExecuteKernel
(
clCxt
,
&
arithm_addWeighted
,
"addWeighted"
,
globalThreads
,
localThreads
,
openCLExecuteKernel
(
clCxt
,
&
arithm_addWeighted
,
"addWeighted"
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
,
buildOptions
.
c_str
());
args
,
-
1
,
-
1
,
buildOptions
.
c_str
());
#endif
}
}
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
...
...
modules/ocl/src/brute_force_matcher.cpp
View file @
4c5593b6
...
@@ -48,6 +48,7 @@
...
@@ -48,6 +48,7 @@
#include <functional>
#include <functional>
#include <iterator>
#include <iterator>
#include <vector>
#include <vector>
#include <algorithm>
#include "opencl_kernels.hpp"
#include "opencl_kernels.hpp"
using
namespace
cv
;
using
namespace
cv
;
...
@@ -1073,7 +1074,7 @@ void cv::ocl::BruteForceMatcher_OCL_base::radiusMatchConvert(const Mat &trainIdx
...
@@ -1073,7 +1074,7 @@ void cv::ocl::BruteForceMatcher_OCL_base::radiusMatchConvert(const Mat &trainIdx
curMatches
[
i
]
=
m
;
curMatches
[
i
]
=
m
;
}
}
sort
(
curMatches
.
begin
(),
curMatches
.
end
());
s
td
::
s
ort
(
curMatches
.
begin
(),
curMatches
.
end
());
}
}
}
}
...
@@ -1200,7 +1201,7 @@ void cv::ocl::BruteForceMatcher_OCL_base::radiusMatchConvert(const Mat &trainIdx
...
@@ -1200,7 +1201,7 @@ void cv::ocl::BruteForceMatcher_OCL_base::radiusMatchConvert(const Mat &trainIdx
curMatches
.
push_back
(
m
);
curMatches
.
push_back
(
m
);
}
}
sort
(
curMatches
.
begin
(),
curMatches
.
end
());
s
td
::
s
ort
(
curMatches
.
begin
(),
curMatches
.
end
());
}
}
}
}
...
...
modules/ocl/src/build_warps.cpp
View file @
4c5593b6
...
@@ -92,8 +92,11 @@ void cv::ocl::buildWarpPlaneMaps(Size /*src_size*/, Rect dst_roi, const Mat &K,
...
@@ -92,8 +92,11 @@ void cv::ocl::buildWarpPlaneMaps(Size /*src_size*/, Rect dst_roi, const Mat &K,
args
.
push_back
(
make_pair
(
sizeof
(
cl_float
),
(
void
*
)
&
scale
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_float
),
(
void
*
)
&
scale
));
size_t
globalThreads
[
3
]
=
{
xmap
.
cols
,
xmap
.
rows
,
1
};
size_t
globalThreads
[
3
]
=
{
xmap
.
cols
,
xmap
.
rows
,
1
};
size_t
localThreads
[
3
]
=
{
32
,
8
,
1
};
#ifdef ANDROID
size_t
localThreads
[
3
]
=
{
32
,
4
,
1
};
#else
size_t
localThreads
[
3
]
=
{
32
,
8
,
1
};
#endif
openCLExecuteKernel
(
Context
::
getContext
(),
&
build_warps
,
"buildWarpPlaneMaps"
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
);
openCLExecuteKernel
(
Context
::
getContext
(),
&
build_warps
,
"buildWarpPlaneMaps"
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
);
}
}
...
@@ -135,8 +138,11 @@ void cv::ocl::buildWarpCylindricalMaps(Size /*src_size*/, Rect dst_roi, const Ma
...
@@ -135,8 +138,11 @@ void cv::ocl::buildWarpCylindricalMaps(Size /*src_size*/, Rect dst_roi, const Ma
args
.
push_back
(
make_pair
(
sizeof
(
cl_float
),
(
void
*
)
&
scale
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_float
),
(
void
*
)
&
scale
));
size_t
globalThreads
[
3
]
=
{
xmap
.
cols
,
xmap
.
rows
,
1
};
size_t
globalThreads
[
3
]
=
{
xmap
.
cols
,
xmap
.
rows
,
1
};
size_t
localThreads
[
3
]
=
{
32
,
8
,
1
};
#ifdef ANDROID
size_t
localThreads
[
3
]
=
{
32
,
1
,
1
};
#else
size_t
localThreads
[
3
]
=
{
32
,
8
,
1
};
#endif
openCLExecuteKernel
(
Context
::
getContext
(),
&
build_warps
,
"buildWarpCylindricalMaps"
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
);
openCLExecuteKernel
(
Context
::
getContext
(),
&
build_warps
,
"buildWarpCylindricalMaps"
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
);
}
}
...
@@ -178,7 +184,11 @@ void cv::ocl::buildWarpSphericalMaps(Size /*src_size*/, Rect dst_roi, const Mat
...
@@ -178,7 +184,11 @@ void cv::ocl::buildWarpSphericalMaps(Size /*src_size*/, Rect dst_roi, const Mat
args
.
push_back
(
make_pair
(
sizeof
(
cl_float
),
(
void
*
)
&
scale
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_float
),
(
void
*
)
&
scale
));
size_t
globalThreads
[
3
]
=
{
xmap
.
cols
,
xmap
.
rows
,
1
};
size_t
globalThreads
[
3
]
=
{
xmap
.
cols
,
xmap
.
rows
,
1
};
size_t
localThreads
[
3
]
=
{
32
,
8
,
1
};
#ifdef ANDROID
size_t
localThreads
[
3
]
=
{
32
,
4
,
1
};
#else
size_t
localThreads
[
3
]
=
{
32
,
8
,
1
};
#endif
openCLExecuteKernel
(
Context
::
getContext
(),
&
build_warps
,
"buildWarpSphericalMaps"
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
);
openCLExecuteKernel
(
Context
::
getContext
(),
&
build_warps
,
"buildWarpSphericalMaps"
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
);
}
}
...
@@ -222,7 +232,11 @@ void cv::ocl::buildWarpAffineMaps(const Mat &M, bool inverse, Size dsize, oclMat
...
@@ -222,7 +232,11 @@ void cv::ocl::buildWarpAffineMaps(const Mat &M, bool inverse, Size dsize, oclMat
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
),
(
void
*
)
&
ymap_offset
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
),
(
void
*
)
&
ymap_offset
));
size_t
globalThreads
[
3
]
=
{
xmap
.
cols
,
xmap
.
rows
,
1
};
size_t
globalThreads
[
3
]
=
{
xmap
.
cols
,
xmap
.
rows
,
1
};
size_t
localThreads
[
3
]
=
{
32
,
8
,
1
};
#ifdef ANDROID
size_t
localThreads
[
3
]
=
{
32
,
4
,
1
};
#else
size_t
localThreads
[
3
]
=
{
32
,
8
,
1
};
#endif
openCLExecuteKernel
(
Context
::
getContext
(),
&
build_warps
,
"buildWarpAffineMaps"
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
);
openCLExecuteKernel
(
Context
::
getContext
(),
&
build_warps
,
"buildWarpAffineMaps"
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
);
}
}
...
...
modules/ocl/src/cl_context.cpp
View file @
4c5593b6
...
@@ -46,6 +46,8 @@
...
@@ -46,6 +46,8 @@
//M*/
//M*/
#include "precomp.hpp"
#include "precomp.hpp"
#include <stdlib.h>
#include <ctype.h>
#include <iomanip>
#include <iomanip>
#include <fstream>
#include <fstream>
#include "cl_programcache.hpp"
#include "cl_programcache.hpp"
...
...
modules/ocl/src/color.cpp
View file @
4c5593b6
...
@@ -77,7 +77,12 @@ static void fromRGB_caller(const oclMat &src, oclMat &dst, int bidx, const std::
...
@@ -77,7 +77,12 @@ static void fromRGB_caller(const oclMat &src, oclMat &dst, int bidx, const std::
if
(
!
data2
.
empty
())
if
(
!
data2
.
empty
())
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
)
,
(
void
*
)
&
data2
.
data
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
)
,
(
void
*
)
&
data2
.
data
));
size_t
gt
[
3
]
=
{
dst
.
cols
,
dst
.
rows
,
1
},
lt
[
3
]
=
{
16
,
16
,
1
};
size_t
gt
[
3
]
=
{
dst
.
cols
,
dst
.
rows
,
1
};
#ifdef ANDROID
size_t
lt
[
3
]
=
{
16
,
10
,
1
};
#else
size_t
lt
[
3
]
=
{
16
,
16
,
1
};
#endif
openCLExecuteKernel
(
src
.
clCxt
,
&
cvt_color
,
kernelName
.
c_str
(),
gt
,
lt
,
args
,
-
1
,
-
1
,
build_options
.
c_str
());
openCLExecuteKernel
(
src
.
clCxt
,
&
cvt_color
,
kernelName
.
c_str
(),
gt
,
lt
,
args
,
-
1
,
-
1
,
build_options
.
c_str
());
}
}
...
@@ -105,7 +110,12 @@ static void toRGB_caller(const oclMat &src, oclMat &dst, int bidx, const std::st
...
@@ -105,7 +110,12 @@ static void toRGB_caller(const oclMat &src, oclMat &dst, int bidx, const std::st
if
(
!
data
.
empty
())
if
(
!
data
.
empty
())
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
)
,
(
void
*
)
&
data
.
data
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_mem
)
,
(
void
*
)
&
data
.
data
));
size_t
gt
[
3
]
=
{
dst
.
cols
,
dst
.
rows
,
1
},
lt
[
3
]
=
{
16
,
16
,
1
};
size_t
gt
[
3
]
=
{
src
.
cols
,
src
.
rows
,
1
};
#ifdef ANDROID
size_t
lt
[
3
]
=
{
16
,
10
,
1
};
#else
size_t
lt
[
3
]
=
{
16
,
16
,
1
};
#endif
openCLExecuteKernel
(
src
.
clCxt
,
&
cvt_color
,
kernelName
.
c_str
(),
gt
,
lt
,
args
,
-
1
,
-
1
,
build_options
.
c_str
());
openCLExecuteKernel
(
src
.
clCxt
,
&
cvt_color
,
kernelName
.
c_str
(),
gt
,
lt
,
args
,
-
1
,
-
1
,
build_options
.
c_str
());
}
}
...
@@ -126,7 +136,12 @@ static void RGB_caller(const oclMat &src, oclMat &dst, bool reverse)
...
@@ -126,7 +136,12 @@ static void RGB_caller(const oclMat &src, oclMat &dst, bool reverse)
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
src_offset
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
src_offset
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
dst_offset
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
dst_offset
));
size_t
gt
[
3
]
=
{
dst
.
cols
,
dst
.
rows
,
1
},
lt
[
3
]
=
{
16
,
16
,
1
};
size_t
gt
[
3
]
=
{
dst
.
cols
,
dst
.
rows
,
1
};
#ifdef ANDROID
size_t
lt
[
3
]
=
{
16
,
10
,
1
};
#else
size_t
lt
[
3
]
=
{
16
,
16
,
1
};
#endif
openCLExecuteKernel
(
src
.
clCxt
,
&
cvt_color
,
"RGB"
,
gt
,
lt
,
args
,
-
1
,
-
1
,
build_options
.
c_str
());
openCLExecuteKernel
(
src
.
clCxt
,
&
cvt_color
,
"RGB"
,
gt
,
lt
,
args
,
-
1
,
-
1
,
build_options
.
c_str
());
}
}
...
@@ -148,7 +163,12 @@ static void fromRGB5x5_caller(const oclMat &src, oclMat &dst, int bidx, int gree
...
@@ -148,7 +163,12 @@ static void fromRGB5x5_caller(const oclMat &src, oclMat &dst, int bidx, int gree
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
src_offset
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
src_offset
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
dst_offset
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
dst_offset
));
size_t
gt
[
3
]
=
{
dst
.
cols
,
dst
.
rows
,
1
},
lt
[
3
]
=
{
16
,
16
,
1
};
size_t
gt
[
3
]
=
{
dst
.
cols
,
dst
.
rows
,
1
};
#ifdef ANDROID
size_t
lt
[
3
]
=
{
16
,
10
,
1
};
#else
size_t
lt
[
3
]
=
{
16
,
16
,
1
};
#endif
openCLExecuteKernel
(
src
.
clCxt
,
&
cvt_color
,
kernelName
.
c_str
(),
gt
,
lt
,
args
,
-
1
,
-
1
,
build_options
.
c_str
());
openCLExecuteKernel
(
src
.
clCxt
,
&
cvt_color
,
kernelName
.
c_str
(),
gt
,
lt
,
args
,
-
1
,
-
1
,
build_options
.
c_str
());
}
}
...
@@ -170,7 +190,12 @@ static void toRGB5x5_caller(const oclMat &src, oclMat &dst, int bidx, int greenb
...
@@ -170,7 +190,12 @@ static void toRGB5x5_caller(const oclMat &src, oclMat &dst, int bidx, int greenb
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
src_offset
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
src_offset
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
dst_offset
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
)
,
(
void
*
)
&
dst_offset
));
size_t
gt
[
3
]
=
{
dst
.
cols
,
dst
.
rows
,
1
},
lt
[
3
]
=
{
16
,
16
,
1
};
size_t
gt
[
3
]
=
{
dst
.
cols
,
dst
.
rows
,
1
};
#ifdef ANDROID
size_t
lt
[
3
]
=
{
16
,
10
,
1
};
#else
size_t
lt
[
3
]
=
{
16
,
16
,
1
};
#endif
openCLExecuteKernel
(
src
.
clCxt
,
&
cvt_color
,
kernelName
.
c_str
(),
gt
,
lt
,
args
,
-
1
,
-
1
,
build_options
.
c_str
());
openCLExecuteKernel
(
src
.
clCxt
,
&
cvt_color
,
kernelName
.
c_str
(),
gt
,
lt
,
args
,
-
1
,
-
1
,
build_options
.
c_str
());
}
}
...
...
modules/ocl/src/filtering.cpp
View file @
4c5593b6
...
@@ -184,7 +184,11 @@ static void GPUErode(const oclMat &src, oclMat &dst, oclMat &mat_kernel,
...
@@ -184,7 +184,11 @@ static void GPUErode(const oclMat &src, oclMat &dst, oclMat &mat_kernel,
int
srcOffset_y
=
srcOffset
/
srcStep
;
int
srcOffset_y
=
srcOffset
/
srcStep
;
Context
*
clCxt
=
src
.
clCxt
;
Context
*
clCxt
=
src
.
clCxt
;
string
kernelName
;
string
kernelName
;
#ifdef ANDROID
size_t
localThreads
[
3
]
=
{
16
,
8
,
1
};
#else
size_t
localThreads
[
3
]
=
{
16
,
16
,
1
};
size_t
localThreads
[
3
]
=
{
16
,
16
,
1
};
#endif
size_t
globalThreads
[
3
]
=
{(
src
.
cols
+
localThreads
[
0
]
-
1
)
/
localThreads
[
0
]
*
localThreads
[
0
],
(
src
.
rows
+
localThreads
[
1
]
-
1
)
/
localThreads
[
1
]
*
localThreads
[
1
],
1
};
size_t
globalThreads
[
3
]
=
{(
src
.
cols
+
localThreads
[
0
]
-
1
)
/
localThreads
[
0
]
*
localThreads
[
0
],
(
src
.
rows
+
localThreads
[
1
]
-
1
)
/
localThreads
[
1
]
*
localThreads
[
1
],
1
};
if
(
src
.
type
()
==
CV_8UC1
)
if
(
src
.
type
()
==
CV_8UC1
)
...
@@ -264,7 +268,11 @@ static void GPUDilate(const oclMat &src, oclMat &dst, oclMat &mat_kernel,
...
@@ -264,7 +268,11 @@ static void GPUDilate(const oclMat &src, oclMat &dst, oclMat &mat_kernel,
int
srcOffset_y
=
srcOffset
/
srcStep
;
int
srcOffset_y
=
srcOffset
/
srcStep
;
Context
*
clCxt
=
src
.
clCxt
;
Context
*
clCxt
=
src
.
clCxt
;
string
kernelName
;
string
kernelName
;
#ifdef ANDROID
size_t
localThreads
[
3
]
=
{
16
,
10
,
1
};
#else
size_t
localThreads
[
3
]
=
{
16
,
16
,
1
};
size_t
localThreads
[
3
]
=
{
16
,
16
,
1
};
#endif
size_t
globalThreads
[
3
]
=
{(
src
.
cols
+
localThreads
[
0
]
-
1
)
/
localThreads
[
0
]
*
localThreads
[
0
],
size_t
globalThreads
[
3
]
=
{(
src
.
cols
+
localThreads
[
0
]
-
1
)
/
localThreads
[
0
]
*
localThreads
[
0
],
(
src
.
rows
+
localThreads
[
1
]
-
1
)
/
localThreads
[
1
]
*
localThreads
[
1
],
1
};
(
src
.
rows
+
localThreads
[
1
]
-
1
)
/
localThreads
[
1
]
*
localThreads
[
1
],
1
};
...
@@ -999,7 +1007,11 @@ void linearRowFilter_gpu(const oclMat &src, const oclMat &dst, oclMat mat_kernel
...
@@ -999,7 +1007,11 @@ void linearRowFilter_gpu(const oclMat &src, const oclMat &dst, oclMat mat_kernel
CV_Assert
(
ksize
==
(
anchor
<<
1
)
+
1
);
CV_Assert
(
ksize
==
(
anchor
<<
1
)
+
1
);
int
channels
=
src
.
oclchannels
();
int
channels
=
src
.
oclchannels
();
#ifdef ANDROID
size_t
localThreads
[
3
]
=
{
16
,
10
,
1
};
#else
size_t
localThreads
[
3
]
=
{
16
,
16
,
1
};
size_t
localThreads
[
3
]
=
{
16
,
16
,
1
};
#endif
size_t
globalThreads
[
3
]
=
{
dst
.
cols
,
dst
.
rows
,
1
};
size_t
globalThreads
[
3
]
=
{
dst
.
cols
,
dst
.
rows
,
1
};
const
char
*
const
borderMap
[]
=
{
"BORDER_CONSTANT"
,
"BORDER_REPLICATE"
,
"BORDER_REFLECT"
,
"BORDER_WRAP"
,
"BORDER_REFLECT_101"
};
const
char
*
const
borderMap
[]
=
{
"BORDER_CONSTANT"
,
"BORDER_REPLICATE"
,
"BORDER_REFLECT"
,
"BORDER_WRAP"
,
"BORDER_REFLECT_101"
};
...
@@ -1096,7 +1108,11 @@ void linearColumnFilter_gpu(const oclMat &src, const oclMat &dst, oclMat mat_ker
...
@@ -1096,7 +1108,11 @@ void linearColumnFilter_gpu(const oclMat &src, const oclMat &dst, oclMat mat_ker
Context
*
clCxt
=
src
.
clCxt
;
Context
*
clCxt
=
src
.
clCxt
;
int
channels
=
src
.
oclchannels
();
int
channels
=
src
.
oclchannels
();
#ifdef ANDROID
size_t
localThreads
[
3
]
=
{
16
,
10
,
1
};
#else
size_t
localThreads
[
3
]
=
{
16
,
16
,
1
};
size_t
localThreads
[
3
]
=
{
16
,
16
,
1
};
#endif
string
kernelName
=
"col_filter"
;
string
kernelName
=
"col_filter"
;
char
btype
[
30
];
char
btype
[
30
];
...
...
modules/ocl/src/imgproc.cpp
View file @
4c5593b6
...
@@ -229,7 +229,6 @@ namespace cv
...
@@ -229,7 +229,6 @@ namespace cv
CV_Error
(
CV_StsBadArg
,
"Unsupported map types"
);
CV_Error
(
CV_StsBadArg
,
"Unsupported map types"
);
int
ocn
=
dst
.
oclchannels
();
int
ocn
=
dst
.
oclchannels
();
size_t
localThreads
[
3
]
=
{
256
,
1
,
1
};
size_t
globalThreads
[
3
]
=
{
dst
.
cols
,
dst
.
rows
,
1
};
size_t
globalThreads
[
3
]
=
{
dst
.
cols
,
dst
.
rows
,
1
};
Mat
scalar
(
1
,
1
,
CV_MAKE_TYPE
(
dst
.
depth
(),
ocn
),
borderValue
);
Mat
scalar
(
1
,
1
,
CV_MAKE_TYPE
(
dst
.
depth
(),
ocn
),
borderValue
);
...
@@ -274,7 +273,12 @@ namespace cv
...
@@ -274,7 +273,12 @@ namespace cv
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
),
(
void
*
)
&
dst
.
rows
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
),
(
void
*
)
&
dst
.
rows
));
args
.
push_back
(
make_pair
(
scalar
.
elemSize
(),
(
void
*
)
scalar
.
data
));
args
.
push_back
(
make_pair
(
scalar
.
elemSize
(),
(
void
*
)
scalar
.
data
));
#ifdef ANDROID
openCLExecuteKernel
(
clCxt
,
&
imgproc_remap
,
kernelName
,
globalThreads
,
NULL
,
args
,
-
1
,
-
1
,
buildOptions
.
c_str
());
#else
size_t
localThreads
[
3
]
=
{
256
,
1
,
1
};
openCLExecuteKernel
(
clCxt
,
&
imgproc_remap
,
kernelName
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
,
buildOptions
.
c_str
());
openCLExecuteKernel
(
clCxt
,
&
imgproc_remap
,
kernelName
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
,
buildOptions
.
c_str
());
#endif
}
}
////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////
...
@@ -360,7 +364,11 @@ namespace cv
...
@@ -360,7 +364,11 @@ namespace cv
typeMap
[
src
.
depth
()],
channelMap
[
ocn
],
src
.
depth
()
<=
CV_32S
?
"_sat_rte"
:
""
);
typeMap
[
src
.
depth
()],
channelMap
[
ocn
],
src
.
depth
()
<=
CV_32S
?
"_sat_rte"
:
""
);
}
}
#ifdef ANDROID
size_t
blkSizeX
=
16
,
blkSizeY
=
8
;
#else
size_t
blkSizeX
=
16
,
blkSizeY
=
16
;
size_t
blkSizeX
=
16
,
blkSizeY
=
16
;
#endif
size_t
glbSizeX
;
size_t
glbSizeX
;
if
(
src
.
type
()
==
CV_8UC1
&&
interpolation
==
INTER_LINEAR
)
if
(
src
.
type
()
==
CV_8UC1
&&
interpolation
==
INTER_LINEAR
)
{
{
...
@@ -712,8 +720,13 @@ namespace cv
...
@@ -712,8 +720,13 @@ namespace cv
1
,
0
,
sizeof
(
float
)
*
2
*
3
,
float_coeffs
,
0
,
0
,
0
));
1
,
0
,
sizeof
(
float
)
*
2
*
3
,
float_coeffs
,
0
,
0
,
0
));
}
}
//TODO: improve this kernel
//TODO: improve this kernel
#ifdef ANDROID
size_t
blkSizeX
=
16
,
blkSizeY
=
4
;
#else
size_t
blkSizeX
=
16
,
blkSizeY
=
16
;
size_t
blkSizeX
=
16
,
blkSizeY
=
16
;
#endif
size_t
glbSizeX
;
size_t
glbSizeX
;
size_t
cols
;
size_t
cols
;
...
@@ -785,7 +798,11 @@ namespace cv
...
@@ -785,7 +798,11 @@ namespace cv
}
}
//TODO: improve this kernel
//TODO: improve this kernel
#ifdef ANDROID
size_t
blkSizeX
=
16
,
blkSizeY
=
8
;
#else
size_t
blkSizeX
=
16
,
blkSizeY
=
16
;
size_t
blkSizeX
=
16
,
blkSizeY
=
16
;
#endif
size_t
glbSizeX
;
size_t
glbSizeX
;
size_t
cols
;
size_t
cols
;
if
(
src
.
type
()
==
CV_8UC1
&&
interpolation
==
0
)
if
(
src
.
type
()
==
CV_8UC1
&&
interpolation
==
0
)
...
@@ -1701,7 +1718,11 @@ namespace cv
...
@@ -1701,7 +1718,11 @@ namespace cv
oclMat
oclspace_ofs
(
1
,
d
*
d
,
CV_32SC1
,
space_ofs
);
oclMat
oclspace_ofs
(
1
,
d
*
d
,
CV_32SC1
,
space_ofs
);
string
kernelName
=
"bilateral"
;
string
kernelName
=
"bilateral"
;
#ifdef ANDROID
size_t
localThreads
[
3
]
=
{
16
,
8
,
1
};
#else
size_t
localThreads
[
3
]
=
{
16
,
16
,
1
};
size_t
localThreads
[
3
]
=
{
16
,
16
,
1
};
#endif
size_t
globalThreads
[
3
]
=
{
dst
.
cols
,
dst
.
rows
,
1
};
size_t
globalThreads
[
3
]
=
{
dst
.
cols
,
dst
.
rows
,
1
};
if
((
dst
.
type
()
==
CV_8UC1
)
&&
((
dst
.
offset
&
3
)
==
0
)
&&
((
dst
.
cols
&
3
)
==
0
))
if
((
dst
.
type
()
==
CV_8UC1
)
&&
((
dst
.
offset
&
3
)
==
0
)
&&
((
dst
.
cols
&
3
)
==
0
))
...
...
modules/ocl/src/matrix_operations.cpp
View file @
4c5593b6
...
@@ -85,10 +85,15 @@ static void convert_C3C4(const cl_mem &src, oclMat &dst)
...
@@ -85,10 +85,15 @@ static void convert_C3C4(const cl_mem &src, oclMat &dst)
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
),
(
void
*
)
&
pixel_end
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
),
(
void
*
)
&
pixel_end
));
size_t
globalThreads
[
3
]
=
{
divUp
(
dst
.
wholecols
*
dst
.
wholerows
,
4
),
1
,
1
};
size_t
globalThreads
[
3
]
=
{
divUp
(
dst
.
wholecols
*
dst
.
wholerows
,
4
),
1
,
1
};
size_t
localThreads
[
3
]
=
{
256
,
1
,
1
};
#ifdef ANDROID
openCLExecuteKernel
(
clCxt
,
&
convertC3C4
,
"convertC3C4"
,
globalThreads
,
NULL
,
args
,
-
1
,
-
1
,
buildOptions
.
c_str
());
#else
size_t
localThreads
[
3
]
=
{
256
,
1
,
1
};
openCLExecuteKernel
(
clCxt
,
&
convertC3C4
,
"convertC3C4"
,
globalThreads
,
localThreads
,
openCLExecuteKernel
(
clCxt
,
&
convertC3C4
,
"convertC3C4"
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
,
buildOptions
.
c_str
());
args
,
-
1
,
-
1
,
buildOptions
.
c_str
());
#endif
}
}
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
...
@@ -112,9 +117,13 @@ static void convert_C4C3(const oclMat &src, cl_mem &dst)
...
@@ -112,9 +117,13 @@ static void convert_C4C3(const oclMat &src, cl_mem &dst)
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
),
(
void
*
)
&
pixel_end
));
args
.
push_back
(
make_pair
(
sizeof
(
cl_int
),
(
void
*
)
&
pixel_end
));
size_t
globalThreads
[
3
]
=
{
divUp
(
src
.
wholecols
*
src
.
wholerows
,
4
),
1
,
1
};
size_t
globalThreads
[
3
]
=
{
divUp
(
src
.
wholecols
*
src
.
wholerows
,
4
),
1
,
1
};
size_t
localThreads
[
3
]
=
{
256
,
1
,
1
};
#ifdef ANDROID
openCLExecuteKernel
(
clCxt
,
&
convertC3C4
,
"convertC4C3"
,
globalThreads
,
NULL
,
args
,
-
1
,
-
1
,
buildOptions
.
c_str
());
#else
size_t
localThreads
[
3
]
=
{
256
,
1
,
1
};
openCLExecuteKernel
(
clCxt
,
&
convertC3C4
,
"convertC4C3"
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
,
buildOptions
.
c_str
());
openCLExecuteKernel
(
clCxt
,
&
convertC3C4
,
"convertC4C3"
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
,
buildOptions
.
c_str
());
#endif
}
}
void
cv
::
ocl
::
oclMat
::
upload
(
const
Mat
&
m
)
void
cv
::
ocl
::
oclMat
::
upload
(
const
Mat
&
m
)
...
...
modules/ocl/src/mssegmentation.cpp
View file @
4c5593b6
...
@@ -348,7 +348,7 @@ namespace cv
...
@@ -348,7 +348,7 @@ namespace cv
}
}
// Sort all graph's edges connecting differnet components (in asceding order)
// Sort all graph's edges connecting differnet components (in asceding order)
sort
(
edges
.
begin
(),
edges
.
end
());
s
td
::
s
ort
(
edges
.
begin
(),
edges
.
end
());
// Exclude small components (starting from the nearest couple)
// Exclude small components (starting from the nearest couple)
for
(
size_t
i
=
0
;
i
<
edges
.
size
();
++
i
)
for
(
size_t
i
=
0
;
i
<
edges
.
size
();
++
i
)
...
...
modules/ocl/src/opencl/brute_force_match.cl
View file @
4c5593b6
...
@@ -82,7 +82,7 @@ typedef float result_type;
...
@@ -82,7 +82,7 @@ typedef float result_type;
#
define
DIST_RES
(
x
)
sqrt
(
x
)
#
define
DIST_RES
(
x
)
sqrt
(
x
)
#
elif
(
DIST_TYPE
==
2
)
//
Hamming
#
elif
(
DIST_TYPE
==
2
)
//
Hamming
//http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetParallel
//http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetParallel
static
int
bit1Count
(
int
v
)
inline
int
bit1Count
(
int
v
)
{
{
v
=
v
-
((
v
>>
1
)
&
0x55555555
)
; // reuse input as temporary
v
=
v
-
((
v
>>
1
)
&
0x55555555
)
; // reuse input as temporary
v
=
(
v
&
0x33333333
)
+
((
v
>>
2
)
&
0x33333333
)
; // temp
v
=
(
v
&
0x33333333
)
+
((
v
>>
2
)
&
0x33333333
)
; // temp
...
@@ -94,7 +94,7 @@ typedef int result_type;
...
@@ -94,7 +94,7 @@ typedef int result_type;
#
define
DIST_RES
(
x
)
(
x
)
#
define
DIST_RES
(
x
)
(
x
)
#
endif
#
endif
static
result_type
reduce_block
(
inline
result_type
reduce_block
(
__local
value_type
*s_query,
__local
value_type
*s_query,
__local
value_type
*s_train,
__local
value_type
*s_train,
int
lidx,
int
lidx,
...
@@ -112,7 +112,7 @@ static result_type reduce_block(
...
@@ -112,7 +112,7 @@ static result_type reduce_block(
return
DIST_RES
(
result
)
;
return
DIST_RES
(
result
)
;
}
}
static
result_type
reduce_block_match
(
inline
result_type
reduce_block_match
(
__local
value_type
*s_query,
__local
value_type
*s_query,
__local
value_type
*s_train,
__local
value_type
*s_train,
int
lidx,
int
lidx,
...
@@ -130,7 +130,7 @@ static result_type reduce_block_match(
...
@@ -130,7 +130,7 @@ static result_type reduce_block_match(
return
(
result
)
;
return
(
result
)
;
}
}
static
result_type
reduce_multi_block
(
inline
result_type
reduce_multi_block
(
__local
value_type
*s_query,
__local
value_type
*s_query,
__local
value_type
*s_train,
__local
value_type
*s_train,
int
block_index,
int
block_index,
...
...
modules/ocl/src/opencl/imgproc_clahe.cl
View file @
4c5593b6
...
@@ -47,7 +47,7 @@
...
@@ -47,7 +47,7 @@
#
define
WAVE_SIZE
1
#
define
WAVE_SIZE
1
#
endif
#
endif
static
int
calc_lut
(
__local
int*
smem,
int
val,
int
tid
)
inline
int
calc_lut
(
__local
int*
smem,
int
val,
int
tid
)
{
{
smem[tid]
=
val
;
smem[tid]
=
val
;
barrier
(
CLK_LOCAL_MEM_FENCE
)
;
barrier
(
CLK_LOCAL_MEM_FENCE
)
;
...
@@ -61,7 +61,7 @@ static int calc_lut(__local int* smem, int val, int tid)
...
@@ -61,7 +61,7 @@ static int calc_lut(__local int* smem, int val, int tid)
}
}
#
ifdef
CPU
#
ifdef
CPU
static
void
reduce
(
volatile
__local
int*
smem,
int
val,
int
tid
)
inline
void
reduce
(
volatile
__local
int*
smem,
int
val,
int
tid
)
{
{
smem[tid]
=
val
;
smem[tid]
=
val
;
barrier
(
CLK_LOCAL_MEM_FENCE
)
;
barrier
(
CLK_LOCAL_MEM_FENCE
)
;
...
@@ -101,7 +101,7 @@ static void reduce(volatile __local int* smem, int val, int tid)
...
@@ -101,7 +101,7 @@ static void reduce(volatile __local int* smem, int val, int tid)
#
else
#
else
static
void
reduce
(
__local
volatile
int*
smem,
int
val,
int
tid
)
inline
void
reduce
(
__local
volatile
int*
smem,
int
val,
int
tid
)
{
{
smem[tid]
=
val
;
smem[tid]
=
val
;
barrier
(
CLK_LOCAL_MEM_FENCE
)
;
barrier
(
CLK_LOCAL_MEM_FENCE
)
;
...
...
modules/ocl/src/opencl/kernel_stablesort_by_key.cl
View file @
4c5593b6
...
@@ -65,7 +65,7 @@
...
@@ -65,7 +65,7 @@
//
by
a
base
pointer
and
left
and
right
index
for
a
particular
candidate
value.
The
comparison
operator
is
//
by
a
base
pointer
and
left
and
right
index
for
a
particular
candidate
value.
The
comparison
operator
is
//
passed
as
a
functor
parameter
my_comp
//
passed
as
a
functor
parameter
my_comp
//
This
function
returns
an
index
that
is
the
first
index
whos
value
would
be
equal
to
the
searched
value
//
This
function
returns
an
index
that
is
the
first
index
whos
value
would
be
equal
to
the
searched
value
static
uint
lowerBoundBinary
(
global
K_T*
data,
uint
left,
uint
right,
K_T
searchVal
)
inline
uint
lowerBoundBinary
(
global
K_T*
data,
uint
left,
uint
right,
K_T
searchVal
)
{
{
//
The
values
firstIndex
and
lastIndex
get
modified
within
the
loop,
narrowing
down
the
potential
sequence
//
The
values
firstIndex
and
lastIndex
get
modified
within
the
loop,
narrowing
down
the
potential
sequence
uint
firstIndex
=
left
;
uint
firstIndex
=
left
;
...
@@ -101,7 +101,7 @@ static uint lowerBoundBinary( global K_T* data, uint left, uint right, K_T searc
...
@@ -101,7 +101,7 @@ static uint lowerBoundBinary( global K_T* data, uint left, uint right, K_T searc
//
passed
as
a
functor
parameter
my_comp
//
passed
as
a
functor
parameter
my_comp
//
This
function
returns
an
index
that
is
the
first
index
whos
value
would
be
greater
than
the
searched
value
//
This
function
returns
an
index
that
is
the
first
index
whos
value
would
be
greater
than
the
searched
value
//
If
the
search
value
is
not
found
in
the
sequence,
upperbound
returns
the
same
result
as
lowerbound
//
If
the
search
value
is
not
found
in
the
sequence,
upperbound
returns
the
same
result
as
lowerbound
static
uint
upperBoundBinary
(
global
K_T*
data,
uint
left,
uint
right,
K_T
searchVal
)
inline
uint
upperBoundBinary
(
global
K_T*
data,
uint
left,
uint
right,
K_T
searchVal
)
{
{
uint
upperBound
=
lowerBoundBinary
(
data,
left,
right,
searchVal
)
;
uint
upperBound
=
lowerBoundBinary
(
data,
left,
right,
searchVal
)
;
...
...
modules/ocl/src/opencl/stereobm.cl
View file @
4c5593b6
...
@@ -56,7 +56,7 @@
...
@@ -56,7 +56,7 @@
#
define
radius
64
#
define
radius
64
#
endif
#
endif
static
unsigned
int
CalcSSD
(
__local
unsigned
int
*col_ssd
)
inline
unsigned
int
CalcSSD
(
__local
unsigned
int
*col_ssd
)
{
{
unsigned
int
cache
=
col_ssd[0]
;
unsigned
int
cache
=
col_ssd[0]
;
...
@@ -67,7 +67,7 @@ static unsigned int CalcSSD(__local unsigned int *col_ssd)
...
@@ -67,7 +67,7 @@ static unsigned int CalcSSD(__local unsigned int *col_ssd)
return
cache
;
return
cache
;
}
}
static
uint2
MinSSD
(
__local
unsigned
int
*col_ssd
)
inline
uint2
MinSSD
(
__local
unsigned
int
*col_ssd
)
{
{
unsigned
int
ssd[N_DISPARITIES]
;
unsigned
int
ssd[N_DISPARITIES]
;
const
int
win_size
=
(
radius
<<
1
)
;
const
int
win_size
=
(
radius
<<
1
)
;
...
@@ -95,7 +95,7 @@ static uint2 MinSSD(__local unsigned int *col_ssd)
...
@@ -95,7 +95,7 @@ static uint2 MinSSD(__local unsigned int *col_ssd)
return
(
uint2
)(
mssd,
bestIdx
)
;
return
(
uint2
)(
mssd,
bestIdx
)
;
}
}
static
void
StepDown
(
int
idx1,
int
idx2,
__global
unsigned
char*
imageL,
inline
void
StepDown
(
int
idx1,
int
idx2,
__global
unsigned
char*
imageL,
__global
unsigned
char*
imageR,
int
d,
__local
unsigned
int
*col_ssd
)
__global
unsigned
char*
imageR,
int
d,
__local
unsigned
int
*col_ssd
)
{
{
uint8
imgR1
=
convert_uint8
(
vload8
(
0
,
imageR
+
(
idx1
-
d
-
7
)))
;
uint8
imgR1
=
convert_uint8
(
vload8
(
0
,
imageR
+
(
idx1
-
d
-
7
)))
;
...
@@ -114,7 +114,7 @@ static void StepDown(int idx1, int idx2, __global unsigned char* imageL,
...
@@ -114,7 +114,7 @@ static void StepDown(int idx1, int idx2, __global unsigned char* imageL,
col_ssd[7
*
(
BLOCK_W
+
win_size
)
]
+=
res.s0
;
col_ssd[7
*
(
BLOCK_W
+
win_size
)
]
+=
res.s0
;
}
}
static
void
InitColSSD
(
int
x_tex,
int
y_tex,
int
im_pitch,
__global
unsigned
char*
imageL,
inline
void
InitColSSD
(
int
x_tex,
int
y_tex,
int
im_pitch,
__global
unsigned
char*
imageL,
__global
unsigned
char*
imageR,
int
d,
__global
unsigned
char*
imageR,
int
d,
__local
unsigned
int
*col_ssd
)
__local
unsigned
int
*col_ssd
)
{
{
...
@@ -241,7 +241,7 @@ __kernel void prefilter_xsobel(__global unsigned char *input, __global unsigned
...
@@ -241,7 +241,7 @@ __kernel void prefilter_xsobel(__global unsigned char *input, __global unsigned
///////////////////////////////////
Textureness
filtering
////////////////////////////////////////
///////////////////////////////////
Textureness
filtering
////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
static
float
sobel
(
__global
unsigned
char
*input,
int
x,
int
y,
int
rows,
int
cols
)
inline
float
sobel
(
__global
unsigned
char
*input,
int
x,
int
y,
int
rows,
int
cols
)
{
{
float
conv
=
0
;
float
conv
=
0
;
int
y1
=
y==0?
0
:
y-1
;
int
y1
=
y==0?
0
:
y-1
;
...
@@ -256,7 +256,7 @@ static float sobel(__global unsigned char *input, int x, int y, int rows, int co
...
@@ -256,7 +256,7 @@ static float sobel(__global unsigned char *input, int x, int y, int rows, int co
return
fabs
(
conv
)
;
return
fabs
(
conv
)
;
}
}
static
float
CalcSums
(
__local
float
*cols,
__local
float
*cols_cache,
int
winsz
)
inline
float
CalcSums
(
__local
float
*cols,
__local
float
*cols_cache,
int
winsz
)
{
{
unsigned
int
cache
=
cols[0]
;
unsigned
int
cache
=
cols[0]
;
...
...
modules/ocl/src/opencl/stereocsbp.cl
View file @
4c5593b6
...
@@ -1000,7 +1000,7 @@ __kernel void compute_data_cost_reduce_1(__global const float *selected_disp_pyr
...
@@ -1000,7 +1000,7 @@ __kernel void compute_data_cost_reduce_1(__global const float *selected_disp_pyr
////////////////////////
init
message
/////////////////////////
////////////////////////
init
message
/////////////////////////
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
static
void
get_first_k_element_increase_0
(
__global
short*
u_new,
__global
short
*d_new,
__global
short
*l_new,
inline
void
get_first_k_element_increase_0
(
__global
short*
u_new,
__global
short
*d_new,
__global
short
*l_new,
__global
short
*r_new,
__global
const
short
*u_cur,
__global
const
short
*d_cur,
__global
short
*r_new,
__global
const
short
*u_cur,
__global
const
short
*d_cur,
__global
const
short
*l_cur,
__global
const
short
*r_cur,
__global
const
short
*l_cur,
__global
const
short
*r_cur,
__global
short
*data_cost_selected,
__global
short
*disparity_selected_new,
__global
short
*data_cost_selected,
__global
short
*disparity_selected_new,
...
@@ -1165,7 +1165,7 @@ __kernel void init_message_1(__global float *u_new_, __global float *d_new_, __g
...
@@ -1165,7 +1165,7 @@ __kernel void init_message_1(__global float *u_new_, __global float *d_new_, __g
////////////////////
calc
all
iterations
/////////////////////
////////////////////
calc
all
iterations
/////////////////////
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
static
void
message_per_pixel_0
(
__global
const
short
*data,
__global
short
*msg_dst,
__global
const
short
*msg1,
inline
void
message_per_pixel_0
(
__global
const
short
*data,
__global
short
*msg_dst,
__global
const
short
*msg1,
__global
const
short
*msg2,
__global
const
short
*msg3,
__global
const
short
*msg2,
__global
const
short
*msg3,
__global
const
short
*dst_disp,
__global
const
short
*src_disp,
__global
const
short
*dst_disp,
__global
const
short
*src_disp,
int
nr_plane,
__global
short
*temp,
int
nr_plane,
__global
short
*temp,
...
@@ -1202,7 +1202,7 @@ static void message_per_pixel_0(__global const short *data, __global short *msg_
...
@@ -1202,7 +1202,7 @@ static void message_per_pixel_0(__global const short *data, __global short *msg_
msg_dst[d
*
cdisp_step1]
=
convert_short_sat_rte
(
temp[d
*
cdisp_step1]
-
sum
)
;
msg_dst[d
*
cdisp_step1]
=
convert_short_sat_rte
(
temp[d
*
cdisp_step1]
-
sum
)
;
}
}
static
void
message_per_pixel_1
(
__global
const
float
*data,
__global
float
*msg_dst,
__global
const
float
*msg1,
inline
void
message_per_pixel_1
(
__global
const
float
*data,
__global
float
*msg_dst,
__global
const
float
*msg1,
__global
const
float
*msg2,
__global
const
float
*msg3,
__global
const
float
*msg2,
__global
const
float
*msg3,
__global
const
float
*dst_disp,
__global
const
float
*src_disp,
__global
const
float
*dst_disp,
__global
const
float
*src_disp,
int
nr_plane,
__global
float
*temp,
int
nr_plane,
__global
float
*temp,
...
...
modules/ocl/src/opencl/svm.cl
View file @
4c5593b6
...
@@ -56,6 +56,8 @@
...
@@ -56,6 +56,8 @@
#
endif
#
endif
#
define
MAX_VAL
(
FLT_MAX*1e-3
)
#
define
MAX_VAL
(
FLT_MAX*1e-3
)
#
define
BLOCK_SIZE
16
__kernel
void
svm_linear
(
__global
float*
src,
int
src_step,
__global
float*
src2,
int
src2_step,
__global
TYPE*
dst,
int
dst_step,
int
src_rows,
int
src2_cols,
__kernel
void
svm_linear
(
__global
float*
src,
int
src_step,
__global
float*
src2,
int
src2_step,
__global
TYPE*
dst,
int
dst_step,
int
src_rows,
int
src2_cols,
int
width,
TYPE
alpha,
TYPE
beta
)
int
width,
TYPE
alpha,
TYPE
beta
)
{
{
...
@@ -66,7 +68,7 @@ __kernel void svm_linear(__global float* src, int src_step, __global float* src2
...
@@ -66,7 +68,7 @@ __kernel void svm_linear(__global float* src, int src_step, __global float* src2
{
{
int
t
=
0
;
int
t
=
0
;
TYPE
temp
=
0.0
;
TYPE
temp
=
0.0
;
for
(
t
=
0
; t < width -
16; t += 16
)
for
(
t
=
0
; t < width -
BLOCK_SIZE; t += BLOCK_SIZE
)
{
{
float16
t0
=
vload16
(
0
,
src
+
row
*
src_step
+
t
)
;
float16
t0
=
vload16
(
0
,
src
+
row
*
src_step
+
t
)
;
float16
t1
=
vload16
(
0
,
src2
+
col
*
src2_step
+
t
)
;
float16
t1
=
vload16
(
0
,
src2
+
col
*
src2_step
+
t
)
;
...
@@ -103,7 +105,7 @@ __kernel void svm_sigmod(__global float* src, int src_step, __global float* src2
...
@@ -103,7 +105,7 @@ __kernel void svm_sigmod(__global float* src, int src_step, __global float* src2
{
{
int
t
=
0
;
int
t
=
0
;
TYPE
temp
=
0.0
;
TYPE
temp
=
0.0
;
for
(
t
=
0
; t < width -
16; t += 16
)
for
(
t
=
0
; t < width -
BLOCK_SIZE; t += BLOCK_SIZE
)
{
{
float16
t0
=
vload16
(
0
,
src
+
row
*
src_step
+
t
)
;
float16
t0
=
vload16
(
0
,
src
+
row
*
src_step
+
t
)
;
float16
t1
=
vload16
(
0
,
src2
+
col
*
src2_step
+
t
)
;
float16
t1
=
vload16
(
0
,
src2
+
col
*
src2_step
+
t
)
;
...
@@ -148,7 +150,7 @@ __kernel void svm_poly(__global float* src, int src_step, __global float* src2,
...
@@ -148,7 +150,7 @@ __kernel void svm_poly(__global float* src, int src_step, __global float* src2,
{
{
int
t
=
0
;
int
t
=
0
;
TYPE
temp
=
0.0
;
TYPE
temp
=
0.0
;
for
(
t
=
0
; t < width -
16; t += 16
)
for
(
t
=
0
; t < width -
BLOCK_SIZE; t += BLOCK_SIZE
)
{
{
float16
t0
=
vload16
(
0
,
src
+
row
*
src_step
+
t
)
;
float16
t0
=
vload16
(
0
,
src
+
row
*
src_step
+
t
)
;
float16
t1
=
vload16
(
0
,
src2
+
col
*
src2_step
+
t
)
;
float16
t1
=
vload16
(
0
,
src2
+
col
*
src2_step
+
t
)
;
...
@@ -183,7 +185,7 @@ __kernel void svm_rbf(__global float* src, int src_step, __global float* src2, i
...
@@ -183,7 +185,7 @@ __kernel void svm_rbf(__global float* src, int src_step, __global float* src2, i
{
{
int
t
=
0
;
int
t
=
0
;
TYPE
temp
=
0.0
;
TYPE
temp
=
0.0
;
for
(
t
=
0
; t < width -
16; t += 16
)
for
(
t
=
0
; t < width -
BLOCK_SIZE; t += BLOCK_SIZE
)
{
{
float16
t0
=
vload16
(
0
,
src
+
row
*
src_step
+
t
)
;
float16
t0
=
vload16
(
0
,
src
+
row
*
src_step
+
t
)
;
float16
t1
=
vload16
(
0
,
src2
+
col
*
src2_step
+
t
)
;
float16
t1
=
vload16
(
0
,
src2
+
col
*
src2_step
+
t
)
;
...
...
modules/ocl/src/optical_flow_farneback.cpp
View file @
4c5593b6
...
@@ -73,7 +73,11 @@ inline void setGaussianBlurKernel(const float *c_gKer, int ksizeHalf)
...
@@ -73,7 +73,11 @@ inline void setGaussianBlurKernel(const float *c_gKer, int ksizeHalf)
static
void
gaussianBlurOcl
(
const
oclMat
&
src
,
int
ksizeHalf
,
oclMat
&
dst
)
static
void
gaussianBlurOcl
(
const
oclMat
&
src
,
int
ksizeHalf
,
oclMat
&
dst
)
{
{
string
kernelName
(
"gaussianBlur"
);
string
kernelName
(
"gaussianBlur"
);
#ifdef ANDROID
size_t
localThreads
[
3
]
=
{
128
,
1
,
1
};
#else
size_t
localThreads
[
3
]
=
{
256
,
1
,
1
};
size_t
localThreads
[
3
]
=
{
256
,
1
,
1
};
#endif
size_t
globalThreads
[
3
]
=
{
src
.
cols
,
src
.
rows
,
1
};
size_t
globalThreads
[
3
]
=
{
src
.
cols
,
src
.
rows
,
1
};
int
smem_size
=
(
localThreads
[
0
]
+
2
*
ksizeHalf
)
*
sizeof
(
float
);
int
smem_size
=
(
localThreads
[
0
]
+
2
*
ksizeHalf
)
*
sizeof
(
float
);
...
@@ -96,7 +100,12 @@ static void gaussianBlurOcl(const oclMat &src, int ksizeHalf, oclMat &dst)
...
@@ -96,7 +100,12 @@ static void gaussianBlurOcl(const oclMat &src, int ksizeHalf, oclMat &dst)
static
void
polynomialExpansionOcl
(
const
oclMat
&
src
,
int
polyN
,
oclMat
&
dst
)
static
void
polynomialExpansionOcl
(
const
oclMat
&
src
,
int
polyN
,
oclMat
&
dst
)
{
{
string
kernelName
(
"polynomialExpansion"
);
string
kernelName
(
"polynomialExpansion"
);
#ifdef ANDROID
size_t
localThreads
[
3
]
=
{
128
,
1
,
1
};
#else
size_t
localThreads
[
3
]
=
{
256
,
1
,
1
};
size_t
localThreads
[
3
]
=
{
256
,
1
,
1
};
#endif
size_t
globalThreads
[
3
]
=
{
divUp
(
src
.
cols
,
localThreads
[
0
]
-
2
*
polyN
)
*
localThreads
[
0
],
src
.
rows
,
1
};
size_t
globalThreads
[
3
]
=
{
divUp
(
src
.
cols
,
localThreads
[
0
]
-
2
*
polyN
)
*
localThreads
[
0
],
src
.
rows
,
1
};
int
smem_size
=
3
*
localThreads
[
0
]
*
sizeof
(
float
);
int
smem_size
=
3
*
localThreads
[
0
]
*
sizeof
(
float
);
...
@@ -123,7 +132,11 @@ static void polynomialExpansionOcl(const oclMat &src, int polyN, oclMat &dst)
...
@@ -123,7 +132,11 @@ static void polynomialExpansionOcl(const oclMat &src, int polyN, oclMat &dst)
static
void
updateMatricesOcl
(
const
oclMat
&
flowx
,
const
oclMat
&
flowy
,
const
oclMat
&
R0
,
const
oclMat
&
R1
,
oclMat
&
M
)
static
void
updateMatricesOcl
(
const
oclMat
&
flowx
,
const
oclMat
&
flowy
,
const
oclMat
&
R0
,
const
oclMat
&
R1
,
oclMat
&
M
)
{
{
string
kernelName
(
"updateMatrices"
);
string
kernelName
(
"updateMatrices"
);
#ifdef ANDROID
size_t
localThreads
[
3
]
=
{
32
,
4
,
1
};
#else
size_t
localThreads
[
3
]
=
{
32
,
8
,
1
};
size_t
localThreads
[
3
]
=
{
32
,
8
,
1
};
#endif
size_t
globalThreads
[
3
]
=
{
flowx
.
cols
,
flowx
.
rows
,
1
};
size_t
globalThreads
[
3
]
=
{
flowx
.
cols
,
flowx
.
rows
,
1
};
std
::
vector
<
std
::
pair
<
size_t
,
const
void
*>
>
args
;
std
::
vector
<
std
::
pair
<
size_t
,
const
void
*>
>
args
;
...
@@ -148,7 +161,11 @@ static void boxFilter5Ocl(const oclMat &src, int ksizeHalf, oclMat &dst)
...
@@ -148,7 +161,11 @@ static void boxFilter5Ocl(const oclMat &src, int ksizeHalf, oclMat &dst)
{
{
string
kernelName
(
"boxFilter5"
);
string
kernelName
(
"boxFilter5"
);
int
height
=
src
.
rows
/
5
;
int
height
=
src
.
rows
/
5
;
#ifdef ANDROID
size_t
localThreads
[
3
]
=
{
128
,
1
,
1
};
#else
size_t
localThreads
[
3
]
=
{
256
,
1
,
1
};
size_t
localThreads
[
3
]
=
{
256
,
1
,
1
};
#endif
size_t
globalThreads
[
3
]
=
{
src
.
cols
,
height
,
1
};
size_t
globalThreads
[
3
]
=
{
src
.
cols
,
height
,
1
};
int
smem_size
=
(
localThreads
[
0
]
+
2
*
ksizeHalf
)
*
5
*
sizeof
(
float
);
int
smem_size
=
(
localThreads
[
0
]
+
2
*
ksizeHalf
)
*
5
*
sizeof
(
float
);
...
@@ -170,7 +187,11 @@ static void updateFlowOcl(const oclMat &M, oclMat &flowx, oclMat &flowy)
...
@@ -170,7 +187,11 @@ static void updateFlowOcl(const oclMat &M, oclMat &flowx, oclMat &flowy)
{
{
string
kernelName
(
"updateFlow"
);
string
kernelName
(
"updateFlow"
);
int
cols
=
divUp
(
flowx
.
cols
,
4
);
int
cols
=
divUp
(
flowx
.
cols
,
4
);
#ifdef ANDROID
size_t
localThreads
[
3
]
=
{
32
,
4
,
1
};
#else
size_t
localThreads
[
3
]
=
{
32
,
8
,
1
};
size_t
localThreads
[
3
]
=
{
32
,
8
,
1
};
#endif
size_t
globalThreads
[
3
]
=
{
cols
,
flowx
.
rows
,
1
};
size_t
globalThreads
[
3
]
=
{
cols
,
flowx
.
rows
,
1
};
std
::
vector
<
std
::
pair
<
size_t
,
const
void
*>
>
args
;
std
::
vector
<
std
::
pair
<
size_t
,
const
void
*>
>
args
;
...
@@ -191,7 +212,11 @@ static void gaussianBlur5Ocl(const oclMat &src, int ksizeHalf, oclMat &dst)
...
@@ -191,7 +212,11 @@ static void gaussianBlur5Ocl(const oclMat &src, int ksizeHalf, oclMat &dst)
{
{
string
kernelName
(
"gaussianBlur5"
);
string
kernelName
(
"gaussianBlur5"
);
int
height
=
src
.
rows
/
5
;
int
height
=
src
.
rows
/
5
;
#ifdef ANDROID
size_t
localThreads
[
3
]
=
{
128
,
1
,
1
};
#else
size_t
localThreads
[
3
]
=
{
256
,
1
,
1
};
size_t
localThreads
[
3
]
=
{
256
,
1
,
1
};
#endif
size_t
globalThreads
[
3
]
=
{
src
.
cols
,
height
,
1
};
size_t
globalThreads
[
3
]
=
{
src
.
cols
,
height
,
1
};
int
smem_size
=
(
localThreads
[
0
]
+
2
*
ksizeHalf
)
*
5
*
sizeof
(
float
);
int
smem_size
=
(
localThreads
[
0
]
+
2
*
ksizeHalf
)
*
5
*
sizeof
(
float
);
...
...
modules/ocl/src/sort_by_key.cpp
View file @
4c5593b6
...
@@ -55,8 +55,10 @@ namespace ocl
...
@@ -55,8 +55,10 @@ namespace ocl
{
{
void
sortByKey
(
oclMat
&
keys
,
oclMat
&
vals
,
size_t
vecSize
,
int
method
,
bool
isGreaterThan
);
void
sortByKey
(
oclMat
&
keys
,
oclMat
&
vals
,
size_t
vecSize
,
int
method
,
bool
isGreaterThan
);
#ifndef ANDROID
//TODO(pengx17): change this value depending on device other than a constant
//TODO(pengx17): change this value depending on device other than a constant
const
static
unsigned
int
GROUP_SIZE
=
256
;
const
static
unsigned
int
GROUP_SIZE
=
256
;
#endif
const
char
*
depth_strings
[]
=
const
char
*
depth_strings
[]
=
{
{
...
@@ -91,7 +93,6 @@ static void sortByKey(oclMat& keys, oclMat& vals, size_t vecSize, bool isGreater
...
@@ -91,7 +93,6 @@ static void sortByKey(oclMat& keys, oclMat& vals, size_t vecSize, bool isGreater
Context
*
cxt
=
Context
::
getContext
();
Context
*
cxt
=
Context
::
getContext
();
size_t
globalThreads
[
3
]
=
{
vecSize
/
2
,
1
,
1
};
size_t
globalThreads
[
3
]
=
{
vecSize
/
2
,
1
,
1
};
size_t
localThreads
[
3
]
=
{
GROUP_SIZE
,
1
,
1
};
// 2^numStages should be equal to vecSize or the output is invalid
// 2^numStages should be equal to vecSize or the output is invalid
int
numStages
=
0
;
int
numStages
=
0
;
...
@@ -115,7 +116,12 @@ static void sortByKey(oclMat& keys, oclMat& vals, size_t vecSize, bool isGreater
...
@@ -115,7 +116,12 @@ static void sortByKey(oclMat& keys, oclMat& vals, size_t vecSize, bool isGreater
for
(
int
passOfStage
=
0
;
passOfStage
<
stage
+
1
;
++
passOfStage
)
for
(
int
passOfStage
=
0
;
passOfStage
<
stage
+
1
;
++
passOfStage
)
{
{
args
[
4
]
=
std
::
make_pair
(
sizeof
(
cl_int
),
(
void
*
)
&
passOfStage
);
args
[
4
]
=
std
::
make_pair
(
sizeof
(
cl_int
),
(
void
*
)
&
passOfStage
);
#ifdef ANDROID
openCLExecuteKernel
(
cxt
,
&
kernel_sort_by_key
,
kernelname
,
globalThreads
,
NULL
,
args
,
-
1
,
-
1
,
build_opt_buf
);
#else
size_t
localThreads
[
3
]
=
{
GROUP_SIZE
,
1
,
1
};
openCLExecuteKernel
(
cxt
,
&
kernel_sort_by_key
,
kernelname
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
,
build_opt_buf
);
openCLExecuteKernel
(
cxt
,
&
kernel_sort_by_key
,
kernelname
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
,
build_opt_buf
);
#endif
}
}
}
}
}
}
...
@@ -131,7 +137,6 @@ static void sortByKey(oclMat& keys, oclMat& vals, size_t vecSize, bool isGreater
...
@@ -131,7 +137,6 @@ static void sortByKey(oclMat& keys, oclMat& vals, size_t vecSize, bool isGreater
Context
*
cxt
=
Context
::
getContext
();
Context
*
cxt
=
Context
::
getContext
();
size_t
globalThreads
[
3
]
=
{
vecSize
,
1
,
1
};
size_t
globalThreads
[
3
]
=
{
vecSize
,
1
,
1
};
size_t
localThreads
[
3
]
=
{
GROUP_SIZE
,
1
,
1
};
std
::
vector
<
std
::
pair
<
size_t
,
const
void
*>
>
args
;
std
::
vector
<
std
::
pair
<
size_t
,
const
void
*>
>
args
;
char
build_opt_buf
[
100
];
char
build_opt_buf
[
100
];
...
@@ -139,18 +144,31 @@ static void sortByKey(oclMat& keys, oclMat& vals, size_t vecSize, bool isGreater
...
@@ -139,18 +144,31 @@ static void sortByKey(oclMat& keys, oclMat& vals, size_t vecSize, bool isGreater
//local
//local
String
kernelname
=
"selectionSortLocal"
;
String
kernelname
=
"selectionSortLocal"
;
#ifdef ANDROID
int
lds_size
=
cxt
->
getDeviceInfo
().
maxWorkGroupSize
*
keys
.
elemSize
();
#else
int
lds_size
=
GROUP_SIZE
*
keys
.
elemSize
();
int
lds_size
=
GROUP_SIZE
*
keys
.
elemSize
();
#endif
args
.
push_back
(
std
::
make_pair
(
sizeof
(
cl_mem
),
(
void
*
)
&
keys
.
data
));
args
.
push_back
(
std
::
make_pair
(
sizeof
(
cl_mem
),
(
void
*
)
&
keys
.
data
));
args
.
push_back
(
std
::
make_pair
(
sizeof
(
cl_mem
),
(
void
*
)
&
vals
.
data
));
args
.
push_back
(
std
::
make_pair
(
sizeof
(
cl_mem
),
(
void
*
)
&
vals
.
data
));
args
.
push_back
(
std
::
make_pair
(
sizeof
(
cl_int
),
(
void
*
)
&
vecSize
));
args
.
push_back
(
std
::
make_pair
(
sizeof
(
cl_int
),
(
void
*
)
&
vecSize
));
args
.
push_back
(
std
::
make_pair
(
lds_size
,
(
void
*
)
NULL
));
args
.
push_back
(
std
::
make_pair
(
lds_size
,
(
void
*
)
NULL
));
#ifdef ANDROID
openCLExecuteKernel
(
cxt
,
&
kernel_sort_by_key
,
kernelname
,
globalThreads
,
NULL
,
args
,
-
1
,
-
1
,
build_opt_buf
);
#else
size_t
localThreads
[
3
]
=
{
GROUP_SIZE
,
1
,
1
};
openCLExecuteKernel
(
cxt
,
&
kernel_sort_by_key
,
kernelname
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
,
build_opt_buf
);
openCLExecuteKernel
(
cxt
,
&
kernel_sort_by_key
,
kernelname
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
,
build_opt_buf
);
#endif
//final
//final
kernelname
=
"selectionSortFinal"
;
kernelname
=
"selectionSortFinal"
;
args
.
pop_back
();
args
.
pop_back
();
#ifdef ANDROID
openCLExecuteKernel
(
cxt
,
&
kernel_sort_by_key
,
kernelname
,
globalThreads
,
NULL
,
args
,
-
1
,
-
1
,
build_opt_buf
);
#else
openCLExecuteKernel
(
cxt
,
&
kernel_sort_by_key
,
kernelname
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
,
build_opt_buf
);
openCLExecuteKernel
(
cxt
,
&
kernel_sort_by_key
,
kernelname
,
globalThreads
,
localThreads
,
args
,
-
1
,
-
1
,
build_opt_buf
);
#endif
}
}
}
/* selection_sort */
}
/* selection_sort */
...
@@ -340,6 +358,8 @@ static void sortByKey(oclMat& keys, oclMat& vals, size_t vecSize, bool isGreater
...
@@ -340,6 +358,8 @@ static void sortByKey(oclMat& keys, oclMat& vals, size_t vecSize, bool isGreater
{
{
Context
*
cxt
=
Context
::
getContext
();
Context
*
cxt
=
Context
::
getContext
();
const
size_t
GROUP_SIZE
=
cxt
->
getDeviceInfo
().
maxWorkGroupSize
>=
256
?
256
:
128
;
size_t
globalThreads
[
3
]
=
{
vecSize
,
1
,
1
};
size_t
globalThreads
[
3
]
=
{
vecSize
,
1
,
1
};
size_t
localThreads
[
3
]
=
{
GROUP_SIZE
,
1
,
1
};
size_t
localThreads
[
3
]
=
{
GROUP_SIZE
,
1
,
1
};
...
...
modules/ocl/test/test_brute_force_matcher.cpp
View file @
4c5593b6
...
@@ -106,7 +106,11 @@ namespace
...
@@ -106,7 +106,11 @@ namespace
}
}
};
};
#ifdef ANDROID
OCL_TEST_P
(
BruteForceMatcher
,
DISABLED_Match_Single
)
#else
OCL_TEST_P
(
BruteForceMatcher
,
Match_Single
)
OCL_TEST_P
(
BruteForceMatcher
,
Match_Single
)
#endif
{
{
cv
::
ocl
::
BruteForceMatcher_OCL_base
matcher
(
distType
);
cv
::
ocl
::
BruteForceMatcher_OCL_base
matcher
(
distType
);
...
@@ -126,7 +130,11 @@ namespace
...
@@ -126,7 +130,11 @@ namespace
ASSERT_EQ
(
0
,
badCount
);
ASSERT_EQ
(
0
,
badCount
);
}
}
#ifdef ANDROID
OCL_TEST_P
(
BruteForceMatcher
,
DISABLED_KnnMatch_2_Single
)
#else
OCL_TEST_P
(
BruteForceMatcher
,
KnnMatch_2_Single
)
OCL_TEST_P
(
BruteForceMatcher
,
KnnMatch_2_Single
)
#endif
{
{
const
int
knn
=
2
;
const
int
knn
=
2
;
...
@@ -158,7 +166,11 @@ namespace
...
@@ -158,7 +166,11 @@ namespace
ASSERT_EQ
(
0
,
badCount
);
ASSERT_EQ
(
0
,
badCount
);
}
}
#ifdef ANDROID
OCL_TEST_P
(
BruteForceMatcher
,
DISABLED_RadiusMatch_Single
)
#else
OCL_TEST_P
(
BruteForceMatcher
,
RadiusMatch_Single
)
OCL_TEST_P
(
BruteForceMatcher
,
RadiusMatch_Single
)
#endif
{
{
float
radius
=
1.
f
/
countFactor
;
float
radius
=
1.
f
/
countFactor
;
...
...
modules/ocl/test/test_filters.cpp
View file @
4c5593b6
...
@@ -132,7 +132,11 @@ PARAM_TEST_CASE(FilterTestBase, MatType,
...
@@ -132,7 +132,11 @@ PARAM_TEST_CASE(FilterTestBase, MatType,
typedef
FilterTestBase
Blur
;
typedef
FilterTestBase
Blur
;
#ifdef ANDROID
OCL_TEST_P
(
Blur
,
DISABLED_Mat
)
#else
OCL_TEST_P
(
Blur
,
Mat
)
OCL_TEST_P
(
Blur
,
Mat
)
#endif
{
{
Size
kernelSize
(
ksize
,
ksize
);
Size
kernelSize
(
ksize
,
ksize
);
...
@@ -272,7 +276,7 @@ OCL_TEST_P(GaussianBlurTest, Mat)
...
@@ -272,7 +276,7 @@ OCL_TEST_P(GaussianBlurTest, Mat)
GaussianBlur
(
src_roi
,
dst_roi
,
Size
(
ksize
,
ksize
),
sigma1
,
sigma2
,
borderType
);
GaussianBlur
(
src_roi
,
dst_roi
,
Size
(
ksize
,
ksize
),
sigma1
,
sigma2
,
borderType
);
ocl
::
GaussianBlur
(
gsrc_roi
,
gdst_roi
,
Size
(
ksize
,
ksize
),
sigma1
,
sigma2
,
borderType
);
ocl
::
GaussianBlur
(
gsrc_roi
,
gdst_roi
,
Size
(
ksize
,
ksize
),
sigma1
,
sigma2
,
borderType
);
Near
(
CV_MAT_DEPTH
(
type
)
==
CV_8U
?
3
:
1e-6
,
false
);
Near
(
CV_MAT_DEPTH
(
type
)
==
CV_8U
?
3
:
5e-5
,
false
);
}
}
}
}
...
...
modules/ocl/test/test_split_merge.cpp
View file @
4c5593b6
...
@@ -189,7 +189,13 @@ PARAM_TEST_CASE(SplitTestBase, MatType, int, bool)
...
@@ -189,7 +189,13 @@ PARAM_TEST_CASE(SplitTestBase, MatType, int, bool)
struct
Split
:
SplitTestBase
{};
struct
Split
:
SplitTestBase
{};
#ifdef ANDROID
// NOTE: The test fail on Android is the top of the iceberg only
// The real fail reason is memory access vialation somewhere else
OCL_TEST_P
(
Split
,
DISABLED_Accuracy
)
#else
OCL_TEST_P
(
Split
,
Accuracy
)
OCL_TEST_P
(
Split
,
Accuracy
)
#endif
{
{
for
(
int
j
=
0
;
j
<
LOOP_TIMES
;
j
++
)
for
(
int
j
=
0
;
j
<
LOOP_TIMES
;
j
++
)
{
{
...
...
modules/ts/misc/run.py
View file @
4c5593b6
...
@@ -562,7 +562,10 @@ class TestSuite(object):
...
@@ -562,7 +562,10 @@ class TestSuite(object):
else
:
else
:
hw
=
""
hw
=
""
tstamp
=
timestamp
.
strftime
(
"
%
Y
%
m
%
d-
%
H
%
M
%
S"
)
tstamp
=
timestamp
.
strftime
(
"
%
Y
%
m
%
d-
%
H
%
M
%
S"
)
return
"
%
s_
%
s_
%
s_
%
s
%
s
%
s.xml"
%
(
app
,
self
.
targetos
,
self
.
targetarch
,
hw
,
rev
,
tstamp
)
lname
=
"
%
s_
%
s_
%
s_
%
s
%
s
%
s.xml"
%
(
app
,
self
.
targetos
,
self
.
targetarch
,
hw
,
rev
,
tstamp
)
lname
=
str
.
replace
(
lname
,
'('
,
'_'
)
lname
=
str
.
replace
(
lname
,
')'
,
'_'
)
return
lname
def
getTest
(
self
,
name
):
def
getTest
(
self
,
name
):
# full path
# full path
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment