Hello,
I am working with an EPDC display interfaced to IMX8ULP. The driver for EPDC display is based on FBDEV. As FBDEV supports software rendering only, it loads up CPU beyond 100% at the moment. I have below queries regarding support of EPDC display:
1. Does EPDC only has support for FBDEV? Is there any driver or patch leveraging DRM for EPDC? As with DRM we can use GLES for hardware acceleration.
2. With FBDEV, can I, somehow, still use any kind of hardware rendering?
3. What would be the best way to not let CPU load up while rendering with FBDEV for EPDC display?
Regards,
Bhavin
#IMX8ULP
Hi @Bhavin-Sharma ,
Could you please contact your local NXP FAE so that we can provide more assistance?
Best regards,
Chong
Hi @Bhavin-Sharma ,
1. Does EPDC only has support for FBDEV?
We only provide EPDC driver based on FBdev. But you can also refer to some third-party DRM porting. Keep FBdev because it has better performance on EPD for DRM. You just need to mark the rendered memory as Framebuffer and submit it for upload. Which display framework(QT/LVGL/wayland) is your UI using? You can contact your FAE for more support.
2. With FBDEV, can I, somehow, still use any kind of hardware rendering?
You can use GPU and PXP to accelerate the program. Just point the rendered memory to the framebuffer and submit the EPDC update.
3. What would be the best way to not let CPU load up while rendering with FBDEV for EPDC display?
There are many hardware modules for EPD rendering in imx8ulp. You can describe the specific functions you have implemented, or provide us with a test program, and we can help you achieve better performance in imx8ulp.
Best regards,
Chong
Hi @Chong,
The framework that I am using is LVGL for UI implementation. So far I have developed for HDMI display to observe performance over FBDEV. I am yet to migrate the application for EPDC display and it may take a couple of days. I will post it here once I test something with the display.
I believe LVGL does support rendering using PXP but for specific platforms only. Is it true?
Regards,
Bhavin
Hi @Bhavin-Sharma ,
Indeed, we have not published examples of GPU/PXP accelerated rendering for LVGL on imx8ulp. However, 2D GPU and PXP can be accelerated in LVGL programs. We can implement this function through patching. Which LVGL version are you using? If you can provide a simple test program, we can help you improve the performance of imx8ulp.
Best regards,
Chong
Thanks for the prompt response, @Chong
For my UI development I am using the GUI-guider tool supported by NXP itself, and the LVGL version is 9.2.
At the moment I can't share any code as the application is proprietary and the simple test application won't have that much of CPU load.
Can you provide an example application, using PXP and GPU for rendering and offloading CPU?
Regards,
Bhavin
Hi,
@Chong, I’m still working on the same issue and haven’t found a workaround yet. Could you please help me out?
Hi @Bhavin-Sharma ,
Sorry I missed the message. I can continue to help.
I can try to provide a simple demo based on LVGL and using G2D acceleration. What transformations (rotation/scaling/resize) are used in your application, or are there any special animation effects?
Best regards,
Chong
I am not working with animations at the moment, just trying to render multiple images on the display, zoom-in and out. But it would be helpful if animations like rendering a 3D object as done in glmark2-es2 utilities could be tested.
Regards,
Bhavin
Hi @Bhavin-Sharma ,
The attached demo enables g2d and can reduce CPU loading. You can get more information by visiting imx-LVGL-G2D-enablement , but please note that this patch only works on LVGL version 8.x. G2D is enabled by default in LVGL 9.3(Check here). It applies for imx8ulp. It requires some porting knowledge to FBdev for EPD panel.
We haven‘t tested the complex animations(like rendering a 3D object). If you need, we hope you can provide a specific test and we can help you optimize it.
Best regards,
Chong
Thanks for the patch @Chong.
I am on leave for this week so I won't be able to test it at the moment. Will surely post an update once I have.
Regards,
Bhavin
Hello,
A1) No it support DRM and yes it is accelerated with the GPU.
A2) Sorry no, it should be pure software
A3) Just disable the GPU and all render will be via software.
Here are how to connect the EPDC in case of iMX8ULP:
https://docs.nxp.com/bundle/MCIMX8ULP-EVK-UM/page/topics/electrophoretic_display_interface.html
Regards
Thanks for the reply, @Bio_TICFSL.
A1) No it support DRM and yes it is accelerated with the GPU.
I am working with YOCTO (Walnascar) setup for IMX8ULP. It has kernel 6.12. I have had a look through it, and I have not been able to find any driver for EPDC supporting DRM.
Is it supported in some other kernel version? Can you help with the steps to enable the DRM support for EPDC?
Regards,
Bhavin
Hello,
The yocto from NXP support DRM on EPDC but you are using community BSP since we support yocto Styhead
in 6.12v please update your yocto.
Regards
Hi @Bio_TICFSL,
I switched to the yocto-styhead branch and I checked in the kernel (6.12.3) source, it also has the support for the EPDC display over FBDEV only.
Can you please validate this once and provide the link of the yocto branch that has this support?
Regards,
Bhavin
Hello,
In NXP bsp 6.12.20 yes it works.
Regards
I validated the source that I am cloning for my BSP setup, and it is the official NXP GitHub repo. Also, the styhead branch only has support for the 6.12.3 kernel, while 6.12.20 is provided within walnascar.
I have tried with both these branches, and none of them has the support of DRM for EPDC display. Can you provide any link or source that supports it?
Regards,
Bhavin
Hello,
Yes both supported, please check the release note of iMX linux
https://www.nxp.com/docs/en/release-note/RN00210.pdf
Regards
I referred to the attached link, but I could not find any statement related to the use of DRM with the EPDC display.
Could you please share the exact section or statement from the PDF link that you have shared which confirms the support of it?
Thanks for your support.