BMP Slow to render unless layer rotation is set

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • BMP Slow to render unless layer rotation is set


      I am rapidly learning my way through the emWIN system, with good results so far.

      I am using a STM32F7 device running at 216MHz, with a 320,240 RGB888 display on the integrated LTDC.

      The system is set up as a COLOR_MODE_RGB888 with only 1 layer.

      I have noticed that if the rotation is set to ROTATION_180 (or in fact CW or CCW), then the GUI_DrawBitmap() function completes (visually) instantly
      If the rotation is set to ROTATION_0 then the GUI_DrawBitmap takes a visually obvious time as it is drawn line by line.
      Text functions and GUI_Clear() is instant in both cases.

      The display driver selected is GUIDRV_LIN_24 for the slower set up, and GUIDRV_LIN_OXY_24 (or others) for the faster draws.

      Can you explain this please? I have prototyped the system with rotation at 180, and have got a long way along the process now, but we may need to switch to 0, which has now thrown up this delay.

      All other time critical systems on the uC appear unaffected, the RTOS times correctly, and the PWM and CAN peripherals are unaffected so I am confident that it isn't a hardware timing issue.

      Any thoughts?
    • Hi,

      The first choice on a STM32F7 should be GUIDRV_LIN_32. With this driver you will experience the best performance. The reason is that with 32bpp no conversion is required from the internal format emWin works with (32bpp) and the framebuffer format. Of course, the framebuffer needs to be configured for 32bpp and it will require more RAM.

      I wouldn't expect a rotated driver faster than one with default orientation.

      What kind of bitmap are you displaying?
      Can you send me the bitmap?
      Is the hardware acceleration implemented properly?

      Please note that with another orientation than the default one, most of the HW acceleration function can not be used.
      Attached is an example configuration for the STM32F746 Discovery. You can use it as reference. Some functions are just available in newer emWin version (e.g. GUI_GetClipRect()), GUI_pContext->pClipRect to get access.


        (21.27 kB, downloaded 42 times, last: )