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.

[参考译文] TDA4VM:[TDA4 OpenGL] glReadPixels 需要不同寻常的更长的时间来完成。

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1195291/tda4vm-tda4-opengl-glreadpixels-takes-unusual-longer-time-to-finish

器件型号:TDA4VM

您好!

使用 OpenGL 渲染周围视图时、我们使用 glReadPixels 从帧缓冲区到内存读取图像像素:

图像读取的总像素为120*40像素,图像格式为 BGRA。

通常 gReadPixels 大约需要0.397ms 才能完成读取120*40像素,如下面的红色方框所示:

但是、gReadPixels 有时需要超过100ms 的时间才能完成、并会严重导致我们的30fps 周围视图渲染中出现3帧滞后。  

为什么 glReadPixel 有时需要如此长的时间(>100ms)来读取140*40像素?

此致

Mark Kang。

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

    Mark、您好!

    您能否告知我们您尝试过使用的是哪种 SDK? 如果您在多个 SDK 版本中遇到过此问题?

    我们可以做的第一件事是尝试并研究滞后-尖峰期间的差异。 您是否熟悉收集 PVRTune 数据?

    此致、

    Erick

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

    你好,Erick

    (1)我们使用了 Vision SDK v08.04.00.02、并在为我们的产品实施此基于 OpenGL 的 View 函数时发现了此问题。 我们不尝试其他 SDK 版本。

    (2)我们使用了 PVRTune 来观察 CPU/GPU 负载。 在检查 PVRTune 数据时、我们看不到有关3帧延迟问题的任何线索。

    此致。

    Mark Kang。

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

    Mark、您好!

    您获得的 FPS 是什么? 在 FPS 中是否有短暂的停顿?

    有时、由于我们使用的 GPU 具有延迟渲染特性、因此很难测量函数的时间。

    您能否共享您捕获的 PVRTune 和实际文件、以便我们来看一下? 希望您能捕获一段时间、了解帧的行为。

    谢谢。

    Erick

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

    尊敬的 Erick:

    (1)在正常情况下,我们得到30 fps,但当"glReadPixel 需要 大于100毫秒才能完成"情况发生时,帧速率此时下降到26fps。

    (2) 我们捕获的 PVRTune 数据放在 https://drive.google.com/drive/folders/1Tu9gelR9IaUAu7HW8xvlvPBT8S3c8vz3上 ,我们观察到问题发生在2414.5时间 (见下图),并且大部分 的加载是0%。

    Mark Kang。

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

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

    标记、

    我无法从此处访问 Google Drive 链接。 您是否能够将此文件上传到 TT? 您可以使用"插入"选项卡来执行此操作。

    谢谢。

    Erick

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

    尊敬的 Erick:

    很抱歉在  https://drive.google.com/drive/folders/1Tu9gelR9IaUAu7HW8xvlvPBT8S3c8vz3上启用访问权限 。 请重试。

    Mark Kang。

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

    标记、

    这不是谷歌驱动器的访问权限。 我的公司网络阻止了谷歌驱动器的流量,所以我需要另一种方式来分享。 如果文件不是太大、只要压缩文件并将其上传到此处、E2E 票证就允许上传、这是最好的方法。

    此致、

    Erick

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

    尊敬的 Erick:  

    请参阅以下.rar 文件。 文件大小为26、713、011字节。

    e2e.ti.com/.../PVRTune_5F00_data.rar

    Mark Kang。

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

    标记、

    谢谢、我可以清楚地看到这个问题。 我也在请求我们的供应商提供有关此主题的一些支持、希望尽快获得相关解释。

    同时、您还有几个问题:

    1)复制我们的问题通常是快速解决错误的最佳方法,是否有机会共享表现出这种行为的应用程序?

    2) 2)是否有其他在后台运行的应用程序可能干扰此应用程序? 这个应用程序是一个更大用例的一部分吗? 我们想要查看该延迟是否是由于可能妨碍驱动程序运行的其他因素造成的。 我看到存储器利用率定期下降:

    有什么想法吗? 很明显、巨大的时间间隔大约在这些事件发生的那一刻发生。

    此致、

    Erick

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

    您好!

    是否有关于上述问题的任何更新? 我已经和 GPU 供应商说过、我们有一组高级工具允许我们检查更多可以在调试中提供帮助的值/计数器。 目前、您正在使用 PVTuneDeveloper、但要获得高级工具的访问权限、您需要与我们的 GPU 供应商 Imagination 技术签署 NDA。

    如果您不希望完成此过程、我们可以为您运行该工具、但需要至少访问二进制文件才能运行此应用、这会成为可能吗?

    谢谢。

    Erick

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

    您好、Erick、

    (1)在提供重现同一问题的应用时、需要我们的软件团队付出一些努力将代码从我们自己的板运行修改为 TDA4 EVM (大多数情况下将 BSP 从我们自己的板更改为 TDA4 EVM、并再次尝试重现问题)。 抱歉、目前我们无法准备 此 TDA4 EVM 应用、因为我们的软件团队还需要解决其他更高优先级的 TDA4相关 SDK 问题。

    (2)相反、上周、我们的工程师尝试使用 OpenGL ES3 PBO (像素缓冲对象)方法来解决此问题。 如下图所示、OpenGL ES3 PBO 使用异步 DMA 传输、可以避免对 CPU 的长时间阻断(在本例中为100ms)。 好消息是、我们已经运行此变通方法3个小时、并且没有看到 CPU 等待100毫秒。 我们将运行隔夜测试,并希望没有出现任何100ms CPU 等待.   您能否向 GPU 供应商确认我们的 PBO 方法是否是解决此问题的正确选择?

    Mark Kang。

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

    您好!

     您能否向 GPU 供应商确认我们的 PBO 方法是否是解决此问题的正确选择?

    是的、我已要求他们为您验证此解决方案、会尽快回复。

    谢谢。

    Erick

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

    您好!

    是的,Imagination 已经证实这是一种有效的方法。

    此致、

    Erick