67d2cdcf04
git-svn-id: http://svn.sabayonlinux.org/overlay@339 d7aec97c-591d-0410-af39-a8856400b30a
292 lines
8.4 KiB
Bash
Executable File
292 lines
8.4 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
XORGFILE="/etc/X11/xorg.conf"
|
|
|
|
remove_proprietary_opengl() {
|
|
# Fix for DRI accel
|
|
mount -t tmpfs none /usr/lib/opengl/ati &> /dev/null
|
|
mount -t tmpfs none /usr/lib/opengl/nvidia &> /dev/null
|
|
# FIX For fscking ATI env.d file
|
|
rm -f /etc/env.d/*ati &> /dev/null
|
|
sed -i '/LIBGL_DRIVERS_PATH s/.*//' /etc/profile.env
|
|
nice -20 source /etc/profile &> /dev/null
|
|
nice -20 eselect opengl set --dst-prefix=/etc/opengl xorg-x11
|
|
}
|
|
|
|
change_xorg_driver() {
|
|
sed -i '/do not remove vesa/ s/".*"/"'$1'"/' $XORGFILE
|
|
}
|
|
|
|
enable_dri() {
|
|
sed -i '/"dri"/ s/#//' $XORGFILE
|
|
}
|
|
|
|
NEOMAGIC=$(lspci | grep ' VGA ' | grep -i 'neomagic')
|
|
MACH64=$(lspci | grep ' VGA ' | grep -i 'mach64' )
|
|
SAVAGE=$(lspci | grep ' VGA ' | grep -i 'savage' )
|
|
VIRGE=$(lspci | grep ' VGA ' | grep -i 'Virge' )
|
|
CYRIX=$(lspci | grep ' VGA ' | grep -i 'cyrix' )
|
|
I128=$(lspci | grep ' VGA ' | grep -i 'i128' )
|
|
I740=$(lspci | grep ' VGA ' | grep -iE ' intel.*74' )
|
|
RENDITION=$(lspci | grep ' VGA ' | grep -i 'rendition' )
|
|
SILICONMOTION=$(lspci | grep ' VGA ' | grep -iE ' silicon.*motion' )
|
|
TSENG=$(lspci | grep ' VGA ' | grep -i 'tseng')
|
|
IGRANTSDALE=$(lspci | grep ' VGA ' | grep -i "Intel Corp.*915.*")
|
|
INTEL=$(lspci | grep ' VGA ' | grep -i "Intel Corp.*")
|
|
I845=$(lspci | grep ' VGA ' | grep -i "Intel Corp.*845.*")
|
|
I855=$(lspci | grep ' VGA ' | grep -i "Intel Corp.*855.*")
|
|
V3DFX=$(lspci | grep ' VGA ' | grep -i "3Dfx Interactive" )
|
|
I915=$(lspci | grep ' VGA ' | grep -i "Intel Corp.*915.*")
|
|
I945=$(lspci | grep ' VGA ' |grep -i "Intel Corp.*945.*" || lspci | grep ' VGA ' | grep -i "Intel Corp.*940.*" )
|
|
TRIDENT=$(lspci | grep ' VGA ' | grep Trident)
|
|
NVIDIA=$(lspci | grep ' VGA ' | grep -i "nVidia")
|
|
NVIDIATNT=$(lspci | grep ' VGA ' | grep -i "RIVA TNT")
|
|
ATI=$(lspci | grep ' VGA ' | grep ATI)
|
|
R7000=$(lspci | grep ' VGA ' | grep R100 || lspci | grep ' VGA ' | grep RV100 )
|
|
R7200=$(lspci | grep ' VGA ' | grep -i "Radeon R100")
|
|
R7500=$(lspci | grep ' VGA ' | grep -i "Radeon RV200")
|
|
R2XX=$(lspci | grep ' VGA ' | grep -i "ATi Tech" |grep -i "RV2.*" || lspci | grep ' VGA ' | grep -i "ATi Tech" |grep -i "R2.*")
|
|
RX700=$(lspci | grep ' VGA ' | grep -i "Radeon Mobility X700")
|
|
R9600=$(lspci | grep ' VGA ' | grep -i 'ATI Technologies .* RV350' )
|
|
RAGE128=$(lspci | grep ' VGA ' | grep -i "Rage 128")
|
|
SIS=$(lspci | grep ' VGA ' | grep -i "SiS")
|
|
VMWARE=$(lspci | grep ' VGA ' | grep VMWare || lspci | grep ' VGA ' | grep VMware )
|
|
VIRGE=$(lspci | grep ' VGA ' | grep -i "S3.*virge")
|
|
VIA=$(lspci | grep ' VGA ' | grep -i "VIA Tech.*")
|
|
MATROX=$(lspci | grep ' VGA ' | grep -i Matrox)
|
|
CIRRUS=$(lspci | grep ' VGA ' | grep -i Cirrus)
|
|
NOPROP=$(cat /proc/cmdline | grep "noproprietary")
|
|
LEGACY=$(cat /proc/cmdline | grep "legacy")
|
|
|
|
if [ -z "$ATI" ]; then
|
|
# FIX For fscking ATI env.d file
|
|
rm -f /etc/env.d/*ati &> /dev/null
|
|
env-update && source /etc/profile &> /dev/null
|
|
fi
|
|
|
|
current_arch=$(uname -m)
|
|
if [ "$current_arch" == "x86_64" ]; then
|
|
ld_arch="elf_x86_64"
|
|
elif [ "$current_arch" == "i686" ]; then
|
|
ld_arch="elf_i386"
|
|
fi
|
|
|
|
# Check for xdriver=
|
|
is_there_xdriver=$(cat /proc/cmdline | grep "xdriver=")
|
|
if [ -n "$is_there_xdriver" ]; then
|
|
for word in `cat /proc/cmdline`; do
|
|
case $word in
|
|
xdriver=*)
|
|
xdriver=$(echo $word | cut -d= -f 2)
|
|
change_xorg_driver $xdriver
|
|
if [ -z "$NVIDIA" ]; then
|
|
if [ -n "$R7000" ] || [ -n "$R7200" ] || [ -z "$R7500" ] || [ -n "$R2XX" ] || [ -n "$INTEL" ] || [ -n "$VIA" ] || [ -n "$SIS" ] || [ -n "$MATROX" ]; then
|
|
remove_proprietary_opengl
|
|
fi
|
|
enable_dri
|
|
fi
|
|
;;
|
|
esac
|
|
done
|
|
exit 0
|
|
fi
|
|
|
|
|
|
|
|
if [ -n "$NVIDIA" ]; then
|
|
|
|
if [ -n "$NOPROP" ] || [ -n "$LEGACY" ]; then
|
|
|
|
change_xorg_driver nv
|
|
echo -e "\t Display Driver: NVIDIA (OpenSource)"
|
|
|
|
else
|
|
|
|
modprobe nvidia &> /dev/null
|
|
if [ "$?" != "0" ]; then
|
|
nv_mod_failed="yes"
|
|
else
|
|
nv_mod_failed="no"
|
|
fi
|
|
# Check for errors
|
|
if [ "$nv_mod_failed" == "yes" ]; then
|
|
# ok, maybe unsupported
|
|
# check if we are running in the live mode
|
|
is_live=$(cat /proc/cmdline | grep cdroot)
|
|
if [ -n "$is_live" ]; then
|
|
# yes, so, check for the legacy drivers
|
|
if [ -e "/lib/modules/nvidia/legacy" ]; then
|
|
# prepare legacy drivers
|
|
if [ -e "/usr/bin/qlist" ]; then
|
|
qlist -e nvidia-drivers | xargs rm -rf
|
|
rm -rf /var/db/pkg/x11-drivers/nvidia-drivers-*
|
|
sed -i '/.*nvidia-drivers.*/d' /var/lib/portage/world
|
|
else
|
|
emerge -C nvidia-drivers &> /dev/null
|
|
fi
|
|
# remove old nvidia.ko
|
|
rm /lib/modules/$(uname -r)/video/nvidia.ko -f
|
|
# copy over
|
|
cp /lib/nvidia/legacy/* / -Rp &> /dev/null
|
|
# create nvidia.ko
|
|
ld -m $ld_arch -r -o /lib/modules/$(uname -r)/video/nvidia.ko /lib/nvidia/legacy/nvidia.o /lib/nvidia/legacy/nvidia.mod.o
|
|
# set nvidia
|
|
nice -20 source /etc/profile
|
|
nice -20 eselect opengl set --dst-prefix=/etc/opengl nvidia &> /dev/null
|
|
# hope that will work
|
|
touch /lib/nvidia/legacy/running
|
|
else
|
|
# revert to nv
|
|
change_xorg_driver nv
|
|
echo -e "\t Display Driver: NVIDIA (OpenSource) - Legacy drivers cannot be deployed"
|
|
fi
|
|
else
|
|
# revert to nv
|
|
change_xorg_driver nv
|
|
echo -e "\t Display Driver: NVIDIA (OpenSource) - Proprietary drivers can't be loaded - unsupported video card?"
|
|
fi
|
|
else
|
|
# ok, configure the standard nvidia driver
|
|
change_xorg_driver nvidia
|
|
echo -e "\t Display Driver: NVIDIA (Proprietary)"
|
|
fi
|
|
|
|
fi
|
|
|
|
elif [ -n "$RAGE128" ]; then
|
|
|
|
change_xorg_driver r128
|
|
enable_dri
|
|
remove_proprietary_opengl
|
|
echo -e "\t Display Driver: ATI Rage 128"
|
|
|
|
elif [ -n "$V3DFX" ]; then
|
|
|
|
change_xorg_driver tdfx
|
|
enable_dri
|
|
remove_proprietary_opengl
|
|
sed -i '/DefaultDepth/ s/24/16/' $XORGFILE
|
|
echo -e "\t Display Driver: 3Dfx Video Card"
|
|
|
|
elif [ -n "$I855" ] || [ -n "$I915" ] || [ -n "$I945" ] || [ -n "$I845" ] || [ -n "$IGRANTSDALE" ]; then
|
|
|
|
change_xorg_driver i810
|
|
enable_dri
|
|
remove_proprietary_opengl
|
|
|
|
echo -e "\t Display Driver: Intel Video Card"
|
|
|
|
elif [ -n "$ATI" ] || [ -n "$RX700" ] || [ -n "$R9600" ]; then
|
|
|
|
if [ -n "$NOPROP" ] || [ -n "$LEGACY" ]; then
|
|
|
|
change_xorg_driver radeon
|
|
enable_dri
|
|
remove_proprietary_opengl
|
|
sed -i '/ColorTiling/ s/#//' $XORGFILE
|
|
sed -i '/EnablePageFlip/ s/#//' $XORGFILE
|
|
echo -e "\t Display Driver: ATI (OpenSource)"
|
|
|
|
else
|
|
|
|
if [ -z "$R7000" ] && [ -z "$R7200" ] && [ -z "$R7500" ] && [ -z "$R2XX" ]; then
|
|
|
|
modprobe fglrx &> /dev/null
|
|
lsmod_ati=$(lsmod | grep fglrx)
|
|
if [ -n "$lsmod_ati" ];then
|
|
|
|
change_xorg_driver fglrx
|
|
enable_dri
|
|
echo -e "\t Display Driver: ATI (Proprietary)"
|
|
|
|
else
|
|
|
|
change_xorg_driver radeon
|
|
enable_dri
|
|
remove_proprietary_opengl
|
|
sed -i '/ColorTiling/ s/#//' /etc/X11/xorg.conf
|
|
sed -i '/EnablePageFlip/ s/#//' /etc/X11/xorg.conf
|
|
echo -e "\t Display Driver: ATI (OpenSource) - Proprietary drivers can't be loaded"
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
change_xorg_driver radeon
|
|
enable_dri
|
|
remove_proprietary_opengl
|
|
echo -e "\t Display Driver: ATI (OpenSource)"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
elif [ -n "$SIS" ]; then
|
|
|
|
change_xorg_driver sis
|
|
enable_dri
|
|
remove_proprietary_opengl
|
|
echo -e "\t Display Driver: SiS"
|
|
|
|
|
|
elif [ -n "$VMWARE" ]; then
|
|
|
|
change_xorg_driver vmware
|
|
enable_dri
|
|
|
|
# Uncomment "Modes"
|
|
sed -i '/Modes/ s/#//g' /etc/X11/xorg.conf
|
|
sed -i '/HorizSync/ s/#//g' /etc/X11/xorg.conf
|
|
sed -i '/VertRefresh/ s/#//g' /etc/X11/xorg.conf
|
|
|
|
echo -e "\t Display Driver: VMWARE"
|
|
|
|
elif [ -n "$SAVAGE" ]; then
|
|
|
|
change_xorg_driver savage
|
|
enable_dri
|
|
remove_proprietary_opengl
|
|
echo -e "\t Display Driver: Savage"
|
|
|
|
elif [ -n "$VIRGE" ]; then
|
|
|
|
change_xorg_driver s3virge
|
|
enable_dri
|
|
remove_proprietary_opengl
|
|
echo -e "\t Display Driver: S3 Virge"
|
|
|
|
elif [ -n "$MATROX" ]; then
|
|
|
|
change_xorg_driver mga
|
|
enable_dri
|
|
remove_proprietary_opengl
|
|
echo -e "\t Display Driver: MATROX"
|
|
|
|
elif [ -n "$VIA" ]; then
|
|
|
|
change_xorg_driver via
|
|
enable_dri
|
|
remove_proprietary_opengl
|
|
echo -e "\t Display Driver: VIA Technologies"
|
|
|
|
elif [ -n "$CIRRUS" ]; then
|
|
|
|
change_xorg_driver cirrus
|
|
#enable_dri
|
|
|
|
echo -e "\t Display Driver: Cirrus Logic"
|
|
|
|
elif [ -n "$TRIDENT" ]; then
|
|
|
|
change_xorg_driver trident
|
|
#enable_dri
|
|
|
|
echo -e "\t Display Driver: Cirrus Logic"
|
|
|
|
|
|
else
|
|
|
|
echo -e "\t Display Driver: VESA (no supported card detected)"
|
|
|
|
fi
|