@@ -537,12 +537,25 @@ struct blt3_swdrv {
537537 video_coord_t src_x , video_coord_t src_y ,
538538 video_dim_t src_size_x , video_dim_t src_size_y ,
539539 video_imatrix2d_t src_matrix );
540+
541+ /* Video format converter (used for quickly converting pixel formats under noblend)
542+ * [valid_if(bsw_blit == &libvideo_swblitter_noblend_difffmtblit ||
543+ * bsw_stretch == &libvideo_swblitter_noblend_difffmtstretch_l ||
544+ * bsw_stretch == &libvideo_swblitter_noblend_difffmtstretch_n ||
545+ * bsw_blit_imatrix == &libvideo_swblitter_noblend_difffmtblit_imatrix ||
546+ * bsw_stretch_imatrix == &libvideo_swblitter_noblend_difffmtstretch_imatrix_l ||
547+ * bsw_stretch_imatrix == &libvideo_swblitter_noblend_difffmtstretch_imatrix_n)] */
548+ struct video_converter bsw3_conv ;
540549};
541550
542551#define video_swblitter3_getdrv (self ) \
543552 ((struct blt3_swdrv *)(self)->_vbt3_driver)
544553#define video_swblitter3_getcdrv (self ) \
545554 ((struct blt3_swdrv const *)(self)->_vbt3_driver)
555+ #define libvideo_swblitter3_generic__conv (self ) \
556+ (&video_swblitter3_getdrv(self)->bsw3_conv)
557+ #define libvideo_swblitter3_generic__cconv (self ) \
558+ (&video_swblitter3_getcdrv(self)->bsw3_conv)
546559
547560/* Video BLIT internal API wrappers */
548561#define _video_swblitter3_x_blit (self , out_x , out_y , dst_x , dst_y , src_x , src_y , size_x , size_y ) \
@@ -847,6 +860,28 @@ INTDEF ATTR_IN(1) void CC libvideo_swblitter3__stretch__blend1_n(struct video_bl
847860INTDEF ATTR_IN (1 ) void CC libvideo_swblitter3__blit_imatrix__blend1 (struct video_blitter3 const * __restrict self , video_coord_t out_x , video_coord_t out_y , video_coord_t dst_x , video_coord_t dst_y , video_imatrix2d_t dst_matrix , video_coord_t src_x , video_coord_t src_y , video_dim_t size_x , video_dim_t size_y , video_imatrix2d_t src_matrix );
848861INTDEF ATTR_IN (1 ) void CC libvideo_swblitter3__stretch_imatrix__blend1_l (struct video_blitter3 const * __restrict self , video_coord_t out_x , video_coord_t out_y , video_coord_t dst_x , video_coord_t dst_y , video_dim_t dst_size_x , video_dim_t dst_size_y , video_imatrix2d_t dst_matrix , video_coord_t src_x , video_coord_t src_y , video_dim_t src_size_x , video_dim_t src_size_y , video_imatrix2d_t src_matrix );
849862INTDEF ATTR_IN (1 ) void CC libvideo_swblitter3__stretch_imatrix__blend1_n (struct video_blitter3 const * __restrict self , video_coord_t out_x , video_coord_t out_y , video_coord_t dst_x , video_coord_t dst_y , video_dim_t dst_size_x , video_dim_t dst_size_y , video_imatrix2d_t dst_matrix , video_coord_t src_x , video_coord_t src_y , video_dim_t src_size_x , video_dim_t src_size_y , video_imatrix2d_t src_matrix );
863+ /* Same as versions above, but `vbt3_rddst' is a 1bpp-msb
864+ * bitmask specifying which pixels to write in `vbt3_wrdst'
865+ * - The *_blend1* version then specifies that no further blending is done by `vbt3_wrdst'
866+ * - The *_samefmt* version then specifies that `vbt3_wrdst' and `vbt3_src' use the same codec */
867+ INTDEF ATTR_IN (1 ) void CC libvideo_swblitter3__blit__mask1msb (struct video_blitter3 const * __restrict self , video_coord_t out_x , video_coord_t out_y , video_coord_t dst_x , video_coord_t dst_y , video_coord_t src_x , video_coord_t src_y , video_dim_t size_x , video_dim_t size_y );
868+ INTDEF ATTR_IN (1 ) void CC libvideo_swblitter3__stretch__mask1msb_l (struct video_blitter3 const * __restrict self , video_coord_t out_x , video_coord_t out_y , video_coord_t dst_x , video_coord_t dst_y , video_dim_t dst_size_x , video_dim_t dst_size_y , video_coord_t src_x , video_coord_t src_y , video_dim_t src_size_x , video_dim_t src_size_y );
869+ INTDEF ATTR_IN (1 ) void CC libvideo_swblitter3__stretch__mask1msb_n (struct video_blitter3 const * __restrict self , video_coord_t out_x , video_coord_t out_y , video_coord_t dst_x , video_coord_t dst_y , video_dim_t dst_size_x , video_dim_t dst_size_y , video_coord_t src_x , video_coord_t src_y , video_dim_t src_size_x , video_dim_t src_size_y );
870+ INTDEF ATTR_IN (1 ) void CC libvideo_swblitter3__blit_imatrix__mask1msb (struct video_blitter3 const * __restrict self , video_coord_t out_x , video_coord_t out_y , video_coord_t dst_x , video_coord_t dst_y , video_imatrix2d_t dst_matrix , video_coord_t src_x , video_coord_t src_y , video_dim_t size_x , video_dim_t size_y , video_imatrix2d_t src_matrix );
871+ INTDEF ATTR_IN (1 ) void CC libvideo_swblitter3__stretch_imatrix__mask1msb_l (struct video_blitter3 const * __restrict self , video_coord_t out_x , video_coord_t out_y , video_coord_t dst_x , video_coord_t dst_y , video_dim_t dst_size_x , video_dim_t dst_size_y , video_imatrix2d_t dst_matrix , video_coord_t src_x , video_coord_t src_y , video_dim_t src_size_x , video_dim_t src_size_y , video_imatrix2d_t src_matrix );
872+ INTDEF ATTR_IN (1 ) void CC libvideo_swblitter3__stretch_imatrix__mask1msb_n (struct video_blitter3 const * __restrict self , video_coord_t out_x , video_coord_t out_y , video_coord_t dst_x , video_coord_t dst_y , video_dim_t dst_size_x , video_dim_t dst_size_y , video_imatrix2d_t dst_matrix , video_coord_t src_x , video_coord_t src_y , video_dim_t src_size_x , video_dim_t src_size_y , video_imatrix2d_t src_matrix );
873+ INTDEF ATTR_IN (1 ) void CC libvideo_swblitter3__blit__mask1msb_blend1_samefmt (struct video_blitter3 const * __restrict self , video_coord_t out_x , video_coord_t out_y , video_coord_t dst_x , video_coord_t dst_y , video_coord_t src_x , video_coord_t src_y , video_dim_t size_x , video_dim_t size_y );
874+ INTDEF ATTR_IN (1 ) void CC libvideo_swblitter3__stretch__mask1msb_blend1_samefmt_l (struct video_blitter3 const * __restrict self , video_coord_t out_x , video_coord_t out_y , video_coord_t dst_x , video_coord_t dst_y , video_dim_t dst_size_x , video_dim_t dst_size_y , video_coord_t src_x , video_coord_t src_y , video_dim_t src_size_x , video_dim_t src_size_y );
875+ INTDEF ATTR_IN (1 ) void CC libvideo_swblitter3__stretch__mask1msb_blend1_samefmt_n (struct video_blitter3 const * __restrict self , video_coord_t out_x , video_coord_t out_y , video_coord_t dst_x , video_coord_t dst_y , video_dim_t dst_size_x , video_dim_t dst_size_y , video_coord_t src_x , video_coord_t src_y , video_dim_t src_size_x , video_dim_t src_size_y );
876+ INTDEF ATTR_IN (1 ) void CC libvideo_swblitter3__blit_imatrix__mask1msb_blend1_samefmt (struct video_blitter3 const * __restrict self , video_coord_t out_x , video_coord_t out_y , video_coord_t dst_x , video_coord_t dst_y , video_imatrix2d_t dst_matrix , video_coord_t src_x , video_coord_t src_y , video_dim_t size_x , video_dim_t size_y , video_imatrix2d_t src_matrix );
877+ INTDEF ATTR_IN (1 ) void CC libvideo_swblitter3__stretch_imatrix__mask1msb_blend1_samefmt_l (struct video_blitter3 const * __restrict self , video_coord_t out_x , video_coord_t out_y , video_coord_t dst_x , video_coord_t dst_y , video_dim_t dst_size_x , video_dim_t dst_size_y , video_imatrix2d_t dst_matrix , video_coord_t src_x , video_coord_t src_y , video_dim_t src_size_x , video_dim_t src_size_y , video_imatrix2d_t src_matrix );
878+ INTDEF ATTR_IN (1 ) void CC libvideo_swblitter3__stretch_imatrix__mask1msb_blend1_samefmt_n (struct video_blitter3 const * __restrict self , video_coord_t out_x , video_coord_t out_y , video_coord_t dst_x , video_coord_t dst_y , video_dim_t dst_size_x , video_dim_t dst_size_y , video_imatrix2d_t dst_matrix , video_coord_t src_x , video_coord_t src_y , video_dim_t src_size_x , video_dim_t src_size_y , video_imatrix2d_t src_matrix );
879+ INTDEF ATTR_IN (1 ) void CC libvideo_swblitter3__blit__mask1msb_blend1_difffmt (struct video_blitter3 const * __restrict self , video_coord_t out_x , video_coord_t out_y , video_coord_t dst_x , video_coord_t dst_y , video_coord_t src_x , video_coord_t src_y , video_dim_t size_x , video_dim_t size_y );
880+ INTDEF ATTR_IN (1 ) void CC libvideo_swblitter3__stretch__mask1msb_blend1_difffmt_l (struct video_blitter3 const * __restrict self , video_coord_t out_x , video_coord_t out_y , video_coord_t dst_x , video_coord_t dst_y , video_dim_t dst_size_x , video_dim_t dst_size_y , video_coord_t src_x , video_coord_t src_y , video_dim_t src_size_x , video_dim_t src_size_y );
881+ INTDEF ATTR_IN (1 ) void CC libvideo_swblitter3__stretch__mask1msb_blend1_difffmt_n (struct video_blitter3 const * __restrict self , video_coord_t out_x , video_coord_t out_y , video_coord_t dst_x , video_coord_t dst_y , video_dim_t dst_size_x , video_dim_t dst_size_y , video_coord_t src_x , video_coord_t src_y , video_dim_t src_size_x , video_dim_t src_size_y );
882+ INTDEF ATTR_IN (1 ) void CC libvideo_swblitter3__blit_imatrix__mask1msb_blend1_difffmt (struct video_blitter3 const * __restrict self , video_coord_t out_x , video_coord_t out_y , video_coord_t dst_x , video_coord_t dst_y , video_imatrix2d_t dst_matrix , video_coord_t src_x , video_coord_t src_y , video_dim_t size_x , video_dim_t size_y , video_imatrix2d_t src_matrix );
883+ INTDEF ATTR_IN (1 ) void CC libvideo_swblitter3__stretch_imatrix__mask1msb_blend1_difffmt_l (struct video_blitter3 const * __restrict self , video_coord_t out_x , video_coord_t out_y , video_coord_t dst_x , video_coord_t dst_y , video_dim_t dst_size_x , video_dim_t dst_size_y , video_imatrix2d_t dst_matrix , video_coord_t src_x , video_coord_t src_y , video_dim_t src_size_x , video_dim_t src_size_y , video_imatrix2d_t src_matrix );
884+ INTDEF ATTR_IN (1 ) void CC libvideo_swblitter3__stretch_imatrix__mask1msb_blend1_difffmt_n (struct video_blitter3 const * __restrict self , video_coord_t out_x , video_coord_t out_y , video_coord_t dst_x , video_coord_t dst_y , video_dim_t dst_size_x , video_dim_t dst_size_y , video_imatrix2d_t dst_matrix , video_coord_t src_x , video_coord_t src_y , video_dim_t src_size_x , video_dim_t src_size_y , video_imatrix2d_t src_matrix );
850885
851886/* Generic blit3 operators (hl) */
852887INTDEF ATTR_IN (1 ) void CC libvideo_swblitter3_blit (struct video_blitter3 const * __restrict self , video_offset_t wrdst_x , video_offset_t wrdst_y , video_offset_t rddst_x , video_offset_t rddst_y , video_offset_t src_x , video_offset_t src_y , video_dim_t size_x , video_dim_t size_y );
0 commit comments