我目前正在将一个开源OpenGL游戏移植到OpenGL ES。目标设备运行Linux,具有相对较弱的CPU (ARM11系列,使用FPU)。它有一个OpenGL ES加速器,但没有一个OpenGL加速器。
最初,我希望运行现有的OpenGL-GLX-X11实现,在另一台Linux机器上使用加速的OpenGL实例--例如,带有Radeon X1650 Pro的Athlon X2。这将有助于验证是否存在需要在较高级别上解决的严重CPU瓶颈。
我已经成功地设置了X11连接的SSH转发。glxinfo和glxgears程序运行,但后者的性能非常差(8fps),与本地运行的glxgears (60 8fps与vsync)相比。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。什么是强制我想要发生的事情的最好方法?
发布于 2012-07-04 20:04:32
glxinfo和glxgears程序运行,但后者的性能非常差(8fps),与本地运行的glxgears (60 8fps与vsync)相比。glxinfo报告指出,直接渲染正在使用,这告诉我,本地(到ARM设备)软件渲染器正在使用。
我对此有点困惑。如果您在远程显示上看到OpenGL输出,那么这将意味着传输图片而不是GLX命令。然而,这将意味着,主机设备上的libGL.so对于其输出来说是X11感知的,但不会使用GLX。
请您确定哪个包在您的ARM设备上贡献了libGL.so。我建议您安装一个单独的libGL.so,其中只包含GLX命令生成和LD_PRELOAD命令。
可以将Mesa3D配置为构建GLX命令流生成器库。
https://stackoverflow.com/questions/11334807
复制相似问题