Help - Search - Members - Calendar
Full Version: Information Database About Ati
Project OS X Forums > Previous Releases > Mac OS X Leopard 10.5 > OS X 10.5 (Leopard) > Hardware Information > Graphics > ATi
Krazubu
This thread is not a guide, its purpose is to keep some updated informations about ATI cards.
People who have the skills may find interesting infos. It\\\'s not complete and if you know how to fill the holes, it\\\'s very welcome.


Support of ATI cards is made by 2 kexts :
- A framebuffer, located in /System/Library/Extensions/ATINDRV.kext/Contents/PlugIns/ATY_Somefile.kext
This one is responsible of 2D support, including resolution change, output signal handle, and refresh rate.

- An acceleration driver located in /System/Library/Extensions/ATIRadeonXXXX.kext
This one brings hardware acceleration allowing use of QE (Quartz Exterme) and usually CI (Core Image) too, except on some older models
which only support QE.

****************************************************************



List of the available framebuffers :
QUOTE
ATY_Wormy : RV530 on X1600, some X1650 and some X1300
Used on 1st gen macbook pro and 1st gen iMac
head 1 : LVDS
head 2 : DVI+VGA

ATY_Alopias : RV580 on X1900 XT, known to work with GPU RV520 on X1800 and X1850
Used on mac pro
head 1 : DVI+VGA
head 2 : DVI+VGA

ATY_Sphyrna : RV516 on some X1300, and some X1550
Used on Xserve.
head 1 : disabled
head 2 : DVI+VGA


ATY_lago : RV610, HD2400XT / HD2400 (M74)
Used on iMac
head 1 : LVDS
head 2 : DVI+VGA

ATY_Hypoprion : RV630, HD2600Pro (M76)
Used on iMac
head 1 : LVDS
head 2 : DVI+VGA

ATY_Lamna : RV630, HD2600XT (known to work with RV670)
Used on mac pro
head 1 : DVI+VGA
head 2 : DVI+VGA

ATY_Franklin : R600, HD2900
mac model : ?
head 1 : ?
head 1 : ?

ATY_Megalodon : RV670 XT [ATI Radeon HD 3870] (known to work with RV630)
Used on mac pro, sold by AMD in PC/Mac version
head 1 : DVI+VGA
head 2 : DVI+VGA


ATY_Triakis : RV670

ATY_Prionace : ?

ATY_Caretta : ?

ATY_Motmot : RV770 [Radeon 4870]
Used on mac pro
head 1 : DVI+VGA
head 2 : DVI+VGA

ATY_Quail : M98, [Mobility Radeon 4850]
Used on iMac
head 1 : DVI
head 2 : DVI (VGA too ?)

ATY_Raven : ?
Head 1 : DVI (VGA ?)
Head 2 : DVI (VGA ?)

ATY_Cardinal : ? Card not released yet
Head 1 : ?
Head 2 : ?

ATY,Shrike
?

ATY,Peregrine
?

ATY,Flicker
?

ATY,Kakapo
?

ATY,Uakari
?

ATY,Zonalis
?

ATY,Vervet
?

ATY,Alouatta
?

ATY,Colobus
?

ATY,Baboon
?

ATY,Galago
?

ATY,Douc
?


The framebuffer controls the basic functions like resolution, refresh rate, and output type.
Each framebuffer is designed to run on a particular model of mac, and only supports the features it\\\'s designed for.
examples :
-The Sphyrna framebuffer is designed for Xserve which has no primary output, but only an external one, as secondary. As a consequence, this driver may be used to run a board with RV516 or close GPU, but will never be able to output something on the primary output.
-The Iago framebuffer is designed for iMacs with RV610 GPUs with an internal display using LVDS signal. It\\\'s then impossible to use a DVI or VGA display on the primary output. However the secondary output supports DVI + VGA, since the iMac have an external output that supports this kind of displays.
The 1st wave of framebuffer codenames are sharks (Alopias, Sphyrna, Iago, Hyproprion, Lamna, Megalodon, Triakis, Prionace, Caretta) later are birds (Franklin, Motmot, Quail, Raven).

To choose your framebuffer, you have to modify a key inside your injecter :
QUOTE
<key>@0,name</key>
<string>ATY,Wormy</string>

and

<key>@1,name</key>
<string>ATY,Wormy</string>

Replace with the codename that you want to try.

****************************************************************



List of the available acceleration kexts :
QUOTE
ATIRadeon7500.kext (tiger only) = R100 family (7000 to 7500)
ATIRadeon8500.kext (tiger only) = R200 family (8500 to 9250)
ATIRadeon9700.kext (tiger only) = R300 + R400 family (R300 = 9400 to 9800 + X300 to X600 + X1050 / R400 = X700 to X850)
ATIRadeonX1000.kext = R500 family (X950 + X1300 to X1950)
ATIRadeonX2000.kext = R600 family

The advantage of this file is that it\\\'s generic and supports the whole family at once. No need to have a specific file for each card.
Eg : ATIRadeonX1000.kext will work fine with any X1000 series (the card still has to be a \\\"real\\\" X1000 and not an older revamped model, see note below).

****************************************************************



List of the officially supported cards, following the list of present device IDs in the kexts :

ATIRadeon8500.kext from 10.4.7 :
QUOTE
0x4C66 1002 = RV280 M9 [Mobility Radeon 9200]
0x4966 1002 = RV250 [Radeon 9000/9000 Pro]
0x4967 1002 = RV250 [Radeon 9000]
0x514C 1002 = R200 [Radeon 8500 / 8500LE]
0x516C 1002 = R200 [Radeon 8500 / 8500LE]
0x5960 1002 = RV250 [Radeon 9200 Pro]
0x5961 1002 = RV280 [Radeon 9200 SE AGP]
0x5962 1002 = RV280 [Radeon 9200]
0x5963 1002 = RV280 [ATI Radeon 9200 AGP]
0x5C63 1002 = RV280 M9+ [Mobility Radeon 9200]


ATIRadeon9700.kext from 10.4.7 :
QUOTE
0x3E50 1002 = RV380 [Radeon X600]
0x3E54 1002 = RV380 [FireGL V3200]
0x4144 1002 = R300 [Radeon 9500 Series]
0x4148 1002 = R350 [Radeon 9800 SE]
0x4150 1002 = RV350 [Radeon 9600]
0x4152 1002 = RV360 [Radeon 9600 XT]
0x4A48 1002 = R420 [Radeon X800 Series]
0x4A49 1002 = R420 [Radeon X800 GT]
0x4A4A 1002 = R420 [Radeon X800 Series]
0x4A4B 1002 = R420 [Radeon X800 XT]
0x4A4C 1002 = R420 [Radeon X800 Series]
0x4A4D 1002 = R420 [FireGL X3-256]
0x4A4E 1002 = M18 [Mobility Radeon 9800]
0x4E44 1002 = R300 [Radeon 9700/9500 Series]
0x4E48 1002 = R350 [Radeon 9800 Pro]
0x4E50 1002 = M10 [Mobility Radeon 9600 Pro]
0x4E54 1002 = M10 [Mobility FireGL T2/T2e]
0x4E56 1002 = M12 [Mobility Radeon 9550
0x5B60 1002 = RV370 [Radeon X300/X550/X1050 Series]
0x5B62 1002 = RV380 [Radeon X600 Series]
0x5B64 1002 = RV370 [FireGL V3100]


ATIRadeonX1000.kext from 10.4.11 :
QUOTE
0x7109 1002 = R520 [Radeon X1800] (Primary)
0x7142 1002 = RV515 PRO [Radeon X1300/X1550 Series] (Primary)
0x7146 1002 = RV515 [Radeon X1300] (Primary)
0x71C5 1002 = M56P [Radeon Mobility X1600] (
0x71C0 1002 = RV530 [Radeon X1600] (Primary) (iMac)
0x7240 1002 = R580 [Radeon X1900] (Primary)
0x7249 1002 = R580 [Radeon X1900 XT] (Primary)



ATIRadeonX1000.kext from 10.5.7 :
QUOTE
0x7109 1002 = R520 [Radeon X1800]
0x7142 1002 = RV515 PRO [Radeon X1300/X1550 Series]
0x7146 1002 = RV515 [Radeon X1300]
0x7187 1002 = ? [Radeon X1300]
0x71C0 1002 = RV530 [Radeon X1600] (Primary) (iMac)
0x71C5 1002 = RV530 (M56P) [Radeon Mobility X1600] (mac book pro)
0x71DE 1002 = RV535 [Radeon X2500]
0x7210 1002 = RV550 [Mobility Radeon HD 2300]
0x7240 1002 = R580 [Radeon X1900] (Primary) (mac pro)
0x7249 1002 = R580 [Radeon X1900 XT] (Primary)
0x7291 1002 = RV560 [Radeon X1650]


ATIRadeonX2000.kext from 10.5.7 :
QUOTE
0x9400 1002 R600 XT [Radeon HD 2900 XT]
0x9400 1002 = R600 [Radeon HD 2900 XT]
0x9401 1002 = R600 XT [Radeon HD 2900 XT]
0x9402 1002 = R600 XT [Radeon HD 2900 XT]
0x9403 1002 = R600 XT [Radeon HD 2900 Pro] iMac 24\\\"
0x9440 1002 = RV770 [Radeon HD 4870]
0x9442 1002 = RV770 [Radeon HD 4800 Series]
0x944A 1002 = M98 [Mobility Radeon HD 4850]
0x9456 1002 = RV770 [ATI FirePro V8700]
0x945A 1002 = M98 [Mobility Radeon HD 4870]
0x9480 1002 = M96 [Mobility Radeon HD 4650]
0x9488 1002 = RV730 [Radeon HD 4650]
0x9490 1002 = RV730 [Radeon HD 4670]
0x949E 1002 = RV730 [FirePro V5700]
0x94c8 1002 = RV610 [Mobility Radeon HD 2400 XT] iMac 20\\\"
0x94c9 1002 = RV610 [Mobility Radeon HD 2400]
0x9500 1002 = ?
0x9501 1002 = RV670 XT [Radeon HD 3870]
0x9504 1002 = RV670 [Mobility Radeon HD 3850]
0x9505 1002 = RV670 [Radeon HD 3850]
0x9506 1002 = M88 [Mobility Radeon HD 3850 X2
0x9507 1002 = RV670 [Radeon HD 3830]
0x9540 1002 = RV710 [Radeon HD 4550]
0x9541 1002 = RV710
0x954E 1002 = RV710
0x954F 1002 = RV710 [Radeon HD 4350]
0x9552 1002 = M92 [Mobility Radeon HD 4300 Series]
0x9553 1002 = M92 [Mobility Radeon HD 4500 Series]
0x9581 1002 = RV630 [Mobility Radeon HD 2600]
0x9583 1002 = RV630 [Mobility Radeon HD 2600XT] iMac 20\\\"
0x9588 1002 = RV630 [Radeon HD 2600 XT] Mac pro
0x9591 1002 = M86 [Mobility Radeon HD 3650]
0x9593 1002 = M86 [Mobility Radeon HD 3670]
0x9598 1002 = RV630 [Radeon HD 4570]
0x9599 1002 = RV635 [Radeon HD 3600 Series]


ATIRadeonX2000.kext from 10.6.3 :
QUOTE
0x9400 1002 R600 XT [Radeon HD 2900 XT]
0x9400 1002 = R600 [Radeon HD 2900 XT]
0x9401 1002 = R600 XT [Radeon HD 2900 XT]
0x9402 1002 = R600 XT [Radeon HD 2900 XT]
0x9403 1002 = R600 XT [Radeon HD 2900 Pro] iMac 24\\\"
0x9440 1002 = RV770 [Radeon HD 4870]
0x9442 1002 = RV770 [Radeon HD 4800 Series]
0x944A 1002 = M98 [Mobility Radeon HD 4850]
0x9456 1002 = RV770 [ATI FirePro V8700]
0x945A 1002 = M98 [Mobility Radeon HD 4870]
0x9480 1002 = M96 [Mobility Radeon HD 4650]
0x9488 1002 = RV730 [Radeon HD 4650]
0x9490 1002 = RV730 [Radeon HD 4670]
0x949E 1002 = RV730 [FirePro V5700]
0x94c8 1002 = RV610 [Mobility Radeon HD 2400 XT] iMac 20\\\"
0x94c9 1002 = RV610 [Mobility Radeon HD 2400]
0x94a0 1002 = M97 [Mobility Radeon HD 4830]
0x9500 1002 = ?
0x9501 1002 = RV670 XT [Radeon HD 3870]
0x9504 1002 = M88 [Mobility Radeon HD 3850]
0x9505 1002 = RV670 [Radeon HD 3850]
0x9506 1002 = M88 [Mobility Radeon HD 3850 X2
0x9507 1002 = RV670 [Radeon HD 3830]
0x9540 1002 = RV710 [Radeon HD 4550]
0x9541 1002 = RV710
0x954E 1002 = RV710
0x954F 1002 = RV710 [Radeon HD 4350]
0x9552 1002 = M92 [Mobility Radeon HD 4300 Series]
0x9553 1002 = M92 [Mobility Radeon HD 4500 Series]
0x9581 1002 = RV630 [Mobility Radeon HD 2600]
0x9583 1002 = RV630 [Mobility Radeon HD 2600XT] iMac 20\\\"
0x9588 1002 = RV630 [Radeon HD 2600 XT] Mac pro
0x9591 1002 = M86 [Mobility Radeon HD 3650]
0x9593 1002 = M86 [Mobility Radeon HD 3670]
0x9598 1002 = RV630 [Radeon HD 4570]
0x9599 1002 = RV635 [Radeon HD 3600 Series]


That means if you have one of the boards above, it should be supported, however that support will be limited by the outputs that the framebuffer is designed to support.
To enable the use of a kext for your card, you have to insert your dev ID inside the plist of the chosen kext, if it\\\'s not already there.
GPUs prior to R500 are only supported up to Tiger 10.4.7 with OpenGL.framework from the same version (support has been dropped with later versions). No way to get one of those working with Leopard. You still could load the kexts but the framework would panic. Those GPUs also never got any intel framebuffer.

Note about board numbers and generations :
Better rely on the GPU model than the board name, those are confusing and don\\\'t really mean a thing, ATI do what they want with them. Two cards with a very close number, can be very different, and on the opposite, two cards with a very different number can be very close if not identical.
Example : there are three X1300 models, different enough to use different kexts, and be supported or not.
A marketing trick consists in rebranding some models that use chips from older generation with up to date names so that they don\\\'t feel old.
This is the case of the X2500 which is actually a X1000 series card, hence its support by the X1000 kext, instead of the X2000 one, as the card name would suggest. Same with X1050, it\\\'s not a X1000 but would use the 9700 kext.
To get a detailed list of board names and their GPUs, you can check this database.


Missing so far :
- Some framebuffers missing/unknown.
- Some device IDs unkown.


PS : This thread is not for support. People seeking for help about their card will have their post deleted.

Last update :12/01/2010
Slice
I want to say something about acceleration. The driver ATIRadeonXXXX.kext has internal check for DeviceID so it needs for binary patch.
For R300 family in Tiger it was performed by koverg.patch. There are many successful reports with it.
I investigated R200-R400 and found more information.
For R200 we must to patch ATIRadeon8500

CODE
DeviceID       Sample
4242..4243    514c
5148..514d    514c
4c64..4c67    4c66
5964          5963
5c61          5c63

For example, if you have DeviceID=514e then your sample=514c
Open ATIRadeon8500.kext/Contents/MacOS/ATIRadeon8500 with HexEdit (freeware)
Search 3d4c51 replace to 3d4e51 (you see bytes 4e and 51 in reverse order).

For R300
CODE
DeviceID       Sample
3150..3154    3e50
3e50..3e54    3e50
4145..414b    4144
4151          4150
4153..4156    4152
4e45..4e47    4e44
4e49..4e4a    4e48
4e50..4e53    4e50
5460..5464    5b60
5b60..5b65    5b60
5a41, 5a61    5b60
5a42, 5a62    5b60

The same but with ATIRadeon9700.
The last sample 5b60 is the same patch as koverg did.

For R400 you have two samples 4a48 and 4a4e
CODE
DeviceID
4a4f..4a54
4b4a..4b4f
5548..5554
564a..5653
5954..5955
5974..5975
5d48..5d57
5e48..5e4f


For example you have DeviceID=5e49
Open ATIRadeon9700.kext/Contents/MacOS/ATIRadeon9700 with HexEdit
Search 3d484a replace to 3d495e
Search 3d4e4a replace to 3d495e
Yes, replace both sample! In two or three places!


ATIRadeonX1000.kext has hardcoded DeviceID!

CODE
cmp edx, 7187h
mov [esi+1D24h], eax
mov [esi+1D20h], edx
jz loc_228E5
ja loc_22902
cmp edx, 714Ah
ja loc_22969
cmp edx, 7148h
jnb loc_228E5
cmp edx, 7140h
jz loc_228E5
ja loc_228D0
lea eax, [edx-7100h]
cmp eax, 0Fh
ja loc_22930
cmp edx, 7142h
jz short loc_228E5
jb short loc_22930
lea eax, [edx-7144h]
cmp eax, 2
ja short loc_22930
cmp edx, 71DEh
jz short loc_2294C
ja loc_229B5
cmp edx, 71C6h
ja short loc_2293C
cmp edx, 71C4h
jnb short loc_2294C
cmp edx, 71C0h
jz short loc_2294C
cmp edx, 71C2h
jz short loc_2294C
cmp edx, 71CEh
jz short loc_2294C
cmp edx, 71D2h
jnz short loc_22930
cmp edx, 7153h
ja loc_22A01
cmp edx, 7152h
jnb loc_228E5
cmp edx, 714Eh
jz loc_228E5
cmp edx, 7150h
jnz short loc_22930
jmp loc_228E5
cmp edx, 7260h
jz short loc_229E4
ja loc_22AAC
cmp edx, 7210h
jz loc_228E5
jb loc_22930
lea eax, [edx-7240h]
cmp eax, 0Fh
ja loc_22930
cmp edx, 7157h
jz loc_228E5
cmp edx, 715Eh
jnz loc_22930
jmp loc_228E5


The driver uses cmp edx, 7187h which coded as
81fa87710000
But the driver has many places to check. What is the best to replace? Needs investigations.
I think the first check would be best so
Open ATIRadeonX1000 with HexEdit
Search 81fa87710000
Replace to 81faXXYY0000 where XXYY is your deviceID in reverse order.
For example if your DeviceID=71cd then XXYY=cd71

In these codes we see that DevID=71c2 & 71ce are internally supported by ATIRadeonX1000 while they absent in info.plist.
The same investigations needed for ATIRadeonX2000.
Tim
Some interesting info can most likely be found in the ATi Section of our Hardware Database: http://projectosx.com/hardware/browse.php?...=3&hwMa=ATi
Slice
DeviceID database
http://www.pcidatabase.com/vendor_details.php?id=240
boombeng
Catalyst™ PC VENDOR ID (1002) LIST

http://developer.amd.com/drivers/pc_vendor...es/default.aspx
Slice
For example ATI Radeon X700SE DeviceID=5e4f
1. Koverg patch is not fully correct for the card. It is better you use HexEdit to patch ATIRadeon9700 manually. Copy to desktop.
Open ATIRadeon9700.kext/Contents/MacOS/ATIRadeon9700
Search 3d484a replace to 3d4f5e
Search 3d4e4a replace to 3d4f5e
in all places!
Save and install back to /System/Library/Extensions/
2. Open ATIRadeon9700GA.plugin/Contents/Info.plist and edit
CODE
    <key>Personality</key>
    <dict>
        <key>IOProviderClass</key>
        <string>IONDRVFramebuffer</string>  -- change to IOFramebuffer
    </dict>

3. Replace 9700GL to X1000GL with renaming to 9700
sudo cp -v /System/Library/Extensions/ATIRadeonX1000GLDriver.bundle/Contents/MacOS/ATIRadeonX1000GLDriver /System/Library/Extensions/ATIRadeon9700GLDriver.bundle/Contents/MacOS/ATIRadeon9700GLDriver
4. Check that OK and reboot
5. Enjoy
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2010 Invision Power Services, Inc.