This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LINUXSDK-OMAPL138: LCD screen tearing

Part Number: LINUXSDK-OMAPL138
Other Parts Discussed in Thread: TMDSLCDK138, OMAPL138, OMAP-L138

Hi TI experts,

We are using:

1. TMDSLCDK138 board revision A7A.
2. PROCESSOR-SDK-LINUX-OMAPL138 version 06_00_00_07.
3. Custom device tree 6076.device_tree.zip.
4. Custom board adapter with the NHD-4.3-480272EF-ASXN# TFT LCD screen 8422.Schematic Prints.pdf.

5. Custom Kernel .config 4503.config.config.

6. Linux loading log

U-Boot SPL 2019.01-g8b90adfb16 (Aug 05 2019 - 06:26:20 +0000)
Trying to boot from MMC1


U-Boot 2019.01-g8b90adfb16 (Aug 05 2019 - 06:26:20 +0000)

Model: DA850/AM1808/OMAP-L138 LCDK
DRAM:  128 MiB
NAND:  512 MiB
MMC:   da830-mmc: 0
Loading Environment from NAND... *** Warning - bad CRC, using default environment

In:    serial@10d000
Out:   serial@10d000
Err:   serial@10d000
Invalid MAC address read.
Net:   DaVinci-EMAC
Warning: DaVinci-EMAC (eth0) using random MAC address - fe:db:17:1e:dc:77

Hit any key to stop autoboot:  3  2  1  0 
switch to partitions #0, OK
mmc0 is current device
SD/MMC found on device 0
** Unable to read file boot.scr **
** Unable to read file uEnv.txt **
switch to partitions #0, OK
mmc0 is current device
SD/MMC found on device 0
2961408 bytes read in 773 ms (3.7 MiB/s)
19903 bytes read in 7 ms (2.7 MiB/s)
## Flattened Device Tree blob at c0600000
   Booting using the fdt blob at 0xc0600000
   Loading Device Tree to c7e19000, end c7e20dbe ... OK

Starting kernel ...

Booting Linux on physical CPU 0x0
Linux version 4.19.38-g4dae378bbe (oe-user@oe-host) (gcc version 8.2.0 (GCC)) #1 PREEMPT Mon Aug 5 05:25:37 UTC 2019
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=0005317f
CPU: VIVT data cache, VIVT instruction cache
OF: fdt: Machine model: DA850/AM1808/OMAP-L138 LCDK
Memory policy: Data cache writethrough
Reserved memory: created CMA memory pool at 0xc3000000, size 16 MiB
OF: reserved mem: initialized node dsp-memory@c3000000, compatible id shared-dma-pool
cma: Reserved 24 MiB at 0xc6400000
DaVinci da850/omap-l138/am18x variant 0x1
random: get_random_bytes called from start_kernel+0x88/0x428 with crng_init=0
Built 1 zonelists, mobility grouping on.  Total pages: 32480
Kernel command line: console=ttyS2,115200n8 root=PARTUUID=0032aaf6-02 rw rootfstype=ext4 rootwait
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 80356K/131072K available (5740K kernel code, 338K rwdata, 1836K rodata, 224K init, 141K bss, 9756K reserved, 40960K cma-reserved)
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    vmalloc : 0xc8800000 - 0xff800000   ( 880 MB)
    lowmem  : 0xc0000000 - 0xc8000000   ( 128 MB)
    modules : 0xbf000000 - 0xc0000000   (  16 MB)
      .text : 0x(ptrval) - 0x(ptrval)   (5742 kB)
      .init : 0x(ptrval) - 0x(ptrval)   ( 224 kB)
      .data : 0x(ptrval) - 0x(ptrval)   ( 339 kB)
       .bss : 0x(ptrval) - 0x(ptrval)   ( 142 kB)
SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
rcu: Preemptible hierarchical RCU implementation.
	Tasks RCU enabled.
NR_IRQS: 245
clocksource: timer0_1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
Console: colour dummy device 80x30
Calibrating delay loop... 227.32 BogoMIPS (lpj=1136640)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
CPU: Testing write buffer coherency: ok
Setting up static identity map for 0xc0008400 - 0xc0008458
rcu: Hierarchical SRCU implementation.
devtmpfs: initialized
VFP support v0.3: not present
clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
futex hash table entries: 256 (order: -1, 3072 bytes)
pinctrl core: initialized pinctrl subsystem
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
cpuidle: using governor ladder
cpuidle: using governor menu
mux: initialized RTC_ALARM
mux: Setting register RTC_ALARM
mux:    PINMUX0 (0x00000000) = 0x44080000 -> 0x24080000
gpiochip_add_data_with_key: GPIOs 0..143 (davinci_gpio.0) failed to register, -517
vcc_3v3d: supplied by vcc_5vd
vcc_1v8d: supplied by vcc_5vd
pps_core: LinuxPPS API ver. 1 registered
pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
PTP clock support registered
Advanced Linux Sound Architecture Driver Initialized.
clocksource: Switched to clocksource timer0_1
NET: Registered protocol family 2
tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes)
TCP established hash table entries: 1024 (order: 0, 4096 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
workingset: timestamp_bits=14 max_order=15 bucket_order=1
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)
io scheduler noop registered (default)
io scheduler mq-deadline registered
io scheduler kyber registered
pinctrl-single 1c14120.pinmux: 160 pins, size 80
Serial: 8250/16550 driver, 10 ports, IRQ sharing disabled
console [ttyS2] disabled
1d0d000.serial: ttyS2 at MMIO 0x1d0d000 (irq = 61, base_baud = 8250000) is a TI DA8xx/66AK2x
console [ttyS2] enabled
OF: graph: no port node found in /soc@1c00000/display@213000
OF: graph: no port node found in /soc@1c00000/display@213000
OF: graph: no port node found in /soc@1c00000/display@213000
[drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[drm] No driver support for vblank timestamp query.
tilcdc 1e13000.display: fb0: DRM emulated frame buffer device
[drm] Initialized tilcdc 1.0.0 20121205 for 1e13000.display on minor 0
brd: module loaded
libphy: Fixed MDIO Bus: probed
davinci_mdio 1e24000.mdio: davinci mdio revision 1.5, bus freq 2200000
davinci_mdio 1e24000.mdio: detected phy mask ffffff7f
libphy: 1e24000.mdio: probed
davinci_mdio 1e24000.mdio: phy[7]: device 1e24000.mdio:07, driver SMSC LAN8710/LAN8720
i2c /dev entries driver
davinci-wdt 1c21000.wdt: heartbeat 60 sec
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
sdhci-pltfm: SDHCI platform and OF driver helper
NET: Registered protocol family 10
Segment Routing with IPv6
sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
NET: Registered protocol family 17
edma 1c00000.edma: memcpy is disabled
edma 1c00000.edma: TI EDMA DMA engine driver
davinci_mmc 1c40000.mmc: Got CD GPIO
davinci_mmc 1c40000.mmc: Using DMA, 4-bit mode
console [netcon0] enabled
netconsole: network logging started
davinci_emac 1e20000.ethernet: incompatible machine/device type for reading mac address
davinci_emac 1e20000.ethernet: using random MAC addr: b6:4b:66:5d:3f:31
input: gpio-keys as /devices/platform/gpio-keys/input/input0
hctosys: unable to open rtc device (rtc0)
ALSA device list:
  No soundcards found.
mmcblk0: mmc0:59b4 USD   7.51 GiB 
 mmcblk0: p1 p2
random: fast init done
EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
VFS: Mounted root (ext4 filesystem) on device 179:2.
devtmpfs: mounted
Freeing unused kernel memory: 224K
This architecture does not have kernel memory protection.
Run /sbin/init as init process
tilcdc 1e13000.display: tilcdc_crtc_irq(0x00000160): FIFO underflow
systemd[1]: System time before build time, advancing clock.
systemd[1]: systemd 239 running in system mode. (+PAM -AUDIT -SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP -LIBCRYPTSETUP -GCRYPT -GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID -ELFUTILS +KMOD -IDN2 -IDN -PCRE2 default-hierarchy=hybrid)
systemd[1]: Detected architecture arm.

Welcome to Arago 2019.05!

systemd[1]: Set hostname to <omapl138-lcdk>.
systemd[1]: File /lib/systemd/system/systemd-journald.service:36 configures an IP firewall (IPAddressDeny=any), but the local system does not support BPF/cgroup based firewalling.
systemd[1]: Proceeding WITHOUT firewalling in effect! (This warning is only shown for the first loaded unit using IP firewalling.)
random: systemd: uninitialized urandom read (16 bytes read)
systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[  OK  ] Started Forward Password Requests to Wall Directory Watch.
random: systemd: uninitialized urandom read (16 bytes read)
systemd[1]: Created slice system-getty.slice.
[  OK  ] Created slice system-getty.slice.
random: systemd: uninitialized urandom read (16 bytes read)
systemd[1]: Listening on udev Control Socket.
[  OK  ] Listening on udev Control Socket.
systemd[1]: Created slice system-serial\x2dgetty.slice.
[  OK  ] Created slice system-serial\x2dgetty.slice.
systemd[1]: Listening on udev Kernel Socket.
[  OK  ] Listening on udev Kernel Socket.
[  OK  ] Created slice User and Session Slice.
[  OK  ] Listening on Network Service Netlink Socket.
[  OK  ] Listening on Journal Socket.
[  OK  ] Started Hardware RNG Entropy Gatherer Daemon.
         Starting udev Coldplug all Devices...
[  OK  ] Listening on initctl Compatibility Named Pipe.
[  OK  ] Reached target Remote File Systems.
         Mounting POSIX Message Queue File System...
[  OK  ] Listening on Journal Socket (/dev/log).
         Starting Journal Service...
         Starting Remount Root and Kernel File Systems...
         Mounting Kernel Debug File System...
         Mounting Kernel Configuration File System...
EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
         Starting Apply Kernel Variables...
[  OK  ] Reached target Swap.
         Mounting Temporary Directory (/tmp)...
[  OK  ] Reached target Slices.
[  OK  ] Started Dispatch Password Requests to Console Directory Watch.
[  OK  ] Reached target Paths.
systemd[1]: Listening on Process Core Dump Socket.
[  OK  ] Listening on Process Core Dump Socket.
systemd[1]: Starting Create list of required static device nodes for the current kernel...
         Starting Create list of required st…ce nodes for the current kernel...
systemd[1]: rngd.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: rngd.service: Failed with result 'exit-code'.
systemd[1]: Mounted POSIX Message Queue File System.
[  OK  ] Mounted POSIX Message Queue File System.
systemd[1]: Started Remount Root and Kernel File Systems.
[  OK  ] Started Remount Root and Kernel File Systems.
systemd[1]: Mounted Kernel Debug File System.
[  OK  ] Mounted Kernel Debug File System.
systemd[1]: Mounted Kernel Configuration File System.
[  OK  ] Mounted Kernel Configuration File System.
systemd[1]: Started Apply Kernel Variables.
[  OK  ] Started Apply Kernel Variables.
systemd[1]: Mounted Temporary Directory (/tmp).
[  OK  ] Mounted Temporary Directory (/tmp).
[  OK  ] Started Create list of required sta…vice nodes for the current kernel.
         Starting Create Static Device Nodes in /dev...
[  OK  ] Started Journal Service.
         Starting Flush Journal to Persistent Storage...
[  OK  ] Started Create Static Device Nodes in /dev.
systemd-journald[60]: Received request to flush runtime journal from PID 1
[  OK  ] Reached target Local File Systems (Pre).
[  OK  ] Reached target Containers.
         Mounting /var/volatile...
         Mounting /media/ram...
         Starting udev Kernel Device Manager...
[  OK  ] Started Flush Journal to Persistent Storage.
[  OK  ] Mounted /var/volatile.
[  OK  ] Mounted /media/ram.
[  OK  ] Reached target Local File Systems.
         Starting Load/Save Random Seed...
         Starting Create Volatile Files and Directories...
[  OK  ] Started udev Kernel Device Manager.
[  OK  ] Started Load/Save Random Seed.
[  OK  ] Started Create Volatile Files and Directories.
         Starting Network Time Synchronization...
         Starting Network Service...
         Starting Update UTMP about System Boot/Shutdown...
[  OK  ] Started Update UTMP about System Boot/Shutdown.
[  OK  ] Started Network Service.
         Starting Network Name Resolution...
[  OK  ] Started Network Time Synchronization.
[  OK  ] Reached target System Time Synchronized.
[  OK  ] Started Network Name Resolution.
[  OK  ] Reached target Network.
[  OK  ] Reached target Host and Network Name Lookups.
davinci-rproc 11800000.dsp: assigned reserved memory node dsp-memory@c3000000
remoteproc remoteproc0: dsp is available
remoteproc remoteproc0: Direct firmware load for rproc-dsp-fw failed with error -2
remoteproc remoteproc0: powering up dsp
remoteproc remoteproc0: Direct firmware load for rproc-dsp-fw failed with error -2
remoteproc remoteproc0: request_firmware failed: -2
nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xcc
nand: Micron MT29F4G16ABADAH4
omap_rtc 1c23000.rtc: already running
nand: 512 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
Bad block table not found for chip 0
omap_rtc 1c23000.rtc: registered as rtc0
Bad block table not found for chip 0
Scanning device for bad blocks
tlv320aic3x-codec 0-0018: Linked as a consumer to regulator.2
tlv320aic3x-codec 0-0018: Linked as a consumer to regulator.3
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
SCSI subsystem initialized
usbcore: registered new device driver usb
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
usb_phy_generic usb_phy_generic.0.auto: usb_phy_generic.0.auto supply vcc not found, using dummy regulator
ohci-da8xx: DA8XX
[  OK  ] Started udev Coldplug all Devices.
ohci-da8xx 1e25000.usb: USB Host Controller
ohci-da8xx 1e25000.usb: new USB bus registered, assigned bus number 1
usb_phy_generic usb_phy_generic.0.auto: Linked as a consumer to regulator.0
ahci_da850 1e18000.sata: forcing PORTS_IMPL to 0x1
ahci_da850 1e18000.sata: AHCI 0001.0100 32 slots 1 ports 3 Gbps 0x1 impl platform mode
ohci-da8xx 1e25000.usb: irq 59, io mem 0x01e25000
asoc-simple-card sound: tlv320aic3x-hifi <-> 1d00000.mcasp mapping ok
musb-hdrc musb-hdrc.1.auto: MUSB HDRC host driver
usb usb1: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 4.19
ahci_da850 1e18000.sata: flags: ncq sntf pm led clo only pmp pio slum part ccc 
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: USB Host Controller
scsi host0: ahci_da850
ata1: SATA max UDMA/133 mmio [mem 0x01e18000-0x01e19fff] port 0x100 irq 67
usb usb1: Manufacturer: Linux 4.19.38-g4dae378bbe ohci_hcd
usb usb1: SerialNumber: 1e25000.usb
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
musb-hdrc musb-hdrc.1.auto: new USB bus registered, assigned bus number 2
usb usb2: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.19
usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb2: Product: MUSB HDRC host driver
usb usb2: Manufacturer: Linux 4.19.38-g4dae378bbe musb-hcd
usb usb2: SerialNumber: musb-hdrc.1.auto
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 1 port detected
ata1: SATA link down (SStatus 0 SControl 300)
davinci_mdio 1e24000.mdio: resetting idled controller
SMSC LAN8710/LAN8720 1e24000.mdio:07: attached PHY driver [SMSC LAN8710/LAN8720] (mii_bus:phy_addr=1e24000.mdio:07, irq=POLL)
IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
Bad block table written to 0x00001ffe0000, version 0x01
Bad block table written to 0x00001ffc0000, version 0x01
3 fixed-partitions partitions found on MTD device 62000000.nand
Creating 3 MTD partitions on "62000000.nand":
0x000000000000-0x000000020000 : "u-boot env"
0x000000020000-0x0000000a0000 : "u-boot"
0x0000000a0000-0x000020000000 : "free space"
davinci_nand 62000000.nand: controller rev. 2.5
[*     ] A start job is running for dev-ttyS2.device (26s / 1min 31s)
[**    ] A start job is running for dev-ttyS2.device (29s / 1min 31s)
[  OK  ] Found device /dev/ttyS2.
random: crng init done
random: 7 urandom warning(s) missed due to ratelimiting
[  OK  ] Created slice system-systemd\x2dfsck.slice.
         Starting File System Check on /dev/mmcblk0p1...
[  OK  ] Reached target System Initialization.
[  OK  ] Started Daily rotation of log files.
[  OK  ] Started Daily Cleanup of Temporary Directories.
[  OK  ] Reached target Timers.
         Starting sshd.socket.
[  OK  ] Listening on D-Bus System Message Bus Socket.
[  OK  ] Listening on RPCbind Server Activation Socket.
[  OK  ] Listening on sshd.socket.
[  OK  ] Reached target Sockets.
[  OK  ] Reached target Basic System.
         Starting Permit User Sessions...
         Starting TI IPC Daemon...
[  OK  ] Started Periodic Command Scheduler.
         Starting RPC Bind Service...
[  OK  ] Started Vsftpd ftp daemon.
[  OK  ] Started Job spooling tools.
         Starting rng-tools.service...
         Starting Print notice about GPLv3 packages...
[  OK  ] Started D-Bus System Message Bus.
         Starting uim-sysfs.service...
         Starting Enable and configure wl18xx bluetooth stack...
         Starting Login Service...
         Starting Save/Restore Sound Card State...
[  OK  ] Started File System Check on /dev/mmcblk0p1.
[  OK  ] Started Permit User Sessions.
[  OK  ] Started TI IPC Daemon.
[  OK  ] Started RPC Bind Service.
[  OK  ] Started rng-tools.service.
[  OK  ] Started Enable and configure wl18xx bluetooth stack.
[  OK  ] Started NFS status monitor for NFSv2/3 locking..
[  OK  ] Started Serial Getty on ttyS2.
[  OK  ] Started Getty on tty1.
[  OK  ] Reached target Login Prompts.
         Starting Synchronize System and HW clocks...
         Mounting /run/media/mmcblk0p1...
[  OK  ] Started Save/Restore Sound Card State.
[  OK  ] Started Synchronize System and HW clocks.
[  OK  ] Reached target Sound Card.
[  OK  ] Started Login Service.
[  OK  ] Mounted /run/media/mmcblk0p1.


 _____                    _____           _         _   
|  _  |___ ___ ___ ___   |  _  |___ ___  |_|___ ___| |_ 
|     |  _| .'| . | . |  |   __|  _| . | | | -_|  _|  _|
|__|__|_| |__,|_  |___|  |__|  |_| |___|_| |___|___|_|  
              |___|                    |___|            

Arago Project http://arago-project.org omapl138-lcdk ttyS2

Arago 2019.05 omapl138-lcdk ttyS2

omapl138-lcdk login: ***************************************************************
***************************************************************
NOTICE: This file system contains the following GPLv3 packages:
	bash-dev
	bash
	bc
	cifs-utils
	cpio
	dosfstools
	elfutils
	gawk
	gzip
	libbfd
	libcairo-perf-utils
	libdw1
	libelf1
	libgdbm-compat4
	libgdbm-dev
	libgdbm6
	libreadline-dev
	libreadline7
	m4-dev
	m4
	which

If you do not wish to distribute GPLv3 components please remove
the above packages prior to distribution.  This can be done using
the opkg remove command.  i.e.:
    opkg remove <package>
Where <package> is the name printed in the list above

NOTE: If the package is a dependency of another package you
      will be notified of the dependent packages.  You should
      use the --force-removal-of-dependent-packages option to
      also remove the dependent packages as well
***************************************************************
***************************************************************
.

We are using Qt software rendering graphics application through Qt LinuxFB plugin.

All the files above, including sd card image with test program (testTearing in "home" directory) are here.

The problem.

The problem is that moving objects are suffer from tearing on the LCD as I hope you can see on the video and photos below (the moving line must be straight, but it isn't).


Questions.

From documentation for Qt Embedded Linux on LinuxFB plugin:

"This plugin writes directly to the framebuffer via Linux's fbdev subsystem. Only software-rendered content is supported. Note that on some setups the display performance is expected to be limited.

However, since fbdev is being deprecated in the Linux kernel, the DRM dumb buffer support is also available, as of Qt 5.9. To use it, set the QT_QPA_FB_DRM environment variable to a non-zero value. When set, provided that dumb buffers are supported by your system, legacy framebuffer devices like /dev/fb0 won't be accessed. Instead, the rendering is set up via the DRM APIs, similar to the eglfs_kms backend in EGLFS. The output is double-buffered and page flipped, providing proper vsync for software-rendered content as well."

As far as I know you are not supporting Qt on OMAPL138, but I don't know where the problem is hidding - Qt, Linux, TI drivers or OMAPL138 LCDC module hardware, so my question is where is the problem and how to fix it if possible? Thanks in advance!

  • Hi, Vasily,

    I am not sure if we know how to fix it since Qt is not supported on OAMP-L138, but I'll check internally to see if anyone has any idea. I'll post back once I hear back from my co-worker.

    Rex

  • Hi, Vasily,

    I consulted with our display expert. He is not familiar with Qt, But he thinks if Qt is using /dev/fb0, the display will tear. If using the recent enough Qt, and sets the env variable, Qt should instead use DRM and double-buffering, which would fix tearing.

    You didn't mention if you have recent enough Qt or if the env variable is set. So, if not, you may want to give it a try.

    On the env variable info, the Qt expert suggests:

    since fbdev is being deprecated in the Linux kernel, the DRM dumb buffer support is also available, as of Qt 5.9. To use it, set the QT_QPA_FB_DRM environment variable to a non-zero value. When set, provided that dumb buffers are supported by your system, legacy framebuffer devices like /dev/fb0 won't be accessed. Instead, the rendering is set up via the DRM APIs, similar to the eglfs_kms backend in EGLFS. The output is double-buffered and page flipped, providing proper vsync for software-rendered content as well.

    As what were said above, we are not able to test and verify it. I hope these info are helpful to solve your issue.

    Rex 

  • Hi, Rex.

    Thank you for fast response.

    Yes I forgot to mention, we are using Qt version 5.14 and QT_QPA_FB_DRM variable is set to non zero variable, but it has no effect on the tearing.

    Anyway regardless of whether Qt works correctly or not I want to double-check whether everything else works well as it should, and we set everything up correctly.

    1. Is there any native graphics example that can demonstrate vsync is working on OMAPL138? Or maybe we should make it by ourselves?

    2. Please take a look at the Linux boot log from the first post, especially on these lines:

    [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
    [drm] No driver support for vblank timestamp query.
    tilcdc 1e13000.display: fb0: DRM emulated frame buffer device
    [drm] Initialized tilcdc 1.0.0 20121205 for 1e13000.display on minor 0

    Is this ok?

    3. Please take a look if needed at device tree and Kernel config, maybe there is something wrong?

    Any suggestions are appreciated.

  • Hi, Vasily,

    There isn't graphic example for OMAP-L138, and DRM looks fine. You can test display page-flipping with modetest or kmstest. Both should exist in the filesystem.

    Rex

  • Thanks Rex,

    I will try this next week and post the results here. Please don't close the thread until then, if possible.

  • Hi, Vasily,

    Even it is closed.You can always re-open it by replying to the thread. I'll wait for your results.

    Rex

  • Hi, Rex,

    here is the output of kmstest

    root@omapl138-lcdk:~# kmstest
    trying to open device 'i915'...failed
    trying to open device 'amdgpu'...failed
    trying to open device 'radeon'...failed
    trying to open device 'nouveau'...failed
    trying to open device 'vmwgfx'...failed
    trying to open device 'omapdrm'...failed
    trying to open device 'exynos'...failed
    trying to open device 'tilcdc'...done
    main: All ok!

    here is ouput of modetest 

    root@omapl138-lcdk:~# modetest
    trying to open device 'i915'...failed
    trying to open device 'amdgpu'...failed
    trying to open device 'radeon'...failed
    trying to open device 'nouveau'...failed
    trying to open device 'vmwgfx'...failed
    trying to open device 'omapdrm'...failed
    trying to open device 'exynos'...failed
    trying to open device 'tilcdc'...done
    Encoders:
    id	crtc	type	possible crtcs	possible clones	
    30	29	none	0x00000001	0x00000000
    
    Connectors:
    id	encoder	status		name		size (mm)	modes	encoders
    31	30	connected	DPI-1          	95x54		1	30
      modes:
    	name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
      480x272 60 480 482 523 525 272 274 284 286 9000 flags: nhsync, nvsync; type: preferred, driver
      props:
    	1 EDID:
    		flags: immutable blob
    		blobs:
    
    		value:
    	2 DPMS:
    		flags: enum
    		enums: On=0 Standby=1 Suspend=2 Off=3
    		value: 0
    	5 link-status:
    		flags: enum
    		enums: Good=0 Bad=1
    		value: 0
    	6 non-desktop:
    		flags: immutable range
    		values: 0 1
    		value: 0
    	19 CRTC_ID:
    		flags: object
    		value: 29
    
    CRTCs:
    id	fb	pos	size
    29	34	(0,0)	(480x272)
      480x272 60 480 482 523 525 272 274 284 286 9000 flags: nhsync, nvsync; type: preferred, driver
      props:
    	20 ACTIVE:
    		flags: range
    		values: 0 1
    		value: 1
    	21 MODE_ID:
    		flags: blob
    		blobs:
    
    		value:
    			28230000e001e2010b020d0200001001
    			12011c011e0100003c0000000a000000
    			48000000343830783237320000000000
    			00000000000000000000000000000000
    			00000000
    	18 OUT_FENCE_PTR:
    		flags: range
    		values: 0 18446744073709551615
    		value: 0
    
    Planes:
    id	crtc	fb	CRTC x,y	x,y	gamma size	possible crtcs
    28	29	34	0,0		0,0	0       	0x00000001
      formats: RG16
      props:
    	7 type:
    		flags: immutable enum
    		enums: Overlay=0 Primary=1 Cursor=2
    		value: 1
    	16 FB_ID:
    		flags: object
    		value: 34
    	17 IN_FENCE_FD:
    		flags: signed range
    		values: -1 2147483647
    		value: -1
    	19 CRTC_ID:
    		flags: object
    		value: 29
    	12 CRTC_X:
    		flags: signed range
    		values: -2147483648 2147483647
    		value: 0
    	13 CRTC_Y:
    		flags: signed range
    		values: -2147483648 2147483647
    		value: 0
    	14 CRTC_W:
    		flags: range
    		values: 0 2147483647
    		value: 480
    	15 CRTC_H:
    		flags: range
    		values: 0 2147483647
    		value: 272
    	8 SRC_X:
    		flags: range
    		values: 0 4294967295
    		value: 0
    	9 SRC_Y:
    		flags: range
    		values: 0 4294967295
    		value: 0
    	10 SRC_W:
    		flags: range
    		values: 0 4294967295
    		value: 31457280
    	11 SRC_H:
    		flags: range
    		values: 0 4294967295
    		value: 17825792
    
    Frame buffers:
    id	size	pitch

    and here is output of modetest when I try to test page flipping

    root@omapl138-lcdk:~# modetest -v -s 31:480x272
    trying to open device 'i915'...failed
    trying to open device 'amdgpu'...failed
    trying to open device 'radeon'...failed
    trying to open device 'nouveau'...failed
    trying to open device 'vmwgfx'...failed
    trying to open device 'omapdrm'...failed
    trying to open device 'exynos'...failed
    trying to open device 'tilcdc'...done
    setting mode 480x272-60Hz@XR24 on connectors 31, crtc 29
    failed to set mode: Function not implemented
    failed to page flip: Invalid argument

    As I understood from modetest output the system is only support RG16 format, but when I try 

    modetest -v -s 31:480x272-60Hz@RG16

    it gives the same result as above.

    I guess I need help here, maybe I'm doing something wrong.

  • Hi, Vasily.

    I was told it's the wrong kmstest. There's a kmstest in libdrm's test utilities, which doesn't really do anything. And then kmstest and kmsprint from https://github.com/tomba/kmsxx

    Try use the following instead.

         /usr/bin/kmstest.kms++

         /usr/bin/kmsprint

    Rex