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.

[参考译文] TDA4VEN-Q1:TDA4VEN-Q1:TDA4VEN GPU 仅调用 gCLEAR 接口、而 DDR 带宽非常大

Guru**** 2463330 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1449330/tda4ven-q1-tda4ven-q1-tda4ven-gpu-only-calls-the-gclear-interface-and-ddr-bandwidth-is-very-large

器件型号:TDA4VEN-Q1

工具与软件:

您好、TI 专家

HW :tda4ven 板

软件配置:sdk10.0

TDA4VEN GPU 仅调用 gClear 接口、DDR 带宽最多占用2.2G。

为什么它会占用这么多、我们需要您的支持来帮助优化它

gclearcolor (0.0、0.0、1.0、1.0 );

gCLear(GL 颜色缓冲位 i GL 深度缓冲位);

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

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

    您好!

    分配到此 E2E 主题的我们的专家目前将于12月15日前不在办公室。  

    请预计响应会有延迟。

    谢谢!

    Neehar

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

    您好、 Sarabesh:

    请查看以下有关 DDR BW 差异的摘要。

    diff -- git a/kernels/sample/a72/vx_OpenGL_mosa_target.c b/kernels/sample/a72/vx_OpenGL_mosae_target.c
    索引 adcf471..cf1f775 100755
    ---a/kernels/sampl/a72/vx_OpenGL_mosa_target.c
    ++ b/kernels/sample/a72/vx_OpenGL_mosa_target.c
    @@-291、7 +291、23 @@静态 vx_status vx_callback tivxOpenglMosaicProcess (
    renderTexProp.bufAddr[0]= output_target_ptr;

    appEglBindFrameBuffer (mosacicParams->eglWindowObj、&renderTexProp);
    -
    +#if 1.
    + static int num = 0;
    + num++;
    + IF (数字> 100)
    +{
    + glClearColor (1.0、0.0、0.0、1.0);
    + IF (数字> 200)
    +{
    + num = 0;
    +}
    +}
    + else
    +{
    + glClearColor (0.0, 0.0, 1.0, 1.0);
    +}
    + glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    +#endif

    此致

    Joe

    -1-
    默认情况

    DDR 性能统计信息、
    ================

    DDR:读取 BW:平均值= 951Mb/s、峰值= 1673Mb/s
    DDR:写 BW:平均值= 3391Mb/s、峰值= 5202Mb/s
    DDR:总 BW:平均值=4342MB/s、峰值=6875MB/s

    -2-
    启用#if 1

    DDR 性能统计信息、
    ================

    DDR:读取 BW:平均值= 2177MB/s、峰值= 7889MB/s
    DDR:写 BW:平均值=3407MB/s、峰值=12298MB/s
    DDR:总 BW:平均值= 5584MB/s、峰值= 20187MB/s

    -3-
    启用#if 1并注释 glClearColor

    DDR 性能统计信息、
    ================

    DDR:读取 BW:平均值= 2174 Mb/s、峰值= 8868 Mb/s
    DDR:写入 BW:平均值= 3397MB/s、峰值= 138484MB/s
    DDR:总 BW:平均值= 5571MB/s、峰值= 22752MB/s

    -4-
    启用#if 1并取消注释 glClearColor /注释 glClear

    DDR 性能统计信息、
    ================

    DDR:读取 BW:平均值=952MB/s、峰值=1645MB/s
    DDR:写入 BW:平均值= 3396MB/s、峰值= 5231MB/s
    DDR:总 BW:平均值=4348MB/s、峰值=6876MB/s

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

    您好!

    分配此主题的专家工程师将在明天的休假期间回来。 他将研究这一问题并尽快作出答复。

    谢谢!

    Neehar

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

    您好、 Sarabesh:

    您可以帮助检查吗?

    此致

    Joe

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

    您好、Sarabesh:

    此问题是否有任何更新? 谢谢

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

    尊敬的 Xingyu:

    我想这有道理。 如果我们持续对缓冲区执行 memset、DDR BW 将大幅增加、不是吗? 我认为 glClear 基本上 设置像素与固定的给定颜色。 如果我们使用 CPU 为大帧连续设置24位像素值、则 DDR BW 将增加。  

    此致、

    Brijesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们提供了有关此问题的内部测试数据和问题。 我们的测试内容、分析和问题如下:
    问题背景:
    当 TDA4ven GPU 仅调用 gClear 和 gClearColor 接口时、DDR 带宽消耗非常高。 消费在哪里? 渲染输出帧速率为25fps、而渲染 buf 大小为2560 * 1440 RGBA 格式。
    测试步骤:
    启动 Bingling、svcamera 和 AVM 的过程、并对 AVM 进行以下修改:
    情形1:UYVY 输入、RGBA 输出、tivxGpuAvmProcess 功能在无渲染的情况下处于空闲状态、关闭抗混叠功能、测试 DDR 带宽数据
    CASE2:UYVY 输入、RGBA 输出、仅调用 gClear 和 gClearColor 接口、打开抗混叠功能、测试 DDR 带宽数据
    情况3:UYVY 输入、RGBA 输出、只调用 gClear 和 gClearColor 接口、关闭抗混叠功能、测试 DDR 带宽数据
    测试结果/结论:
    我们的分析和问题:
    打开抗混叠功能、glclear 的带宽消耗为3244-631 = 2613M。
    禁用抗混叠、glclear 消耗1768 - 631 = 1137M 带宽
    抗混叠带宽消耗:2613M - 1137M = 1476M
    我们估计、在关闭抗混叠功能后、清除缓冲区所消耗的带宽为:2560 * 1440 * 6 (RGBA 加上两种深度)* 2 (读取和写入2)* 25 /1024 = 1054M
    我们的问题:我们的估算方法是否正确? 消费是否合理? 是否有优化计划?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 JC:

    2560 x 1440 x 6 x 2 x 25 μ~= 1.106GB DDR BW、因此接近 1137M BW。 因此我认为这是合理的、因为差异很小。  

    正如我们讨论过的、图像大小很大、接近3.7MP、因此我们可以只为需要清除的部分图像调用该 API、而不是为整个帧调用 glClear? 这将 显著 降低此 API 的 DDR BW 要求。  

    此致、

    Brijesh  

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

    您好 Brijesh Jadav 您是否有 API 来清除特定视口中的颜色和深度缓冲区? 我以前尝试过其他接口、但它们不能正常工作。

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

    尊敬的 Xie JC:

    我 不知道该怎么说。" 我们必须 在此处与 GPU 专家进行确认。  

    此致、

    Brijesh

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

    您好!

    我对延误深表歉意。 我相信,因为你正在使用 glClear 清除整个2560x1440帧每次,它消耗大量的带宽来重置所有帧缓冲区的颜色和深度信息。 我看到、您可以通过关闭抗混叠来减小带宽、这很有道理、因为每像素通过 AA 存储的数据更多。 如果不需要、我建议关闭 AA。

    如果您只想清除某个部分的帧而不是整个2560x1440帧,另一个解决方案是使用 glScissor ()并指定帧的 x、y 坐标以及要清除的区域。 (链接)

    请参阅 API 文档和示例。

    此致、
    Sarabesh S.