• Harm Hanemaaijer's avatar
    G2D: Implement "double speed" 16bpp blits · 98f1b119
    Harm Hanemaaijer authored
    
    
    When source and destination coordinates allow it, a 16bpp screen-to-
    screen blit is divided into up to three segments: two optional one
    pixel wide edges and an  aligned middle segment that is copied in
    32-bit mode.
    
    This patch adds the low-level function sunxi_g2d_blit_r5g6b5_in_three
    and adds logic to the general blit function to use it for 16bpp to
    16bpp blits if the source and destination coordinates allow it. This
    patch automatically enables the use of this optimization in the
    sunxi G2D X driver. The area threshold for using G2D for
    16bpp-to-16bpp blits was introduced in a previous patch.
    
    Benchmarks:
    
    1920x1080x16bpp@60Hz, ShadowFB disabled:
    
    x11perf -scroll100
    Before:
     350000 trep @   0.0881 msec ( 11400.0/sec): Scroll 100x100 pixels
    After:
     350000 trep @   0.0819 msec ( 12200.0/sec): Scroll 100x100 pixels
    
    x11perf -scroll500
    Before:
      20000 trep @   1.3547 msec (   738.0/sec): Scroll 500x500 pixels
    After:
      35000 trep @   0.8005 msec (  1250.0/sec): Scroll 500x500 pixels
    Signed-off-by: default avatarHarm Hanemaaijer <fgenfb@yahoo.com>
    98f1b119
sunxi_disp.c 20.9 KB