@ -264,13 +264,6 @@ public:
class CV_EXPORTS Kernel
{
public :
class CV_EXPORTS Callback
{
public :
virtual ~ Callback ( ) { }
virtual void operator ( ) ( ) = 0 ;
} ;
Kernel ( ) ;
Kernel ( const char * kname , const Program & prog ) ;
Kernel ( const char * kname , const ProgramSource & prog ,
@ -283,118 +276,115 @@ public:
bool create ( const char * kname , const ProgramSource & prog ,
const String & buildopts , String & errmsg ) ;
int set ( int i , const void * value , size_t sz ) ;
int set ( int i , const UMat & m ) ;
int set ( int i , const KernelArg & arg ) ;
template < typename _Tp > int set ( int i , const _Tp & value )
void set ( int i , const void * value , size_t sz ) ;
void set ( int i , const UMat & m ) ;
void set ( int i , const KernelArg & arg ) ;
template < typename _Tp > void set ( int i , const _Tp & value )
{ return set ( i , & value , sizeof ( value ) ) ; }
template < typename _Tp1 >
Kernel & args ( _Tp1 a1 )
template < typename _Tp0 >
Kernel & args ( const _Tp0 & a0 )
{
set ( 0 , a1 ) ; return * this ;
set ( 0 , a0 ) ; return * this ;
}
template < typename _Tp1 , typename _Tp2 >
Kernel & args ( _Tp1 a1 , _Tp2 a2 )
template < typename _Tp0 , typename _Tp1 >
Kernel & args ( const _Tp0 & a0 , const _Tp1 & a1 )
{
int i = set ( 0 , a1 ) ; set ( i , a2 ) ; return * this ;
set ( 0 , a0 ) ; set ( 1 , a1 ) ; return * this ;
}
template < typename _Tp1 , typename _Tp2 , typename _Tp3 >
Kernel & args ( _Tp1 a1 , _Tp2 a2 , _Tp3 a3 )
template < typename _Tp0 , typename _Tp 1 , typename _Tp2 >
Kernel & args ( const _Tp0 & a0 , const _Tp1 & a1 , const _Tp2 & a2 )
{
int i = set ( 0 , a1 ) ; i = set ( i , a2 ) ; set ( i , a3 ) ; return * this ;
set ( 0 , a0 ) ; set ( 1 , a1 ) ; set ( 2 , a2 ) ; return * this ;
}
template < typename _Tp1 , typename _Tp2 , typename _Tp3 , typename _Tp4 >
Kernel & args ( _Tp1 a1 , _Tp2 a2 , _Tp3 a3 , _Tp4 a4 )
template < typename _Tp0 , typename _Tp 1 , typename _Tp2 , typename _Tp3 >
Kernel & args ( const _Tp0 & a0 , const _Tp1 & a1 , const _Tp2 & a2 , const _Tp3 & a3 )
{
int i = set ( 0 , a1 ) ; i = set ( i , a2 ) ; i = set ( i , a3 ) ; set ( i , a4 ) ;
return * this ;
set ( 0 , a0 ) ; set ( 1 , a1 ) ; set ( 2 , a2 ) ; set ( 3 , a3 ) ; return * this ;
}
template < typename _Tp1 , typename _Tp2 , typename _Tp3 , typename _Tp4 , typename _Tp5 >
Kernel & args ( _Tp1 a1 , _Tp2 a2 , _Tp3 a3 , _Tp4 a4 , _Tp5 a5 )
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 , a1 ) ; i = set ( i , a2 ) ; i = set ( i , a3 ) ; i = set ( i , a4 ) ; set ( i , a5 ) ;
return * this ;
set ( 0 , a0 ) ; set ( 1 , a1 ) ; set ( 2 , a2 ) ; set ( 3 , a3 ) ; set ( 4 , a4 ) ; return * this ;
}
template < typename _Tp1 , typename _Tp2 , typename _Tp3 ,
typename _Tp4 , typename _Tp5 , typename _Tp6 >
Kernel & args ( _Tp1 a1 , _Tp2 a2 , _Tp3 a3 , _Tp4 a4 , _Tp5 a5 , _Tp6 a6 )
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 , a1 ) ; i = set ( i , a2 ) ; i = set ( i , a3 ) ; i = set ( i , a4 ) ;
i = set ( i , a5 ) ; set ( i , a6 ) ; return * this ;
set ( 0 , a0 ) ; set ( 1 , a1 ) ; set ( 2 , a2 ) ;
set ( 3 , a3 ) ; set ( 4 , a4 ) ; set ( 5 , a5 ) ; return * this ;
}
template < typename _Tp1 , typename _Tp2 , typename _Tp3 , typename _Tp4 ,
typename _Tp5 , typename _Tp6 , typename _Tp7 >
Kernel & args ( _Tp1 a1 , _Tp2 a2 , _Tp3 a3 , _Tp4 a4 , _Tp5 a5 , _Tp6 a6 , _Tp7 a7 )
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 , 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 ;
set ( 0 , a0 ) ; set ( 1 , a1 ) ; set ( 2 , a2 ) ; set ( 3 , a3 ) ;
set ( 4 , a4 ) ; set ( 5 , a5 ) ; set ( 6 , a6 ) ; return * this ;
}
template < typename _Tp1 , typename _Tp2 , typename _Tp3 , typename _Tp4 ,
typename _Tp5 , typename _Tp6 , typename _Tp7 , typename _Tp8 >
Kernel & args ( _Tp1 a1 , _Tp2 a2 , _Tp3 a3 , _Tp4 a4 , _Tp5 a5 , _Tp6 a6 , _Tp7 a7 , _Tp8 a8 )
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 , 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 ;
set ( 0 , a0 ) ; set ( 1 , a1 ) ; set ( 2 , a2 ) ; set ( 3 , a3 ) ;
set ( 4 , a4 ) ; set ( 5 , a5 ) ; set ( 6 , a6 ) ; set ( 7 , a7 ) ; return * this ;
}
template < typename _Tp1 , typename _Tp2 , typename _Tp3 , typename _Tp4 , typename _Tp5 ,
typename _Tp6 , typename _Tp7 , typename _Tp8 , typename _Tp9 >
Kernel & args ( _Tp1 a1 , _Tp2 a2 , _Tp3 a3 , _Tp4 a4 , _Tp5 a5 , _Tp6 a6 , _Tp7 a7 , _Tp8 a8 , _Tp9 a9 )
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 , 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 ;
set ( 0 , a0 ) ; set ( 1 , a1 ) ; set ( 2 , a2 ) ; set ( 3 , a3 ) ; set ( 4 , a4 ) ;
set ( 5 , a5 ) ; set ( 6 , a6 ) ; set ( 7 , a7 ) ; set ( 8 , a8 ) ; return * this ;
}
template < typename _Tp1 , typename _Tp2 , typename _Tp3 , typename _Tp4 , typename _Tp5 ,
typename _Tp6 , typename _Tp7 , typename _Tp8 , typename _Tp9 , typename _Tp10 >
Kernel & args ( _Tp1 a1 , _Tp2 a2 , _Tp3 a3 , _Tp4 a4 , _Tp5 a5 , _Tp6 a6 , _Tp7 a7 ,
_Tp8 a8 , _Tp9 a9 , _Tp10 a10 )
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 , 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 ;
set ( 0 , a0 ) ; set ( 1 , a1 ) ; set ( 2 , a2 ) ; set ( 3 , a3 ) ; set ( 4 , a4 ) ; set ( 5 , a5 ) ;
set ( 6 , a6 ) ; set ( 7 , a7 ) ; set ( 8 , a8 ) ; set ( 9 , a9 ) ; return * this ;
}
template < typename _Tp1 , typename _Tp2 , typename _Tp3 , typename _Tp4 , typename _Tp5 ,
typename _Tp6 , typename _Tp7 , typename _Tp8 , typename _Tp9 ,
typename _Tp10 , typename _Tp11 >
Kernel & args ( _Tp1 a1 , _Tp2 a2 , _Tp3 a3 , _Tp4 a4 , _Tp5 a5 , _Tp6 a6 , _Tp7 a7 ,
_Tp8 a8 , _Tp9 a9 , _Tp10 a10 , _Tp11 a11 )
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 , 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 ;
set ( 0 , a0 ) ; set ( 1 , a1 ) ; set ( 2 , a2 ) ; set ( 3 , a3 ) ; set ( 4 , a4 ) ; set ( 5 , a5 ) ;
set ( 6 , a6 ) ; set ( 7 , a7 ) ; set ( 8 , a8 ) ; set ( 9 , a9 ) ; set ( 10 , a10 ) ; return * this ;
}
template < 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 ( _Tp1 a1 , _Tp2 a2 , _Tp3 a3 , _Tp4 a4 , _Tp5 a5 , _Tp6 a6 , _Tp7 a7 ,
_Tp8 a8 , _Tp9 a9 , _Tp10 a10 , _Tp11 a11 , _Tp12 a12 )
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 , 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 ;
set ( 0 , a0 ) ; set ( 1 , a1 ) ; set ( 2 , a2 ) ; set ( 3 , a3 ) ; set ( 4 , a4 ) ; set ( 5 , a5 ) ;
set ( 6 , a6 ) ; set ( 7 , a7 ) ; set ( 8 , a8 ) ; set ( 9 , a9 ) ; set ( 10 , a10 ) ; set ( 11 , a11 ) ; return * this ;
}
void run ( int dims , size_t offset [ ] ,
size_t globalsize [ ] , size_t localsize [ ] , bool sync ,
const Ptr < Callback > & cleanupCallback = Ptr < Callback > ( ) ,
const Queue & q = Queue ( ) ) ;
void runTask ( bool sync ,
const Ptr < Callback > & cleanupCallback = Ptr < Callback > ( ) ,
const Queue & q = Queue ( ) ) ;
void run ( int dims , size_t offset [ ] , size_t globalsize [ ] ,
size_t localsize [ ] , bool sync , const Queue & q = Queue ( ) ) ;
void runTask ( bool sync , const Queue & q = Queue ( ) ) ;
size_t workGroupSize ( ) const ;
bool compileWorkGroupSize ( size_t wsz [ ] ) const ;