Hi.
I am using SabreSD evaluation kit with Linux BSP ltib-4.1.1, I have cross-compiled Qt5 and running its test applications with success. From documentation I read that the following environment variable can affect both vertical synch and number of framebuffers used:
- FB_MULTI_BUFFER=1, then one framebuffer is used and vsync is disabled
- FB_MULTI_BUFFER=2, then 2 framebuffers are used and vsync is enabled
My LCD is 1024x600@60Hz and framebuffer virtual size is 1024x600 16bpp.
I have two questions:
- in case FB_MULTI_BUFFER=2, I do not see any change in virtual size, it is always 1024x600. Is it correct? I expected fb driver to be asked for twice as vxres or vyres;
- in case FB_MULTI_BUFFER=1, is there any way to enable vsync anyway? I ask that because my specific application requires framebuffer grabbing, so one framebuffer is a requirement.
Thanks for help.
Regards,
Federico
Hi Federico,
for FM_MULTI_BUFFER=2 is correct, for FB_MULTI_BUFFER=1, Probably it isn´t swapping or there is a vsync wait, try glFinish before eglSwapBuffer. also Please check try with FB_MULTI_BUFFER=3
hope this helps
Hi.
I am using simple QML application, so there are no openGL/EGL calls.
Browsing the web, I found out that Qt5 eglfs platform plugin allows definition of variable QT_QPA_EGLFS_FORCEVSYNC, which relies on kernel vsync ioctl-based implementation coded in mxc IPUv3 framebuffer driver. So I changed my setup this way:
export FB_MULTI_BUFFER=1
export QT_QPA_EGLFS_FORCEVSYNC=1
which mean: use 1 framebuffer but enable vsync. This setup seems to work, because framerate is limited to vsync, framebuffer virtual resolution is same as real resolution (so 1 fb is used actually). Anyway, when my QML application plays some animations, I see graphical artifacts on LCD.
So, my question are:
1) how can I enable vsync, keep one framebuffer and avoid artifacts?
2) why in case of FB_MULTI_BUFFER=2 (2 FBs and vsync enabled) there are no such artifacts?
Regards,
Federico