Files
sablink-distro/sys-apps/gpu-detector/files/gpu-configuration
T
lxnay 67d2cdcf04 remove r9200 fix
git-svn-id: http://svn.sabayonlinux.org/overlay@339 d7aec97c-591d-0410-af39-a8856400b30a
2006-11-17 00:27:38 +00:00

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