Announcement

Collapse
No announcement yet.

AMD 8.42 Driver Brings Fixes, AIGLX!

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #11
    Well the test results with Xorg 7.3/Xserver 1.4 are not that positive as the review only uses Xorg 7.2/Xserver 1.3. There you have got no AIGLX support, also there must be a driver init failure, as the first 3d app with Xserver 1.4 never works (you have to stop it!), only the ones after. This did not happen with 8.41.7 - needed -ignoreABI however, so I would call it a regression as older drivers work better with it. That the packageing scripts are only tested with 32 bit I would say is "normal" for ATI For Debian/Ubuntu users I added already the needed patch to my script - for others wait for someone else *g*

    Comment


    • #12
      It works!

      I'm on Ubuntu 7.10 with a Dell Ins 8600 Ati Mobile Rad 9600.

      All I used was these two links and magic happened.





      I came up with the same problems many other people seem to have with slow scrolling in Firefox.

      Comment


      • #13
        patch for 2.6.23 kernel

        Originally posted by rolz View Post
        anybody any luck with .23? it says the issues are with 64 bit, how about on 32bit?

        fixing the compile issues is no problem, but after that it just segfaults
        Using the 2.6.23 kernel on X1600 hardware (Macbook Pro), the following patch seems to work for me:

        Code:
        --- modules/fglrx/firegl_public.c	2007-10-31 12:23:44.000000000 +1100
        +++ modules/fglrx/firegl_public.c.orig	2007-10-27 12:42:40.000000000 +1000
        @@ -2486,24 +2486,10 @@
             kunmap((struct page*) page_addr);
         }
         
        -#ifndef ptep_test_and_clear_dirty
        -#define ptep_test_and_clear_dirty(__vma, __address, __ptep)            \
        -({                                                                     \
        -       pte_t __pte = *__ptep;                                          \
        -       int r = 1;                                                      \
        -       if (!pte_dirty(__pte))                                          \
        -               r = 0;                                                  \
        -       else                                                            \
        -               set_pte_at((__vma)->vm_mm, (__address), (__ptep),       \
        -                          pte_mkclean(__pte));                         \
        -       r;                                                              \
        -})
        -#endif
        -
         #ifndef ptep_clear_flush_dirty
         #define ptep_clear_flush_dirty(__vma, __address, __ptep) \
         ({							 \
        -  int __dirty = ptep_test_and_clear_dirty(__vma, __address, __ptep);	\
        +    int __dirty = ptep_test_and_clear_dirty(__ptep);	 \
             if (__dirty)					 \
                 flush_tlb_page(__vma, __address);		 \
             __dirty;						 \
        @@ -3534,9 +3520,6 @@
             return buf;
         }
         
        -static inline int pte_user(pte_t pte)          { return (pte).pte_low & _PAGE_USER; }
        -static inline int pte_read(pte_t pte)          { return (pte).pte_low & _PAGE_USER; }
        -
         static
         char *__ke_pte_phys_addr_str(pte_t pte, char *buf, __ke_dma_addr_t* phys_address)
         {
        @@ -3552,7 +3535,7 @@
                    pte_present (pte) ? 'p' : '-',
                    pte_read    (pte) ? 'r' : '-',
                    pte_write   (pte) ? 'w' : '-',
        -           pte_user    (pte) ? 'x' : '-',
        +           pte_exec    (pte) ? 'x' : '-',
                    pte_dirty   (pte) ? 'd' : '-',
                    pte_young   (pte) ? 'a' : '-');
             }
        @@ -5453,7 +5436,7 @@
         /** \brief Type definition of the structure describing Slab Cache object */
         typedef struct tag_kasSlabCache_t
         {
        -    struct kmem_cache* cache;        /* OS slab cache object */
        +    kmem_cache_t* cache;        /* OS slab cache object */
             spinlock_t lock;            /* OS spinlock object protecting the cache */
             unsigned int routine_type;  /* Type of routine the cache might be accessed from */
             char name[14];              /* Cache object name (kernel 2.4 restricts its length to 19 chars) */
        @@ -5499,7 +5482,7 @@
             DBG_TRACE("creating slab object '%s'", slabcache_obj->name);
         
             if ((slabcache_obj->cache =
        -            kmem_cache_create(slabcache_obj->name, iEntrySize, 0, 0, NULL )))
        +            kmem_cache_create(slabcache_obj->name, iEntrySize, 0, 0, NULL, NULL)))
             {
                 ret = 1;
             }

        Comment

        Working...
        X