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.

[参考译文] Linux/AM5728:更新了 EGL/GLES/PVR 库

Guru**** 2595805 points
Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/619737/linux-am5728-updated-egl-gles-pvr-libraries

器件型号:AM5728

工具/软件:Linux

当前的 EGL/GLES 实现库存在错误、尚未针对多个 PDK 版本进行更新(自02.00.00 ERA PDK 之前开始至少有效)所有版本都包含1.14@3699939编译版、包括以下用户模式库(和符号链接):

-rwxr-xr-x 1根根,6580年8月21日12:26 libEGL.SO.1.14.3699939
-rwxr-xr-x 1根根目录425456 8月21日12:26 libGLES_CM.SO.1.14.3699939
-rwxr-xr-x 1根 root 437592 Aug21 12:26 libGLESv2.so.1.14.3699939
-rw-r--r-- 1 root 用户84440 2016年7月8日 libIMGegl.so.1.14.3699939
-rw-r--r-- 1 root root 8432 2016年7月8日 libPVRScopeServices.so.1.14.3699939
-rw-r--r-- 1 root root 8364 2016年7月8日 libdbm.so.1.14.3699939
-rw-r--r-- 1根根214356 2016年7月8日 libglslcompiler.so.1.14.3699939
-rw-r--r-- 1 root root 20716 2016年7月8日 libpvr2d.so.1.14.3699939
-rw-r--r-- 1 root root 16804 2016年7月8日 libpvrDRMWSEGL.SO.1.14.3699939
-rw-r--r-- 1 root root 17176 2016年7月8日 libpvrGBMWSEGL.SO.1.14.3699939 (通过/usr/lib/gbm/pvr_gbm 链接到)
-rw-r--r-- 1 root root 3592 2016年7月8日 libpvr_wlegl.so.1.14.3699939
-rw-r--r-- 1根根根12612 2016年7月8日 libpvrws_WAYLAND.SO.1.14.3699939
-rw-r--r-- 1根根110384 2016年7月8日 libsrv_init.so.1.14.3699939
-rw-r--r-- 1根根221012 2016年7月8日 libsrv_um.so.1.14.3699939
-rw-r--r--根号974632 2016年7月8日 libusc.so.1.14.3699939

此实现存在多个问题(错误)、这些问题最常见于 Weston 的修补程序(例如、在开发树中找到的多个"卡"以及由 eglGetConfigAttrib 返回的一个所谓的"可选"EGL_native_visual ID。 这使得移植任何处理 EGL 的库成为调试和修补问题(例如 Weston、Qt、Elementary 等)。 当前的 Arago 编译不是从源代码(我认为它是封闭源代码)构建这些代码、而是将现有文件拉到树中并设置 symLinks。 在 Gitorious (git.ti.com/.../master)上有很多对更旧版本的引用 、但现在所有内容都很旧(大约2015年)、但我认为它们只是链接到旧的预构建库。  

似乎 Imagination Technologies 已经公开提供了其 SDK (但实际上并不是这些库)-即使在那里、这些库也是预编译的。 但是、它们看起来比 PDK 中的更新。 请参阅 :https://github.com/powervr-graphics。  

我们能否为 PowerVR SGX 544MP 获得全新的 EGL/GLES 编译、以及我们必须如何通过 AM5728 EGL/GLES 库提交错误和解决问题。 作为最终用户、可靠的 EGL/GLES 基础对于我(我假设还有许多其他人)使用 Sirara 至关重要、但现在我已经用了几个月的时间、与这些库相关的调试问题也是如此。

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

    我将咨询工厂团队并更新该主题。

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

    当然、如果 EGL/GLES2堆栈通过(或甚至启动) EGL/GLES2测试套件(如 degp)、会有很大的进步。

    可从 以下网站获取:android.googlesource.com/.../deqp

    由于 EGL 堆栈处理 Get Native Display 调用的非标准方式、deqp EGL/GLES2测试不会发生事件启动。 我正在进行黑客入侵测试、以通过初始化查看其他失败的情况、但我在多个领域看到了相同的问题(再次查看 Weston 的 Arago 补丁)

    如果我需要签署 NDA 以帮助修复此问题、我将这样做-但我们需要停止修复所有涉及 EGL 堆栈的补丁中的相同错误、即修复损坏的库、而不是反复修补它的错误。

    -Bill
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    供参考此处还提供了相同的设计: github.com/.../VK-GL-CTS
    (来自 EGL 规范的所有者....)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在我等待任何官方回复的同时、我正在通过黑客攻击来对 AM5728上的 EGL/GLES2问题进行分类。 我现在已经修补了 deqp 测试套件和 EGL init 的问题(避免调用以获得本机显示)、现在正在运行测试、但未通过大量测试-特别是、 执行 glReadPixel 调用时、许多测试失败、结果如下所示:

    PVR:(错误):glReadPixels:无法获取删除数据[0、]

    测试失败当然是因为呼叫不返回任何数据。

    我检测了该调用、glReadPixels 正在传递看起来正确的参数- format 参数是 GL_RGBA、type 是 GL_unsigned_byte。 我尝试调用 glGetError、但驱动程序未报告错误。

    我要注意的是、此 PVR 错误偶尔出现在其他线程中、这意味着在我见过的任何地方都没有记录在案。

    欢迎就任何这种情况提供正式反馈。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我现在运行了 deqp gles2测试、以完成测试(未通过89%的测试-其中大多数与 ReadPixel 错误相关。

    deqp EGL 测试运行了一段时间(也有许多读取像素错误、但目前在多线程测试中是 SIGSEGV。

    我已经添加了更多的仪表来尝试确定 glReadPixels 失败的参数、并可以报告以下情况:

    a. glReadPixels 无提示失败- PVR 错误消息实际上不会导致从 GL 的视点调用失败、例如、glGetError 不会返回任何指示失败的代码。

    b.测试程序正在指定格式:GL_RGBA 和类型: GL_unsigned_byte,根据规范,该格式应该是合法的。

    c.我进行了读取 GL_Implementation_color_read_format 和 GL_Implementation_color_read_type 的调用、并获得了格式的 wacky (未定义)值:

    TYPE = 0x1401 (GL_UNsigned_byte -如预期)

    格式= 0x80E1!  -这不是 GL2头文件中定义的格式类型。

    无论如何、我继续强制这些参数进入读取调用、并得到相同的 PVR 错误、无数据和 GL 报告的错误

    强制将格式设置为 GL_RGB、该格式也应起作用、会导致 glReadPixels 报告错误代码(IIRC 0x502)

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

    Yordan -过去3周-您能否就此问题(工厂团队或其他方面)提供任何反馈? 即使是"做原始工作的人离开了公司/是承包商、没有人可以与谁知道这件事"、也比没有任何回应更好。 就我而言,我将把我的修补降压器放在胜利的位置,以便其他人可以运行测试。 我几乎要运行 EGL 特定的测试才能完成、但我不得不拔出许多多线程测试、因为它们会导致 SEGV 与 GLESv2库一起运行。 degp-EGL 和 degp-gles2测试套件都生成大型结果文件、显示测试日志。

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

    我已经发送了一封提醒函、但没有回听过(也许图形开发人员已经过载)。 让我升级一下。

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

    我显然无法在有价值的(不是 TI 员工)上创建项目、因此为 githib 上的被黑客攻击的问题添加了一个 repo:

    github.com/.../deqp-am5728.git

    主分支只是现有 Android 源代码、使用 AM5728分支为处理器构建。

    请注意、这是一个 cmake 工程、该分支会添加一个 am5728器件/目标。 理想情况下、一旦库中的内容被修复、所需的唯一剩余补丁将是 am5728.cmake 器件文件、以及动态加载 openglesv2库的更改、此时我们可以将更改推送到源站。

    请注意、在测试过程中、这仍然不会运行测试、但在最终完成 SIGSEGV 之前、运行时间确实很长15分钟:

    "performance.gles2_shared_review.shared_all.2_threads_2_contexts_big_call"

    我在 am5728上本地构建了这些文件、如果有人想了解我所讨论的内容、并且需要构建所有内容、那么可以提供二进制文件的 tarbal 和测试目录。

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

    大家好、Bill:

    我正在复制和调试您报告的问题。 非常感谢您提供的信息!

    您能否向我们发送 cmake 编译选项? 我无法确定如何指定 ARM 编译器路径、选项以及目标文件系统或 sysroot 的路径。
    我们应该在/framework/delibs/cmake.下创建一个 CMAKE_toolchain_file

    此致、

    Eric

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

    大家好、Bill:

    您选择哪种平台也不清楚、是否是 Linux/Wayland? 我终于能够构建测试套件了。 但是、仍然不清楚如何运行测试。  是否所有测试均从测试 PC 启动并 通过服务器在目标器件上运行?  在这种情况下、一些测试程序应该是针对主机的编译器、而其他测试程序应该是针对目标计算机的编译器。 但我在构建过程中看不到这些选项。 您能否向 我们发送几个示例、说明 您如何运行测试套件?!

    此致、

    Eric

     

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

    大家好、Bill:

    没关系! 我们能够构建并重现此问题。 它似乎与 SGX DDK 上的内部存储器分配和使用有关。 我们正在利用想象力调试这个问题。

    此致、

    Eric

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

    尊敬的 Eric:

    感谢后续跟进--抱歉,因为我拖延了一段时间,找了回复,然后去了一次旅行,没有看到一封通知电子邮件,告知我们该主题已更新,所以我对此延迟表示歉意。

    要回答您的问题-我使用 TI v3.00 SDK 作为基础/起点、在 AM5728上本地构建并运行测试套件。 (所以是 Linux/Wayland)-我使用的是 Wayland (1.14.0)和 Weston (v.3.0.0)的当前版本、因为 SDK 中的版本也很旧(v1.9)-这对于测试来说无关紧要。 我个人拥有在 SATA-II SSD 文件系统上本地构建的所有内容、但您应该能够对其进行交叉编译并与 NFS 文件系统一起使用。  请注意、gzipped gles2 QPA 文件为47Meg、因此在运行测试之前、您需要有一些可用的磁盘空间。  

    出于以下目的-我的机器上有以下构建结构:

    μ C/degp (~目录)
    ~/support/deqp/build (构建目录)

    DEQP 套件是一个服务器/线对、用于在本地(而不是在外部计算机上)运行所有测试。 线束会运行大量测试、将结果发送到服务器、服务器会将所有结果收集到压缩的 QPA (XML)日志(即使压缩了也很大)中。 有三个相关的应用程序/模块:execserver、deqp-egL 和 deqp-gles2 - am5728上不存在的东西的其余测试。

    ~ DEQP 后、您可以将构建目录中的位和片段复制到以下结构中的测试目录(在我的示例中为 μ C/deqp)中:

    ~μ A/deqp/
    execserver、
    DEQP-EGL、
    degp-gles2、
    格雷斯2/
    指示灯3/
    格勒31/
    内部/
    测试结果*.qpa.gz
    updateAPPS*(见下文)

    这些文件和子目录来自构建树中的模块。 目录基本上包含用于测试的遮盖器等、不会更改。
    当我执行新的 degp 构建时、我只需在脚本中复制测试应用程序- updateapps -即:

    !/bin/sh
    CP ~/support/deqp/build/modules/egl/deqp-egl。
    CP ~/support/deqp/build/modules/gles2/deqp-gles2。


    下面是细分信息:

    execserver -首先运行并用作日志记录设备(即创建结果 QPA)。 这只是侦听端口可以从任何位置(即终端)运行
    服务器在测试运行之间不会关闭、即在引导后启动并运行...


    在我的机器上:

    derbyw[~]$./execserver &
    侦听端口50016

    DEQP-EGL -运行此操作是为了执行 EGL 测试套件-从 Wayland/Weston 的终端执行
    deqp-gles2 -运行此程序是为了执行 GLES2测试套件-从 Wayland/Weston 的终端执行

    因此、要从 Weston 终端运行其中一项:

    derbyw[~]$ cd /deqp
    derbyw[~]$./deqp-EGL


    ...或...

    derbyw[~]$./deqp-gles2.

    **请注意,随着测试的进一步,控制台上的测试偏差也会记录在服务器中(附带其他信息),您将看到区域和项目弹出等

    测试可以通过、失败或不受支持-显然、我们关心失败的测试。

    构建和部署

    我在 GitHub 上将所有必需的更改放入我的分支中-因此请使用 AM5728分支而不是主分支-即 degp/AM5728。
    这种方法进行了更改、使 AM528上的构建以及用于使最简单的测试通过的 deqp 补丁。

    *希望这些修补程序是库修复后我们可以在库中解决的一些问题,这些修补程序应该不再需要。

    为了帮助您-我可以在共享上放置我的测试和编译目录(上面)的 tarball 并向您发送链接-请告诉我这是否有帮助。  

    -Bill

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

    大家好、Bill:

    非常感谢您的详细说明! 我能够运行测试用例并重现问题、正如我之前所指出的那样。 我没有使用服务器/客户端模型、而是将 deqp 可执行文件复制到目标平台并直接执行它们。

    我很抱歉耽误你的答复。 SGX 供应商需要一些时间来确认他们 能够在测试平台上通过具有最新 SGX DDK 的特定 dEQP 测试套件。 我们发现主要问题与 mmap 权限问题有关、而 mmap 权限问题与 TI DRM 驱动程序代码有关。 我正与 TI 内核团队合作解决根本问题。 好消息是、可以在 SGX DDK UM 上实现一种简单的权变措施、因此随附的是查找更新的 UM 库。

    通过更新的库、我们可以通过大多数 dEQP 测试、我将研究其余的故障情况。

    此致、

    Eric

    e2e.ti.com/.../ddklib.tar

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

    谢谢 Eric、

    我认为当回复某个主题帖时、自动发送的电子邮件被滞留在某个垃圾邮件文件夹中、因此我必须明确检查该主题帖的回复情况。 无论如何、我对延迟回复表示歉意-我会更频繁地再次查看。

    遗憾的是、当我安装附加文件 Wayland/Weston 时、它将不再启动、并且抱怨无法加载 libpvrws_wayland.so (下面提供更多详细信息)-这真的很奇怪、因为/usr/lib.中显然存在这种情况
    这会让我质疑它是否在其他地方(例如/usr/local/lib 或某些这样的)的硬编码路径中寻找它。 我曾尝试在/usr/lib/gbm 和/usr/local/lib 中为该文件添加符号链接、但两者都不起作用。

    注:还原5个原始文件可以解决问题

    安装信息:
    我下载了上述内容并将其解压到/usr/lib. 我已确保所有符号链接都正常。 (包括/usr/lib/gbm 中的)。 我运行 lddconfig 并检查了所有符号链接、一切看起来都正常。

    请注意、您没有向我发送一个完整的文件集、以下是我机器上的所有相关文件:

    -rwxr-xr-x 1根根16780 11月22日14:32 libpvrDRMWSEGL.SO.1.14.3699939
    -rwxr-xr-x 1根根根,19452年11月22日14:32 libpvrGBMWSEGL.SO.1.14.3699939
    -rwxr-xr-x 1 root root 用户3616 11月22日14:32 libpvr_wlegl.so.1.14.3699939
    -rwxr-xr-x 1根根根12600 11月22日14:32 libpvrws_WAYLAND.SO.1.14.3699939
    -rwxr-xr-x 1根根8380 11月8日18:10 libdbm.so.1.14.3699939

    -rwxr-xr-x 1根 root 437592 Aug21 12:26 libGLESv2.so.1.14.3699939
    -rwxr-xr-x 1根根,6580年8月21日12:26 libEGL.SO.1.14.3699939
    -rwxr-xr-x 1根根目录425456 8月21日12:26 libGLES_CM.SO.1.14.3699939
    -rwxr-xr-x 1根根214356 2016年7月8日 libglslcompiler.so 1.14.3699939
    -rw-r--r-- 1 root 用户84440 2016年7月8日 libIMGegl.so.1.14.3699939
    -rw-r--r-- 1 root root 8432 2016年7月8日 libPVRScopeServices.so.1.14.3699939
    -rw-r--r-- 1根根110384 2016年7月8日 libsrv_init.so.1.14.3699939
    -rw-r--r-- 1根根221012 2016年7月8日 libsrv_um.so.1.14.3699939
    -rw-r--r--根号974632 2016年7月8日 libusc.so.1.14.3699939

    Weston 启动错误信息:



    加载的模块:GBM_PVR.SO
    找到有效的 GBM 后端:GBM_PVR.SO
    PVR:(错误):无法加载 WS 模块 libpvrws_WAYLAND.so [0、]
    PVR:(错误):[1562->1562]< CreateBuffer():859|ERROR>无法获取缓冲区 FD[0、]
    PVR:(错误):[1562->1562]< CreateDrawable():938|错误映射0缓冲区[0、]

    有什么想法吗?

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

    大家好、Bill:

    让我们用附加的 SGX 库替换所有 SGX 库。 在下一个 PSDK 版本(4.2)中也应提供同样的功能。

    顺便说一下、我们正在与 SGX 供应商合作、为其余 failures.e2e.ti.com/.../sgxlib.tar 提供帮助

    此致、

    Eric

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

    谢谢 Eric、

       我用库更新了我的系统、运行 ldconfig 等。现在它变得更远了、但 Weston 现在死了、因为它无法创建 EGL 曲面。 更改是否修复了初始化序列中的错误(即当前需要修补的错误?) 即、我是否应该退回修补程序并重新构建 Weston? 请注意、我使用的 是最新(或关闭)的 Weston、而不是 PD 中的古代 Weston。

    以下是库更改后的我的 Weston 日志:

    [10:50:13.724] Weston 3.0.90
    http://wayland.freedesktop.org
    故障报告发送至: bugs.freedesktop.org/enter_bug.cgi
    内部版本:3.0.0-10-g30941eba-m脏 将新面板限制在前75像素以避免 OSK 覆盖(2017-10-05 11:35:07 -0400)
    [10:50:13.724)命令行:/usr/bin/weston -bdrm-backend.so --log=/home/derbyw/weston.log
    [10:50:13.725]操作系统:Linux、4.4.4.12-g3639bea54a、#28 SMP 优先于10月20日星期五10:26:05 EDT 2017、armv7l
    [10:50:13.725]使用配置文件'/home/derbyw/.config/weston.ini
    [10:50:13.729]重新喷漆窗口的最大值为7ms。
    [10:50:13.731]加载模块"/usr/lib/libweston-3/drm-backend.so
    [10:50:13.737]正在初始化 DRM 后端
    [10:50:13.743] logind:授予会话控制
    [10:50:13.745]使用/dev/dri/card0
    [10:50:13.746]装载模块"/usr/lib/libweston-3/gl-renderer.so
    [10:50:13.762]警告:不支持 EGL_EXT_platform_BASE 或不支持特定平台;返回到 eglGetDisplay。
    [10:50:13.771]警告:不支持 EGL_EXT_buffer_age。 性能可能会受到影响。
    [10:50:13.771]警告:既不支持 EGL_EXT_SWAP_BUFFICS_WITH_DISAFER、也不支持 EGL_KHR_SWAP_BUFFICS_WITH_DISAFER。 性能可能会受到影响。
    [10:50:13.771]检索 EGL 客户端扩展字符串失败。
    [10:50:13.771] EGL_KHR_surfaceless 上下文
    [10:50:13.779] EGL 版本:1.4 Build 1.14@3699939 (main)
    [10:50:13.779] EGL 供应商:Imagination Technologies
    [10:50:13.779] EGL 客户端 API:OpenGL_ES
    [10:50:13.779] EGL 扩展:EGL_IMG_CLIENT_API_OGL EGL_KHR_image
    EGL_KHR_IMAGE_BASE EGL_KHR_gl_纹 理_2D_image
    EGL_KHR_gL_纹 理_cubemap_image EGL_KHR_gL_renderbuffer_image
    EGL_KHR_vg_parent_image EGL_IMG_cl_image EGL_KHR_Fence_sync
    EGL_IMG_Context_Priority EGL_IMG_HIBERNATE_PROCESS
    EGL_IMG_IMAGE_CONSION_ATTRIBS EGL_KHR_SURFACY_CONTEXT
    EGL_KHR_WAIT_SYNC EGL_KHR_CREASE_CONTEXT
    EGL_WL_BIND_wayland_display EGL_EXT_IMAGE_DMA_buf_import
    [10:50:13.779] GL 版本:OpenGL ES 2.0内部版本1.14@3699939 (主版本)
    [10:50:13.779] GLSL 版本:OpenGL ES GLSL ES 1.00 Build 1.14@3699939 (main)
    [10:50:13.779] GL 供应商:Imagination Technologies
    [10:50:13.779] GL 渲染器:PowerVR SGX 544MP
    [10:50:13.779] GL 扩展名:GL_OES_rgb8_rgba8 GL_OES_depth24
    gL_Oes_vertex_half_float gL_Oes_纹 理_float
    GL_OES_纹 理_Half_float GL_OES_Element_index_uint
    gL_Oes_mapbuffer gL_Oes_fragment_precision_high
    GL_OES_COMPLEED_ETC1_RGB8_TESDLE_OES_EGL_IMAGE
    GL_OES_EGL_IMAGE_EXTERNAL GL_OES_Required_internalformat
    GL_OES_DEPTY_纹 理 GL_OES_GET_program_binary
    GL_OES_packed_depthe_stencil GL_OES_standard_衍生 产品
    gL_Oes_vertex_array_object gL_Oes_EGL_SYNC gL_Oes_纹 理 nPOT
    gL_Oes_surfaceless gL_context gL_EXT_Discard 帧缓冲区
    GL_EXT_blind_MinMax GL_EXT_MULTI_RAGE_ARRAINESS_DIAING_RAMINMAX
    GL_EXT_MULTI采样_呈现_至_纹理 GL_EXT_SHADER_TEST_LOD
    GL_EXT_纹 理_FORMAT_BGRA8888 GL_EXT_occlustion_query_boolean
    GL_EXT_纹 理_Rg GL_EXT_Draw 缓冲区
    GL_EXT_shader_framebuffer_fetch GL_IMG_shader_binary
    gL_IMG_纹 理_compression_pvrtc
    gL_IMG_纹 理_压缩_pvrtc2 gL_IMG_纹 理_ nPOT
    GL_IMG_纹 理_FORMAT_BGRA8888 GL_IMG_READ_FORMAT
    GL_IMG_program_binary GL_IMG_unifore_buffer_object
    GL_IMG_MULTI采样_渲染到纹理 GL_KHR_DEBUG
    [10:50:13.779] GL ES 2渲染器功能:
    读回格式:RGBA
    WL_shm 子图像到纹理:否
    EGL Wayland 扩展:是
    [10:50:13.799] event0 -[10:50:13.799] Palmas_pwron:[10:50:13.799]由 udev 标记为:键盘
    [10:50:13.799] event0 -[10:50:13.799] Palmas_pwron:[10:50:13.799]设备是键盘
    [10:50:13.856] EVENT1 -[10:50:13.856] Logitech USB 接收器:[10:50:13.856]由 udev 标记为:鼠标
    [10:50:13.856] EVENT1 -[10:50:13.856] Logitech USB 接收器:[10:50:13.856]器件是指针
    [10:50:13.861] event2 -[10:50:13.861] Logitech USB 接收器:[10:50:13.861]由 udev 标记为:键盘
    [10:50:13.861] event2 -[10:50:13.861] Logitech USB 接收器:[10:50:13.861]设备是键盘
    [10:50:13.866] event3 -[10:50:13.866] Logitech Logitech USB 键盘:[10:50:13.866]由 udev 标记为:键盘
    [10:50:13.866] event3 -[10:50:13.866] Logitech Logitech USB 键盘:[10:50:13.866]设备是键盘
    [10:50:13.871] event4 -[10:50:13.871] Logitech Logitech USB 键盘:[10:50:13.871]由 udev 标记为:键盘鼠标
    [10:50:13.871] event4 -[10:50:13.871] Logitech Logitech USB 键盘:[10:50:13.871]设备是指针
    [10:50:13.871] event4 -[10:50:13.871] Logitech Logitech USB 键盘:[10:50:13.871]设备是键盘
    [10:50:13.936] event5 -[10:50:13.936] Logitech Logitech USB 键盘:[10:50:13.936]由 udev 标记为:鼠标
    [10:50:13.936] event5 -[10:50:13.936] Logitech Logitech USB 键盘:[10:50:13.936]设备是指针
    [10:50:14.097]大小为12的注册插件 API "WestON_DRM_OUTPSI_API_v1"
    [10:50:14.098]选择的 EGL 配置详细信息:
    RGBA 位:8 8 8
    交换间隔范围:1 - 1
    [10:50:14.098]创建 EGL 曲面失败
    [10:50:14.098]创建 gl 渲染器输出状态失败
    [10:50:14.098]初始化输出 gl 状态失败
    [10:50:14.098]启用输出"HDMI-A-1"失败。
    [10:50:14.098]组合器功能:
    任意曲面旋转:是
    屏幕捕获使用 y 翻转:是
    演示时钟:clock_monotonic、id 1
    演示时钟分辨率:0.000000001 s
    [10:50:14.101]加载模块'/usr/lib/weston/desktop-shell.so
    [10:50:14.105]启动'/usr/bin/maliit-keyboard.sh
    [10:50:14.108]加载模块'/usr/lib/weston/notification-area.so
    [10:50:14.109]加载模块'/usr/lib/weston/dock-manager.so
    [10:50:14.110]加载模块"/usr/lib/weston/launcher-menu.so
    [10:50:14.110]捕捉到的信号:11.
    [10:50:14.112] 0:/usr/bin/weston (ON_LOCK_SIGNAL +0x2C)[0x13f20]
    [10:50:14.119] 1:/lib/libc.so.6 (__default_sa_restorer+0x10)[bb6c9f028]
    [10:50:14.119] UNW_GET_PROC_INFO:-10

    作为参考、将原始库放回后、我会在 Weston 启动时获得此日志:

    [11:20:22.911] Weston 3.0.90
    http://wayland.freedesktop.org
    故障报告发送至:bugs.freedesktop.org/enter_bug.cgi
    内部版本:3.0.0-10-g30941eba-m脏 将新面板限制在前75像素以避免 OSK 覆盖(2017-10-05 11:35:07 -0400)
    [11:20:22.911]命令行:/usr/bin/weston -bdrm-backend.so --log=/home/derbyw/weston.log
    [11:20:22.911]操作系统:Linux、4.4.4.12-g3639bea54a、#28 SMP、抢先于10月20日星期五10:26:05 EDT 2017、armv7l
    [11:20:22.912]使用配置文件'/home/derbyw/.config/weston.ini
    [11:20:22.912]重新喷漆窗口最长为7ms。
    [11:20:22.912]加载模块"/usr/lib/libweston-3/drm-backend.so
    [11:20:22.916]正在初始化 DRM 后端
    [11:20:22.923] logind:已授予会话控制
    [11:20:22.926]使用/dev/dri/card0
    [11:20:22.926]加载模块'/usr/lib/libweston-3/gl-renderer.so
    [11:20:22.933]警告:不支持 EGL_EXT_platform_BASE 或不支持特定平台;返回到 eglGetDisplay。
    [11:20:22.940]警告:不支持 EGL_EXT_buffer_age。 性能可能会受到影响。
    [11:20:22.940]警告:既不支持 EGL_EXT_SWAP_BUFFICS_WITH_DISAFER、也不支持 EGL_KHR_SWAP_BUFFICS_WITH_DISAFER。 性能可能会受到影响。
    [11:20:22.940]检索 EGL 客户端扩展字符串失败。
    [11:20:22.940]提供 EGL_KHR_surfaceless 上下文
    [11:20:22.945] EGL 版本:1.4 Build 1.14@3699939 (main)
    [11:20:22.945] EGL 供应商:Imagination Technologies
    [11:20:22.945] EGL 客户端 API:OpenGL_ES
    [11:20:22.945] EGL 扩展:EGL_IMG_CLIENT_API_OGL EGL_KHR_image
    EGL_KHR_IMAGE_BASE EGL_KHR_gl_纹 理_2D_image
    EGL_KHR_gL_纹 理_cubemap_image EGL_KHR_gL_renderbuffer_image
    EGL_KHR_vg_parent_image EGL_IMG_cl_image EGL_KHR_Fence_sync
    EGL_IMG_Context_Priority EGL_IMG_HIBERNATE_PROCESS
    EGL_IMG_IMAGE_CONSION_ATTRIBS EGL_KHR_SURFACY_CONTEXT
    EGL_KHR_WAIT_SYNC EGL_KHR_CREASE_CONTEXT
    EGL_WL_BIND_wayland_display
    [11:20:22.945] GL 版本:OpenGL ES 2.0内部版本1.14@3699939 (主版本)
    [11:20:22.945] GLSL 版本:OpenGL ES GLSL ES 1.00 Build 1.14@3699939 (main)
    [11:20:22.945] GL 供应商:Imagination Technologies
    [11:20:22.945] GL 渲染器:PowerVR SGX 544MP
    [11:20:22.945] GL 扩展名:GL_OES_rgb8_rgba8 GL_OES_depth24
    gL_Oes_vertex_half_float gL_Oes_纹 理_float
    GL_OES_纹 理_Half_float GL_OES_Element_index_uint
    gL_Oes_mapbuffer gL_Oes_fragment_precision_high
    GL_OES_COMPLEED_ETC1_RGB8_TESDLE_OES_EGL_IMAGE
    GL_OES_EGL_IMAGE_EXTERNAL GL_OES_Required_internalformat
    GL_OES_DEPTY_纹 理 GL_OES_GET_program_binary
    GL_OES_packed_depthe_stencil GL_OES_standard_衍生 产品
    gL_Oes_vertex_array_object gL_Oes_EGL_SYNC gL_Oes_纹 理 nPOT
    gL_Oes_surfaceless gL_context gL_EXT_Discard 帧缓冲区
    GL_EXT_blind_MinMax GL_EXT_MULTI_RAGE_ARRAINESS_DIAING_RAMINMAX
    GL_EXT_MULTI采样_呈现_至_纹理 GL_EXT_SHADER_TEST_LOD
    GL_EXT_纹 理_FORMAT_BGRA8888 GL_EXT_occlustion_query_boolean
    GL_EXT_纹 理_Rg GL_EXT_Draw 缓冲区
    GL_EXT_shader_framebuffer_fetch GL_IMG_shader_binary
    gL_IMG_纹 理_compression_pvrtc
    gL_IMG_纹 理_压缩_pvrtc2 gL_IMG_纹 理_ nPOT
    GL_IMG_纹 理_FORMAT_BGRA8888 GL_IMG_READ_FORMAT
    GL_IMG_program_binary GL_IMG_unifore_buffer_object
    GL_IMG_MULTI采样_渲染到纹理 GL_KHR_DEBUG
    [11:20:22.946] GL ES 2渲染器特性:
    读回格式:RGBA
    WL_shm 子图像到纹理:否
    EGL Wayland 扩展:是
    [11:20:22.963] event0 -[11:20:22.963] Palmas_pwron:[11:20:22.964]被 udev 标记为:键盘
    [11:20:22.964] event0 -[11:20:22.964] Palms_pwron:[11:20:22.964]设备是键盘
    [11:20:23.026] EVENT1 -[11:20:23.026] Logitech USB 接收器:[11:20:23.026]由 udev 标记为:鼠标
    [11:20:23.026] EVENT1 -[11:20:23.026] Logitech USB 接收器:[11:20:23.026]器件为指针
    [11:20:23.031] event2 -[11:20:23.031] Logitech USB 接收器:[11:20:23.031]由 udev 标记为:键盘
    [11:20:23.031]事件2 -[11:20:23.031] Logitech USB 接收器:[11:20:23.031]设备是键盘
    [11:20:23.036] event3 -[11:20:23.036] Logitech Logitech USB 键盘:[11:20:23.036]由 udev 标记为:键盘
    [11:20:23.036] event3 -[11:20:23.036] Logitech Logitech USB 键盘:[11:20:23.036]设备是键盘
    [11:20:23.040]事件4 -[11:20:23.040] Logitech Logitech USB 键盘:[11:20:23.040]由 udev 标记为:键盘鼠标
    [11:20:23.040]事件4 -[11:20:23.040] Logitech Logitech USB 键盘:[11:20:23.040]设备是指针
    [11:20:23.041] event4 -[11:20:23.041] Logitech USB 键盘:[11:20:23.041]设备是键盘
    [11:20:23.106] event5 -[11:20:23.106] Logitech Logitech USB 键盘:[11:20:23.106]被 udev 标记为:鼠标
    [11:20:23.106] event5 -[11:20:23.106] Logitech Logitech USB 键盘:[11:20:23.106]设备是指针
    [11:20:23.257]大小为12的注册插件 API "WestON_DRM_OUTPSI_API_v1"
    [11:20:23.257]所选 EGL 配置详细信息:
    RGBA 位:8 8 8
    交换间隔范围:1 - 1
    [11:20:23.291]光标缓冲区不可用,使用 gl 光标
    [11:20:23.291]无法初始化背光
    [11:20:23.291] EDID 数据'ACR'、'Acer S231HL'、'LWKAA0014340'
    [11:20:23.291]输出 HDMI-A-1、(连接器27、CRTC 29)
    模式1920x1080@60.0、首选电流
    模式1680x1050@59.9
    模式1280x1024@60.0
    模式1440x900@59.9
    模式1280x800@59.9
    模式1152x864@75.0
    模式1280x720@60.0
    模式1024x768@70.1
    模式1024x768@60.0
    模式800x600@60.3
    模式800x600@56.2
    模式640x480@66.7
    模式640x480@60.0
    模式720x400@70.1
    [11:20:23.292]组合器功能:
    任意曲面旋转:是
    屏幕捕获使用 y 翻转:是
    演示时钟:clock_monotonic、id 1
    演示时钟分辨率:0.000000001 s
    [11:20:23.292]加载模块'/usr/lib/weston/desktop-shell.so
    [11:20:23.293]启动'/usr/bin/maliit-keyboard.sh
    [11:20:23.295]加载模块"/usr/lib/weston/notification-area.so
    [11:20:23.296]加载模块'/usr/lib/weston/dock-manager.so
    [11:20:23.296]加载模块'/usr/lib/weston/launcher-menu.so
    [11:20:23.297]启动'/usr/libexec/weston-desktop-shell
    [11:20:25.238]面板表面消失了
    [11:20:25.238]背景表面消失了
    [11:20:25.258]事件0 -[11:20:25.258] Palmas_pwron:[11:20:25.258]器件已移除
    [11:20:25.259] EVENT1 -[11:20:25.259] Logitech USB 接收器:[11:20:25.259]设备已删除
    [11:20:25.260]移除了事件2 -[11:20:25.260] Logitech USB 接收器:[11:20:25.260]设备
    [11:20:25.260]事件3 -[11:20:25.260] Logitech Logitech USB 键盘:[11:20:25.260]设备已卸下
    [11:20:25.261] event4 -[11:20:25.261] Logitech USB 键盘:[11:20:25.261]设备已卸下
    [11:20:25.261] event5 -[11:20:25.261] Logitech Logitech USB 键盘:[11:20:25.261]设备已卸下

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

    大家好、Bill:

    我已经尝试过多种组合、但无法使用最新的 SGX DDK 本地版本重现您的问题。
    SGX DDK 中只有细微的更改、其中大多数是错误修复、包括启用 dmabuf RDWR 的修复、可解决大多数 dEQP 故障。 没有 API 或 Weston 接口更改、因此、您需要保留所有 Weston 补丁。

    我不知道为什么 Weston 未能通过新的 SGX DDK 版本、您可能希望根据 SGX DDK 二进制文件重建 Weston/Wayland、尽管我的测试环境不需要它。  您还可以在 gl-render.c 中围绕 eglCreateWindowSurface ()添加一些调试代码 您是否可以在 PSDK 版本的基础上运行测试? 在两种不同的构建和测试环境下进行调试非常困难。 如果您愿意、我可以向您发送启用了一些调试跟踪的 SGX 二进制文件。

    以下是最新的 Weston 日志以及一些 SGX 跟踪打印输出:

    [02:54:43.528] Weston 1.11.0
                  http://wayland.freedesktop.org
                  故障报告发送至: bugs.freedesktop.org/enter_bug.cgi
                  内部版本:1.10.93-2-g2d825ed configuration.ac:正式版本(2016-05-31 17:10:40 -0700)的固件版本为1.11.0
    [02:54:43.528]操作系统:Linux、4.9.45-g0d315629c7、#1 SMP 抢占 Tue、11月14日15:53:23 EST 2017、armv7l
    [02:54:43.529]使用配置文件'/etc/weston.ini'
    [02:54:43.530]重新喷漆窗口的最大值为7ms。
    [02:54:43.531]加载模块'/usr/lib/weston/drm-backend.so
    [02:54:43.539]正在初始化 DRM 后端
    [02:54:43.541]使用/dev/dri/card0
    [02:54:43.541]负载模块'/usr/lib/weston/gl-renderer.so
    无法加载模块:/usr/lib/gbm/gbm_dri.so:无法打开共享目标文件:无此类文件或目录
    无法加载模块:/usr/lib/gbm/gbm_gallium_drm.so:无法打开共享目标文件:无此类文件或目录
    加载的模块:GBM_PVR.SO
    找到有效的 GBM 后端:GBM_PVR.SO
    root@am57xx-EVM:/usr/lib/weston #[02:54:43.594]警告:不支持 EGL_EXT_platform_BASE 或特定平台支持;返回到 eglGetDisplay。
    PVR:IsDisplayValid 0x4d4d0
    PVR:InitializeDisplay
    [02:54:43.613]警告:不支持 EGL_EXT_Buffer_Age。 性能可能会受到影响。
    [02:54:43.613]检索 EGL 客户端扩展字符串失败。
    [02:54:43.641]输入器件"Pixcir_tangoc"、/dev/input/event1由 udev 标记为:触摸屏
    [02:54:43.641]输入器件'PIXACIR_TOCOOC'、/dev/input/event1是一款触控器件
    [02:54:43.644]输入设备'Dell USB Entry Keyboard'、/dev/input/event2由 udev 标记为:键盘
    [02:54:43.644]输入设备'Dell USB Entry Keyboard'、/dev/input/event2是键盘
    [02:54:43.708]输入设备'USB 光电鼠标'、/dev/input/event3被 udev 标记为:鼠标
    [02:54:43.708]输入设备"USB 光电鼠标"、/dev/input/event3是指针电容器
    [02:54:43.709]输入设备'GPIO_keys'、/dev/input/event0由 udev 标记为:键盘
    [02:54:43.709]输入设备"GPIO_keys"、/dev/input/event0是键盘
    PVR:IMGeglCreateWindowSurface
    PVR:IMGeglCreateWindowSurface:调用 CreateWindowDrawable
    PVR:CreateWindowDrawable:创建曲面
    PVR:IMGeglCreateWindowSurface:调用 CreateWindowDrawable = 0
    [02:54:43.766] EGL 版本:1.4内部版本1.14@3699939 (主版本)
    [02:54:43.766] EGL 供应商:Imagination Technologies
    [02:54:43.766] EGL 客户端 API:OpenGL_ES
    [02:54:43.766] EGL 扩展:EGL_IMG_CLIENT_API_OGL EGL_KHR_image
                  EGL_KHR_IMAGE_BASE EGL_KHR_gl_纹 理_2D_image
                  EGL_KHR_gL_纹 理_cubemap_image EGL_KHR_gL_renderbuffer_image
                  EGL_KHR_vg_parent_image EGL_IMG_cl_image EGL_KHR_Fence_sync
                  EGL_IMG_Context_Priority EGL_IMG_HIBERNATE_PROCESS
                  EGL_IMG_IMAGE_CONSION_ATTRIBS EGL_KHR_SURFACY_CONTEXT
                  EGL_KHR_WAIT_SYNC EGL_KHR_CREASE_CONTEXT
                  EGL_WL_BIND_wayland_display EGL_EXT_IMAGE_DMA_buf_import
    [02:54:43.767] GL 版本:OpenGL ES 2.0内部版本1.14@3699939 (主版本)
    [02:54:43.767] GLSL 版本:OpenGL ES GLSL ES 1.00 Build 1.14@3699939 (main)
    [02:54:43.767] GL 供应商:Imagination Technologies
    [02:54:43.767] GL 渲染器:PowerVR SGX 544MP
    [02:54:43.767] GL 扩展名:GL_OES_rgb8_rgba8 GL_OES_depth24
                  gL_Oes_vertex_half_float gL_Oes_纹 理_float
                  GL_OES_纹 理_Half_float GL_OES_Element_index_uint
                  gL_Oes_mapbuffer gL_Oes_fragment_precision_high
                  GL_OES_COMPLEED_ETC1_RGB8_TESDLE_OES_EGL_IMAGE
                  GL_OES_EGL_IMAGE_EXTERNAL GL_OES_Required_internalformat
                  GL_OES_DEPTY_纹 理 GL_OES_GET_program_binary
                  GL_OES_packed_depthe_stencil GL_OES_standard_衍生 产品
                  gL_Oes_vertex_array_object gL_Oes_EGL_SYNC gL_Oes_纹 理 nPOT
                  gL_Oes_surfaceless gL_context gL_EXT_Discard 帧缓冲区
                  GL_EXT_blind_MinMax GL_EXT_MULTI_RAGE_ARRAINESS_DIAING_RAMINMAX
                  GL_EXT_MULTI采样_呈现_至_纹理 GL_EXT_SHADER_TEST_LOD
                  GL_EXT_纹 理_FORMAT_BGRA8888 GL_EXT_occlustion_query_boolean
                  GL_EXT_纹 理_Rg GL_EXT_Draw 缓冲区
                  GL_EXT_shader_framebuffer_fetch GL_IMG_shader_binary
                  gL_IMG_纹 理_compression_pvrtc
                  gL_IMG_纹 理_压缩_pvrtc2 gL_IMG_纹 理_ nPOT
                  GL_IMG_纹 理_FORMAT_BGRA8888 GL_IMG_READ_FORMAT
                  GL_IMG_program_binary GL_IMG_unifore_buffer_object
                  GL_IMG_MULTI采样_渲染到纹理 GL_KHR_DEBUG
    [02:54:43.767] GL ES 2渲染器特性:
                  读回格式:RGBA
                  WL_shm 子图像到纹理:否
                  EGL Wayland 扩展:是
    [02:54:43.767]选择的 EGL 配置详细信息:
                  RGBA 位:8 8 8
                  交换间隔范围:1 - 1
    [02:54:43.767]光标缓冲区不可用、使用 gl 光标
    [02:54:43.768]初始化背光、器件/sys/class/backlight/backlight
    [02:54:43.768]应用校准:0.995683 0.025841 -14.223816 0.013122 0.973577 -10.893066 (标准化-0.017780 -0.022694)
    [02:54:43.769]输出未命名-1、(连接器31、CRTC 34)
                  模式800x480@59.5、首选、电流
    [02:54:43.769]组合器功能:
                  任意曲面旋转:是
                  屏幕捕获使用 y 翻转:是
                  演示时钟:clock_monotonic、id 1
    [02:54:43.769]装载模块"/usr/lib/weston/desktop-shell.so
    [02:54:43.770]启动'/usr/libexec/weston-keyboard
    [02:54:43.771]启动'/usr/libexec/weston-desktop-shell

    此致、

    Eric

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

    Eric、

     是的、检测库编译最有用:  我有自定义硬件、因此使用 AM5728 PDK 不是一个简单的更改-因为每次更改时、我都必须应用 SOM 供应商的补丁(强制要求)、然后重新应用我对硬件的所有更改、包括对 DTB 的更改。 我正在运行的 PDK 是:ti-processor-sdk-linux-am57xx-evm-03.00.00.04,它得到了大量增强,可以为我的项目添加所需的组件。 (即、我需要库、应用程序的当前版本、因此需要升级到库等 - 60多种封装)。

      我要注意 的是、PVR 库本身会出现以下错误:

    PVR:(错误):[ -> ]< CreateBuffer():859|error>无法获取缓冲区 FD[0、]

    PVR:(错误):[ -> ]< CreateDrawable():938|error>错误映射0缓冲区[0、]

      比较两个运行中的日志:

    新库显示: EGL_WL_BIND_wayland_display EGL_EXT_IMAGE_DMA_buf_import

    与原始图: EGL_WL_BIND_wayland_display

    根据您的更改、这是预期的、但可能会导致新的代码执行路径(我将尝试跟踪该路径)。

    我已经开始检测 Weston,并可以确认代码是否在: eglCreateWindowSurface 上死亡

    我添加了一些快速日志消息、并且 EGL_CHOOE_CONFIG 从22中挑选相同的配置(0)、并且两种情况下的 visual _id 是相同的)

    我的下一种模式是编译调试版本并在其上运行 GDB、以便更有效地跟踪。

    在此之前,我决定给 strace,显然它会在 ioctl 上消失: DRM_IOCTL_PRIME_Handle_TO_FD

    Weston 上的跑步鞋带提供以下痕迹(显示:

    ioctl (16、DRM_IOCTL_MODE_GETENCODER、0xbea80474)= 0
    ioctl (16、DRM_IOCTL_MODE_GETCRTC、0xbea80418)= 0
    ioctl (16、DRM_IOCTL_MODE_getProperty、0xbea80450)= 0
    ioctl (16、DRM_IOCTL_MODE_getProperty、0xbea80450)= 0
    ioctl (16、DRM_IOCTL_MODE_getProperty、0xbea80450)= 0
    ioctl (16、DRM_IOCTL_MODE_getProperty、0xbea80450)= 0
    ioctl (16、DRM_IOCTL_MODE_CREASE_Dumb、0xbea80368)= 0
    ioctl (16、DRM_IOCTL_MODE_CREASE_Dumb、0xbea80368)= 0
    ioctl (16、DRM_IOCTL_MODE_CREASE_Dumb、0xbea80368)= 0
    stat64 ("/etc/localtime、{st_mode=s_IFREG|0644、st_size=3545、...}) = 0
    WRITE (3、"[11:49:37.634]已选择 EGL 配置"...、42)= 42
    WRITE (3、" RGBA 位:8 8 8 "...、34)= 34
    WRITE (3、"交换间隔 RAN "……、42)= 42
    ioctl (16、DRM_IOCTL_PRIME_Handle_TO_FD、0xbea80384)=-1 EINVAL (无效参数)
    getpid()= 2288
    gettid()= 2288
    fstat64 (1、{st_mode=s_IFchr|0600、st_rdev=makedev (4、1)、...}) = 0
    ioctl (1、TCGETS、{B38400 opost isig icanon echo ...}) = 0
    写入(1、"PVR:(错误):[ 2288->2288]<"...、107)= 107
    getpid()= 2288
    gettid()= 2288
    写入(1、"PVR:(错误):[ 2288->2288]<"...、107)= 107
    stat64 ("/etc/localtime、{st_mode=s_IFREG|0644、st_size=3545、...}) = 0
    WRITE (3、"[11:49:37.636]未能创建"...、44)= 44
    stat64 ("/etc/localtime、{st_mode=s_IFREG|0644、st_size=3545、...}) = 0
    WRITE (3、"[11:49:37.636]未能创建"...、57)= 57
    ioctl (16、DRM_IOCTL_MODE_SABLE_UDR_UDIB、0xbea80444)= 0
    ioctl (16、DRM_IOCTL_MODE_SABLE_UDR_UDIB、0xbea80444)= 0
    ioctl (16、DRM_IOCTL_MODE_SABLE_UDR_UDIB、0xbea80444)= 0
    stat64 ("/etc/localtime、{st_mode=s_IFREG|0644、st_size=3545、...}) = 0
    WRITE (3、"[11:49:37.637]未能初始化 ou"...、46)= 46
    stat64 ("/etc/localtime、{st_mode=s_IFREG|0644、st_size=3545、...}) = 0
    WRITE (3、"[11:49:37.637]启用输出\"..."、50)= 50
    rt_sigaction (SIGSEGV、{0x13ef4、[]、SA_Restorer|SA_RESETHAND|SA_SIGINFO、b6cb6020}、 空、8)= 0
    rt_sigaction (SIGABRT、{0x13ef4、[]、SA_Restorer|SA_RESETHAND|SA_SIGINFO、b6cb6020}、 空、8)= 0
    stat64 ("/etc/localtime、{st_mode=s_IFREG|0644、st_size=3545、...}) = 0
    WRITE (3、"[11:49:37.638]组合器 capabi"...、40)= 40
    WRITE (3、"任意表面"...、47)= 47

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    实际上、通过查看您的日志和程序执行、我肯定不会看到比之前发生的突出显示的 PVR 调用
    eglCreate 调用。


    PVR:IsDisplayValid 0x4d4d0
    PVR:InitializeDisplay

    (和以下 PVR:IMGGE*消息)

    这意味着我在错误的位置进行调试。 --您能告诉我哪些呼叫导致丢失 PVR:日志消息? 同时、我将确保/usr/local/bin 等中没有可能被引入的旧库。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Bill:

    感谢您提供详细的调试信息! 我没有意识到您使用了具有大量定制库的旧版 PSDK。

    很明显、我们仍然面临某种 DRM 权限问题、根据您的错误日志、我已经尝试解决了将近一个月。

    ioctl (16、DRM_IOCTL_PRIME_Handle_TO_FD、0xbea80384)=-1 EINVAL (无效参数)

    我们所做的主要更改 是将新标志 DRM_RDWR 添加到该调用中、我从供应商那里听说、该标志不适用于内核4.5和/或某些 DRM 驱动程序。 请注意,使用内核4.4的 TI PSDK 3.x 发行版和使用内核4.9的 PSDK 4.x 发行版需要此标志,以解决 dEQP glReadPixels()问题,如果没有此标志,将显示以下错误。

    PVR:(错误):PVRSRVMapDmaBuf:无法获取用户 CPU 映射(错误13)[0、]

    为了解决 dEQP 问题、我们进行了以下两组更改。

    1.将 DRM_RDWR 标志添加到 API 调用 drmPrimeHandleToFD()以启用 R/W 权限。
    2.从 PVR 映射调用中删除 PVRSRV_MAP_NOUSERVIRTUAL 标志,这将禁用 CPU 对帧缓冲区的访问,从而中断 glReadPixels()

    请注意、供应商测试环境中不需要更改#1和 PVRSRV_MAP_NOUSERVIRTAL 标志。
    对于 TI 测试环境、我们需要设置 更改或 PVRSRV_MAP_NOUSERVIRTUAL 标志、以避免出现上述错误。

    在我看来、您的测试环境更像我们供应商的测试环境。 附件请查找一组仅包含更改#2的库、即与我们供应商的原始版本相同。

    请尝试查看它是否解决了系统启动问题。

    此致、

    Eric

    e2e.ti.com/.../sgxlib2.tar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    遗憾的是没有-我的 PVR 死机:(错误):PVRSRVMMapDmaBuf:无法获取用户 CPU 映射(errno 13)[0,]

    我假设 DRM ioctl 正在调用 PVR 内核模块-那么那里是否有问题? 即为什么 TI 案例与供应商系统不同?

    对于我的系统、除了 libc 之外的大多数自定义库在应用程序栈中都要高得多。 我在鞋带中没有看到任何会涉及到这些东西的东西。

    由于这与权限相关、我也应该注意以下几点- PSDK (至少是 v.3)非常好
    用于启动 Weston 的 inid 脚本、最终以 root 身份直接启动它-即包括终端在内的应用程序以 root 身份运行!

    在我的系统上、我修复了所有这些问题、并使用正确的 Weston-launch 代码以用户权限启动 Weston。 用户级别的初始化如下所示:

    #从虚拟控制台运行此操作。
    #启动 D-Bus 会话守护程序
    Eval `dbus-launch`
    导出 DBUS_SEST_BUS_ADDRESS
    #export WAYLAND_DEBUG=CLIENT

    导出 EGL_LOG_LEVEL=DEBUG

    #将陆地输入模块告知 GTK
    #export GTK_IM_MODULE=wayland

    #生成额外的马利亚特信息...
    #export MALIIT_DEBUG=1

    #以此用户身份启动 Weston
    Weston-launch -v ---bdrm-backend.so --log=/var/tmp/weston.log


    #终止 D-Bus 会话守护进程
    终止$DBUS_SEST_BUS_PID

    <脚本末尾>

    供参考-如果这是一个问题、我还以同样的结果启动了 Weston。

    我希望继续前进、通过点击要点并将我的系统移至更新的 PSDK 来解决这一问题-遗憾的是、这可能需要数天/数周的时间、如果可能、我会避免这种情况。 我想我可以通过 NFS 尝试香草 PSDK 并构建 DTB 和内核、然后尝试库在移动所有其他内容之前查看它们是否正常工作。

    我假设我应该使用最新版本(我已经安装了 PSDK 4.01.00.06、但尚未修改)也许我可以升级内核和驱动程序、并尝试保持其他内容不变?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Bill:

    错误"PVR:(错误):PVRSRVMMapDmaBuf:无法获取用户 CPU 映射(错误13)[0、]"由 mmap 的权限错误触发、因此我们需要将 DRM_RDWR 标志添加到函数 drmPrimeHandleToFD、该函数应向 DRM 器件驱动程序调用 ioctl 调用。  带有 DRM_RDWR 标志的 ioctl DRM_IOCTL_PRIME_Handle_TO_FD 会被 DRM (内核)驱动程序拒绝。 您能找到我发送给您的前几个库的位置和情况。   然后我们可以从中进行选择。

    对于我尝试过的所有 PSDK 版本,我们可以保留我之前提到的两个修复程序,并解决了 glReadPixels()问题。
    在我们的供应商测试环境中,DRM_RDWR 标志不是必需的,它们的 mmap 不会返回权限错误,因此 glReadPixels()没有问题。
     在测试环境中,drmPrimeHandleToFD()不允许 DRM_RDWR 标志,但是 mmap 将返回权限错误而不使用此标志。 它可能是由不匹配的用户模式和内核驱动程序引起的。

    此致、

    Eric

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

    >具有 DRM_RDWR 标志的 ioctl DRM_IOCTL_PRIME_Handle_TO_FD 被 DRM (内核)驱动程序拒绝。 您能找到我发送给您的前几个库的位置和情况。  然后我们可以从中进行选择。

    您希望我做什么不是很清楚。 我理解、有几个问题:您希望我在原始工作库或 sgxlib.tar 中找到该调用。 我可以在它们上运行 strace 或使用 gdb 跟踪它、并在调用时执行完整的堆栈转储。

    我随函附上了您发送的第一个 sgxlib.tar 中的完整 strace:

    以下是呼叫:  

    WRITE (3、"[11:49:37.634]已选择 EGL 配置"...、42)= 42
    WRITE (3、" RGBA 位:8 8 8 "...、34)= 34
    WRITE (3、"交换间隔 RAN "……、42)= 42
    ioctl (16、DRM_IOCTL_PRIME_Handle_TO_FD、0xbea80384)=-1 EINVAL (无效参数)
    getpid()= 2288
    gettid()= 2288

    因此、调用恰好在 gL_render_create_window_surface 中的 log_EGL_config_info 之后发生 -这是我们的旧朋友 eglCreateWindowSurface。 它位于 sgxlibraries 中。

    假设 gdb 跟踪方法更简单-您能否发送使用-g 编译的文件以更轻松地跟踪? 如果由于许可而无法做到这一点、您可以打开任何调试或添加日志消息吗?

    e2e.ti.com/.../egl_5F00_strace.2288.gz

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

    为了进行比较、这里是原始 SGX 库上的 strace -通过 DRM_IOCTL_PRIME handle_TO_FD 调用。

    e2e.ti.com/.../original_5F00_egl_5F00_strace.gz

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

    大家好、Bill:

    我的意思是、您是否可以跟踪 ioctl DRM_IOCTL_PRIME_Handle_TO_FD 处理的内核驱动程序代码、以找出由于标记 DRM_RDWR 而被拒绝的位置? 然后、我们需要跟踪与最后一个软件包 sgxlib2.tar.\中的 mmap 调用相关的内核驱动程序

    此致、

    Eric

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

    大家好、Bill:

    我能够重现与您在 PSDK 3.0.0.4版本中观察到的相同问题。 ioctl DRM_IOCTL_PRIME_Handle_TO_FD 的 DRM_RDWR 标志被拒绝 ,但 PVRSRVMapDmaBuf 调用不返回错误,并且 glReadPixels()将不受原始变通办法的支持。 此问题最有可能出现在 omapdrm 驱动程序上,该驱动程序已在较新版本中修复。 我将查找修复程序并评估是否可以使用一些简单的修补程序。

    您最好使用我之前发送的第一个 sgxlib.tar 升级到最新的 PSDK 版本。 如果必须使用内核4.4、则可以尝试使用 PSDK 3.3.0.4。

    此致、

    Eric

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

    谢谢 Eric、

      谢谢、我已经开始使用4.01.00.66 PSDK。 这似乎是事情的发展方向-希望它不会太痛苦。 我对 kernel/DTS 更改有了第一个 stab、现在尝试测试/引导。 当我获得一个可以让我进入提示的系统后、我将尝试 SGX 操作(在中添加所有其他内容之前)

    -Bill

     

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

    大家好、Bill:

    请找到适用于内核4.4.12 (PSDK 3.0.0.4)的简单补丁、该补丁将解决 DRM 权限问题。
    它应该可以与我之前发送给您的第一个 sgxlib.tar 配合使用。

    此致、

    Eric

    e2e.ti.com/.../drm_5F00_patch.tar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Eric:
      谢谢! 随附的补丁与第一个 sgxlib 相结合、现在允许 Weston 启动-因此我们正在取得进展! 我还在努力将系统迁移到最新的 PSDK、但在此过程中遇到了器件树问题(单独的线程)。 现在、我的 Deqp 结果如下:
    EGL
    测试运行总计:
     通过:     1006/3843 (26.2%)
     失败:     84/3843 (2.2%)
     不支持:2753/3843 (71.6%)
     警告   :0/38430.0%
    GLES2
    测试运行总计:
     通过:     7286/7782 (93.6%)
    失败:     446/7782 (5.7%)
    不支持:50/7782 (0.6%)
    警告   :0/7782 (0.0%)
      所以还没有完全通过测试,但是结果肯定比以前好得多-但是这是在修补的 degp 中运行的-我不得不注释一组测试,这样 degp 应用程序就会运行到完成(即测试导致 SIGSEGV 崩溃) -请参阅 GitHub 了解 MODS。 无论如何、我将查看是否可以删除这些内容、并查看更改是否修复了崩溃。
      此外、在使用 SGX 补丁的所有流程中、我希望提请注意、我必须修补 deqp 应用程序、甚至可以在一开始运行。 所有这些应用的初始化序列被 TI PSDK 中的2个问题破坏、这些问题在以下补丁(至 Weston)中得到解决:  
    0001-udev 座位限制 udev 枚举到 card0
    背景:
    系统中的 GPU 在/dev/dri 中显示为 cardX。所有低级图形应用程序都通过此代码来初始化 GPU
     (或非常接近的变量):udev 枚举_add_match_sysname (e、"card[0-9]*");
    在典型系统中、只有一个卡(/dev/dri/card0)、一切正常。
    但 AM5728上有2张卡:Card0和 Card1、但它们并不相同。  
    Card0是实际的 GPU,Card1是???  (表示渲染节点)不清楚使用此"卡"的是什么而不是显示 GPU。
    不幸的是,调用 udev 枚举_add_match_sysname (e,"card[0-9]*");选择最高的卡(即 Card1),初始化失败。
    引用的补丁通过将其更改为:
    udev_enum_add_match_sysname (e、"card0");
    它起作用、但现在该补丁需要应用于执行 EGL 初始化的所有操作。 (Weston、DEQP、启蒙、X)  
    修补程序的合理性如下:
    对于嵌入式系统中的独立 GPU 和显示器件、我们
    可以让 modeset 节点和呈现节点由不同的驱动程序控制。
    udev 枚举很可能返回 DRM 设备
    与渲染节点相对应、作为主要 DRM 器件。   
    注:"明显的可能性"=100%!  
    这是有道理的、除非注意到有 DRI 渲染器件(/dev/dri/renderD128)、因此无需第二块"卡"
    最重要的一点。 ( 有关背景信息、请参阅2013年的 dvdhrm.wordpress.com/.../)如果需要的是呈现设备、则不应该是呈现设备  
    正在寻找 Cardx。 我会注意到我的机器上有一个/dev/dri/renderD128节点-那么无论如何什么是 Card1?
    注:删除 Card1或将其更改为呈现节点将允许任何新代码在未修补的情况下工作,并且因为 card0将是唯一的卡,即修补的卡  
    代码也将继续有效。 唯一的变化是、任何显式查找呈现节点的代码都需要查找 Card1、而不是呈现 xxx。  
    0002-Weston1.9.0-allow-vised_id-TO-0.patch  
    这个也是所有 EGL 的杀手,我所能说的是没有道理的。 修补程序信息如下所示:
    来自 EGL API eglGetConfigAttrib (EGL_native_visual)的可视 ID 查询              
    是可选功能。 如果此功能为、则可视 ID 将设置为0                
    不支持。 因此、返回条件@函数 match_config_TO_visual ()            
    应为(id =visual id || id =0)而不是(id =visual id)
    因此、该函数应返回"本机"的可视 ID、以便配置可以选择该 ID
    匹配本机硬件、即"最佳"匹配功能。 然后使用可视 ID 从列表中进行选择
    可用配置(我的机器上有22个)。  
    补丁程序断言 EGL_native_visual ID 是"可选"、但我在规范中看不到任何支持该选项的内容。 它不是可选的、  
    它在 EGL 仪表中被打破。 如果库不支持 EGL_native_visual ID、则应返回 EGL_false、但它会通过  
    并返回0 -这不是有效的可视 ID -因此修补程序只是"匹配"列表中的第一个配置。 这很有效、但显然是一种攻击:  
    为什么第一个最棒?如果第一个原因是为什么不能正确返回并避免黑客攻击其他人的初始代码。
    eglGetConfigAttrib 函数记录在以下位置: www.khronos.org/.../eglGetConfigAttrib.xhtml
    与上面一样、修复 eglGetConfigAttrib (EGL_native_visual)以返回有效的可视 ID (即使它只是第一个配置的 ID)将不会  
    中断任何现有的修补代码(因为 visual id 将不再为0),但将不再需要将来的修补程序。