This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA2SX: dual display with grpx

Expert 1615 points

Part Number: TDA2SX

Hi,

i want to implement dual display, and both are also with grpx draw,

so i dup my display link and grpx display link,

in my chains configuration like below,

    if(pPrm_VideoHDMI)
    {
        pPrm_VideoHDMI->rtParams.tarWidth         = displayWidthHDMI;
        pPrm_VideoHDMI->rtParams.tarHeight        = displayHeightHDMI;
        pPrm_VideoHDMI->displayId                 = DISPLAY_LINK_INST_DSS_VID1;
    }

    if(pPrm_VideoLCD)
    {
        pPrm_VideoLCD->rtParams.tarWidth         = displayWidthLCD;
        pPrm_VideoLCD->rtParams.tarHeight        = displayHeightLCD;
        pPrm_VideoLCD->displayId                 = DISPLAY_LINK_INST_DSS_VID2;
    }

    if(pPrm_GrpxHDMI)
    {
        pPrm_GrpxHDMI->displayId                  = DISPLAY_LINK_INST_DSS_GFX1;
    }
		
    if(pPrm_GrpxLCD)
    {
        pPrm_GrpxLCD->displayId                  = DISPLAY_LINK_INST_DSS_VID3;
    }		

and in chans_common.c like below,

Int32 ChainsCommon_DualDisplay_StartDisplayCtrl(
Chains_DisplayType lcdType, UInt32 displayLCDWidth, UInt32 displayLCDHeight)
{
    Int32 status;
    DisplayCtrlLink_ConfigParams *pPrm = &gChains_commonObj.dctrlCfgPrms;
    DisplayCtrlLink_VencInfo *pVInfo;
    DisplayCtrlLink_OvlyParams *pOvlyPrms;
    DisplayCtrlLink_OvlyPipeParams *pPipeOvlyPrms;
    DisplayCtrlLink_OvlyParams ovlyPrms[2];

    /* Set the link id */
    gChains_commonObj.displayCtrlLinkId = SYSTEM_LINK_ID_DISPLAYCTRL;

    /* Number of valid entries in vencInfo array */
    pPrm->numVencs = 2;
    /* Bitmask of tied vencs. Two vencs, which uses same pixel clock and whose vsync are synchronized, can be tied together. */
    pPrm->tiedVencs = 0;
    /* Activate the HDMI BSP layer in the Dctrl link. This is not required if there is no HDMI display in use. */
    pPrm->deviceId = DISPLAYCTRL_LINK_USE_HDMI;

    /* Configure HDMI display */
    pVInfo                                  = &pPrm->vencInfo[0];
    pVInfo->vencId                          = SYSTEM_DCTRL_DSS_VENC_HDMI;
    pVInfo->outputPort                      = SYSTEM_DCTRL_DSS_HDMI_OUTPUT;
    pVInfo->vencOutputInfo.vsPolarity       = SYSTEM_DCTRL_POLARITY_ACT_HIGH;
    pVInfo->vencOutputInfo.hsPolarity       = SYSTEM_DCTRL_POLARITY_ACT_HIGH;

    /* Below are of dont care for EVM LCD */
    pVInfo->vencOutputInfo.fidPolarity      = SYSTEM_DCTRL_POLARITY_ACT_LOW;
    pVInfo->vencOutputInfo.actVidPolarity   = SYSTEM_DCTRL_POLARITY_ACT_HIGH;

    /* We use 1080p60 - set to SYSTEM_STD_720P_60 for 720p! */
    pVInfo->mInfo.standard                  = SYSTEM_STD_1080P_60;

    /* Configure HDMI overlay parameters */
    pVInfo->mode                            = 0;
    pVInfo->isInputPipeConnected[0]         = FALSE;
    pVInfo->isInputPipeConnected[1]         = TRUE;
    pVInfo->isInputPipeConnected[2]         = TRUE;
    pVInfo->isInputPipeConnected[3]         = FALSE;
    pVInfo->writeBackEnabledFlag            = FALSE;

    pVInfo->vencOutputInfo.dataFormat       = SYSTEM_DF_RGB24_888;
    pVInfo->vencOutputInfo.dvoFormat        = SYSTEM_DCTRL_DVOFMT_GENERIC_DISCSYNC;
    pVInfo->vencOutputInfo.videoIfWidth     = SYSTEM_VIFW_24BIT;

    pVInfo->vencOutputInfo.pixelClkPolarity = SYSTEM_DCTRL_POLARITY_ACT_HIGH;
    pVInfo->vencOutputInfo.aFmt             = SYSTEM_DCTRL_A_OUTPUT_MAX;

    pOvlyPrms                               = &ovlyPrms[0];
    pOvlyPrms->vencId                       = pVInfo->vencId;
    pOvlyPrms->deltaLinesPerPanel           = 0;
    pOvlyPrms->alphaBlenderEnable           = 0;
    pOvlyPrms->backGroundColor              = 0x0;
    pOvlyPrms->colorKeyEnable               = 1;
    pOvlyPrms->colorKeySel                  = SYSTEM_DSS_DISPC_TRANS_COLOR_KEY_SRC;
    pOvlyPrms->ovlyOptimization             = SYSTEM_DSS_DISPC_OVLY_FETCH_ALLDATA;
    pOvlyPrms->transColorKey                = DRAW2D_TRANSPARENT_COLOR;

    /* Configure LCD */
    pVInfo                                  = &pPrm->vencInfo[1];
    pVInfo->vencId                          = SYSTEM_DCTRL_DSS_VENC_LCD1;
    pVInfo->outputPort                      = SYSTEM_DCTRL_DSS_DPI1_OUTPUT;

    if ((BSP_PLATFORM_SOC_ID_TDA2EX == Bsp_platformGetSocId()) &&
        (BSP_PLATFORM_PACKAGE_TYPE_17x17 == Bsp_platformGetPackageType()))
    {
        /* In case of TDA2EX and Package is 17 X 17, LCD is on DPI 3 */
        pVInfo->vencId = SYSTEM_DCTRL_DSS_VENC_LCD3;
        pVInfo->outputPort = SYSTEM_DCTRL_DSS_DPI3_OUTPUT;
    }

    pVInfo->vencOutputInfo.vsPolarity       = SYSTEM_DCTRL_POLARITY_ACT_LOW;
    pVInfo->vencOutputInfo.hsPolarity       = SYSTEM_DCTRL_POLARITY_ACT_LOW;

    /* Below are of dont care for EVM LCD */
    pVInfo->vencOutputInfo.fidPolarity      = SYSTEM_DCTRL_POLARITY_ACT_HIGH;
    pVInfo->vencOutputInfo.actVidPolarity   = SYSTEM_DCTRL_POLARITY_ACT_HIGH;

    pVInfo->mInfo.standard                  = SYSTEM_STD_CUSTOM;
    pVInfo->mInfo.scanFormat                = SYSTEM_SF_PROGRESSIVE;
    pVInfo->mInfo.width                     = displayLCDWidth;
    pVInfo->mInfo.height                    = displayLCDHeight;

    if(lcdType == CHAINS_DISPLAY_TYPE_LCD_7_INCH)
    {
    pVInfo->mInfo.pixelClock                = 29232u;
    pVInfo->mInfo.fps                       =   60U;
    pVInfo->mInfo.hFrontPorch               = 40u;
    pVInfo->mInfo.hBackPorch                = 40u;
    pVInfo->mInfo.hSyncLen                  = 48u;
    pVInfo->mInfo.vFrontPorch               = 13u;
    pVInfo->mInfo.vBackPorch                = 29u;
    pVInfo->mInfo.vSyncLen                  = 3u;
    pVInfo->vencDivisorInfo.divisorLCD      = 1;
    pVInfo->vencDivisorInfo.divisorPCD      = 4;
    }
    else if(lcdType == CHAINS_DISPLAY_TYPE_LCD_10_INCH)
    {
        pVInfo->mInfo.pixelClock                =   74500U;
        pVInfo->mInfo.fps                       =   60U;
        pVInfo->mInfo.hBackPorch                =   80U;
        pVInfo->mInfo.hSyncLen                  =   62U;
        pVInfo->mInfo.hFrontPorch               =   48U;
        pVInfo->mInfo.vBackPorch                =   12U;
        pVInfo->mInfo.vSyncLen                  =   35U;
        pVInfo->mInfo.vFrontPorch               =   6U;
        pVInfo->vencDivisorInfo.divisorLCD      =   1;
        pVInfo->vencDivisorInfo.divisorPCD      =   1;
    }
    else if (lcdType ==
    CHAINS_DISPLAY_TYPE_LDC_10_INCH_LCDCTRL_TC358778_MIPI_DSI_1920_1200)
    {
        pVInfo->mInfo.pixelClock                =   147000U;
        pVInfo->mInfo.fps                       =   60U;
        pVInfo->mInfo.hBackPorch                =   30U;
        pVInfo->mInfo.hSyncLen                  =   16U;
        pVInfo->mInfo.hFrontPorch               =   32U;
        pVInfo->mInfo.vBackPorch                =   16U;
        pVInfo->mInfo.vSyncLen                  =   2U;
        pVInfo->mInfo.vFrontPorch               =   7U;
        pVInfo->vencDivisorInfo.divisorLCD      =   1;
        pVInfo->vencDivisorInfo.divisorPCD      =   1;
    }
    else if(lcdType == CHAINS_DISPLAY_TYPE_LCD_1080P_NTSC)
    {
        pPrm->deviceId = DISPLAYCTRL_LINK_USE_LCD;
        pVInfo->vencId = SYSTEM_DCTRL_DSS_VENC_LCD1;
        pVInfo->outputPort = SYSTEM_DCTRL_DSS_DPI1_OUTPUT;
        if ((BSP_PLATFORM_SOC_ID_TDA2EX == Bsp_platformGetSocId()) &&
            (BSP_PLATFORM_PACKAGE_TYPE_17x17 == Bsp_platformGetPackageType()))
        {
            /* In case of TDA2EX and Package is 17 X 17, LCD is on DPI 3 */
            pVInfo->vencId = SYSTEM_DCTRL_DSS_VENC_LCD3;
            pVInfo->outputPort = SYSTEM_DCTRL_DSS_DPI3_OUTPUT;
        }
        pVInfo->vencOutputInfo.vsPolarity    =   SYSTEM_DCTRL_POLARITY_ACT_LOW;
        pVInfo->vencOutputInfo.hsPolarity    =   SYSTEM_DCTRL_POLARITY_ACT_LOW;

        /* Below are of dont care for EVM LCD */
        pVInfo->vencOutputInfo.fidPolarity      =   SYSTEM_DCTRL_POLARITY_ACT_HIGH;
        pVInfo->vencOutputInfo.actVidPolarity   =   SYSTEM_DCTRL_POLARITY_ACT_HIGH;

        pVInfo->mInfo.standard                  =   SYSTEM_STD_CUSTOM;
        pVInfo->mInfo.width                     =   displayLCDWidth;
        pVInfo->mInfo.height                    =   displayLCDHeight;
        pVInfo->mInfo.scanFormat                =   SYSTEM_SF_PROGRESSIVE;
        pVInfo->mInfo.fps                       =   60U;
        pVInfo->mInfo.hFrontPorch               =   48U;
        pVInfo->mInfo.vBackPorch                =   12U;
        pVInfo->mInfo.vFrontPorch               =   6U;
        pVInfo->vencDivisorInfo.divisorLCD      =   1;


        pVInfo->mInfo.pixelClock                =   74500U;
        pVInfo->mInfo.hBackPorch                =   80U;
        pVInfo->mInfo.hSyncLen                  =   62U;
        pVInfo->mInfo.vSyncLen                  =   35U;
        pVInfo->vencDivisorInfo.divisorPCD      =   1;

        //Added by Tim 2020/09/15
        pVInfo->mInfo.pixelClock    = 74250U;
    	pVInfo->mInfo.vBackPorch    = 36U;
    	pVInfo->mInfo.vSyncLen     = 5U;
    	pVInfo->mInfo.vFrontPorch    = 4U;
    	pVInfo->mInfo.hBackPorch    = 148U;
    	pVInfo->mInfo.hSyncLen     = 44U;
    	pVInfo->mInfo.hFrontPorch    = 88U;
        pVInfo->mInfo.fps      = 30U;
    	PSVT_VoutConfigPrint(pVInfo);

        
        pVInfo->vencOutputInfo.dataFormat       =   SYSTEM_DF_RGB24_888;
        pVInfo->vencOutputInfo.dvoFormat        =
                                    SYSTEM_DCTRL_DVOFMT_GENERIC_DISCSYNC;
        pVInfo->vencOutputInfo.videoIfWidth     =   SYSTEM_VIFW_24BIT;

        pVInfo->vencOutputInfo.pixelClkPolarity =   SYSTEM_DCTRL_POLARITY_ACT_LOW;
        pVInfo->vencOutputInfo.aFmt             =   SYSTEM_DCTRL_A_OUTPUT_MAX;

        /* Configure overlay params */
        ovlyPrms->vencId                        = SYSTEM_DCTRL_DSS_VENC_LCD1;
        if ((BSP_PLATFORM_SOC_ID_TDA2EX == Bsp_platformGetSocId()) &&
            (BSP_PLATFORM_PACKAGE_TYPE_17x17 == Bsp_platformGetPackageType()))
        {
            /* In case of TDA2EX and Package is 17 X 17, LCD is on DPI 3 */
            ovlyPrms->vencId                    = SYSTEM_DCTRL_DSS_VENC_LCD3;
        }
    }
    else if(lcdType == CHAINS_DISPLAY_TYPE_LCD_1080P_PAL)
    {
        pPrm->deviceId = DISPLAYCTRL_LINK_USE_LCD;
        pVInfo->vencId = SYSTEM_DCTRL_DSS_VENC_LCD1;
        pVInfo->outputPort = SYSTEM_DCTRL_DSS_DPI1_OUTPUT;
        if ((BSP_PLATFORM_SOC_ID_TDA2EX == Bsp_platformGetSocId()) &&
            (BSP_PLATFORM_PACKAGE_TYPE_17x17 == Bsp_platformGetPackageType()))
        {
            /* In case of TDA2EX and Package is 17 X 17, LCD is on DPI 3 */
            pVInfo->vencId = SYSTEM_DCTRL_DSS_VENC_LCD3;
            pVInfo->outputPort = SYSTEM_DCTRL_DSS_DPI3_OUTPUT;
        }
        pVInfo->vencOutputInfo.vsPolarity    =   SYSTEM_DCTRL_POLARITY_ACT_LOW;
        pVInfo->vencOutputInfo.hsPolarity    =   SYSTEM_DCTRL_POLARITY_ACT_LOW;

        /* Below are of dont care for EVM LCD */
        pVInfo->vencOutputInfo.fidPolarity      =   SYSTEM_DCTRL_POLARITY_ACT_HIGH;
        pVInfo->vencOutputInfo.actVidPolarity   =   SYSTEM_DCTRL_POLARITY_ACT_HIGH;

        pVInfo->mInfo.standard                  =   SYSTEM_STD_CUSTOM;
        pVInfo->mInfo.width                     =   displayLCDWidth;
        pVInfo->mInfo.height                    =   displayLCDHeight;
        pVInfo->mInfo.scanFormat                =   SYSTEM_SF_PROGRESSIVE;
        pVInfo->mInfo.fps                       =   60U;
        pVInfo->mInfo.hFrontPorch               =   48U;
        pVInfo->mInfo.vBackPorch                =   12U;
        pVInfo->mInfo.vFrontPorch               =   6U;
        pVInfo->vencDivisorInfo.divisorLCD      =   1;


        pVInfo->mInfo.pixelClock                =   74500U;
        pVInfo->mInfo.hBackPorch                =   80U;
        pVInfo->mInfo.hSyncLen                  =   62U;
        pVInfo->mInfo.vSyncLen                  =   35U;
        pVInfo->vencDivisorInfo.divisorPCD      =   1;

        //Added by Tim 2020/09/15
        pVInfo->mInfo.pixelClock    = 74250U;
    	pVInfo->mInfo.vBackPorch    = 36U;
    	pVInfo->mInfo.vSyncLen     = 5U;
    	pVInfo->mInfo.vFrontPorch    = 4U;
		pVInfo->mInfo.hBackPorch    = 148U;
		pVInfo->mInfo.hSyncLen     = 44U;
		pVInfo->mInfo.hFrontPorch    = 528U;
        pVInfo->mInfo.fps      = 25U;
    	PSVT_VoutConfigPrint(pVInfo);
        

        pVInfo->vencOutputInfo.dataFormat       =   SYSTEM_DF_RGB24_888;
        pVInfo->vencOutputInfo.dvoFormat        =
                                    SYSTEM_DCTRL_DVOFMT_GENERIC_DISCSYNC;
        pVInfo->vencOutputInfo.videoIfWidth     =   SYSTEM_VIFW_24BIT;

        pVInfo->vencOutputInfo.pixelClkPolarity =   SYSTEM_DCTRL_POLARITY_ACT_LOW;
        pVInfo->vencOutputInfo.aFmt             =   SYSTEM_DCTRL_A_OUTPUT_MAX;

        /* Configure overlay params */
        ovlyPrms->vencId                        = SYSTEM_DCTRL_DSS_VENC_LCD1;
        if ((BSP_PLATFORM_SOC_ID_TDA2EX == Bsp_platformGetSocId()) &&
            (BSP_PLATFORM_PACKAGE_TYPE_17x17 == Bsp_platformGetPackageType()))
        {
            /* In case of TDA2EX and Package is 17 X 17, LCD is on DPI 3 */
            ovlyPrms->vencId                    = SYSTEM_DCTRL_DSS_VENC_LCD3;
        }
    }
	
    else
        UTILS_assert(NULL);

    /* Configure LCD overlay params */
    pVInfo->mode = 0;
    pVInfo->isInputPipeConnected[0]         = TRUE;
    pVInfo->isInputPipeConnected[1]         = FALSE;
    pVInfo->isInputPipeConnected[2]         = FALSE;
    pVInfo->isInputPipeConnected[3]         = TRUE;
    pVInfo->writeBackEnabledFlag            = FALSE;

    pVInfo->vencOutputInfo.dataFormat       = SYSTEM_DF_RGB24_888;
    pVInfo->vencOutputInfo.dvoFormat        = SYSTEM_DCTRL_DVOFMT_GENERIC_DISCSYNC;
    pVInfo->vencOutputInfo.videoIfWidth     = SYSTEM_VIFW_24BIT;

    pVInfo->vencOutputInfo.pixelClkPolarity = SYSTEM_DCTRL_POLARITY_ACT_LOW;
    pVInfo->vencOutputInfo.aFmt             = SYSTEM_DCTRL_A_OUTPUT_MAX;

    pOvlyPrms                               = &ovlyPrms[1];
    pOvlyPrms->vencId                       = pVInfo->vencId;
    pOvlyPrms->deltaLinesPerPanel           = 0;
    pOvlyPrms->alphaBlenderEnable           = 0;
    pOvlyPrms->backGroundColor              = 0x0;
    pOvlyPrms->colorKeyEnable               = 1;
    pOvlyPrms->colorKeySel                  = SYSTEM_DSS_DISPC_TRANS_COLOR_KEY_SRC;
    pOvlyPrms->ovlyOptimization             = SYSTEM_DSS_DISPC_OVLY_FETCH_ALLDATA;
    pOvlyPrms->transColorKey                = DRAW2D_TRANSPARENT_COLOR;

    /* Setting HDMI overlay pipe parameters */
    pPipeOvlyPrms                           = &gChains_commonObj.pipeParams[0];
    pPipeOvlyPrms->pipeLine                 = SYSTEM_DSS_DISPC_PIPE_VID1;
    pPipeOvlyPrms->globalAlpha              = 0xFF;
    pPipeOvlyPrms->preMultiplyAlpha         = 0;
    pPipeOvlyPrms->zorderEnable             = TRUE;
    pPipeOvlyPrms->zorder                   = SYSTEM_DSS_DISPC_ZORDER0;

    /* Setting LCD overlay pipe parameters */
    pPipeOvlyPrms                           = &gChains_commonObj.pipeParams[1];
    pPipeOvlyPrms->pipeLine                 = SYSTEM_DSS_DISPC_PIPE_VID2;
    pPipeOvlyPrms->globalAlpha              = 0xFF;
    pPipeOvlyPrms->preMultiplyAlpha         = 0;
    pPipeOvlyPrms->zorderEnable             = TRUE;
    pPipeOvlyPrms->zorder                   = SYSTEM_DSS_DISPC_ZORDER0;

    /* Setting PIP overlay pipe parameters on LCD */
    pPipeOvlyPrms                           = &gChains_commonObj.pipeParams[2];
    pPipeOvlyPrms->pipeLine                 = SYSTEM_DSS_DISPC_PIPE_VID3;
    pPipeOvlyPrms->globalAlpha              = 0xFF;
    pPipeOvlyPrms->preMultiplyAlpha         = 0;
    pPipeOvlyPrms->zorderEnable             = TRUE;
    pPipeOvlyPrms->zorder                   = SYSTEM_DSS_DISPC_ZORDER3;

    /* Configure graphics overlay for HDMI */
    pPipeOvlyPrms                           = &gChains_commonObj.pipeParams[3];
    pPipeOvlyPrms->pipeLine                 = SYSTEM_DSS_DISPC_PIPE_GFX1;
    pPipeOvlyPrms->globalAlpha              = 0xFF;
    pPipeOvlyPrms->preMultiplyAlpha         = 0;
    pPipeOvlyPrms->zorderEnable             = TRUE;
    pPipeOvlyPrms->zorder                   = SYSTEM_DSS_DISPC_ZORDER3;

/* Create, configure and start the Display Ctrl link */
    status = System_linkCreate(gChains_commonObj.displayCtrlLinkId,
                                NULL,
                                0);
    UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);

    status = System_linkControl(gChains_commonObj.displayCtrlLinkId,
                                DISPLAYCTRL_LINK_CMD_SET_CONFIG,
                                &gChains_commonObj.dctrlCfgPrms,
                                sizeof(DisplayCtrlLink_ConfigParams),
                                TRUE);
    UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);

    status = System_linkControl(gChains_commonObj.displayCtrlLinkId,
                                DISPLAYCTRL_LINK_CMD_SET_OVLY_PARAMS,
                                &ovlyPrms[0],
                                sizeof(DisplayCtrlLink_OvlyParams),
                                TRUE);
    UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);

    status = System_linkControl(gChains_commonObj.displayCtrlLinkId,
                                DISPLAYCTRL_LINK_CMD_SET_OVLY_PARAMS,
                                &ovlyPrms[1],
                                sizeof(DisplayCtrlLink_OvlyParams),
                                TRUE);
    UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);

    status = System_linkControl(gChains_commonObj.displayCtrlLinkId,
                                DISPLAYCTRL_LINK_CMD_SET_OVLY_PIPELINE_PARAMS,
                                &gChains_commonObj.pipeParams[0],
                                sizeof(DisplayCtrlLink_OvlyPipeParams),
                                TRUE);
    UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);

    status = System_linkControl(gChains_commonObj.displayCtrlLinkId,
                                DISPLAYCTRL_LINK_CMD_SET_OVLY_PIPELINE_PARAMS,
                                &gChains_commonObj.pipeParams[1],
                                sizeof(DisplayCtrlLink_OvlyPipeParams),
                                TRUE);
    UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);

    status = System_linkControl(gChains_commonObj.displayCtrlLinkId,
                                DISPLAYCTRL_LINK_CMD_SET_OVLY_PIPELINE_PARAMS,
                                &gChains_commonObj.pipeParams[2],
                                sizeof(DisplayCtrlLink_OvlyPipeParams),
                                TRUE);
    UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);

    status = System_linkControl(gChains_commonObj.displayCtrlLinkId,
                                DISPLAYCTRL_LINK_CMD_SET_OVLY_PIPELINE_PARAMS,
                                &gChains_commonObj.pipeParams[3],
                                sizeof(DisplayCtrlLink_OvlyPipeParams),
                                TRUE);
    UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);

    return status;
}

the results was LCD showed camera sensor image + grpx draw,

but the HDMI only showed grpx draw,

then i tried to change SYSTEM_DSS_DISPC_PIPE_GFX1 globalAlpha from 0xff to 0x7f like below,

/* Configure graphics overlay for HDMI */
    pPipeOvlyPrms                           = &gChains_commonObj.pipeParams[3];
    pPipeOvlyPrms->pipeLine                 = SYSTEM_DSS_DISPC_PIPE_GFX1;
    pPipeOvlyPrms->globalAlpha              = 0x7F;
    pPipeOvlyPrms->preMultiplyAlpha         = 0;
    pPipeOvlyPrms->zorderEnable             = TRUE;
    pPipeOvlyPrms->zorder                   = SYSTEM_DSS_DISPC_ZORDER3;


i found that HDMI showed camera sensor image + grpx draw now,

so in fact, when globalAlpha value was 0xff,

there was also showed camera sensor image + grpx draw,

is that mean grpx's bufInfo.transperentColor = DRAW2D_TRANSPARENT_COLOR; <- this function not working?

so HDMI grpx backround color not became tansparent?

or is there something not setting, like zorder?

  • Hi,

    i found when HDMI was setting

    pOvlyPrms                               = &ovlyPrms[0];

    and LCD was setting

    pOvlyPrms                               = &ovlyPrms[1];

    the above problem will occur,

    when i changed setting, when HDMI was setting

    pOvlyPrms                               = &ovlyPrms[1];

    and LCD was setting

    pOvlyPrms                               = &ovlyPrms[0];

    the above problem will disapear,

    now

    LCD  show camera sensor image + grpx draw,

    HDMI  show camera sensor image + grpx draw,

    why?

  • Hi SJay,

    It might be related to the z-order. We need to set the zorder correctly and then alpha value to get the planes displayed correctly. Otherwise, the planes could be transparent/hidden behind other plane. 

    Regards,

    Brijesh

  • Hi Brijesh,

    my configuration,

    pipleline[0] and pipleline[1] were both set zorder 0  (camera sensor stream)

    pipleline[2] and pipleline[3] were both set zorder 3 (grpx ) 

    but pipleline[0] + pipleline[3] was different with  pipleline[1] + pipleline[2] 

    why?

    i think my zorder was set correctly.

  • Hi SJay,

    What about the alpha value for these planes? I think you have enabled alpha blending for these planes, so alpha value is also important. If top layer, ie pipeline2 and pipeline3 has alpha value of 0xff, then pipeline0 and pipeline1 will become transparent.

    Regards,

    Brijesh

  • Hi Brijesh,

    As my code above,

    the pipeline[2] [3] are both set 0xff

  • Hi SJay,

    Then below layer pipeline0 and pipeline1 will not be visible, isn't it?  

    Whats the format of the pipeline2 and pipeline3? 

    Regards,

    Brijesh

  • Hi Brijesh,

    my configuration,

    pipleline[0] and pipleline[1] were both set zorder 0  (camera sensor stream)

    pipleline[2] and pipleline[3] were both set zorder 3 (grpx ) 

    I think when alpha of pipleline[2] and [3]  are both set  0xff,

    and in grpx link, bufInfo.transperentColor = DRAW2D_TRANSPARENT_COLOR,

    i set both grpx link backgroud color be 0xff,

    pipleline[0] and pipleline[1] are must visible, because pipleline[2] and pipleline[3] background now are both transperent.

    but only LCD(pipleline[1])+grpx(pipleline[2]) was correct.

    HDMI(pipleline[0])+grpx(pipleline[3]) was only grpx visible, camera stream was be cover by grpx.

  • Hi SJay,

    Are you still facing this issue? 

    What is the graphics format you are using for both the grpx link? 

    Also is pixel based alpha enabled or global alpha? 

    Regards,

    Brijesh