On 2/15/21 11:32 AM, Peter Maydell wrote: > The draw_line16_32() function in the omap_lcdc template header > includes an ifdef for the case where HOST_WORDS_BIGENDIAN matches > TARGET_WORDS_BIGENDIAN. This is trying to optimise for "source > bitmap and destination bitmap format match", but it is broken, > because in this function the formats don't match: the source is > 16-bit colour and the destination is 32-bit colour, so a memcpy() > will produce corrupted graphics output. Drop the bogus ifdef. > > This bug was introduced in commit ea644cf343129, when we dropped > support for DEPTH values other than 32 from the template header. > The old #if line was > #if DEPTH == 16 && defined(HOST_WORDS_BIGENDIAN) == > defined(TARGET_WORDS_BIGENDIAN) > and this was mistakenly changed to > #if defined(HOST_WORDS_BIGENDIAN) == defined(TARGET_WORDS_BIGENDIAN) > rather than deleting the #if as now having an always-false condition. > > Fixes: ea644cf343129 > Signed-off-by: Peter Maydell <peter.mayd...@linaro.org> > --- > hw/display/omap_lcd_template.h | 4 ---- > 1 file changed, 4 deletions(-)
Reviewed-by: Philippe Mathieu-Daudé <f4...@amsat.org>