Page 2 of 2 FirstFirst 12
Results 11 to 13 of 13

Thread: AMD 8.42 Driver Brings Fixes, AIGLX!

  1. #11
    Join Date
    Aug 2007
    Posts
    6,674

    Default

    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*

  2. #12

    Default

    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.

    http://ubuntuforums.org/showthread.php?t=575843

    http://ubuntuforums.org/showthread.p...+8.42.3+compiz

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

  3. #13
    Join Date
    Oct 2007
    Posts
    1

    Default patch for 2.6.23 kernel

    Quote 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;
         }

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •