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

75 次查看
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 回复数

53 次查看
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 项奖励
回复

42 次查看
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%20%E5%92%8C%20GTK4%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%EF%BC%9AGUI%2F%E7%AA%97%E5%8F%A3%E5%91%88%E7%8E%B0%E5%BB%B6%E8%BF%9F%E5%92%8C%E9%98%BB%E5%A1%9E%20Vivante%20%2Fdev%2Fgalcore%20ioctl%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2411550%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CDIV%3E%E5%9C%A8%E9%85%8D%E5%A4%87%20Vivante%20GPU%20%E7%9A%84%20i.MX8MP%20%E4%B8%8A%EF%BC%8CGTK4%20%E7%AA%97%E5%8F%A3%E5%90%AF%E5%8A%A8%E5%BB%B6%E8%BF%9F%E7%BA%A6%E4%B8%BA%2010%20%E7%A7%92%E3%80%82%3CBR%20%2F%3E%3CDIV%3E%E4%BD%BF%E7%94%A8%E9%BB%98%E8%AE%A4%E7%9A%84%20GTK4%20GL%20%E6%B8%B2%E6%9F%93%E5%99%A8%E6%97%B6%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%E5%A4%A7%E7%BA%A6%E9%9C%80%E8%A6%81%3CSTRONG%3E9-10%20%E7%A7%92%E6%89%8D%E8%83%BD%E7%9C%8B%E5%88%B0%E7%AA%97%E5%8F%A3%3C%2FSTRONG%3E%E3%80%82%3C%2FDIV%3E%3CDIV%3E%3CP%3E%E8%AF%81%E6%8D%AE%EF%BC%88%3CSTRONG%3E%E8%A7%81%E9%99%84%E4%BB%B6%3C%2FSTRONG%3E%EF%BC%89%E5%BC%BA%E7%83%88%E8%A1%A8%E6%98%8E%EF%BC%8C%E5%90%AF%E5%8A%A8%E5%BB%B6%E8%BF%9F%E5%B9%B6%E9%9D%9E%E7%94%B1%20GTK%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E4%BB%A3%E7%A0%81%E5%BC%95%E8%B5%B7%E3%80%82%3C%2FP%3E%3CP%3E%E5%BB%B6%E8%BF%9F%E4%BC%BC%E4%B9%8E%E4%B8%8E%20GL%20%E6%B8%B2%E6%9F%93%E8%B7%AF%E5%BE%84%E4%B8%AD%E7%9A%84%20Vivante%20%2Fdev%2Fgalcore%20ioctl%20%E9%98%BB%E5%A1%9E%E6%9C%89%E5%85%B3%E3%80%82%E8%BD%AF%E4%BB%B6%E6%B8%B2%E6%9F%93%EF%BC%88GSK_RENDERER%3Dcairo%EF%BC%89%E5%8F%AF%E4%BB%A5%E9%81%BF%E5%85%8D%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3E%E6%88%91%E4%BB%AC%E6%AD%A3%E5%9C%A8%E5%AF%BB%E6%89%BE%E6%9C%89%E5%85%B3%20i.MX8MP%20%E6%90%AD%E8%BD%BD%20Vivante%20GPU%20%E5%A0%86%E6%A0%88%E6%97%B6%20GTK4%2FOpenGL%20%E5%90%AF%E5%8A%A8%E5%BB%B6%E8%BF%9F%E7%9A%84%E5%B7%B2%E7%9F%A5%E9%97%AE%E9%A2%98%E3%80%81%E8%B0%83%E8%AF%95%E6%96%B9%E6%B3%95%E3%80%81%E9%85%8D%E7%BD%AE%E6%9B%B4%E6%94%B9%E6%88%96%E4%BF%AE%E5%A4%8D%E6%96%B9%E6%A1%88%E7%9A%84%3CEM%3E%3CSTRONG%3E%E6%8C%87%E5%AF%BC%3C%2FSTRONG%3E%3C%2FEM%3E%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%E5%97%A8%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F247983%22%20target%3D%22_blank%22%3E%40jim777%3C%2FA%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%E6%84%9F%E8%B0%A2%E6%82%A8%E5%88%86%E4%BA%AB%E5%A6%82%E6%AD%A4%E8%AF%A6%E7%BB%86%E7%9A%84%E4%BF%A1%E6%81%AF%E3%80%82%E8%83%BD%E5%90%A6%E6%8F%90%E4%BE%9B%E4%B8%80%E4%B8%AA%E6%9C%80%E5%B0%8F%E7%9A%84%E3%80%81%E5%8F%AF%E5%A4%8D%E7%8E%B0%E7%9A%84%20GTK4%20%E6%BA%90%E4%BB%A3%E7%A0%81%E7%A4%BA%E4%BE%8B%EF%BC%9F%E6%88%91%E9%9C%80%E8%A6%81%E5%AF%B9%20NXP%20BSP%20%E8%BF%9B%E8%A1%8C%E8%BF%9B%E4%B8%80%E6%AD%A5%E6%B5%8B%E8%AF%95%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3E%E6%AD%A4%E8%87%B4%EF%BC%8C%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%E5%97%A8%E5%BF%97%E6%98%8E%EF%BC%8C%3CBR%20%2F%3E%3CBR%20%2F%3E%E6%84%9F%E8%B0%A2%E6%82%A8%E7%9A%84%E5%BF%AB%E9%80%9F%E5%9B%9E%E5%A4%8D%EF%BC%81%3CBR%20%2F%3E%3CBR%20%2F%3E%E9%99%84%E4%BB%B6%E6%98%AF%E4%B8%80%E4%B8%AA%E5%B0%8F%E5%9E%8B%E4%BD%86%E5%AE%8C%E6%95%B4%E7%9A%84%E6%BA%90%E6%96%87%E4%BB%B6%E6%A1%86%E6%9E%B6%EF%BC%8C%E4%BE%9B%E6%B5%8B%E8%AF%95%E4%BD%BF%E7%94%A8%E3%80%82%3CBR%20%2F%3E%E4%BB%A5%E5%8F%8A%E8%BF%90%E8%A1%8C%E5%89%8D%E8%AE%BE%E7%BD%AE%E7%9A%84%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%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%3E%E6%9D%A5%E8%87%AA%20weston.ini%20%E7%9A%84%E7%9B%B8%E5%85%B3%E5%86%85%E5%AE%B9%EF%BC%9A%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%3E%E5%9C%A8%E6%B2%A1%E6%9C%89GPU%E6%94%AF%E6%8C%81%E7%9A%84%E5%8F%B0%E5%BC%8F%E6%9C%BA%E4%B8%8A%EF%BC%8Cgtk_window_present%E7%9A%84%E8%BF%90%E8%A1%8C%E6%97%B6%E9%97%B4%E9%9C%80%E8%A6%81%E5%87%A0%E7%99%BE%E6%AF%AB%E7%A7%92%EF%BC%88%26lt%3B%201%E7%A7%92%EF%BC%89%EF%BC%9B%E8%80%8C%E5%9C%A8i.mx8mp%E8%AE%BE%E5%A4%87%E4%B8%8A%EF%BC%8C%E5%88%99%E9%9C%80%E8%A6%819970%E6%AF%AB%E7%A7%92%EF%BC%9A%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%3E%E6%88%91%E5%B0%9D%E8%AF%95%E8%BF%87%20render%3A%20ngl%EF%BC%8C%E4%BD%86%E4%BC%9A%E5%AF%BC%E8%87%B4%E5%9B%BE%E5%83%8F%2F%E6%8E%A7%E4%BB%B6%2F%E8%A7%86%E9%A2%91%E6%A8%A1%E7%B3%8A%EF%BC%9B%E8%80%8C%3CSPAN%3EVulkan%20%E4%BC%9A%E5%AF%BC%E8%87%B4%E4%B8%A5%E9%87%8D%E9%94%99%E8%AF%AF%EF%BC%9A%E5%8A%A0%E8%BD%BD%E5%99%A8%E6%B6%88%E6%81%AF%EF%BC%9AvkCreateDevice%EF%BC%9A%E9%AA%8C%E8%AF%81%E5%88%97%E8%A1%A8%E4%B8%AD%E7%9A%84%E6%89%A9%E5%B1%95%E5%A4%B1%E8%B4%A5%EF%BC%9B%E6%97%A0%E6%B3%95%E4%B8%BA%E8%A1%A8%E9%9D%A2%E2%80%9CGdkWaylandToplevel%E2%80%9D%E5%AE%9E%E7%8E%B0%E7%B1%BB%E5%9E%8B%E4%B8%BA%E2%80%9CGskVulkanRenderer%E2%80%9D%E7%9A%84%E6%B8%B2%E6%9F%93%E5%99%A8%EF%BC%9A%E6%89%BE%E4%B8%8D%E5%88%B0%E5%85%B7%E6%9C%89%E6%89%80%E9%9C%80%E5%8A%9F%E8%83%BD%E7%9A%84%20Vulkan%20%E8%AE%BE%E5%A4%87%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FSPAN%3E%E7%94%B1%E4%BA%8E%E6%88%91%E4%BB%AC%E7%9A%84%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E9%9C%80%E8%A6%81%20GPU%20%E6%94%AF%E6%8C%81%EF%BC%8C%E8%80%8C%20Wayland%2FWeston%20%E4%B8%8B%E6%8E%A8%E8%8D%90%E7%9A%84%E6%B8%B2%E6%9F%93%E5%99%A8%E4%BB%8D%E7%84%B6%E6%98%AF%20GL%EF%BC%88UG10159%2011.3.2.1%20GL%20%E6%B8%B2%E6%9F%93%E5%99%A8%EF%BC%89%EF%BC%8C%E5%B8%8C%E6%9C%9B%E6%82%A8%E8%83%BD%E5%B8%AE%E5%BF%99%E6%89%BE%E5%88%B0%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3E%E6%AD%A4%E8%87%B4%EF%BC%8C%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