Whoops, ATI's Evergreen Will Bring A New Driver
Phoronix: Whoops, ATI's Evergreen Will Bring A New Driver
Just hours ago we reported on AMD's position for the Gallium3D driver architecture according to John Bridgman, but some of his comments may now be different considering their Gallium3D adoption plans. After sending off that email with his Gallium3D comments, he learned that the Evergreen (a.k.a. Radeon HD 5000 series) support upbringing will be slightly different than planned...
shit this looks more and more like a dog chasing it's tail, when is it going to be an end so we can use the new graphics cards and everything will work, like in Windows? do linux users always have to use hardware that are ten years old?
Perhaps we could finally use R800 for linux desktop for good when R1000 releases on market. So expect to see OGL 3D on your HD 5870 in the year 2012.
Huh ? We're doing this to save time, not to make things take longer.
Originally Posted by FunkyRider
I've got my Radeon 4770 running with 2D acceleration, KMS, and 3D acceleration in Compiz in Ubuntu right NOW, not in 2012, not in 2011, but right now (and I've had it working for months).
The idea with Gallium is to reduce duplicated work, which should mean an even faster pace for open-source driver development once it gains broad usage (which one might argue has already happened). The the video situation on Linux has been so tumultuous lately because of the work being done to lay the foundation for better and faster driver development. KMS and DRI2 are more or less settled (it's mainly optimization at this point), so Gallium is the last piece that needs to be put into place (as far as I can tell).
Originally Posted by FunkyRider
How to start over with
i've followed the discussions and articles on this page for a while now.
But i still can't figure out how every parts (mesa/g3d/xf86-video-ati/kms and so on) work together.
I mean even if i were able to code like a god i still wouldnīt know where to start.
Is there some simple presentation/documentation or anything like that where i can see (for example) where i have to start if i want to improve the openGL support? Or what to do if i want to add features for my graphics card?
I mean - and maybe i'm an idiot - there are parts in the kernel, there a parts in xorg, there is galium3d and there is mesa. What the hell?
I just canīt believe that i'm the only one that lacking some informations here.
But even if so... maybe someone can help me to fill in the missing parts of the puzzle :-)
However i like the open source ati drivers and i'm using them for quite a while now. Thanks to everyone whose efforts made that possible :-)
Now that most of the rearchitecture work has finished the stack is getting pretty simple :
- kernel driver (aka drm) initializes the GPU, manages memory, and sets up the display. Having the kernel driver handle display setup is relatively new, and is referred to as Kernel ModeSetting (KMS)
- X driver (aka xf86-video-ati) hooks into the X server, passes display changes from the X server down to the kernel driver, and turns acceleration commands from the X server into GPU commands which are passed to the chip via the kernel driver
- Mesa driver turns OpenGL commands into HW driver calls; HW driver turns those calls into GPU commands which are passed to the chip via the kernel driver.
There are two types of Mesa HW drivers -- "classic" and Gallium3D -- and the transition from one to t'other is maybe half completed. Gallium3D drivers have the advantage of being able to support more than just 3D operations - things like OpenVG, OpenCL, 2D and video acceleration. Mesa is used for OpenGL in both cases, ie it's not "Mesa vs Gallium" it's "Mesa with classic HW drivers vs Mesa with Gallium3D HW drivers".
Older GPUs (r1xx, r2xx) will probably only ever use the classic drivers. More recent GPUs (r3xx-r5xx) are currently using a classic driver but a new Gallium3D driver is getting close to being able to replace the classic driver. The newest GPUs (6xx and higher) use a classic driver and work is just beginning on a Gallium3D driver.
Programming documentation for the chips is available at http://www.x.org/docs/AMD
Design documentation for the graphics drivers is available at http://www.x.org/wiki but be careful because most of it refers to the driver stack before the recent rearchitecture work completed.
OK so far ?
Just to be clear, there's no intention of "writing a new driver", just creating a new copy of the existing driver and changing the register addresses in the copy rather than modifying all the code to deal with different addresses depending on what GPU is being used.
This is to make things quicker and easier, not harder.
re: understanding how graphics cards work, have you read agd5f's blog posts from a couple of years ago ? If not, they're a pretty good starting point :
Once you have the basics, maybe look at the 5xx or 6xx/7xx acceleration guides in the docco list a couple of posts above.
quintesse, one thing that really helps with learning how a GPU works is to pick up an OpenGL book and start writing some simple graphics programs.
Once you have a bit of OpenGL under your belt it's a lot easier to understand the descriptions of what the GPU does - without it your brain is going to be screaming "why would you want to do that ?" every few seconds