void apply_ukernel(View0 in0, View1 in1, View2 in2, View3 out) { dda::Data<typename View0::block_type, dda::in> data0(in0.block()); dda::Data<typename View1::block_type, dda::in> data1(in1.block()); dda::Data<typename View2::block_type, dda::in> data2(in2.block()); dda::Data<typename View3::block_type, dda::out> data3(out.block()); assert(data0.stride(1) == 1); assert(data1.stride(1) == 1); assert(data2.stride(1) == 1); assert(data3.stride(1) == 1); example::Cblock kernel((uintptr_t)data0.ptr(), data0.stride(0), (uintptr_t)data1.ptr(), data1.stride(0), (uintptr_t)data2.ptr(), data2.stride(0), (uintptr_t)data3.ptr(), data3.stride(0), out.size(0), out.size(1)); vsip_csl::ukernel::Ukernel<example::Cblock> uk(kernel); uk(); }
void apply_ukernel(View0 in0, View1 in1, View2 in2, View3 out) { dda::Ext_data<typename View0::block_type> ext0(in0.block()); dda::Ext_data<typename View1::block_type> ext1(in1.block()); dda::Ext_data<typename View2::block_type> ext2(in2.block()); dda::Ext_data<typename View3::block_type> ext3(out.block()); assert(ext0.stride(1) == 1); assert(ext1.stride(1) == 1); assert(ext2.stride(1) == 1); assert(ext3.stride(1) == 1); example::Cblock kernel((uintptr_t)ext0.data(), ext0.stride(0), (uintptr_t)ext1.data(), ext1.stride(0), (uintptr_t)ext2.data(), ext2.stride(0), (uintptr_t)ext3.data(), ext3.stride(0), out.size(0), out.size(1)); vsip_csl::ukernel::Ukernel<example::Cblock> uk(kernel); uk(); }
GIL_FORCEINLINE F transform_pixels_progress( const View1& src1, const View2& src2, const View3& dst, const F& fun, IProgress& p ) { assert( src1.dimensions() == dst.dimensions() ); assert( src2.dimensions() == dst.dimensions() ); for( std::ptrdiff_t y = 0; y < dst.height(); ++y ) { typename View1::x_iterator srcIt1 = src1.row_begin( y ); typename View2::x_iterator srcIt2 = src2.row_begin( y ); typename View3::x_iterator dstIt = dst.row_begin( y ); for( std::ptrdiff_t x = 0; x < dst.width(); ++x ) dstIt[x] = fun( srcIt1[x], srcIt2[x] ); if( p.progressForward( dst.width() ) ) return fun; } return fun; }