• Tomi Valkeinen's avatar
    OMAPDSS: DISPC: decimation rounding fix · eec77da2
    Tomi Valkeinen authored
    The driver uses DIV_ROUND_UP when calculating decimated width & height.
    For example, when decimating with 3, the width is calculated as:
    
      width = DIV_ROUND_UP(width, decim_x);
    
    This yields bad results for some values. For example, 800/3=266.666...,
    which is rounded to 267. When the input width is set to 267, and pixel
    increment is set to 3, this causes the dispc to read a line of 801
    pixels, i.e. it reads a wrong pixel at the end of the line.
    
    Even more pressing, the above rounding causes a BUG() in pixinc(), as
    the value of 801 is used to calculate row increment, leading to a bad
    value being passed to pixinc().
    
    This patch fixes the decimation by removing the DIV_ROUND_UP()s when
    calculating width and height for decimation.
    Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
    eec77da2
dispc.c 93.3 KB