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
610f5481
Commit
610f5481
authored
May 03, 2019
by
Alexander Alekhin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
core(ocl): ocl::Kernels::args() via variadic template
parent
03ec1ca0
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
19 additions
and
152 deletions
+19
-152
ocl.hpp
modules/core/include/opencv2/core/ocl.hpp
+19
-152
No files found.
modules/core/include/opencv2/core/ocl.hpp
View file @
610f5481
...
...
@@ -407,161 +407,28 @@ public:
template
<
typename
_Tp
>
int
set
(
int
i
,
const
_Tp
&
value
)
{
return
set
(
i
,
&
value
,
sizeof
(
value
));
}
template
<
typename
_Tp0
>
Kernel
&
args
(
const
_Tp0
&
a0
)
{
set
(
0
,
a0
);
return
*
this
;
}
template
<
typename
_Tp0
,
typename
_Tp1
>
Kernel
&
args
(
const
_Tp0
&
a0
,
const
_Tp1
&
a1
)
{
int
i
=
set
(
0
,
a0
);
set
(
i
,
a1
);
return
*
this
;
}
template
<
typename
_Tp0
,
typename
_Tp1
,
typename
_Tp2
>
Kernel
&
args
(
const
_Tp0
&
a0
,
const
_Tp1
&
a1
,
const
_Tp2
&
a2
)
{
int
i
=
set
(
0
,
a0
);
i
=
set
(
i
,
a1
);
set
(
i
,
a2
);
return
*
this
;
}
protected
:
template
<
typename
_Tp0
>
inline
int
set_args_
(
int
i
,
const
_Tp0
&
a0
)
{
return
set
(
i
,
a0
);
}
template
<
typename
_Tp0
,
typename
...
_Tps
>
inline
int
set_args_
(
int
i
,
const
_Tp0
&
a0
,
const
_Tps
&
...
rest_args
)
{
i
=
set
(
i
,
a0
);
return
set_args_
(
i
,
rest_args
...);
}
public
:
/** @brief Setup OpenCL Kernel arguments.
Avoid direct using of set(i, ...) methods.
@code
bool ok = kernel
.args(
srcUMat, dstUMat,
(float)some_float_param
).run(ndims, globalSize, localSize);
if (!ok) return false;
@endcode
*/
template
<
typename
...
_Tps
>
inline
Kernel
&
args
(
const
_Tps
&
...
kernel_args
)
{
set_args_
(
0
,
kernel_args
...);
return
*
this
;
}
template
<
typename
_Tp0
,
typename
_Tp1
,
typename
_Tp2
,
typename
_Tp3
>
Kernel
&
args
(
const
_Tp0
&
a0
,
const
_Tp1
&
a1
,
const
_Tp2
&
a2
,
const
_Tp3
&
a3
)
{
int
i
=
set
(
0
,
a0
);
i
=
set
(
i
,
a1
);
i
=
set
(
i
,
a2
);
i
=
set
(
i
,
a3
);
return
*
this
;
}
template
<
typename
_Tp0
,
typename
_Tp1
,
typename
_Tp2
,
typename
_Tp3
,
typename
_Tp4
>
Kernel
&
args
(
const
_Tp0
&
a0
,
const
_Tp1
&
a1
,
const
_Tp2
&
a2
,
const
_Tp3
&
a3
,
const
_Tp4
&
a4
)
{
int
i
=
set
(
0
,
a0
);
i
=
set
(
i
,
a1
);
i
=
set
(
i
,
a2
);
i
=
set
(
i
,
a3
);
set
(
i
,
a4
);
return
*
this
;
}
template
<
typename
_Tp0
,
typename
_Tp1
,
typename
_Tp2
,
typename
_Tp3
,
typename
_Tp4
,
typename
_Tp5
>
Kernel
&
args
(
const
_Tp0
&
a0
,
const
_Tp1
&
a1
,
const
_Tp2
&
a2
,
const
_Tp3
&
a3
,
const
_Tp4
&
a4
,
const
_Tp5
&
a5
)
{
int
i
=
set
(
0
,
a0
);
i
=
set
(
i
,
a1
);
i
=
set
(
i
,
a2
);
i
=
set
(
i
,
a3
);
i
=
set
(
i
,
a4
);
set
(
i
,
a5
);
return
*
this
;
}
template
<
typename
_Tp0
,
typename
_Tp1
,
typename
_Tp2
,
typename
_Tp3
,
typename
_Tp4
,
typename
_Tp5
,
typename
_Tp6
>
Kernel
&
args
(
const
_Tp0
&
a0
,
const
_Tp1
&
a1
,
const
_Tp2
&
a2
,
const
_Tp3
&
a3
,
const
_Tp4
&
a4
,
const
_Tp5
&
a5
,
const
_Tp6
&
a6
)
{
int
i
=
set
(
0
,
a0
);
i
=
set
(
i
,
a1
);
i
=
set
(
i
,
a2
);
i
=
set
(
i
,
a3
);
i
=
set
(
i
,
a4
);
i
=
set
(
i
,
a5
);
set
(
i
,
a6
);
return
*
this
;
}
template
<
typename
_Tp0
,
typename
_Tp1
,
typename
_Tp2
,
typename
_Tp3
,
typename
_Tp4
,
typename
_Tp5
,
typename
_Tp6
,
typename
_Tp7
>
Kernel
&
args
(
const
_Tp0
&
a0
,
const
_Tp1
&
a1
,
const
_Tp2
&
a2
,
const
_Tp3
&
a3
,
const
_Tp4
&
a4
,
const
_Tp5
&
a5
,
const
_Tp6
&
a6
,
const
_Tp7
&
a7
)
{
int
i
=
set
(
0
,
a0
);
i
=
set
(
i
,
a1
);
i
=
set
(
i
,
a2
);
i
=
set
(
i
,
a3
);
i
=
set
(
i
,
a4
);
i
=
set
(
i
,
a5
);
i
=
set
(
i
,
a6
);
set
(
i
,
a7
);
return
*
this
;
}
template
<
typename
_Tp0
,
typename
_Tp1
,
typename
_Tp2
,
typename
_Tp3
,
typename
_Tp4
,
typename
_Tp5
,
typename
_Tp6
,
typename
_Tp7
,
typename
_Tp8
>
Kernel
&
args
(
const
_Tp0
&
a0
,
const
_Tp1
&
a1
,
const
_Tp2
&
a2
,
const
_Tp3
&
a3
,
const
_Tp4
&
a4
,
const
_Tp5
&
a5
,
const
_Tp6
&
a6
,
const
_Tp7
&
a7
,
const
_Tp8
&
a8
)
{
int
i
=
set
(
0
,
a0
);
i
=
set
(
i
,
a1
);
i
=
set
(
i
,
a2
);
i
=
set
(
i
,
a3
);
i
=
set
(
i
,
a4
);
i
=
set
(
i
,
a5
);
i
=
set
(
i
,
a6
);
i
=
set
(
i
,
a7
);
set
(
i
,
a8
);
return
*
this
;
}
template
<
typename
_Tp0
,
typename
_Tp1
,
typename
_Tp2
,
typename
_Tp3
,
typename
_Tp4
,
typename
_Tp5
,
typename
_Tp6
,
typename
_Tp7
,
typename
_Tp8
,
typename
_Tp9
>
Kernel
&
args
(
const
_Tp0
&
a0
,
const
_Tp1
&
a1
,
const
_Tp2
&
a2
,
const
_Tp3
&
a3
,
const
_Tp4
&
a4
,
const
_Tp5
&
a5
,
const
_Tp6
&
a6
,
const
_Tp7
&
a7
,
const
_Tp8
&
a8
,
const
_Tp9
&
a9
)
{
int
i
=
set
(
0
,
a0
);
i
=
set
(
i
,
a1
);
i
=
set
(
i
,
a2
);
i
=
set
(
i
,
a3
);
i
=
set
(
i
,
a4
);
i
=
set
(
i
,
a5
);
i
=
set
(
i
,
a6
);
i
=
set
(
i
,
a7
);
i
=
set
(
i
,
a8
);
set
(
i
,
a9
);
return
*
this
;
}
template
<
typename
_Tp0
,
typename
_Tp1
,
typename
_Tp2
,
typename
_Tp3
,
typename
_Tp4
,
typename
_Tp5
,
typename
_Tp6
,
typename
_Tp7
,
typename
_Tp8
,
typename
_Tp9
,
typename
_Tp10
>
Kernel
&
args
(
const
_Tp0
&
a0
,
const
_Tp1
&
a1
,
const
_Tp2
&
a2
,
const
_Tp3
&
a3
,
const
_Tp4
&
a4
,
const
_Tp5
&
a5
,
const
_Tp6
&
a6
,
const
_Tp7
&
a7
,
const
_Tp8
&
a8
,
const
_Tp9
&
a9
,
const
_Tp10
&
a10
)
{
int
i
=
set
(
0
,
a0
);
i
=
set
(
i
,
a1
);
i
=
set
(
i
,
a2
);
i
=
set
(
i
,
a3
);
i
=
set
(
i
,
a4
);
i
=
set
(
i
,
a5
);
i
=
set
(
i
,
a6
);
i
=
set
(
i
,
a7
);
i
=
set
(
i
,
a8
);
i
=
set
(
i
,
a9
);
set
(
i
,
a10
);
return
*
this
;
}
template
<
typename
_Tp0
,
typename
_Tp1
,
typename
_Tp2
,
typename
_Tp3
,
typename
_Tp4
,
typename
_Tp5
,
typename
_Tp6
,
typename
_Tp7
,
typename
_Tp8
,
typename
_Tp9
,
typename
_Tp10
,
typename
_Tp11
>
Kernel
&
args
(
const
_Tp0
&
a0
,
const
_Tp1
&
a1
,
const
_Tp2
&
a2
,
const
_Tp3
&
a3
,
const
_Tp4
&
a4
,
const
_Tp5
&
a5
,
const
_Tp6
&
a6
,
const
_Tp7
&
a7
,
const
_Tp8
&
a8
,
const
_Tp9
&
a9
,
const
_Tp10
&
a10
,
const
_Tp11
&
a11
)
{
int
i
=
set
(
0
,
a0
);
i
=
set
(
i
,
a1
);
i
=
set
(
i
,
a2
);
i
=
set
(
i
,
a3
);
i
=
set
(
i
,
a4
);
i
=
set
(
i
,
a5
);
i
=
set
(
i
,
a6
);
i
=
set
(
i
,
a7
);
i
=
set
(
i
,
a8
);
i
=
set
(
i
,
a9
);
i
=
set
(
i
,
a10
);
set
(
i
,
a11
);
return
*
this
;
}
template
<
typename
_Tp0
,
typename
_Tp1
,
typename
_Tp2
,
typename
_Tp3
,
typename
_Tp4
,
typename
_Tp5
,
typename
_Tp6
,
typename
_Tp7
,
typename
_Tp8
,
typename
_Tp9
,
typename
_Tp10
,
typename
_Tp11
,
typename
_Tp12
>
Kernel
&
args
(
const
_Tp0
&
a0
,
const
_Tp1
&
a1
,
const
_Tp2
&
a2
,
const
_Tp3
&
a3
,
const
_Tp4
&
a4
,
const
_Tp5
&
a5
,
const
_Tp6
&
a6
,
const
_Tp7
&
a7
,
const
_Tp8
&
a8
,
const
_Tp9
&
a9
,
const
_Tp10
&
a10
,
const
_Tp11
&
a11
,
const
_Tp12
&
a12
)
{
int
i
=
set
(
0
,
a0
);
i
=
set
(
i
,
a1
);
i
=
set
(
i
,
a2
);
i
=
set
(
i
,
a3
);
i
=
set
(
i
,
a4
);
i
=
set
(
i
,
a5
);
i
=
set
(
i
,
a6
);
i
=
set
(
i
,
a7
);
i
=
set
(
i
,
a8
);
i
=
set
(
i
,
a9
);
i
=
set
(
i
,
a10
);
i
=
set
(
i
,
a11
);
set
(
i
,
a12
);
return
*
this
;
}
template
<
typename
_Tp0
,
typename
_Tp1
,
typename
_Tp2
,
typename
_Tp3
,
typename
_Tp4
,
typename
_Tp5
,
typename
_Tp6
,
typename
_Tp7
,
typename
_Tp8
,
typename
_Tp9
,
typename
_Tp10
,
typename
_Tp11
,
typename
_Tp12
,
typename
_Tp13
>
Kernel
&
args
(
const
_Tp0
&
a0
,
const
_Tp1
&
a1
,
const
_Tp2
&
a2
,
const
_Tp3
&
a3
,
const
_Tp4
&
a4
,
const
_Tp5
&
a5
,
const
_Tp6
&
a6
,
const
_Tp7
&
a7
,
const
_Tp8
&
a8
,
const
_Tp9
&
a9
,
const
_Tp10
&
a10
,
const
_Tp11
&
a11
,
const
_Tp12
&
a12
,
const
_Tp13
&
a13
)
{
int
i
=
set
(
0
,
a0
);
i
=
set
(
i
,
a1
);
i
=
set
(
i
,
a2
);
i
=
set
(
i
,
a3
);
i
=
set
(
i
,
a4
);
i
=
set
(
i
,
a5
);
i
=
set
(
i
,
a6
);
i
=
set
(
i
,
a7
);
i
=
set
(
i
,
a8
);
i
=
set
(
i
,
a9
);
i
=
set
(
i
,
a10
);
i
=
set
(
i
,
a11
);
i
=
set
(
i
,
a12
);
set
(
i
,
a13
);
return
*
this
;
}
template
<
typename
_Tp0
,
typename
_Tp1
,
typename
_Tp2
,
typename
_Tp3
,
typename
_Tp4
,
typename
_Tp5
,
typename
_Tp6
,
typename
_Tp7
,
typename
_Tp8
,
typename
_Tp9
,
typename
_Tp10
,
typename
_Tp11
,
typename
_Tp12
,
typename
_Tp13
,
typename
_Tp14
>
Kernel
&
args
(
const
_Tp0
&
a0
,
const
_Tp1
&
a1
,
const
_Tp2
&
a2
,
const
_Tp3
&
a3
,
const
_Tp4
&
a4
,
const
_Tp5
&
a5
,
const
_Tp6
&
a6
,
const
_Tp7
&
a7
,
const
_Tp8
&
a8
,
const
_Tp9
&
a9
,
const
_Tp10
&
a10
,
const
_Tp11
&
a11
,
const
_Tp12
&
a12
,
const
_Tp13
&
a13
,
const
_Tp14
&
a14
)
{
int
i
=
set
(
0
,
a0
);
i
=
set
(
i
,
a1
);
i
=
set
(
i
,
a2
);
i
=
set
(
i
,
a3
);
i
=
set
(
i
,
a4
);
i
=
set
(
i
,
a5
);
i
=
set
(
i
,
a6
);
i
=
set
(
i
,
a7
);
i
=
set
(
i
,
a8
);
i
=
set
(
i
,
a9
);
i
=
set
(
i
,
a10
);
i
=
set
(
i
,
a11
);
i
=
set
(
i
,
a12
);
i
=
set
(
i
,
a13
);
set
(
i
,
a14
);
return
*
this
;
}
template
<
typename
_Tp0
,
typename
_Tp1
,
typename
_Tp2
,
typename
_Tp3
,
typename
_Tp4
,
typename
_Tp5
,
typename
_Tp6
,
typename
_Tp7
,
typename
_Tp8
,
typename
_Tp9
,
typename
_Tp10
,
typename
_Tp11
,
typename
_Tp12
,
typename
_Tp13
,
typename
_Tp14
,
typename
_Tp15
>
Kernel
&
args
(
const
_Tp0
&
a0
,
const
_Tp1
&
a1
,
const
_Tp2
&
a2
,
const
_Tp3
&
a3
,
const
_Tp4
&
a4
,
const
_Tp5
&
a5
,
const
_Tp6
&
a6
,
const
_Tp7
&
a7
,
const
_Tp8
&
a8
,
const
_Tp9
&
a9
,
const
_Tp10
&
a10
,
const
_Tp11
&
a11
,
const
_Tp12
&
a12
,
const
_Tp13
&
a13
,
const
_Tp14
&
a14
,
const
_Tp15
&
a15
)
{
int
i
=
set
(
0
,
a0
);
i
=
set
(
i
,
a1
);
i
=
set
(
i
,
a2
);
i
=
set
(
i
,
a3
);
i
=
set
(
i
,
a4
);
i
=
set
(
i
,
a5
);
i
=
set
(
i
,
a6
);
i
=
set
(
i
,
a7
);
i
=
set
(
i
,
a8
);
i
=
set
(
i
,
a9
);
i
=
set
(
i
,
a10
);
i
=
set
(
i
,
a11
);
i
=
set
(
i
,
a12
);
i
=
set
(
i
,
a13
);
i
=
set
(
i
,
a14
);
set
(
i
,
a15
);
return
*
this
;
}
/** @brief Run the OpenCL kernel.
@param dims the work problem dimensions. It is the length of globalsize and localsize. It can be either 1, 2 or 3.
@param globalsize work items for each dimension. It is not the final globalsize passed to
...
...
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