MULTIPLE BUFFERING with GUIDRV_FlexColor driver

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

  • MULTIPLE BUFFERING with GUIDRV_FlexColor driver

    Dear sirs

    I am using emWIN with GUIDRV_FlexColor in order to use a SSD1963 controller TFT display. The configuration of the driver is GUIDRV_FLEXCOLOR_M16C0B16, so it doesn´t use CACHE.

    Using this configuration I detect some tearing effects that I want to solve using MULTIPLE BUFFERING.

    I have seen WITHOUT ISR code example on page 928 of the UM03001_emWin5.pdf manual that update the address depending of the active buffer:


    int LCD_X_DisplayDriver(unsigned LayerIndex, unsigned Cmd, void * p) {
    unsigned long Addr, BufferSize;
    switch (Cmd) {
    ...
    case LCD_X_SHOWBUFFER: {
    LCD_X_SHOWBUFFER_INFO * pData;
    pData = (LCD_X_SHOWBUFFER_INFO *)p;
    //
    // Calculate address of the given buffer
    //
    BufferSize = (XSIZE * YSIZE * BITSPERPIXEL) / 8;
    Addr = _VRamBaseAddr + BufferSize * pData->Index;
    //
    // Make the given buffer visible
    //
    AT91C_LCDC_BA1 = Addr;
    //
    // Send a confirmation that the buffer is visible now
    //
    GUI_MULTIBUF_Confirm(pData->Index);
    }
    break;
    ...


    Can anyone tell me what it is the GUIDRV_FlexColor equivalent variable I should use in order to update the buffer address?


    Thanks in advance.
    Regards
  • Hi,

    Multibuffering doesn't work with the GUIDRV_FlexColor driver and the SSD1963. You should use the cached version of the driver insead.
    As far as I know the SSD1963 doesn't support multiple buffers.

    Regards
    Sven
    Please read the forum rules before posting.

    Keep in mind, this is *not* a support forum.
    Our engineers will try to answer your questions between their projects if possible but this can be delayed by longer periods of time.
    Should you be entitled to support you can contact us via our support system: segger.com/ticket/

    Or you can contact us via e-mail.