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