From 0b301ec03002d356ffb5ea1192ac6ef7374f02fc Mon Sep 17 00:00:00 2001 From: Thierry Vignaud Date: Tue, 15 Jun 2004 16:21:48 +0000 Subject: handle case where both ATI and NVIDIA GLX packages are installed (use new glibc's /etc/ld.so.conf.d/ and prevent loading NVIDIA's GLX module with ATI cards) --- perl-install/Xconfig/card.pm | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'perl-install/Xconfig') diff --git a/perl-install/Xconfig/card.pm b/perl-install/Xconfig/card.pm index 79c29b36b..50ca60a2d 100644 --- a/perl-install/Xconfig/card.pm +++ b/perl-install/Xconfig/card.pm @@ -111,13 +111,16 @@ sub to_raw_X { $raw_X->{xfree3}->set_load_module('glx-3.so', $card->{use_UTAH_GLX}); #- glx.so may clash with server version 4. - $raw_X->{xfree4}->set_load_module('glx', !$card->{DRI_GLX_SPECIAL}); #- glx for everyone, except proprietary nvidia + $raw_X->{xfree4}->set_load_module('glx', !$card->{DRI_GLX_SPECIAL} && $card->{Driver2} ne 'fglrx'); #- glx for everyone, except proprietary nvidia $raw_X->{xfree4}->set_load_module('dri', $card->{use_DRI_GLX} && !$card->{DRI_GLX_SPECIAL}); # This loads the NVIDIA GLX extension module. # IT IS IMPORTANT TO KEEP NAME AS FULL PATH TO libglx.so ELSE # IT WILL LOAD XFree86 glx module and the server will crash. $raw_X->{xfree4}->set_load_module('/usr/X11R6/lib/modules/extensions/libglx.so', $card->{DRI_GLX_SPECIAL}); + if ($card->{Driver2} eq 'fglrx') { + $raw_X->{xfree4}->set_load_module('/usr/X11R6/lib/modules/extensions/libglx.a', 1); + } $raw_X->{xfree4}->remove_Section('DRI'); $raw_X->{xfree4}->add_Section('DRI', { Mode => { val => '0666' } }) if $card->{use_DRI_GLX}; @@ -377,6 +380,16 @@ sub install_server { $card->{DRI_GLX_SPECIAL} = 1; $card->{Options_xfree4}{IgnoreEDID} = 1; } + my %driver_to_libgl_config = ( + nvidia => "/etc/ld.so.conf.d/.conf.nvidia", + fglrx => "/etc/ld.so.conf.d/.conf.ati", + ); + if (my $file = $driver_to_libgl_config{$card->{Driver2}}) { + if (-e $file) { + symlinkf($file, "/etc/ld.so.conf.d/GL.conf"); + system("/sbin/ldconfig") if $::isStandalone + } + } if ($card->{Driver2} eq 'fglrx' && -e "$::prefix/usr/X11R6/lib/modules/dri/fglrx_dri.so" && -e "$::prefix/usr/X11R6/lib/modules/drivers/fglrx_drv.o") { -- cgit v1.2.1