Tool/software: TI-RTOS
Hi Rishabh,
I am reopening the thread,
My current usecase with modifications is as below,
"
NetworkRx (A15) -> Decode -> VPE -> Sync -> Dup -> Alg_A (DSP1) -> DssM2mWb -> Display_Video
Dup -> Alg_B (DSP2) -> Alg_C (DSP1)
CANLink (IPU1_0)
OverlayLink (IPU1_0) -> Display_Guidelines
OverlayLink (IPU1_0) -> Display_Grpx
"
As per your suggestion earlier, I have used two different displays for overlaying, one normal display link & another GFX display link. So currently I am using three display links as below,
1. Display_Video with "pPrm_Video->displayId = DISPLAY_LINK_INST_DSS_VID1"
2. Display_Guidelines with "pPrm_Video2->displayId = DISPLAY_LINK_INST_DSS_VID2" &
3. Display_Grpx with "pPrm_Grpx->displayId = DISPLAY_LINK_INST_DSS_GFX1"
I have added a new function in "vision_sdk\apps\src\rtos\usecases\common\chains_common.c" as below,
""""""
Void ChainsCommon_MyUsecase_SetDisplayPrms(
DisplayLink_CreateParams *pPrm_Video,
DisplayLink_CreateParams *pPrm_Video2,
DisplayLink_CreateParams *pPrm_Grpx,
Chains_DisplayType displayType,
UInt32 displayWidth,
UInt32 displayHeight
)
{
if(pPrm_Video)
{
if((displayType == CHAINS_DISPLAY_TYPE_SDTV_NTSC) ||
(displayType == CHAINS_DISPLAY_TYPE_SDTV_PAL))
{
pPrm_Video->displayScanFormat = SYSTEM_SF_INTERLACED;
}
pPrm_Video->rtParams.tarWidth = displayWidth;
pPrm_Video->rtParams.tarHeight = displayHeight;
pPrm_Video->displayId = DISPLAY_LINK_INST_DSS_VID1;
}
if(pPrm_Video2)
{
if((displayType == CHAINS_DISPLAY_TYPE_SDTV_NTSC) ||
(displayType == CHAINS_DISPLAY_TYPE_SDTV_PAL))
{
pPrm_Video2->displayScanFormat = SYSTEM_SF_INTERLACED;
}
pPrm_Video2->rtParams.posX = 0U;
pPrm_Video2->rtParams.posY = 0U;
pPrm_Video2->rtParams.tarWidth = 256U;
pPrm_Video2->rtParams.tarHeight = 480U;
pPrm_Video2->displayId = DISPLAY_LINK_INST_DSS_VID2;
}
if(pPrm_Grpx)
{
pPrm_Grpx->rtParams.posX = 0U;
pPrm_Grpx->rtParams.posY = 0U;
pPrm_Grpx->rtParams.tarWidth = 640U;
pPrm_Grpx->rtParams.tarHeight = 480U;
pPrm_Grpx->displayId = DISPLAY_LINK_INST_DSS_GFX1;
if((displayType == CHAINS_DISPLAY_TYPE_SDTV_NTSC) ||
(displayType == CHAINS_DISPLAY_TYPE_SDTV_PAL))
{
pPrm_Grpx->displayScanFormat = SYSTEM_SF_INTERLACED;
}
}
}
""""""
But with above create time configurations, when I start my usecase I get below assertion,
"
[IPU1-0] 7.769627 s: DISPLAY: Create in progress !!!
[IPU1-0] 7.770145 s: DISPLAY: Create Done !!!
[IPU1-0] 7.770267 s: DISPLAY: Create in progress !!!
[IPU1-0] 7.770481 s: dispcore/src/vpscore_dss.c @ Line 441:
[IPU1-0] 7.770572 s: Core for this instance is already opened
[IPU1-0] 7.770694 s: dispdrv/src/vpsdrv_displayCore.c @ Line 411:
[IPU1-0] 7.770786 s: Dss core open failed!!
[IPU1-0] 7.770877 s: dispdrv/src/vpsdrv_displayApi.c @ Line 348:
[IPU1-0] 7.770938 s: Core open failed!!
[IPU1-0] 7.771030 s: Assertion @ Line: 386 in displayLink_drv.c: pObj->displayHndl != NULL : failed !!!
[IPU1-0] 7.771457 s: Assertion @ Line: 386 in displayLink_drv.c: pObj->displayHndl != NULL : failed !!!
"
I have referred "lvds_vip_sv_analytics_us" usecase, where 4 display links are used with below display ID's,
1. Display_sv with "pSvDisplay->displayId = DISPLAY_LINK_INST_DSS_VID1"
2. Display_sv_org with "pSvOrgDisplay->displayId = DISPLAY_LINK_INST_DSS_VID2"
3. Display_alg with "pFrontCamDisplay->displayId = DISPLAY_LINK_INST_DSS_VID3" and
4. Display_Grpx with "pPrm_Grpx->displayId = DISPLAY_LINK_INST_DSS_GFX1"
How do I fix these assertions. Please suggest.
Regards,
Abhay