LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1039|回复: 4

Gentoo下用Multi-seat双显示输出+双K/M之后如何支持两种不同厂商OpenGL共存

[复制链接]
发表于 2009-12-14 06:52:55 | 显示全部楼层 |阅读模式
之前配置了一套Multi-seat环境,通过nvidia+ATI显卡实现双显示输出,现在为方便开发和测试opengl程序,希望两个厂商所提供的opengl环境可以并存。用eselect opengl set 1/2/3可以在xorg-x11、nvidia和ati之间切换,但同时只能激活一套配置。

目前在用自己想到的一种笨方法:xdm里面每个用户登录后chroot到独立的目录下(类似nfs root方式),此目录的内容都是通过mount --bind分别绑定至真正的系统root,只是/usr/lib/libGL.so等几个动态库以及/usr/include/GL/gl*.h和/usr/lib/opengl目录绑定至厂商特定opengl环境(模拟eselect的opengl环境切换动作)。这种方法缺点是比较丑陋,而且mount、df命令输出也不太干净(几十条mount入口),想请教一下做过这方面配置的同学有没有更简洁的方法?
 楼主| 发表于 2009-12-14 09:16:19 | 显示全部楼层
自己补充另外一种不用mount -bind的做法,最开始时用过一阵,但很多软件包需要特殊编译选项感觉比较麻烦,贴出来给大家做个参考:
两种显卡分别对应不同X11配置,将dri/glx等几个相关模块改名,nvidia的对应dri_nv,ati对应dri_ati,xorg.conf里面根据配置装载不同模块。
另外写一个脚本分别设置两套LD_LIBRARY_PATH,将/usr/lib/opengl/厂商opengl库目录放进去,使可执行程序优先使用对应的libGL.so。
编译需要opengl支持的软件包时加入gcc -I/usr/lib/opengl/厂商opengl头文件目录以及-L/usr/lib/opengl/厂商opengl库目录,这种方法弊端就是通过emerge安装的程序比较难处理,而且编出的程序会固定链接到/usr/lib/opengl下面的libGL.so,标准环境下(没有设置LD_LIBRARY_PATH)出错,而且程序不能带有suid位(还好这类opengl程序比较少)。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-17 17:21:31 | 显示全部楼层
顶起来,想知道大家有没有更简洁的方法?现有方法导致系统文件产生遮蔽问题,而且每次更新opengl库还要重新调整版本建立符号链接。
回复 支持 反对

使用道具 举报

发表于 2010-4-20 12:51:22 | 显示全部楼层
/usr/lib/xorg/modules/extensions/libglx.so   可以用 LD_LIBRARY_PATH 分别指定吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-6-25 22:16:40 | 显示全部楼层
最近没做3D开发,很久没看老贴了。
印象中X11的模块不能用LD_LIBRARY_PATH分别装载,我的方法是改名,比如两个厂商文件分别改成glx1、glx2两个模块,在各自配置段中指定加载。
这种方法即便可以正常运行也容易出现奇怪冲突导致死机,试过的几种双卡组合都多少存在这种问题。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表