Announcement

Collapse
No announcement yet.

AMD Releases Catalyst 9.6 For Linux

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

  • Originally posted by RealNC View Post
    I suppose AMD doesn't intent to give us a "hotfix" with new kernel support like they do with Windows.
    Why not, for Arch Linux, since we are a rolling release, you get the latest fixes, so we can slip it in in an update. For Ubuntu and the others the hotfix can be provided by SP1. LOL

    Comment


    • Originally posted by djdoo View Post
      Wow guys I am really happy about this release!!

      At LAST Hybrid Crossfire worked for me!!! Hurray!!

      And I see no garbage at my screen when the PC shuts down!!

      I recommend all of you to upgrade to this driver 9.6!
      Wow! (BTW, are you the same djdoo from the compiz-fusion forums?)

      This is awesome, how did you get the hybrid Crossfire set up? From the amdcccle GUI? If you posted a mini-howto or blog somewhere I'd love to take a look. I have an HD 3200 IGP, and I am planning to buy a dedicated ATI card to work in hybrid mode later this year.

      Thanks in advance!

      Comment


      • Originally posted by bridgman View Post
        Thanks, kensai. There were reports of a stream of kernel error messages when using one of these patches (but that might have been a KCL patch rather than kernel patch). Did you see anything like that ?

        The errors come from the binary blob. This can only be fixed by the ATI/AMD devs.

        the patch to get the source compile with 2.6.30:
        Code:
        diff -Nru fglrx-orig/build_mod/drm_os_linux.h fglrx/build_mod/drm_os_linux.h
        --- fglrx-orig/build_mod/drm_os_linux.h	2009-05-30 01:21:53.000000000 +0200
        +++ fglrx/build_mod/drm_os_linux.h	2009-06-17 14:08:22.000000000 +0200
        @@ -42,7 +42,7 @@
         #define DRM_IRQ_ARGS		int irq, void *arg, struct pt_regs *regs
         /** backwards compatibility with old irq return values */
         #ifndef IRQ_HANDLED
        -typedef void irqreturn_t;
        +//typedef void irqreturn_t;
         #define IRQ_HANDLED   /* nothing */
         #define IRQ_NONE      /* nothing */
         #endif
        diff -Nru fglrx-orig/build_mod/firegl_public.c fglrx/build_mod/firegl_public.c
        --- fglrx-orig/build_mod/firegl_public.c	2009-05-30 01:21:53.000000000 +0200
        +++ fglrx/build_mod/firegl_public.c	2009-06-17 15:21:09.000000000 +0200
        @@ -282,6 +282,18 @@
         
         // ============================================================
         /* global structures */
        +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,29)
        +#undef pci_enable_msi
        +int pci_enable_msi(struct pci_dev* dev)
        +{
        +	int status;
        +
        +	status = pci_enable_msi_block(dev, 1);
        +
        +	return status;
        +}
        +#endif //LINUX_VERSION_CODE > KERNEL_VERSION(2,6,29)
        +
         int ip_firegl_open(struct inode* inode, struct file* filp)
         {
             int m;
        @@ -1226,8 +1238,6 @@
          */
         int ATI_API_CALL KCL_SetPageCache_Array(unsigned long *pt, int pages, int enable)
         {
        -    unsigned int i;
        -    int ret = 0;
         #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28)
             if (enable)
             {
        @@ -1238,6 +1248,8 @@
                 return set_memory_array_uc(pt, pages);
             }  
         #else               
        +    unsigned int i;
        +    int ret = 0;
             for( i = 0; i < pages; i++ )
             {
                 ret = KCL_SetPageCache((void *)pt[i], 1, enable);
        @@ -1448,7 +1460,11 @@
          */
         KCL_TYPE_Uid ATI_API_CALL KCL_GetEffectiveUid(void)
         {
        +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,28)
        +    return current->cred->euid;
        +#else
             return current->euid;
        +#endif
         }
         
         /** /brief Delay execution for the specified number of microseconds
        @@ -1820,15 +1836,28 @@
          */
         void ATI_API_CALL KCL_PosixSecurityCapSetIPCLock(unsigned int lock)
         {
        +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,28)
        +    struct cred *new = prepare_creds();
        +    if (!new) {
        +        printk(KERN_ERR "fglrx: could not allocate memory\n");
        +        return;
        +    }
        +#else
        +#define new current
        +#endif
             if (lock == 0 )
             {
        -        cap_lower(current->cap_effective, CAP_IPC_LOCK);
        +	cap_lower(new->cap_effective, CAP_IPC_LOCK);
             }
             else
             {
        -        cap_raise(current->cap_effective, CAP_IPC_LOCK);
        -    }    
        -    return; 
        +	cap_raise(new->cap_effective, CAP_IPC_LOCK);
        +    }
        +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,28)
        +    commit_creds(new);
        +#else
        +#undef new
        +#endif
         }
         
         /** \brief Get number of available RAM pages
        diff -Nru fglrx-orig/build_mod/firegl_public.h fglrx/build_mod/firegl_public.h
        --- fglrx-orig/build_mod/firegl_public.h	2009-05-30 01:21:53.000000000 +0200
        +++ fglrx/build_mod/firegl_public.h	2009-06-17 14:11:15.000000000 +0200
        @@ -18,6 +18,7 @@
         #define _FIREGL_PUBLIC_H_
         
         #include <stdarg.h>
        +#include <asm/pgtable.h>
         #include "kcl_pci.h"
         #include "kcl_io.h"
         
        @@ -600,6 +601,11 @@
         #define cpu_has_pge test_bit(X86_FEATURE_PGE, &boot_cpu_data.x86_capability)
         #endif
         
        +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,28)
        +#undef pgprot_writecombine
        +#undef pgprot_noncached
        +#endif#
        +
         #ifndef pgprot_writecombine
         #define pgprot_writecombine(prot) __pgprot((pgprot_val(prot) & ~(_PAGE_PCD)) | _PAGE_PWT)
         #endif
        diff -Nru fglrx-orig/build_mod/kcl_acpi.c fglrx/build_mod/kcl_acpi.c
        --- fglrx-orig/build_mod/kcl_acpi.c	2009-05-30 01:21:53.000000000 +0200
        +++ fglrx/build_mod/kcl_acpi.c	2009-06-17 14:33:21.000000000 +0200
        @@ -18,6 +18,12 @@
         #include <linux/autoconf.h>
         #include <linux/acpi.h>
         
        +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,28)
        +#include <../drivers/acpi/acpica/acconfig.h>
        +#include <../drivers/acpi/acpica/aclocal.h>
        +#include <../drivers/acpi/acpica/acobject.h>
        +#endif
        +
         #include "kcl_config.h"
         #include "kcl_type.h"
         #include "kcl_acpi.h"
        Changes on the linux source aren't necessary.

        Comment


        • Did not try your patch yet, but how do you get rid of flush_tlb_page which is in the binary part?

          Comment


          • Kindly ask AMD for an fglrx build with the debug symbol still in :P

            Comment


            • Originally posted by Kano View Post
              Did not try your patch yet, but how do you get rid of flush_tlb_page which is in the binary part?
              Not sure, but either it's because auf my kernel config (had the same issue with nvidia some time ago) or flush_tlb_page ist x86 specific und doesn't occour on x86_64.
              But I think we should be able to create flush_tlb_page in the fglrx sources as I've done with pci_enable_msi, if necessary.

              edit:
              It's the config (I'm not using SMP here) and also flush_tlb_page is only called in firegl_public.c
              Last edited by PuckPoltergeist; 17 June 2009, 08:18 PM.

              Comment


              • Wow 9.6 already I bailed out after 9.4

                Open source is great, open source drivers are great. But when you pay over 500 bucks for what you think is the best high end card at the time 4870 X2 and the proprietary drivers are crap it kind of makes you want to never buy ATI again. I bought the 4870 x 2 so I could play the new GTA game. It was unplayable with the settings set below half. The previous
                GTA looked better at this point and played smoother. At first I blamed Vista. Then I dumped Windows and Learned Linux then I dumped the ATI card and bought a mid range Nvidia card and am now playing games Google Earth works great in Jaunty as well.
                Lessons learned Windows sucks, ATI's drivers suck!
                P.S no I'm not playing GTA in Linux
                Linux Games Publishing has some great games now ported to Linux and they run great!!

                Comment


                • Originally posted by hpestilence View Post
                  In current wine-git + catalyst 9.6 eve-online is working perfectly without patches, probably a lot of other shader model 3 games too.
                  Yes. That wasn't actually a driver fix, but a wine fix.



                  The problem when most developers only have one brand of card is that they assume that the implementation is correct and begin to assume that the way the majority driver is implemented is the right way.

                  I am not saying any driver does not have bugs, but a monoculture isn't healthy either.

                  Regards,

                  Matthew

                  Comment


                  • Originally posted by mtippett View Post
                    Yes. That wasn't actually a driver fix, but a wine fix.



                    The problem when most developers only have one brand of card is that they assume that the implementation is correct and begin to assume that the way the majority driver is implemented is the right way.

                    I am not saying any driver does not have bugs, but a monoculture isn't healthy either.

                    Regards,

                    Matthew
                    Actually it was this bug that was mostly the problem.

                    http://ati.cchtml.com/show_bug.cgi?id=1462

                    Once it was fixed Henri was quick to fix a wine bug in which a shader used 15 vec4 varyings + gl_FrontColor and gl_FrontSecondaryColor.

                    The describeDrawable wine bug was only hit if you ran WINEDEBUG=wgl along with wine.

                    Comment


                    • Originally posted by hpestilence View Post
                      Actually it was this bug that was mostly the problem.

                      http://ati.cchtml.com/show_bug.cgi?id=1462

                      Once it was fixed Henri was quick to fix a wine bug in which a shader used 15 vec4 varyings + gl_FrontColor and gl_FrontSecondaryColor.

                      The describeDrawable wine bug was only hit if you ran WINEDEBUG=wgl along with wine.
                      Okay my bad.

                      Note to others: If you find a bug, making a reproducable reduced test-case really helps. Also note the delay between engagement and release.

                      Matt

                      Comment

                      Working...
                      X