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.

AM62P: DSS sharing issue in AM62P

Part Number: AM62P

Tool/software:

Hello TI team

I'm working on DSS sharing demo.  to fasten the SPLASH startup. I directly set the the Frames[] to the splash raw array use below code. 

 

        gSplashARGB = (uint32_t *)fulllog1920720_pixels;
            /* -------- Zero-copy path: queue two frames pointing to constant ARGB -------- */
        {
        // CacheP_wb((void*)fulllog1920720_pixels, 5529600U, CacheP_TYPE_ALLD);
        Fvid2_FrameList qList;
        Fvid2FrameList_init(&qList);

        /* local static frames to keep lifetime valid across start/fade */
        static Fvid2_Frame splashFrm[2];

        for (int i = 0; i < 2; ++i) {
            Fvid2Frame_init(&splashFrm[i]);
            /* English comment: both frames use the SAME read-only ARGB array */
            splashFrm[i].addr[0] = (uint64_t)gSplashARGB;
            splashFrm[i].fid = FVID2_FID_FRAME;
            splashFrm[i].appData = instObj;

            qList.numFrames = 1U;
            qList.frames[0] = &splashFrm[i];
            (void)Fvid2_queue(instObj->drvHandle, &qList, 0U);
            }

the splash working fine. but, when the app go in  function DispApp_displayShareThread, what ever I clean buffer with 0x00 or 0xFF in gFirstPipelineFrameBuf[],

 the screen will flash back with masked splash log.  how can I do to clean all the Fvid /dss buffer without dss sharing interruption?
  • Can you share a pic on what you are seeing in 'masked splash log'?

  • Hello TI team, please see the movie..

  • Thanks for the video. Let me discuss internally about this and get back to you by Monday.

  • Hi,
    We will be able to give very limited help in this regard since it is your custom application. As a hint: There are 2 frame-buffers working in ping pong fashion, and to maintain synchronicity between the 2 cores sharing the framebuffer, it is important that you clear the the framebuffer exactly between 2 VSyncs (16.6msec for 60fps). It also depends on how you are filling zeroes in the framebuffer. memcpy() will take a lot of time and you may need to use DMA for the same.

  • Hello TI team

    For this application what I edit/ changed is to set direct point the Fvid2_FrameList flame to a raw array but not to copy the data to gFirstPipelineFrameBuf[], then I tired to set 0x00 and 0xff to gFirstPipelineFrameBuf 0 and 1,  dequeue Fvid2, If I didn't do fivid2 stop/start, the flash back will occurred. 

    How can I clear the framebuffer? how many frame buffer I should to take care?

    for the DMA could you please give the demo?

    Thank you very much!

  • Will get back to you by tomorrow.

  • Hi,
    DMA engine is already there inside DSS, and your pointer based approach seems correct.
    Unfortunately, we do not provide an API to clear the screen and will need to be done from userspace code.
    Can you please share your entire C file? I assume there are minimal changes over the default example?

  • dss_display_share_am62px-sk_wkup-r5fss0-0_freertos_ti-arm-clang_2.zip

    Hello Team

    You can directly import the dss share example and put all files to the project root. 

  • Hi,
    Thanks. Let me review this internally. Feel free to ping on this thread if you don't get a reply by the end of next week.

  • Hi,
    I have been going through your code and saw that there are a significant number of custom changes and it is difficult for me to provide support on this codebase. In your code changes, you have not initialised gFirstPipelineFrameBuf and are not de-queuing frames post queuing with a while loop in place. Can you please share a code with minimal deviation from the example that can help reproduce the issue at my end?

  • Hello Team

    This's the minimal change. I direct import example, and change the code in only one function.  I didn't use gFirstPipelineFrameBuf and directly set the framebuffer to the array  to avoid copy it to reduce load time. 

    It's only show 1 pic in the splash, so I didn't queue and dequeue.

  • Hi,
    Sorry for the delay, I was out-of-office for the last week.
    Has there been any progress on this? When you jump to the Display share thread from splash thread, are you able to step through and check where the issue is coming from?

  • I don't have x110, but you can try it in am62px-sk EVM with preferred LCD https://www.ti.com/tool/SK-LCD1

    you can reproduce this issue.