Bonjour, j'avais envoyé il y a quelques semaines un mail pour demander de l'aide à propos de l'accélération graphique sous X avec une ati 9600 pro mais sans trop de succés. depuis j'ai continué ma recherche et aujourd'hui ca marche ! Config materielle : cm : a7v8x-x, ati 9600 pro, amd athlon 2200+ gcc : gcc version 3.2.3 (Debian) X : XFree86 Version 4.2.1.1 (Debian 4.2.1-12.1 20031003005825 [EMAIL PROTECTED]) / X Window System debian sid
voici ma demarche : j'ai compile un noyau 2.6.0-test7 avec le support de l'agp inclus dedans ainsi que le support des chips VIA. le DRM _n'est pas_ du tout compile, ni en module ni dans le noyau. Apres une compil de l'ensemble + reboot, un dmesg | grep agp me donne : Linux agpgart interface v0.100 (c) Dave Jones Detected VIA KT400/KT400A/KT600 chipset Maximum main memory to use for agp memory: 439M agpgart: AGP aperture is 1024M @ 0x80000000 ensuite j'ai pris la derniere version des drivers ati sur leur site : fglrx-glc22-4.2.0-3.2.8.i586.rpm un petit alien pour convertir ca en deb puis dpkg -i --force-overwrite fglrx-glc22_4.2.0-4.2_i386.deb il installe differentes lib etc mais le plus important ce deroule ici : /lib/modules/fglrx/build_mod/ lorsque je compilais (./make.sh) j'avais un warning /lib/modules/fglrx/build_mod/2.6.x/firegl_public.c: In function `__ke_get_vm_phys_addr': /lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:1511: warning: implicit declaration of function `VMALLOC_VMADDR' et lorsqu'on load le module, le noyau rale. j'ai donc cherché d'ou venait ce pb et je l'ai resolu en ajoutant : #define VMALLOC_VMADDR(x) ((unsigned long)(x)) dans firegl_public.c cette ligne provient du fichier : /usr/include/asm/pgtable.h apres avoir compilé et chargé ce nouveau module, lors du lancement de X, j'avais un beau : Unable to handle kernel paging request at virtual address e096c320 printing eip: e096c320 *pde = 1fe78067 *pte = 00000000 Oops: 0000 [#4] CPU: 0 EIP: 0060:[__crc_agp_memory_reserved+848724/2737961] Tainted: P EFLAGS: 00013292 EIP is at 0xe096c320 eax: 00000001 ebx: e0af4780 ecx: ffffffff edx: 69746e65 esi: e0af3a78 edi: df6f1a40 ebp: e0af47b0 esp: ddfbff18 ds: 007b es: 007b ss: 0068 Process XFree86 (pid: 411, threadinfo=ddfbe000 task=de2de7c0) Stack: e0aceb34 69746e65 444d4163 df6f1a40 e0af4780 e0af4780 e0af3a78 df6f1a40 e0ad7d20 1f000b0a e0ace76b e0af4780 e0ade445 e0af4780 bffffb64 00000004 de2de7c0 e0af391c 1f000b0a e0ade3a0 e0acf2a6 dd7b9140 dfb1cf40 40046432 Call Trace: [__crc_agp_memory_reserved+2300776/2737961] __ke_amd_adv_spec_cache_feature+0x14/0x90 [fglrx] [__crc_agp_memory_reserved+2338132/2737961] _r6x_CheckAGPCommand+0x130/0x190 [fglrx] [__crc_agp_memory_reserved+2299807/2737961] __ke_agp_enable+0x3b/0x40 [fglrx] [__crc_agp_memory_reserved+2364537/2737961] drm_agp_enable+0xa5/0xf0 [fglrx] [__crc_agp_memory_reserved+2364372/2737961] drm_agp_enable+0x0/0xf0 [fglrx] [__crc_agp_memory_reserved+2302682/2737961] firegl_ioctl+0x146/0x1b0 [fglrx] [sys_ioctl+181/560] sys_ioctl+0xb5/0x230 [syscall_call+7/11] syscall_call+0x7/0xb Code: Bad EIP value. et X plante :( ecran noir :( bref desespéré et n'ayant plus rien a perdre je vais voir pourquoi cette fonction (__ke_amd_adv_spec_cache_feature) plante. Le contenu est tres simple, elle permet d'identifier le type du processeur et de retourner un 1 ou 0 si c'est un amd athlon et si la famille et le model sont egale a 6 ou la famille egale a 6. rien de plus ! j'ai effacé tout le contenu de cette fonction et je retourne tout le tps 0. voila ma nouvelle fonction : int __ke_amd_adv_spec_cache_feature(void) { return 0; } j'ai aussi effacé la fonction static int __init have_cpuid_p(void) qui ne sert plus a rien. une recompilation, un reboot pour bien dechargé le precedent module et là 'oh miracle, tout marche' ! un petit tour par : glxinfo | grep OpenGL me donne OpenGL vendor string: ATI Technologies Inc. OpenGL renderer string: Radeon 9600 Athlon (3DNow!) OpenGL version string: 1.3 (X4.2.0-3.2.8) glxinfo me donne 1900 fps ! quake3, ut tournent niquel ! l'affichage en 2D est aussi plus fluide. j'ai pas encore tester ut2003 mais je ne me fais pas trop de soucis :) je joins mon fichier de conf de X au passage, c'est celui qui est genéré par defaut par fglrxconfig j'espere avoir été clair et que cette explication va pouvoir aider ceux d'entre vous qui ne peuvaient pas jouer sous notre cher pingouin os. Guillaume