【原创】ati-drivers-8.27.10.ebuild 率先支持 X.org 7.1 已进portage
时间:2006-08-02
来源:互联网
怀疑以前官方的不能正常安装在 xorg 7.0 上 , 此 ebuild 修正此点.
如 midx 所说, ATIer这回可以微笑一下
ATI 早于 Nvidia 推出了支持 X.org 7.1 的驱动程序.
下面有 ebuild , 在 xorg 7.0 和 7.1 , gcc-4.1.1 , kernel-2.6.16 下编译,安装,运行通过.
最后是打包好的.
注意:
1. 使用之前
下载 ati-driver-installer-8.27.10-x86.run 到 /usr/portage/distfiles/
touch /usr/portage/distfiles/ati-driver-installer-8.27.10-x86_64.run 免得下载
用 64 位驱动的反过来
最好重新 digest
2. xorg-server-1.1.x 仍然 block ati-drivers
解决方法 1. 先卸载旧版 ati-drivers , 安装 xorg-7.1 , 再装新的驱动, 因为要 --nodeps, 装之前先满足依赖, 一般 ati-drivers 需要 acpid
emerge -C ati-drivers emerge xorg-server xorg-x11 emerge ati-drivers -pv emerge ati-drivers --nodeps
$ diff /usr/portage/x11-base/xorg-server/xorg-server-1.1.1.ebuild /usr/local/portage-xgl-own/x11-base/xorg-server/xorg-server-1.1.1.ebuild 146c146 < !x11-drivers/ati-drivers" --- > !<x11-drivers/ati-drivers-8.27.4"
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/x11-drivers/ati-drivers/ati-drivers-8.26.18-r1.ebuild,v 1.2 2006/07/09 17:24:02 lu_zero Exp $
IUSE="acpi doc opengl"
inherit eutils rpm multilib linux-mod linux-info toolchain-funcs
DESCRIPTION="Ati precompiled drivers for r350, r300, r250 and r200 chipsets"
HOMEPAGE="http://www.ati.com"
SRC_URI="x86? ( mirror://gentoo/ati-driver-installer-${PV}-x86.run )
amd64? ( mirror://gentoo/ati-driver-installer-${PV}-x86_64.run )"
LICENSE="ATI"
KEYWORDS="-* ~amd64 ~x86"
RDEPEND="|| ( x11-base/xorg-server virtual/x11 )
|| ( x11-apps/xauth virtual/x11 )
!>=x11-base/xorg-server-1.0.99
app-admin/eselect-opengl
|| ( sys-libs/libstdc++-v3 =sys-devel/gcc-3.3* )
acpi? ( sys-power/acpid )"
DEPEND=">=virtual/linux-sources-2.4
${RDEPEND}"
PROVIDE="virtual/opengl"
ATIBIN="${D}/opt/ati/bin"
RESTRICT="nostrip multilib-pkg-force stricter"
MODULE_NAMES="fglrx(video:${WORKDIR}/common/lib/modules/fglrx/build_mod)"
QA_EXECSTACK_x86="usr/lib/xorg/modules/dri/fglrx_dri.so"
QA_EXECSTACK_amd64="usr/lib64/xorg/modules/dri/fglrx_dri.so usr/lib32/xorg/modules/dri/fglrx_dri.so"
QA_TEXTREL_x86="usr/lib/xorg/modules/dri/fglrx_dri.so usr/lib/opengl/ati/lib/libGL.so.1.2"
QA_TEXTREL_amd64="usr/lib64/xorg/modules/dri/fglrx_dri.so usr/lib32/opengl/ati/lib/libGL.so.1.2 usr/lib32/xorg/modules/dri/fglrx_dri.so usr/lib32/xorg/modules/dri/atiogl_a_dri.so"
choose_driver_paths() {
ARCH_DIR="${WORKDIR}/arch"
COMMON_DIR="${WORKDIR}/common"
#new modular X paths, 0 is a workaround.
if has_version "x11-base/xorg-server"; then
# so we are using >= X.org 7.0
if [ "$(get_version_component_range 2 ${X11_IMPLEM_V})" = 0 ]
then
BASE_DIR="${WORKDIR}/x690"
xlibdir="xorg"
elif [ "$(get_version_component_range 2 ${X11_IMPLEM_V})" = 1 ]
then
BASE_DIR="${WORKDIR}/x710"
xlibdir="xorg"
fi
else
BASE_DIR="${WORKDIR}/x$(get_version_component_range 1 ${X11_IMPLEM_V})"
xlibdir=""
# Determine if we are facing X.org 6.8.99 aka 6.9
if [ "$(get_version_component_range 1 ${X11_IMPLEM_V})" = 6 ] &&
[ "$(get_version_component_range 2 ${X11_IMPLEM_V})" = 8 ] &&
[ "$(get_version_component_range 3 ${X11_IMPLEM_V})" = 99 ]
then
BASE_DIR="${BASE_DIR}90"
else
BASE_DIR="${BASE_DIR}$(get_version_component_range 2 ${X11_IMPLEM_V})0"
fi
fi
if use amd64 ; then
BASE_DIR="${BASE_DIR}_64a"
ARCH_DIR="${ARCH_DIR}/x86_64"
else
ARCH_DIR="${ARCH_DIR}/x86"
fi
}
pkg_setup(){
#check kernel and sets up KV_OBJ
linux-mod_pkg_setup
local agp
ebegin "Checking for MTRR support enabled"
linux_chkconfig_present MTRR
eend $?
if [[ $? -ne 0 ]] ; then
ewarn "You don't have MTRR support enabled, the direct rendering"
ewarn "will not work."
fi
ebegin "Checking for AGP support enabled"
linux_chkconfig_present AGP
eend $?
if [[ $? -ne 0 ]] ; then
ebegin "Checking for PCI Express support enabled"
linux_chkconfig_present PCIEPORTBUS
eend $?
if [[ $? -ne 0 ]] ; then
ewarn "If you don't have either AGP or PCI Express support enabled, direct rendering"
ewarn "could work only using the internal support."
fi
fi
ebegin "Checking for DRM support disabled"
! linux_chkconfig_builtin DRM
eend $?
if [[ $? -ne 0 ]] ; then
ewarn "You have DRM support enabled builtin, the direct rendering"
ewarn "will not work."
fi
# Set up X11 implementation
if has_version "x11-base/xorg-server"; then
X11_IMPLEM=xorg-x11
X11_IMPLEM_V="$(best_version x11-base/xorg-x11)"
X11_IMPLEM_V="${X11_IMPLEM_V/${X11_IMPLEM}-/}"
X11_IMPLEM_V="${X11_IMPLEM_V##*\/}"
elif has_version "<x11-base/xorg-x11-6.8.99"; then
X11_IMPLEM=xorg-x11
X11_IMPLEM_V="$(best_version x11-base/xorg-x11)"
X11_IMPLEM_V="${X11_IMPLEM_V/${X11_IMPLEM}-/}"
X11_IMPLEM_V="${X11_IMPLEM_V##*\/}"
else
X11_IMPLEM_P="$(best_version virtual/x11)"
X11_IMPLEM="${X11_IMPLEM_P%-[0-9]*}"
X11_IMPLEM="${X11_IMPLEM##*\/}"
X11_IMPLEM_V="${X11_IMPLEM_P/${X11_IMPLEM}-/}"
X11_IMPLEM_V="${X11_IMPLEM_V##*\/}"
fi
einfo "X11 implementation is ${X11_IMPLEM}"
einfo "X11 version is ${X11_IMPLEM_V}"
choose_driver_paths
}
src_unpack() {
local OLDBIN="/usr/X11R6/bin"
ebegin "Unpacking Ati drivers"
sh ${DISTDIR}/${A} --extract ${WORKDIR} &> /dev/null
eend $? || die "unpack failed"
rm -rf ${ARCH_DIR}/usr/X11R6/bin/{fgl_glxgears,fireglcontrolpanel}
cd ${WORKDIR}/common/lib/modules/fglrx/build_mod
#if kernel_is ge 2 6 16; then
# epatch ${FILESDIR}/${PN}-8.22.5-intermodule.patch
# epatch ${FILESDIR}/${PN}-8.23.7-noiommu.patch
# epatch ${FILESDIR}/${PN}-8.23.7-gcc41.patch
#fi
if use acpi
then
sed -i \
-e "s/\/var\/lib\/xdm\/authdir/\/etc\/X11\/xdm\/authdir/" \
-e "s/\/var\/lib\/gdm/\/var\/gdm/" \
-e "s/#ffff#/#ffff##:.*MIT-MAGIC-COOKIE/" \
"${WORKDIR}/common/etc/ati/authatieventsd.sh" \
|| die "sed failed."
fi
}
src_compile() {
einfo "Building the DRM module..."
cd ${WORKDIR}/common/lib/modules/fglrx/build_mod
ln -s \
${ARCH_DIR}/lib/modules/fglrx/build_mod/libfglrx_ip.a.GCC$(gcc-major-version) \
|| die "cannot find precompiled core"
if kernel_is 2 6
then
set_arch_to_kernel
addwrite "/usr/src/${FK}"
cp 2.6.x/Makefile .
export _POSIX2_VERSION="199209"
if use_m ;
then
make -C ${KV_DIR} M="`pwd`" GCC_VER_MAJ=$(gcc-major-version) \
modules || ewarn "DRM module not built"
else
make -C ${KV_DIR} SUBDIRS="`pwd`" GCC_VER_MAJ=$(gcc-major-version) \
modules || ewarn "DRM module not built"
fi
set_arch_to_portage
else
export _POSIX2_VERSION="199209"
# That is the dirty way to avoid the id -u check
sed -e 's:`id -u`:0:' \
-e "s:\`uname -r\`:${KV_FULL}:" \
-i make.sh
chmod +x make.sh
./make.sh || ewarn "DRM module not built"
fi
}
pkg_preinst() {
# Clean the dynamic libGL stuff's home to ensure
# we don't have stale libs floating around ...
if [ -d "${ROOT}/usr/lib/opengl/ati" ]
then
rm -rf ${ROOT}/usr/lib/opengl/ati/*
fi
}
src_install() {
local ATI_LIBGL_PATH=""
cd ${WORKDIR}/common/lib/modules/fglrx/build_mod
linux-mod_src_install
cd ${WORKDIR}
local native_dir
use x86 && native_dir="lib"
use amd64 && native_dir="lib64"
# Install the libs
# MULTILIB-CLEANUP: Fix this when FEATURES=multilib-pkg is in portage
local MLTEST=$(type dyn_unpack)
if [ "${MLTEST/set_abi/}" = "${MLTEST}" ] && has_multilib_profile; then
local OABI=${ABI}
for ABI in $(get_install_abis); do
src_install-libs
done
ABI=${OABI}
unset OABI
elif has_multilib_profile; then
src_install-libs
elif use amd64; then
src_install-libs lib $(get_multilibdir)
src_install-libs lib64 $(get_libdir)
else
src_install-libs
fi &> /dev/null
#apps, man pages, and conf files
exeinto /opt/ati/bin
doexe ${ARCH_DIR}/usr/X11R6/bin/*
if use acpi
then
exeinto /opt/ati/sbin
doexe ${ARCH_DIR}/usr/sbin/*
insinto /opt/ati/man/man8
doins common/usr/share/man/man8/*
doinitd ${FILESDIR}/atieventsd.rc6 atieventsd
dodir /etc/conf.d
echo 'ATIEVENTSDOPTS=""' > ${D}/etc/conf.d/atieventsd
fi
#ati custom stuff
insinto /usr
doins -r ${WORKDIR}/common/usr/include
# doc's
if use doc; then
dodir /usr/share/doc/fglrx
cp -pPR common/usr/share/doc/fglrx/* \
${D}/usr/share/doc/fglrx
fi
#env.d entry
cp ${FILESDIR}/09ati ${T}/
if use acpi
then
local ATIETC="${WORKDIR}/common/usr/share/doc/fglrx/examples/etc/acpi"
exeinto /etc/acpi
doexe ${ATIETC}/ati-powermode.sh
insinto /etc/acpi/events
doins ${ATIETC}/events/a-ac-aticonfig
doins ${ATIETC}/events/a-lid-aticonfig
fi
#Work around hardcoded path in 32bit libGL.so on amd64, bug 101539
if has_multilib_profile && [ $(get_abi_LIBDIR x86) = "lib32" ] ; then
ATI_LIBGL_PATH="/usr/lib/dri:/usr/$(get_libdir)/dri:/usr/lib32/${xlibdir}/modules/dri/:/usr/$(get_libdir)/${xlibdir}/modules/dri"
fi
cat >>${T}/09ati <<EOF
LIBGL_DRIVERS_PATH="\$LIBGL_DRIVERS_PATH:$ATI_LIBGL_PATH"
EOF
doenvd ${T}/09ati
}
src_install-libs() {
local pkglibdir=lib
local inslibdir="$(get_libdir)/${xlibdir}"
ATI_LIBGL_PATH="${ATI_LIBGL_PATH}:/usr/$(get_libdir)/${xlibdir}/modules/dri"
if [ ${#} -eq 2 ]; then
pkglibdir=${1}
inslibdir=${2}
elif has_multilib_profile && [ "${ABI}" == "amd64" ]; then
pkglibdir=lib64
fi
einfo "${pkglibdir} -> ${inslibdir}"
local ATI_ROOT="/usr/$(get_libdir)/opengl/ati"
# The GLX libraries
exeinto ${ATI_ROOT}/lib
doexe ${ARCH_DIR}/usr/X11R6/${pkglibdir}/libGL.so.1.2
dosym libGL.so.1.2 ${ATI_ROOT}/lib/libGL.so.1
dosym libGL.so.1.2 ${ATI_ROOT}/lib/libGL.so
# Don't do this... see bug #47598
#dosym libGL.so.1.2 ${ATI_ROOT}/lib/libMesaGL.so
# same as the xorg implementation
dosym ../${X11_IMPLEM}/extensions ${ATI_ROOT}/extensions
#Workaround
if use opengl ; then
sed -e "s:libdir=.*:libdir=${ATI_ROOT}/lib:" \
/usr/$(get_libdir)/opengl/${X11_IMPLEM}/lib/libGL.la \
> $D/${ATI_ROOT}/lib/libGL.la
dosym ../${X11_IMPLEM}/include ${ATI_ROOT}/include
fi
# X and DRI driver
if has_version "<x11-base/xorg-x11-6.8.0-r4"
then
local X11_DIR="/usr/X11R6/"
else
local X11_DIR="/usr/"
fi
local X11_LIB_DIR="${X11_DIR}${inslibdir}"
exeinto ${X11_LIB_DIR}/modules/drivers
# In X.org 6.8.99 / 6.9 this is a .so
doexe ${BASE_DIR}/usr/X11R6/${pkglibdir}/modules/drivers/fglrx_drv.*o
exeinto ${X11_LIB_DIR}/modules/dri
doexe ${ARCH_DIR}/usr/X11R6/${pkglibdir}/modules/dri/fglrx_dri.so
doexe ${ARCH_DIR}/usr/X11R6/${pkglibdir}/modules/dri/atiogl_a_dri.so
exeinto ${X11_LIB_DIR}/modules/linux
# In X.org 6.8.99 / 6.9 this is a .so
if has_version ">=x11-base/xorg-x11-6.8.99" || \
has_version "x11-base/xorg-server"
then
doexe ${BASE_DIR}/usr/X11R6/${pkglibdir}/modules/linux/libfglrxdrm.so
else
doexe ${BASE_DIR}/usr/X11R6/${pkglibdir}/modules/linux/libfglrxdrm.a
fi
if has_version ">=x11-base/xorg-x11-6.8.99" || \
has_version "x11-base/xorg-server"
then
cp -pPR ${ARCH_DIR}/usr/X11R6/${pkglibdir}/lib{fglrx_*,aticonfig} \
${D}/usr/$(get_libdir)
else
cp -pPR ${ARCH_DIR}/usr/X11R6/${pkglibdir}/lib{fglrx_*,aticonfig.a} \
${D}/usr/$(get_libdir)
fi
#Not the best place
insinto ${X11_DIR}/include/X11/extensions
doins ${COMMON_DIR}/usr/X11R6/include/X11/extensions/fglrx_gamma.h
dodir /etc
cp -pPR ${COMMON_DIR}/etc/* ${D}/etc/
}
pkg_postinst() {
/usr/bin/eselect opengl set --use-old ati
echo
einfo "To switch to ATI OpenGL, run \"eselect opengl set ati\""
einfo "To change your xorg.conf you can use the bundled \"aticonfig\""
if use !opengl ; then
ewarn "You don't have the opengl useflag enabled, you won't be able to build"
ewarn "opengl applications nor use opengl driver features, if that isn't"
ewarn "the intended behaviour please add opengl to your useflag and issue"
ewarn "# emerge -Nu ati-drivers"
fi
echo
einfo "If you experience unexplained segmentation faults and kernel crashes"
einfo "with this driver and multi-threaded applications such as wine,"
einfo "set UseFastTLS in xorg.conf to either 0 or 1, but not 2."
# DRM module
linux-mod_pkg_postinst
}
pkg_postrm() {
linux-mod_pkg_postrm
/usr/bin/eselect opengl set --use-old xorg-x11
}
| ati-drivers.tar.gz (12.6 KB, 35 次查看) |
作者: VirusCamp 发布时间: 2006-08-02
作者: fakeid 发布时间: 2006-08-02
作者: 狱卒 发布时间: 2006-08-02
作者: 晨想 发布时间: 2006-08-02
glxgears得分才250多点,以前是2500多呀。没装这个驱动也有380左右。
可要说没有装成功呢,glxgears的画面明显非常顺畅,感觉上和以前的效果是一致的。用xorg 7.1里面的驱动,glxgears非常的卡。怎么回事呢?
作者: ifree 发布时间: 2006-08-02
作者: lucida 发布时间: 2006-08-02
|
作者: lucida
portage已经有了。。。
|
作者: VirusCamp 发布时间: 2006-08-02
作者: midx 发布时间: 2006-08-02
http://www.fsf.org/blogs/community/rms-ati-protest.html
作者: zhllg 发布时间: 2006-08-02
相反 NVIDIA 反应一向都挺快的(除了对XEN),RMS 应该没那么快就跑去折腾 NVIDIA的。嘿嘿
作者: 晨想 发布时间: 2006-08-03
作者: ifree 发布时间: 2006-08-03
作者: coolman_725 发布时间: 2006-08-03
$ glxgears 4926 frames in 5.0 seconds = 984.994 FPS 4751 frames in 5.0 seconds = 950.185 FPS $ fgl_glxgears Using GLX_SGIX_pbuffer 1917 frames in 5.0 seconds = 383.400 FPS 1963 frames in 5.0 seconds = 392.600 FPS
X300
作者: 食古不化 发布时间: 2006-08-03
|
作者: 食古不化
代码:
$ glxgears 4926 frames in 5.0 seconds = 984.994 FPS 4751 frames in 5.0 seconds = 950.185 FPS $ fgl_glxgears Using GLX_SGIX_pbuffer 1917 frames in 5.0 seconds = 383.400 FPS 1963 frames in 5.0 seconds = 392.600 FPS X300 |
不过我是64bit的
作者: 种草得草 发布时间: 2006-08-03
fgl_glxgears 620左右
作者: baryon 发布时间: 2006-08-03
唉,我插得上话的话题不多,太激动了,汗颜。
作者: baryon 发布时间: 2006-08-03
http://www.linuxsir.org/bbs/showthread.php?t=263057
表明, 用于 X.org 7.1 的 fglrx 驱动, 普遍出现问题,
在 fglrxinfo 和 glxinfo 显示驱动正常的情况下,
glxgears 成绩偏低, 但 fgl_glxgears 成绩正常.
甚至出现, fgl_glxgears 比 glxgears 快的情况:
yangtse@yangtse ~ $ fgl_glxgears Using GLX_SGIX_pbuffer 2390 frames in 5.0 seconds = 478.000 FPS yangtse@yangtse ~ $ glxgears 1258 frames in 5.0 seconds = 251.418 FPS
请提供如下问题答案
1. 是否升级 mesa ?
2. ati-drivers 安装完成后, 是否安装了 ati-drivers-extra ( fgl_glxgears ), mesa-progs ( glxgears ).
就是当前的 mesa 及 ati-drivers 是不是编译 glxgears 及 fgl_glxgears 时的.
如果不是请重新编译, 再看结果.
emerge ati-drivers-extra mesa-progs
作者: VirusCamp 发布时间: 2006-08-03
# eselect opengl list Available OpenGL implementations: [1] ati * [2] mesa-cvs [3] xorg-x11
作者: 食古不化 发布时间: 2006-08-04
fgl_glxgears比glxgears快的那样。
作者: ifree 发布时间: 2006-08-04
至少 dri , 3d 硬件驱动确实跑起来了.
再问, 有人用 新的 ati-drivers 和 xorg-server-1.1.1 跑 3d 软件, 比如游戏(Quake3? Doom3?), XGL 的吗?
这时游戏和软件跑的顺不顺? 如果顺, 就不管 glxgears 了.
ps , 我两天前在 bugzilla 上提交, 已被接受, 此 ebuild 已(即将?)进入官方, 不用从这下了.
作者: VirusCamp 发布时间: 2006-08-04
|
作者: VirusCamp
看来"fgl_glxgears比glxgears快"是 ati-drivers 和 xorg-server-1.1.1 mesa等的配合问题, 可能 ati 的人才能解决.
至少 dri , 3d 硬件驱动确实跑起来了. 再问, 有人用 新的 ati-drivers 和 xorg-server-1.1.1 跑 3d 软件, 比如游戏(Quake3? Doom3?), XGL 的吗? 这时游戏和软件跑的顺不顺? 如果顺, 就不管 glxgears 了. ps , 我两天前在 bugzilla 上提交, 已被接受, 此 ebuild 已(即将?)进入官方, 不用从这下了. |
请问什么叫“已(即将?)进入”?直接可以emerge 了而不用下载ebuilds了吗?
作者: sheep204 发布时间: 2006-08-05
|
作者: sheep204
请问什么叫“已(即将?)进入”?直接可以emerge 了而不用下载ebuilds了吗?
|
作者: VirusCamp 发布时间: 2006-08-05
|
*ati-drivers-8.27.10-r1 (04 Aug 2006) 04 Aug 2006; Chris Bainbridge <[email protected]> +files/ati-powermode.sh.patch, files/atieventsd.rc6, +ati-drivers-8.27.10-r1.ebuild: Fix to work with xorg 7.0, fix eventsd init script, fix power state restore, thanks to Armando Di Cianno and Christian Affolter in bug #139458 |
作者: midx 发布时间: 2006-08-05
The currently drivers don't support X.org 7.1. Support will probably appear in the 9xxx series of drivers.
-- Aaron
Maybe new NV driver will come soon...
作者: fiag 发布时间: 2006-08-05
|
作者: fiag
Gentoo Forums :: >=xorg-server-1.0.99 blocks nvidia/ati binary drivers
The currently drivers don't support X.org 7.1. Support will probably appear in the 9xxx series of drivers. -- Aaron Maybe new NV driver will come soon... |
|
02 Aug 2006; Donnie Berkholz <[email protected]>; xorg-server-1.1.0-r1.ebuild, xorg-server-1.1.1.ebuild: Add VIDEO_CARDS=fglrx back in, now that there's a compatible driver. |
作者: midx 发布时间: 2006-08-05
9x系列应该会加入GLX_EXT_texture_from_pixmap
不过两边有竞争总是好事情。
作者: lucida 发布时间: 2006-08-06
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28














