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.

DM8168 - M3-ISS assertion when Tiler enabled

Other Parts Discussed in Thread: SYSBIOS

Hi,

 We have modified the VC3 application little bit, with the changes Tiler Disabled is working. When Tiler is enabled we get assertion on M3-ISS side .

Call-stack is mentioned below,

xdc_runtime_Assert_raise__I(unsigned short, unsigned char *, int, unsigned int)() at Assert.c:29 0x9F63BBC8

OmxUtils_cpuAddr2tilerAddr(void *)() at utils_mem.c:154 0x9F61B8C4    
_OMX_VFPCDeiDualOut_SetFVIDFrameInfo(void *, struct OMX_BASE_VIDEO_CUSTOMHEADER *, struct FVID2_Frame *, void *, unsigned long, unsigned long, enum OMX_DIRTYPE)() at omx_vfpc_DEI_if.c:387 0x9F50E816    
_omx_map_omxhdr2fvidprocesslist(void *, struct omxVfpcDrvIOBufCtx_t * *, unsigned long *, unsigned long, struct FVID2_ProcessList *)() at omx_vfpc.c:2,512 0x9F515E86    
_omx_gen_ready_channel_process_list(void *, unsigned long, unsigned long *, struct FVID2_ProcessList * *)() at omx_vfpc.c:3,474 0x9F522880    
OMX_TI_VFPC_DataNotify(void *)() at omx_vfpc.c:1,426 0x9F54B986    
OMX_BASE_PROCESS_DataEvent(void *)() at omx_base_process.c:979 0x9F633ED2    
OMX_BASE_CompThreadEntry(unsigned long, void *)() at omx_base_process.c:233 0x9F63504A    
ti_sysbios_knl_Task_exit__E() at Task.c:371 0x9F6213B8    
OmxUtils_cpuAddr2tilerAddr(void *)() at utils_mem.c:154 0x9F61B8C4    
ti_sysbios_knl_Task_exit__E() at Task.c:371 0x9F6213B8    
OmxUtils_cpuAddr2tilerAddr(void *)() at utils_mem.c:154 0x9F61B8C4    
0x9F0F48A8   

Cortex M3 Trace:

[CortexM3_ISS_0] M2M Driver DEI-DualOut Opened!!
[CortexM3_ISS_0] Display Controller Path configured for 0!!
[CortexM3_ISS_0] Display Controller Path configured for 1!!
[CortexM3_ISS_0]  CAPTUREAPP: VIP 0: VID DEC 0401 (0x5d): 7002:0002:0000
[CortexM3_ISS_0] M2M Driver DEI-DualOut Opened!!
[CortexM3_ISS_0] Display Driver Opened!!
[CortexM3_ISS_0] Display Driver Opened!!
[CortexM3_ISS_0] Mosaic configuration DONE!!
[CortexM3_ISS_0] Starting Display Driver for BP0...
[CortexM3_ISS_0] Display Driver Started for BP0...
[CortexM3_ISS_0] Mosaic configuration DONE!!
[CortexM3_ISS_0] Starting Display Driver for BP1...
[CortexM3_ISS_0] Display Driver Started for BP1...
[CortexM3_ISS_0]  CAPTUREAPP: Detect video in progress for inst 0 !!!
[CortexM3_ISS_0]  CAPTUREAPP: Detected video at CH0 (800x1125@30Hz, 1)!!!
[CortexM3_ISS_0]  CAPTUREAPP: Detected video at CH0 (800x1125@30Hz, 1)!!!
[CortexM3_ISS_0]  CAPTUREAPP: Detected video at CH0 (800x1125@30Hz, 1)!!!
[CortexM3_ISS_0]  CAPTUREAPP: Detected video at CH0 (800x1125@30Hz, 1)!!!
[CortexM3_ISS_0]  CAPTUREAPP: Detected video at CH0 (800x1125@30Hz, 1)!!!
[CortexM3_ISS_0]  CAPTUREAPP: Detected video at CH0 (800x1125@30Hz, 1)!!!
[CortexM3_ISS_0] [t=0x00000006:066f97b7] xdc.runtime.Main: ERROR: "src/utils_mem.c", line 152: assertion failure: assertion failure%s%s
[CortexM3_ISS_0] xdc.runtime.Main: "src/utils_mem.c", line 152: assertion failure: assertion failure%s%s
[CortexM3_ISS_0] xdc.runtime.Error.raise: terminating execution

On debugging further we understood that memory allocated is in non-Tiled space, whereas the VFPC driver is expecting it to be in Tiled space.

Any suggestions on why this would happen will help us crack this issue.

Regards,

Nitish

  • Nitesh,

    what i understood from your logs is you want the VFPC DEI Dual Out working in Tiled mode, right?  But output buffers are getting allocated from the non-tiled pool rather than the tiled area.  can you please check what is the value set for the port paramter  "eBufMemoryType" from app, for tiled case tjhis should be set to "OMX_BUFFER_MEMORY_TILED_8BIT"

    regards

    shiju

     

  • Hi Shiju,

     eBufMemoryType was set to DEFAULT and that was the reason for this issue. Thanks for the hint. To make it OMX_BUFFER_MEMORY_TILED_8BIT had to add this code,

    File: omx_il_client_utl.h
    Function: omx_ilclient_utl_connect_components

        if (pEdgeInfo->bForceDisableTiler) {
          OMX_TEST_INIT_STRUCT(sMemTypeCfg);
          /* If using as bitstream sink dont use tiled memory */
          sMemTypeCfg.nPortIndex = nPortIndex1;
          sMemTypeCfg.eBufMemoryType = OMX_BUFFER_MEMORY_DEFAULT;
          eError = OMX_SetParameter (hComp1,
                     (OMX_INDEXTYPE)OMX_TI_IndexParamBuffMemType,
                     &sMemTypeCfg);
          OMX_TEST_BAIL_IF_ERROR ( eError );
      
          OMX_TEST_INIT_STRUCT(sMemTypeCfg);
          /* If using as bitstream sink dont use tiled memory */
          sMemTypeCfg.nPortIndex = nPortIndex2;
          sMemTypeCfg.eBufMemoryType = OMX_BUFFER_MEMORY_DEFAULT;
          eError = OMX_SetParameter (hComp2,
                    (OMX_INDEXTYPE)OMX_TI_IndexParamBuffMemType,
                    &sMemTypeCfg);
          OMX_TEST_BAIL_IF_ERROR ( eError );
        }
    #if 1 // THIS IS ADDED
        else
        {   
          OMX_TEST_INIT_STRUCT(sMemTypeCfg);
          sMemTypeCfg.nPortIndex = nPortIndex1;
          sMemTypeCfg.eBufMemoryType = OMX_BUFFER_MEMORY_TILED_8BIT; 

          eError = OMX_SetParameter (hComp1,
                     (OMX_INDEXTYPE)OMX_TI_IndexParamBuffMemType,
                     &sMemTypeCfg);
          OMX_TEST_BAIL_IF_ERROR ( eError );
      
          OMX_TEST_INIT_STRUCT(sMemTypeCfg);
          sMemTypeCfg.nPortIndex = nPortIndex2;
          sMemTypeCfg.eBufMemoryType = OMX_BUFFER_MEMORY_TILED_8BIT;
          eError = OMX_SetParameter (hComp2,
                    (OMX_INDEXTYPE)OMX_TI_IndexParamBuffMemType,
                    &sMemTypeCfg);
          OMX_TEST_BAIL_IF_ERROR ( eError );

        }   
    #endif

    With this change assertion is gone, but we are seeing few fields partially corrupted from VFCC. I am attaching here Luma alone (1920x540) of first 12 fields of the video as got at the output of VFCC. The same behaviour is repeatable (corruption happening at the same field and same dimension) across multiple runs.

    Please help in resolving this issue.

    Regards,

    Nitish

    vfcc-capture.rar
  • Nitish

    you can't configure both of the DEI outputs as tiled mode.  The VIP SC path out can be configured as either tiled or non-tiled. but the DEI SC path output is always non tiled.  so please configure your DEI outputs accordingly

    regards

    shiju

     

     

  • Shiju,

     Setting DEI SC path to non-tiled is automatically taken care by lower layer code.

    The issue that I reported was seen at the output of VFCC. Interestingly, there are few frames that are not corrupted,  on few frames few row stripes are seen and few frames are completely corrupted, as you can see in the previously attached zip file. Also this sequence seems to repeat itself. Any hint to further debug this will help.

    Regards,

    Nitish

  • Nitish,

    are you enabling tiler in VFCC output side?  what is the data format set for VFCC output YUV 420 or YUV 422?

    regards, shiju