• Chandrabhanu Mahapatra's avatar
    OMAPDSS: DISPC: Enable predecimation · aed74b55
    Chandrabhanu Mahapatra authored
    In OMAP3 and OMAP4, the DISPC Scaler can downscale an image up to 4 times, and
    up to 2 times in OMAP2. However, with predecimation, the image can be reduced
    to 16 times by fetching only the necessary pixels in memory. Then this
    predecimated image can be downscaled further by the DISPC scaler.
    
    The pipeline is configured to use a burst of size 8 * 128 bits which consists
    of 8 mini bursts of 16 bytes each. So, horizontal predecimation more than 16
    can lead to complete discarding of such mini bursts. L3 interconnect may
    handover the bus to some other initiator and inturn delay the fetching of
    pixels leading to underflows. So, maximum predecimation limit is fixed at 16.
    
    Based on the downscaling required, a prior calculation of predecimation values
    for width and height of an image is done. Since, Predecimation reduces quality
    of an image higher priorty is given to DISPC Scaler for downscaling.
    
    This code was successfully tested on OMAP2, OMAP3 and OMAP4. Horizontal and
    vertical predecimation worked fine except for some synclost errors due to
    undocumented errata in OMAP3 which are fixed later and skewed images were seen
    on OMAP2 and OMAP3 during horizontal predecimation which will be addressed in
    the future patches.
    
    This code is based on code written by Lajos Molnar <lajos@ti.com> who had added
    predecimation support for NV12/YUV/rotated/SDMA buffers.
    Signed-off-by: default avatarChandrabhanu Mahapatra <cmahapatra@ti.com>
    Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
    aed74b55
dispc.c 83.2 KB