• M
    udlfb: optimization - test the backing buffer · 8f3c39b8
    Mikulas Patocka 提交于
    Currently, the udlfb driver only tests for identical bytes at the
    beginning or at the end of a page and renders anything between the first
    and last mismatching pixel. But pages are not the same as lines, so this
    is quite suboptimal - if there is something modified at the beginning of a
    page and at the end of a page, the whole page is rendered, even if most of
    the page is not modified.
    
    This patch makes it test for identical pixels at the beginning and end of
    each rendering command. This patch improves identical byte detection by
    41% when playing video in a window.
    
    This patch also fixes a possible screen corruption if the user is writing
    to the framebuffer while dlfb_render_hline is in progress - the pixel data
    that is copied to the backbuffer with memcpy may be different from the
    pixel data that is actually rendered to the hardware (because the content
    of the framebuffer may change between memcpy and the rendering command).
    We must make sure that we copy exactly the same pixel as the pixel that is
    being rendered.
    Signed-off-by: NMikulas Patocka <mpatocka@redhat.com>
    [b.zolnierkie: fix code indent]
    Signed-off-by: NBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    8f3c39b8
udlfb.c 52.5 KB