Originally posted by RealNC
View Post
Announcement
Collapse
No announcement yet.
AMD Releases Catalyst 9.6 For Linux
Collapse
X
-
Originally posted by djdoo View PostWow 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!
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 PostThanks, 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"
Comment
-
Originally posted by Kano View PostDid not try your patch yet, but how do you get rid of flush_tlb_page which is in the binary part?
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.cLast 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 PostIn current wine-git + catalyst 9.6 eve-online is working perfectly without patches, probably a lot of other shader model 3 games too.
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 PostYes. 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
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 PostActually 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.
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
Comment