Colour banding 32bpp on 18 bits per pixel iMX7

I’m experiencing colour banding issue with pictures in true colours (16.7 Million). I’ve set the 32bpp colour depth in uboot:

vendor=toradex
vidargs=video=mxsfb:1280x800M-32@60
videomode=video=ctfb:x:640,y:480,depth:18,pclk:39722,le:48,ri:16,up:33,lo:10,hs:96,vs:2,sync:0,vmode:0

which is then correctly interpreted in linux. Using fbset I see:

mode "1280x800-60"
    # D: 83.500 MHz, H: 49.703 kHz, V: 59.811 Hz
    geometry 1280 800 1280 800 32
    timings 11976 200 72 22 3 128 6
    vsync high
    rgba 8/16,8/8,8/0,0/0
endmode

Frame buffer device information:
    Name        : mxs-lcdif
    Address     : 0x8c100000
    Size        : 33554432
    Type        : PACKED PIXELS
    Visual      : TRUECOLOR
    XPanStep    : 0
    YPanStep    : 1
    YWrapStep   : 1
    LineLength  : 5120
    Accelerator : No

Even the X11 detects 32bpp as well cat /var/log/Xorg.0.log | grep depth:

"Default Screen Section" for depth/fbbpp 24/32

but on the monitor connected through VGA on Iris board I’m still seeing this:

[upload|C91V9TR0OmoNc9xofLCI1RsTQco=]

Original image for comparison:

[upload|hvR4ZeZ19jMW644nluSewCR2YvI=]

The parallel display interface to VGA converter installed on Iris board (ADV7125KSTZ140) supports only up to 18bpp modes. The Colibri iMX7 itself supports only 24bpp max.

Great many thanks. Do I understand it correctly that colour depth 24bpp works only with 24 bit bus width?

Yes it’s correct. Colibri iMX7 has 24 bits bus for parallel LCD interface. However LVDS converter on Iris v1.1A has only 18 bit input bus. New version of Iris board (v2.0A) has different LVDS converter IC and it supports 24 bpp.