Hello tutti,
ca fait un moment que je n'ai pas posté!
alors, putain, ATI & FC4, ca a été dur!!!
En fait, "livna" à fait le gros du boulot pour FC4
MAIS dans certain cas particulier (carte mère nForce),
ca ne marche pas! (pas d'accélération DRI)
Alors, voici la procédure:
1 - Carte mère autre que nForce
-------------------------------
=> juste ajouter cela dans votre config YUM
[livna-stable]
name=Livna.org - Fedora Compatible Packages (stable)
baseurl=
http://rpm.livna.org/fedora/$releasever/$basearch/RPMS.lvn
gpgcheck=1
gpgkey=
http://rpm.livna.org/RPM-LIVNA-GPG-KEY
enabled=0
puis, "yum install kernel-module-fglrx-2.6.11-1.1369_FC4-8.14.13.1-0.lvn.4.4.i686"
2 - Carte mère nForce
----------------------
récuperer le SRPM sur Livna (pour FC4): ati-fglrx-8.14.13.1-0.lvn.4.4.src.rpm
Puis, appliquer le patch suivant (en dernier) récuperer
sur
http://www.rage3d.com/board => forum Linux Driver
-----------8<-----------8<-----------8<----
diff -ur ./firegl_public.c /lib/modules/fglrx/build_mod/firegl_public.c
--- ./firegl_public.c 2005-06-16 01:57:33.000000000 +0200
+++ /lib/modules/fglrx/build_mod/firegl_public.c 2005-06-16 11:08:36.000000000 +0200
@@ -167,7 +167,7 @@
#if !defined(__ia64__)
// the macros do use errno variable
-static int errno;
+int errno;
#endif // __ia64__
// int mlock(const void *addr, size_t len);
@@ -997,8 +999,49 @@
return high_memory;
}
+static struct pci_dev *fc4_pci_dev = NULL;
+static struct agp_bridge_data *fc4_agp_bridge = NULL;
+
+static struct agp_memory *fc4_agp_allocate_memory(size_t pages, u32 type)
+{
+ return agp_allocate_memory(fc4_agp_bridge, pages, type);
+}
+
+static void fc4_agp_enable(u32 mode)
+{
+ agp_enable(fc4_agp_bridge, mode);
+}
+
+static int fc4_agp_backend_acquire(void)
+{
+ if ((fc4_agp_bridge = agp_backend_acquire(fc4_pci_dev)))
+ return 0;
+ return -ENODEV;
+}
+
+static void fc4_agp_backend_release(void)
+{
+ agp_backend_release(fc4_agp_bridge);
+}
+
+static void fc4_agp_copy_info(struct agp_kern_info *info)
+{
+ fc4_agp_bridge = agp_find_bridge(fc4_pci_dev);
+ if (!fc4_agp_bridge) {
+ if (!(fc4_agp_bridge = agp_backend_acquire(fc4_pci_dev))) {
+ // fail...
+ }
+ agp_copy_info(fc4_agp_bridge, info);
+ agp_backend_release(fc4_agp_bridge);
+ } else {
+ agp_copy_info(fc4_agp_bridge, info);
+ }
+ info->device = fc4_pci_dev;
+}
+
int ATI_API_CALL __ke_pci_enable_device(__ke_pci_dev_t* dev)
{
+ fc4_pci_dev = dev;
return (pci_enable_device( (struct pci_dev*)(void *)dev ));
}
@@ -2862,13 +2905,13 @@
static const drm_agp_t drm_agp = {
&agp_free_memory,
- &agp_allocate_memory,
+ &fc4_agp_allocate_memory,
&agp_bind_memory,
&agp_unbind_memory,
- &agp_enable,
- &agp_backend_acquire,
- &agp_backend_release,
- &agp_copy_info
+ &fc4_agp_enable,
+ &fc4_agp_backend_acquire,
+ &fc4_agp_backend_release,
+ &fc4_agp_copy_info
};
#undef DRM_AGP_MODULE_GET
#undef DRM_AGP_MODULE_PUT
diff -ur ./nvidia-agp.c /lib/modules/fglrx/build_mod/nvidia-agp.c
--- ./nvidia-agp.c 2005-06-16 01:57:33.000000000 +0200
+++ /lib/modules/fglrx/build_mod/nvidia-agp.c 2005-06-16 11:04:20.000000000 +0200
@@ -54,7 +54,7 @@
#define NVIDIA_3_APLIMIT 0x54
-static int agp_try_unsupported __initdata = 0;
+//static int agp_try_unsupported __initdata = 0;
static struct _nvidia_private {
struct pci_dev *dev_1;
-----------8<-----------8<-----------8<----
et recompiler le tout!
Pour ceux qu'on un peu la flemme de faire cela,
je viens d'uploader mon binaire sur
http://jau.free.fr/kernel-module-fglrx-2.6.11-1.1369_FC4-8.14.13.1-0.lvn.4.4.i686.rpm
bien, sur, il faut ati-fglrx-8.14.13.1-0.lvn.4.4.i386.rpm
comme dépendence! (livna-FC4)
Et Voila,
bon WE!
🙂