2

我目前正在将开源 OpenGL 游戏移植到 OpenGL ES。目标设备运行 Linux,CPU 相对较弱(ARM11 系列,带 FPU)。它有一个 OpenGL ES 加速器,但没有一个 OpenGL 加速器。

最初,我希望使用另一台 Linux 机器上的加速 OpenGL 实例来运行现有的 OpenGL-GLX-X11 实现 - 例如,带有 Radeon X1650 Pro 的 Athlon X2。这将有助于验证是否存在需要从高级别解决的严重 CPU 瓶颈。

我设法设置了 X11 连接的 SSH 转发。glxinfo 和 glxgears 程序运行,但与本地运行的 glxgears(60fps 和 vsync)相比,后者的性能非常差(8fps)。glxinfo 报告指出正在使用直接渲染,这告诉我正在使用本地(到 ARM 设备)软件渲染器。

我想要发生的是将 OpenGL 命令发送到 Athlon X2 机器并使用 Radeon 加速。我相信我需要为此打开间接渲染。但是,设置 LIBGL_ALWAYS_INDIRECT=1 不会改变任何东西。例如:

arm$ LIBGL_ALWAYS_INDIRECT=1 glxinfo | fgrep rendering
direct rendering: Yes
arm$

ARM 设备正在运行 Gentoo Linux。强迫我想要发生的事情的最好方法是什么?

4

1 回答 1

1

glxinfo 和 glxgears 程序运行,但与本地运行的 glxgears(60fps 和 vsync)相比,后者的性能非常差(8fps)。glxinfo 报告指出正在使用直接渲染,这告诉我正在使用本地(到 ARM 设备)软件渲染器。

我对此有点困惑。如果您在远程显示器上看到 OpenGL 输出,则这意味着传输的是图片而不是 GLX 命令。然而,这意味着主机设备上的 libGL.so 的输出是 X11 感知的,但不会使用 GLX。

您能否确定哪个软件包在您的 ARM 设备上贡献了 libGL.so。我建议你安装一个单独的 libGL.so,只生成 GLX 命令和 LD_PRELOAD。

Mesa3D 可以配置为构建 GLX 命令流生成器库。

于 2012-07-04T20:04:32.430 回答