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.

[参考译文] TDA4VH-Q1:DSS EDP 显示器保存多少个缓冲区?

Guru**** 2378650 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1504543/tda4vh-q1-how-many-buffer-do-dss-edp-display-holds

器件型号:TDA4VH-Q1

工具/软件:

您好、

我们 集成了 DSS eDP 显示元件。

我们为显示分配了3个输出缓冲器。 (考虑1个缓冲区显示将保持、另外2个缓冲区将旋转)


我们注意到 显示屏保存前2个缓冲区、第3个缓冲区正在旋转以处理下一帧数据。 这是理想的吗?
为什么它总是保持2个缓冲区而不是1个缓冲区?

它背后的限制是什么?  我们需要了解这一点吗?

谢谢  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Kamalakkannan、

    您能告诉我在什么操作系统中实施了该功能吗?

    -Josue

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    因为它需要在应用未能提供缓冲区的情况下显示某些内容、所以它保留一个缓冲区本身。  

    此致、

    Brijesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Brijesh

    是的1缓冲保持本身是可以的.

    但当我们  同时调用 Fvid2_queue()和 Fvid2_dequeue()时、 首先2次调用 Fvid2_dequeue()返回(-8) 值  、然后从第三次开始返回(0)、为什么会发生这种情况?


    因此、前2个缓冲区本身在3个缓冲区中...


    下面提供了一些日志以供参考   

    谢谢  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    FreeRTOS  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、  

    请看它,有点紧急.

    谢谢  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    但是、在调用出队之前、您是否在等待驱动程序的回调函数? 只有当驱动程序中有一些缓冲区用于出队并且此驱动程序通过调用回调表示时、才可以调用出队、因此理想情况下、您应该等待此回调、然后只调用出队 API。  

    流量应为

    - Enqueue 最少两个缓冲区  

    -等待回调

    -将一个缓冲区排入队列

    -此缓冲区可在处理后回队。  

    -重复步骤2至4。

    此致、

    Brijesh   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Brijesh、

    是的,我们做同样的例子:

    m_display->sendBuffer(0U, buffer);  //  Enqueue ()
    /*
    *等待显示回调
    */
    m_display->waitForVsync();   // 等待回调
    /*
    *将缓冲区排入队列
    */
    Val = m_display->receiveBuffer (0U、outputBuffer);   //  取消队列()

    支出[3]
    计数= 0

    enqueue (outbuff[0])
    等待 vsync
    if (count >= 2)
    Dequeue()
    Count++

    enqueue (outbuff[1])
    等待 vsync
    if (count >= 2)
    Dequeue()
    Count++

    enqueue (outbuff[2])
    等待 vsync
    if (count >= 2)
    去队列(outbuff[2])
    Count++

    enqueue (outbuff[2])
    等待 vsync
    if (count >= 2)
    去队列(outbuff[2])
    Count++

    enqueue (outbuff[2])
    等待 vsync
    if (count >= 2)
    去队列(outbuff[2])
    Count++


    以此类推……

    现在、outbuff[0] outbuff[1]不会被排入队列、 只有 outbuff[2]会排入队列 。


    所以为什么2缓冲器它的保持(- Enqueue 最小两个缓冲器  ) ?

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    那么为什么要保留2个缓冲区(- Enqueue 最少两个缓冲区  ) ??

    但是、如果您仅排队一个缓冲区、它不会给出回调、因为没有任何东西需要出队、因为此帧将重复。  

    此致、

    Brijesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Brijesh:

    好的这一点我明白.

    现在在我们的情况下 ,甚至我们给了前两个缓冲区 Enqueue ,之后,为什么我没有得到前两个缓冲区在回电后.

    理想情况下,回调后,我们应该得到我们排队的前一个缓冲区,但这些永远不会返回,你可以在附加的日志快照中看到.  ?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    获得回调后、您可以返回第一个排队的缓冲区。 现在、驱动程序只有一个缓冲区、所以您需要再排队一个、以便在第二次回调时返回第二个缓冲区。  

    此致、

    Brijesh