i.mx8mp GPU and GTK4 app: GUI/window present delay and blocking Vivante /dev/galcore ioctl

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

i.mx8mp GPU and GTK4 app: GUI/window present delay and blocking Vivante /dev/galcore ioctl

134件の閲覧回数
jim777
Contributor II
GTK4 Window Startup Delay (~10s) on i.MX8MP with Vivante GPU
When using the default GTK4 GL renderer:
gtk_window_present(window);​
takes approximately 9-10 seconds before the window becomes visible.

The evidence (see attached file) strongly suggests that the startup delay is not caused by GTK application code.

The delay appears correlated with a blocking Vivante /dev/galcore ioctl within the GL rendering path. Software rendering (GSK_RENDERER=cairo) avoids the issue.

We are looking for guidance on known issues, debugging methods, configuration changes, or fixes for GTK4/OpenGL startup latency on i.MX8MP with the Vivante GPU stack.

0 件の賞賛
返信
2 返答(返信)

112件の閲覧回数
Zhiming_Liu
NXP TechSupport
NXP TechSupport

Hi @jim777 

Thank you for sharing such detailed information. Could you provide a minimal, reproducible GTK4 source code example? I need to conduct further testing in the NXP BSP.

Best Regards,
Zhiming

0 件の賞賛
返信

101件の閲覧回数
jim777
Contributor II

Hi Zhiming,

Thanks for your quick response!

Attached is a small skeleton but complete source file to test.
and the environment variables set before running:

#!/bin/sh
export XDG_RUNTIME_DIR=/run/user/0
export WAYLAND_DISPLAY=wayland-1
export GDK_BACKEND=wayland
export GSK_RENDERER=gl

 the relevant from weston.ini:

root@nitrogen8mp:~# cat /etc/xdg/weston/weston.ini
[core]
#gbm-format=argb8888
use-g2d=true
repaint-window=16
idle-time=0
xwayland=true
#enable-overlay-view=1

[shell]
panel-position=none

[libinput]
touchscreen_calibrator=true

#[output]
#name=HDMI-A-1
#mode=1920x1080@60
#transform=rotate-90

#[output]
#name=HDMI-A-2
#mode=off
#       WIDTHxHEIGHT    Resolution size width and height in pixels
#       off             Disables the output
#       preferred       Uses the preferred mode
#       current         Uses the current crt controller mode
#transform=rotate-90

[screen-share]
command=/usr/bin/weston --backend=rdp-backend.so --shell=fullscreen-shell.so --no-clients-resize
#start-on-startup=true

[input-method]
path=/usr/libexec/ibus-wayland


the running time for the gtk_window_present on a desktop w/o GPU support takes some hundreds msec (< 1sec); and on the i.mx8mp device takes 9970 ms :

root@nitrogen8mp:~# gtk4-test
A: activate: before _present: 47333 ms
B: activate: after _present: 57303 ms, takes: 9970 ms
C: activate: after idele_add: 57303 ms
D: startup_task_cb: 57315 ms
^C
root@nitrogen8mp:~#


I have tried render: ngl, which leads to smear image/widgetrs/video, and Vulkan leads to critical errors: Loader Message: vkCreateDevice: Failed to validate extensions in list; Failed to realize renderer of type ‘GskVulkanRenderer’ for surface ‘GdkWaylandToplevel’: Could not find a Vulkan device with the required features.

Since out app need GPU support, and the recommended renderer under wayland/weston is still gl (UG10159  11.3.2.1 GL renderer)   , I hope you can help to find a solution.

Best regards,





0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-2411550%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3Ei.mx8mp%20GPU%E3%81%A8GTK4%E3%82%A2%E3%83%97%E3%83%AA%3AGUI%2F%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E8%A1%A8%E7%A4%BA%E9%81%85%E5%BB%B6%E3%81%A8Vivante%20%2Fdev%2Fgalcore%20ioctl%E3%81%AE%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2411550%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CDIV%3EVivante%20GPU%E3%82%92%E6%90%AD%E8%BC%89%E3%81%97%E3%81%9Fi.MX8MP%E3%81%A7%E3%81%AEGTK4%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E8%B5%B7%E5%8B%95%E9%81%85%E5%BB%B6(%E7%B4%8410%E7%A7%92)%3CBR%20%2F%3E%3CDIV%3E%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%AEGTK4%20GL%E3%83%AC%E3%83%B3%E3%83%80%E3%83%A9%E3%83%BC%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88%EF%BC%9A%3C%2FDIV%3E%3C%2FDIV%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3Egtk_window_present(window)%3B%E2%80%8B%3C%2FCODE%3E%3C%2FPRE%3E%3CDIV%3E%3CSTRONG%3E%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E3%81%BE%E3%81%A7%E3%81%AB%E3%81%AF%E7%B4%849%EF%BD%9E10%E7%A7%92%3C%2FSTRONG%3E%E3%81%8B%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FDIV%3E%3CDIV%3E%3CP%3E%E8%A8%BC%E6%8B%A0(%3CSTRONG%3E%E6%B7%BB%E4%BB%98%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%8F%82%E7%85%A7%3C%2FSTRONG%3E)%E3%81%AF%E3%80%81%E8%B5%B7%E5%8B%95%E9%81%85%E5%BB%B6%E3%81%8CGTK%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AB%E3%82%88%E3%82%8B%E3%82%82%E3%81%AE%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%84%E3%81%93%E3%81%A8%E3%82%92%E5%BC%B7%E3%81%8F%E7%A4%BA%E5%94%86%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E3%81%93%E3%81%AE%E9%81%85%E5%BB%B6%E3%81%AF%E3%80%81GL%E3%83%AC%E3%83%B3%E3%83%80%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%91%E3%82%B9%E5%86%85%E3%81%AEVivante%20%2Fdev%2Fgalcore%20ioctl%E3%81%AE%E3%83%96%E3%83%AD%E3%83%83%E3%82%AD%E3%83%B3%E3%82%B0%E3%81%A8%E9%96%A2%E9%80%A3%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%82%88%E3%81%86%E3%81%A7%E3%81%99%E3%80%82%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%AC%E3%83%B3%E3%83%80%E3%83%AA%E3%83%B3%E3%82%B0(GSK_RENDERER%3D%E3%82%AB%E3%82%A4%E3%83%AD)%E3%81%AF%E3%81%93%E3%81%AE%E5%95%8F%E9%A1%8C%E3%82%92%E5%9B%9E%E9%81%BF%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3EVivante%20GPU%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF%E3%82%92%E7%94%A8%E3%81%84%E3%81%9Fi.MX8MP%E3%81%A7%E3%81%AEGTK4%2FOpenGL%E8%B5%B7%E5%8B%95**%E3%83%AC%E3%82%A4%E3%83%86%E3%83%B3%E3%82%B7**%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E6%97%A2%E7%9F%A5%E3%81%AE%E5%95%8F%E9%A1%8C%E3%80%81%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E6%96%B9%E6%B3%95%E3%80%81%E8%A8%AD%E5%AE%9A%E5%A4%89%E6%9B%B4%E3%80%81%E3%81%BE%E3%81%9F%E3%81%AF%E4%BF%AE%E6%AD%A3%E6%96%B9%E6%B3%95%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%20%3CEM%3E%3CSTRONG%3E%E3%81%AE%E3%82%AC%E3%82%A4%E3%83%80%E3%83%B3%3C%2FSTRONG%3E%3C%2FEM%3E%20%E3%82%B9%E3%82%92%E6%8E%A2%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FDIV%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2411605%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20i.mx8mp%20GPU%20and%20GTK4%20app%3A%20%20GUI%2Fwindow%20present%20delay%20and%20%20blocking%20Vivante%20%2Fdev%2Fgalcore%20ioctl%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2411605%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%20%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F247983%22%20target%3D%22_blank%22%3E%40jim777%E3%81%95%E3%82%93%3C%2FA%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%E8%A9%B3%E7%B4%B0%E3%81%AA%E6%83%85%E5%A0%B1%E3%82%92%E5%85%B1%E6%9C%89%E3%81%97%E3%81%A6%E3%81%84%E3%81%9F%E3%81%A0%E3%81%8D%E3%80%81%E3%81%82%E3%82%8A%E3%81%8C%E3%81%A8%E3%81%86%E3%81%94%E3%81%96%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E6%9C%80%E5%B0%8F%E9%99%90%E3%81%A7%E5%86%8D%E7%8F%BE%E5%8F%AF%E8%83%BD%E3%81%AAGTK4%E3%81%AE%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E4%BE%8B%E3%82%92%E6%95%99%E3%81%88%E3%81%A6%E3%82%82%E3%82%89%E3%81%88%E3%81%BE%E3%81%99%E3%81%8B%3FNXP%20BSP%E3%81%A7%E3%81%95%E3%82%89%E3%81%AB%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E5%AE%9F%E6%96%BD%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%97%E3%81%BE%E3%81%99%E3%80%81%3CBR%20%2F%3E%E5%BF%97%E6%98%8E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2411760%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20i.mx8mp%20GPU%20and%20GTK4%20app%3A%20%20GUI%2Fwindow%20present%20delay%20and%20%20blocking%20Vivante%20%2Fdev%2Fgalcore%20ioctl%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2411760%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%E5%BF%97%E6%98%8E%E3%81%95%E3%82%93%3CBR%20%2F%3E%3CBR%20%2F%3E%E8%BF%85%E9%80%9F%E3%81%AA%E3%81%94%E5%AF%BE%E5%BF%9C%E3%81%82%E3%82%8A%E3%81%8C%E3%81%A8%E3%81%86%E3%81%94%E3%81%96%E3%81%84%E3%81%BE%E3%81%99%EF%BC%81%3CBR%20%2F%3E%3CBR%20%2F%3E%E3%83%86%E3%82%B9%E3%83%88%E7%94%A8%E3%81%AE%E3%80%81%E9%AA%A8%E7%B5%84%E3%81%BF%E3%81%AF%E5%B0%8F%E3%81%95%E3%81%84%E3%81%AA%E3%81%8C%E3%82%89%E3%82%82%E5%AE%8C%E5%85%A8%E3%81%AA%E3%82%BD%E3%83%BC%E3%82%B9%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E6%B7%BB%E4%BB%98%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3CBR%20%2F%3E%E5%AE%9F%E8%A1%8C%E5%89%8D%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%9F%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0%EF%BC%9A%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3E%23!%2Fbin%2Fsh%0Aexport%20XDG_RUNTIME_DIR%3D%2Frun%2Fuser%2F0%0Aexport%20WAYLAND_DISPLAY%3Dwayland-1%0Aexport%20GDK_BACKEND%3Dwayland%0Aexport%20GSK_RENDERER%3Dgl%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3Eweston.ini%20%E3%81%8B%E3%82%89%E3%81%AE%E9%96%A2%E9%80%A3%E6%83%85%E5%A0%B1%3A%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3Eroot%40nitrogen8mp%3A~%23%20cat%20%2Fetc%2Fxdg%2Fweston%2Fweston.ini%0A%5Bcore%5D%0A%23gbm-format%3Dargb8888%0Ause-g2d%3Dtrue%0Arepaint-window%3D16%0Aidle-time%3D0%0Axwayland%3Dtrue%0A%23enable-overlay-view%3D1%0A%0A%5Bshell%5D%0Apanel-position%3Dnone%0A%0A%5Blibinput%5D%0Atouchscreen_calibrator%3Dtrue%0A%0A%23%5Boutput%5D%0A%23name%3DHDMI-A-1%0A%23mode%3D1920x1080%4060%0A%23transform%3Drotate-90%0A%0A%23%5Boutput%5D%0A%23name%3DHDMI-A-2%0A%23mode%3Doff%0A%23%20%20%20%20%20%20%20WIDTHxHEIGHT%20%20%20%20Resolution%20size%20width%20and%20height%20in%20pixels%0A%23%20%20%20%20%20%20%20off%20%20%20%20%20%20%20%20%20%20%20%20%20Disables%20the%20output%0A%23%20%20%20%20%20%20%20preferred%20%20%20%20%20%20%20Uses%20the%20preferred%20mode%0A%23%20%20%20%20%20%20%20current%20%20%20%20%20%20%20%20%20Uses%20the%20current%20crt%20controller%20mode%0A%23transform%3Drotate-90%0A%0A%5Bscreen-share%5D%0Acommand%3D%2Fusr%2Fbin%2Fweston%20--backend%3Drdp-backend.so%20--shell%3Dfullscreen-shell.so%20--no-clients-resize%0A%23start-on-startup%3Dtrue%0A%0A%5Binput-method%5D%0Apath%3D%2Fusr%2Flibexec%2Fibus-wayland%0A%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%3CBR%20%2F%3EGPU%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E3%81%AA%E3%81%84%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E3%81%A7%E3%81%AEgtk_window_present%E3%81%AE%E5%AE%9F%E8%A1%8C%E6%99%82%E9%96%93%E3%81%AF%E6%95%B0%E7%99%BE%E3%83%9F%E3%83%AA%E7%A7%92(%26lt%3B1%E7%A7%92)%E3%81%8B%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E3%81%9D%E3%81%97%E3%81%A6i.mx8MP%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%81%A7%E3%81%AF9970%E3%83%9F%E3%83%AA%E7%A7%92%E3%81%8B%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%99%3A%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3Eroot%40nitrogen8mp%3A~%23%20gtk4-test%0AA%3A%20activate%3A%20before%20_present%3A%2047333%20ms%0AB%3A%20activate%3A%20after%20_present%3A%2057303%20ms%2C%20takes%3A%209970%20ms%0AC%3A%20activate%3A%20after%20idele_add%3A%2057303%20ms%0AD%3A%20startup_task_cb%3A%2057315%20ms%0A%5EC%0Aroot%40nitrogen8mp%3A~%23%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%3CBR%20%2F%3Erender%3A%20ngl%E3%82%92%E8%A9%A6%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%81%8C%E3%80%81%E7%94%BB%E5%83%8F%E3%82%84%E3%82%A6%E3%82%A3%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E3%80%81%E5%8B%95%E7%94%BB%E3%81%AE%E3%81%AB%E3%81%98%E3%81%BF%E3%81%8C%E7%94%9F%E3%81%98%E3%81%A6%E3%81%97%E3%81%BE%E3%81%84%E3%80%81%20%3CSPAN%3EVulkan%E3%81%8C%E9%87%8D%E5%A4%A7%E3%81%AA%E3%82%A8%E3%83%A9%E3%83%BC%E3%82%92%E5%BC%95%E3%81%8D%E8%B5%B7%E3%81%93%E3%81%99%3A%E3%83%AD%E3%83%BC%E3%83%80%E3%83%BC%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%3AvkCreateDevice%3A%E3%83%AA%E3%82%B9%E3%83%88%E5%86%85%E3%81%AE%E6%8B%A1%E5%BC%B5%E3%82%92%E6%A4%9C%E8%A8%BC%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%3B%E8%A1%A8%E9%9D%A2%E3%81%AE%E3%80%8CGdkWaylandToplevel%E3%80%8D%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%E3%82%BF%E3%82%A4%E3%83%97%E3%80%8CGskVulkanRenderer%E3%80%8D%E3%81%AE%E3%83%AC%E3%83%B3%E3%83%80%E3%83%A9%E3%83%BC%E3%82%92%E5%AE%9F%E8%A3%85%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%3A%E5%BF%85%E8%A6%81%E3%81%AA%E6%A9%9F%E8%83%BD%E3%82%92%E6%8C%81%E3%81%A4Vulkan%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%82%92%E8%A6%8B%E3%81%A4%E3%81%91%E3%82%89%E3%82%8C%E3%81%BE%E3%81%9B%E3%82%93%E3%81%A7%E3%81%97%E3%81%9F%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FSPAN%3E%E7%A7%81%E3%81%9F%E3%81%A1%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AB%E3%81%AFGPU%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%A7%E3%80%81Wayland%2FWeston%E3%81%A7%E6%8E%A8%E5%A5%A8%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%83%AC%E3%83%B3%E3%83%80%E3%83%A9%E3%83%BC%E3%81%AF%E3%81%BE%E3%81%A0GL(UG10159%2011.3.2.1%20GL%E3%83%AC%E3%83%B3%E3%83%80%E3%83%A9%E3%83%BC)%E3%81%AA%E3%81%AE%E3%81%A7%E3%80%81%E8%A7%A3%E6%B1%BA%E7%AD%96%E3%82%92%E8%A6%8B%E3%81%A4%E3%81%91%E3%82%8B%E6%89%8B%E5%8A%A9%E3%81%91%E3%82%92%E3%81%84%E3%81%9F%E3%81%A0%E3%81%91%E3%82%8C%E3%81%B0%E5%B9%B8%E3%81%84%E3%81%A7%E3%81%99%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%97%E3%81%BE%E3%81%99%E3%80%81%3CBR%20%2F%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E