Display glitches constantly when D/AVE 2D Frame Buffer Cache is enabled

GUIX Studio 6.2.0.2
SSP 2.3.0
GUIX Library 6.1.10

  • With Frame Buffer cache disabled, glitches go away, but our screen updates take almost 1 second.
  • With Frame Buffer cache enabled, the screen updates take @100ms.
    • Flickering occurs on whole screen, not just widgets being updated.
    • Whole screen flashes red, then correct frame.
  • We only use PNG bitmap objects, so JPEG is not used.


-We have tried the following:
    -- Doubling the size of sf_tes_2d_drw  to 65K
    -- Changing number of frame buffers from 2 -> 3
    -- No direct calls to gx_system_canvas_refresh() or gx_canvas_drawing_complete()
    -- Set all GUIX priorities to 2

Have reviewed issues:
https://community.renesas.com/mcu-mpu/embedded-system-platform/synergy_tech_notes/f/technical-bulletin-board-notification-postings/10610/improper-image-rendering-in-guix-5-4-0-and-ssp-1-4-0-and-earlier-using-clut8-format


https://community.renesas.com/mcu-mpu/embedded-system-platform/f/forum/11278/guix-canvas-not-fully-rendering-on-lcd-when-too-much-drawing-occurs---why


GUIX Studio:
    2D engine: enabled
         JPEG: none
          PNG: software

Synergy GUIX Configuration:
    2D Drawing : Yes
           JPEG: No
     Legacy API: Yes
    
    D/AVE 2D Frame Buffer: Enabled ***
    
    Number of frame buffers: 2

  • Hi Doug,

    How are things going? Have you seen this discussion: https://community.renesas.com/mcu-mpu/embedded-system-platform/f/forum/17392/guix-studio-qspi-screen-flickering-in-a-particular-gadget? The suggestions in the thread might help.

    JB
    If this response, or one provided by another user, answers your question, please verify the answer. Thank you!
    Renesas Engineering Community Moderator
    https://community.renesas.com/
    https://academy.renesas.com/
    https://en-support.renesas.com/knowledgeBase/

  • Thanks for the response. 

    First thing we do when we boot is to copy all bitmaps, fonts, and audio from QSPI to SDRAM.  I have verified that we have the 2D engine enabled in GUIX studio and Synergy Configuration.

    I should mention that this was not an issue with SSP1.5, so it has something to do with our porting of SSP1.5 to 2.3.  In SSP1.5, we used the pre-compiled library, so I do not know what the previous settings were.

    Here is a partial list of our Configuration:

     Module "GUIX on gx"
        Enable Synergy 2D Drawing Engine Support: Yes(default)
        Enable Synergy JPEG Support: No
        Enable GUI Legacy API Support: Yes(default)

      Module "D/AVE 2D Driver on dave2d"
      Module "D/AVE 2D Port on sf_tes_2d_drw"
        Work memory size for display lists in bytes: 128000
        DRW Interrupt Priority: Priority 2
        
      Module "GUIX Source"
        GUIX Stack Size:
        GUIX System Timer (Milliseconds):
        GUIX Timer Rate:
        Disable Multithread Support: No(default)
        Disable UTF8 Support: No(default)
        GUIX Event Queue Size: 128
        GUIX Thread Priority: 8
        GUIX Thread Time Slice: 1
        Use User Data Field in GX_WIDGET Structure: Yes
        Disable arc drawing support: No(default)
        Disable software decoder support: No(default)
        Disable binary resource support: Yes
        Repeat button initial tics:
        Maximum number of unique dirty list entries:
        Maximum nesting of context:
        Maximum input capture nesting:
        Cursor blink interval:
        Multi line index cache size:
        Multi line text button maximum lines:
        Maximum number of polygon edges:
        Numeric scroll wheel string buffer size:
        Circular gauge animation delay:
        Numeric prompt buffer size:
        Animation pool size:
        Mouse support: Disable(default)
        Hardware mouse support: Disable(default)
        Font kerning support: Enable
        Disable brush alpha support: No(default)
        Maximum string length:
        
       Instance "GUIX on gx"
          Instance "g_sf_el_gx0 GUIX Port on sf_el_gx"
            Name: g_sf_el_gx0
            Display Driver Configuration Inheritance: Inherit Graphics Screen 1
            Name of User Callback function: NULL
            GUIX Canvas Buffer (required only if rotation angle is FLIP or 180 degree): Not used
            Size of JPEG Work Buffer (valid if JPEG hardware acceleration enabled): 0
            Memory section for GUIX Canvas Buffer: sdram
            Memory section for JPEG Work Buffer: sdram
            D/AVE 2D Frame Buffer Cache(Valid if D/AVE 2D Drawing Engine is enabled): Enable
            
            Instance "g_display0 Display Driver on r_glcd"
              Name: g_display0
              Name of display callback function to be defined by user: NULL
              Input - Panel clock source select: Internal clock(GLCDCLK)
              Input - Graphics screen1: Used
              Input - Graphics screen1 frame buffer name: fb_background
              Input - Number of Graphics screen1 frame buffer: 2
              Input - Section where Graphics screen1 frame buffer allocated: sdram
              Input - Graphics screen1 input horizontal size: 800
              Input - Graphics screen1 input vertical size: 480
              Input - Graphics screen1 input horizontal stride(not bytes but pixels): 800
              Input - Graphics screen1 input format: 16bits RGB565
              Input - Graphics screen1 input line descending: Not used
              Input - Graphics screen1 input lines repeat: Off
              Input - Graphics screen1 input lines repeat times: 0
              Input - Graphics screen1 layer coordinate X: 0
              Input - Graphics screen1 layer coordinate Y: 0
              Input - Graphics screen1 layer background color alpha: 255
              Input - Graphics screen1 layer background color Red: 255
              Input - Graphics screen1 layer background color Green: 255
              Input - Graphics screen1 layer background color Blue: 255
              Input - Graphics screen1 layer fading control: None
              Input - Graphics screen1 layer fade speed: 0
              Input - Graphics screen2: Not used
              ...
              Output - Horizontal total cycles: 1024
              Output - Horizontal active video cycles: 800
              Output - Horizontal back porch cycles: 46
              Output - Horizontal sync signal cycles: 20
              Output - Horizontal sync signal polarity: Low active
              Output - Vertical total lines: 525
              Output - Vertical active video lines: 480
              Output - Vertical back porch lines: 23
              Output - Vertical sync signal lines: 10
              Output - Vertical sync signal polarity: Low active
              Output - Format: 18bits RGB666
              Output - Endian: Little endian
              Output - Color order: RGB
              Output - Data Enable Signal Polarity: High active
              Output - Sync edge: Rising edge
              Output - Background color alpha channel: 255
              Output - Background color R channel: 0
              Output - Background color G channel: 0
              Output - Background color B channel: 0
              CLUT: Not used
              CLUT - CLUT buffer size: 256
              TCON - Hsync pin select: LCD_TCON0
              TCON - Vsync pin select: LCD_TCON1
              TCON - DataEnable pin select: LCD_TCON2
              TCON - Panel clock division ratio: 1/9
    ...
              Dithering: On
              Dithering - Mode: Truncate
              Dithering - Pattern A: Pattern 11
              Dithering - Pattern B: Pattern 11
              Dithering - Pattern C: Pattern 11
              Dithering - Pattern D: Pattern 11
              Misc - Correction Process Order: Brightness and Contrast then Gamma
              Line Detect Interrupt Priority: Priority 4
              Underflow 1 Interrupt Priority: Priority 4
              Underflow 2 Interrupt Priority: Disabled
              
            Instance "D/AVE 2D Driver on dave2d"
              Instance "D/AVE 2D Port on sf_tes_2d_drw"
          Instance "GUIX Source"
            Show linkage warning: Disabled

  • Hi Doug,

    Have you checked SSP v2.3.0 release note if the known issues under TES (8.25) affect your project: https://synergygallery.renesas.com/media/products/1/417/en-US/r11ut0089eu0102-synergy-sspv230-rel-note

    JB
    If this response, or one provided by another user, answers your question, please verify the answer. Thank you!
    Renesas Engineering Community Moderator
    https://community.renesas.com/
    https://academy.renesas.com/
    https://en-support.renesas.com/knowledgeBase/

  • We do not use concave polygons.  However, I do not fully understand Issue 15762.  Can you please explain this a little bit more?  It seems to indicate that pixelmaps can only be the size of 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024

    So let's say I have a window of 40 x 40, does that mean I can only use a pixelmap of 32x32 or 64x64?

    How does the background ever work on a 800x480 display?  Do I need to generate a 1024x512 background PNG file and place the image on the top left?

  • Hi Doug,

    I think your assumptions are correct. However, I still need to confirm this and if this is really related to the glitch problem.

    JB
    If this response, or one provided by another user, answers your question, please verify the answer. Thank you!
    Renesas Engineering Community Moderator
    https://community.renesas.com/
    https://academy.renesas.com/
    https://en-support.renesas.com/knowledgeBase/

  • If my assumption is correct, can you please tell me when this requirement changed?  We need to figure out if we need to revert back to SSP1.5, an newer version prior to the issue, or revamp all of our (300+) bitmaps.

    Thanks

  • Hi Doug,

    Apologies for the delayed response. I've already reached out to someone for clarification but I'm still waiting for a response. I'll let you know as soon as I hear something. 

    JB
    If this response, or one provided by another user, answers your question, please verify the answer. Thank you!
    Renesas Engineering Community Moderator
    https://community.renesas.com/
    https://academy.renesas.com/
    https://en-support.renesas.com/knowledgeBase/

  • At the same time, can you also verify that bitmaps can be rectangular (8x32 or 32x8).  This is a pretty big deal for us. 

    We also need to know if there are issues placing a large bitmap (64x64) into a smaller window (48x48).  We understand the bitmap will be clipped, but it allows us to expand our bitmaps and pad them with transparency.

    Does this also effect progress bars?

  • Just an update, I have tried several things:
    1) adjusting our bitmaps to power-of-2

    2) adjusted our windows to power-of-2
    3) made our pixmaps the same size as the windows that were adjusted to power-of-2.

    and we still see glitching screens.