Jump to content

ATI Radeon HD4350 PCIe


KTL
 Share

243 posts in this topic

Recommended Posts

There's an obvious OpenGL performance gain/difference. More apps have trouble with OpenGL in 10.6.3, so it could be failing miserably at something, which is showing as a performance gain. For instance Xcode's Core Image Fun House.app distorts and has the green problem whenever a filter is applied, but doesn't have this problem with 10.6.2. Photoshop still requires that Use For Image Display be turned off in Advanced OpenGL Drawing. I tried to do some OpenGL debugging, but I'm clueless when it comes to OpenGL, so it was rather pointless.

 

There are some reports of similar issues with retail Macs, see the Apple Support Forums. The ATI Radeon X1600 seems to be a popular card with reports of retail problems. If this is anything similar to the retail issue, then I'm inclined to believe that it has to do with the memory management in the ATI driver.

 

I don't know if this has anything to do with it, but without the ATI4500 kext loaded, my card reports 256MB of VRAM in Profiler, so perhaps it isn't using the VRAM properly. Is there any difference in the 45xx vs 43xx series when it comes to memory management? I tried using atMonitor to monitor the VRAM usage (suggested in the Apple Support thread), but I get a Kernel Panic (due to my using legacy kernel no doubt). If someone with vanilla kernel wants to give it a try, please report back if there's anything interesting.

 

 

@ANARCHiNTOSH: Nice work on the injection kext :P

Thanks! im looking to increase what it does, at least to fix the green apple/these OpenGL errors and

hopefully to replace the GraphicsEnabler=Yes/DSDT injector.

 

It was really easy to make, i adapted the concept from a similiar kext for GTX295, which also needed a device-id injected.

All thats inside is a plist that overwrites a part of the ATI4500 kext plist. (a lot like LegacyHDA.kext does for AppleHDA.kext)

 

i tried atMonitor and it worked, but im not really sure what im looking for?

nothing particularly remarkable struck me, apart from getting no reading from gpu usage or gpu temperature (which isnt particyularly surprising on osx86).

vRam seemed all right, never really rising above 30% usage though.

 

apparently 4550 users are having the same problem:

http://www.tonymacx86.com/viewtopic.php?f=7&t=1388

 

i think to fix the green all that needs to be done is find the offending code in the offending kext and overwrite it

with the 10.6.2 code, which can be done either manually or with the injector kext (legacy style).

shouldnt be too hard, its just finding the code which is timeconsuming

 

 

 

@everyone:

if you want the green apple and OpenGL errors fixed on 10.6.3, follow the steps in post 100 to help me find out which kext(s) is causing the problem so i can correct it from my ATI4350.Fix.kext

Link to comment
Share on other sites

YES!!!!!

 

QE/CI finally supported! I am so happy right now.

 

10.6.2, using the kernel posted above somewhere (i think it's designed for 10.6.3.)

 

Chameleon RC4 with PCEFI 10.6.

 

ATISupport, ATI4500Controller, ATIFramebuffer, and ATIx2000 kexts are what is loaded.

 

This is so exciting! I am willing to provide more specific details if requested.

Link to comment
Share on other sites

Without any graphics enabler kext or in com.apple.Boot.plist the following dsdt hack, adapted from hack #13 in the DSDTSE app, seems to work for me.

 

			Device (GFX0)
			{
				Name (_ADR, Zero)
				Name (_SUN, One)
				Method (_DSM, 4, NotSerialized)
				{
					Store (Package (0x1E)
					{
						"@0,compatible",
						Buffer (0x0E)
						{
						   "ATY,Peregrine"
						},

						"@0,deviceType",
						Buffer (0x08)
						{
						   "display"
						},

						"@0,VRAM,memsize",
						Buffer (0x04)
						{
							0x00, 0x00, 0x00, 0x20
						},

						"@0,display-connect-flags",
						Buffer (0x02)
						{
							 0x00, 0x04
						},

						"@0,name",
						Buffer (0x0E)
						{
							"ATY,Peregrine"
						},

						"@1,compatible",
						Buffer (0x0E)
						{
						   "ATY,Peregrine"
						},

						"@1,device_type",
						Buffer (0x08)
						{
							"display"
						},

						"@1,VRAM,memsize",
						Buffer (0x08)
						{
							 0x00, 0x00, 0x00, 0x20
						},

						"@1,display-connect-flags",
						Buffer (0x02)
						{
							 0x00, 0x04
						},

						"@1,name",
						Buffer (0x0E)
						{
							"ATY,Peregrine"
						},

						"ATY,Card#",
						Buffer (0x0E)
						{
							"109-B77101-00"
						},

						"ATY,Rom#",
						Buffer (0x0F)
						{
							"113-B7710C-176"
						},

						"device_type",
						Buffer (0x14)
						{
							 "ATY,PeregrineParent"
						},

						"VRAM,totalsize",
						Buffer (0x04)
						{
							 0x00, 0x00, 0x00, 0x20
						},

						"model",
						Buffer (0x17)
						{
							 "ATI Radeon 4300 Series"
						}
				  }, Local0)
				  DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
				  Return (Local0)
			 }

 

Try it and let me know :rolleyes:

 

All work fine. But in the end it was necessary to add one more symbol "}".

Link to comment
Share on other sites

YES!!!!!

 

QE/CI finally supported! I am so happy right now.

 

10.6.2, using the kernel posted above somewhere (i think it's designed for 10.6.3.)

 

Chameleon RC4 with PCEFI 10.6.

 

ATISupport, ATI4500Controller, ATIFramebuffer, and ATIx2000 kexts are what is loaded.

 

This is so exciting! I am willing to provide more specific details if requested.

 

I have been trying to get this working with QE/CI for two months!

 

Yes, please provide more specific details. Include hyperlinks to the source of the files and the steps, in order, of what you did.

Link to comment
Share on other sites

I have been trying to get this working with QE/CI for two months!

 

Yes, please provide more specific details. Include hyperlinks to the source of the files and the steps, in order, of what you did.

 

i already did exactly that! i even wrote a kext

click here

 

@DIMAN0id thanks for fixing the dsdt thing, i just copied and pasted the original without the extra },

no wonder it didnt work. i will try it when i get the chance

Link to comment
Share on other sites

First of all, I used Chameleon RC4 downloadable from the Chameleon website. You can find the link to it in the News listings here.

 

I used the 10.6 PCEFI downloadable here: http://netkas.org/?p=372

 

I using OSX 10.6.2.

 

I used the kext package in post #68. Not sure if that part made any difference.

 

I used the qoopz/nawcom legacy kernel because I'm on AMD. I couldn't get graphics before doing this, that may be the main step.

 

I think that's all. Can we have a mod sticky this? Seeing as we now have support.

Link to comment
Share on other sites

I was looking at the DSDT code posted and started poking around in IORegistryExplorer, trying to figure out why the "green" problems are happening. I may have no idea what I'm talking about, but this would cause a problem as far as I can tell. My memory sizes aren't matching up. If I'm reading this correctly, then this could definitely cause the "green" and distortion issues. Is there anyone with more experience with this sort of thing? If my BIOS didn't dump so horribly, I'd try the DSDT code, but judging from the amount of errors I have (parts of the code don't make sense) I think it's going to take a while to get my DSDT.aml compiled. Is there any other way to inject the proper memory amount?

 

IOService:/AppleACPIPlatformExpert/PCI0@180000/AppleACPIPCI/PCE2@2/IOPCI2PCIBridge/display@0

IODeviceMemory:
<array>
<array>
	<dict>
		<key>address</key>
		<integer>-805306368</integer>
		<key>length</key>
		<integer>268435456</integer>
	</dict>
</array>
<array>
	<dict>
		<key>address</key>
		<integer>-22085632</integer>
		<key>length</key>
		<integer>65536</integer>
	</dict>
</array>
<string>IOSubMemoryDescriptor is not serializable</string>
<array>
	<dict>
		<key>address</key>
		<integer>-22282240</integer>
		<key>length</key>
		<integer>131072</integer>
	</dict>
</array>
</array>


VRAM,totalsize:
<integer>536870912</integer>

ATY,memsize
<integer>536870912</integer>

Link to comment
Share on other sites

@parannoyed

 

i would guess an efi string would also work.

that or patching the offending code (in whatever kext it is, probably 4500Controller or ATIRadeonX2000)

which is either in the kext plist (unlikely i now think) or the kext executable (the one in Contents/MacOS/)

kext executable can be patched with hexfiend: http://ridiculousfish.com/hexfiend/

 

for dual monitors and to fix the ocasional failed display wake from sleep this could help.

its a videorom to dsdt converter, and it works for 4870. you put the converted rom dump in dsdt like the attached example shows and it enables all the good extra stuff

 

once we discover it all ill make a comprehensive guide

i could try and put all of this into my kext.... but i think hacks in dsdt give faster boot time as its loaded all at once

by chameleon rather than one by one by os x.

so keeping the kext as a dummy kext for just device-id is best

 

UPDATE:

wow i cannot get the dsdt injector to work no matter what i do. i get no compile errors with DSDTSE

but i always get a kp on boot. can anyone who is using it successfully tell me exactly how they put it in?

i followed the instructions for where to place it from hack 13 in DSDTSE (in the PCI0 section).

 

could someone please upload their ATi modded dsdt that works? just so i can learn by example

Link to comment
Share on other sites

Well, i have to report that its working ....well sorta.

 

I have four resolutions I can choose and it detects all of my Video Ram now. However i am not getting ne video output from vga or hdmi connector. I spoke to JaS on irc.osx86.hu, however the boot files he made for me, made things worse the display did not shut off ne more but GFX didnt show up as 4350 ne more but res'es was still there. right now hacktosh is booted that is where I sent this msg from thru screen sharing on my emac. So if you have any questions for me just post msg here i read my email on daily/hourly basis.

 

Thanks

 

Tim

post-573071-1271789841_thumb.jpg

post-573071-1271789898_thumb.png

Link to comment
Share on other sites

i followed the instructions for where to place it from hack 13 in DSDTSE (in the PCI0 section).

 

I wound up spending all night getting my DSDT working. The ECS A780GM-A BIOS dumps horribly. If anyone else with this board needs a working DSDT, you can message me.

 

Anyways, if you look in IORegistryExplorer (part of Xcode), you'll find where to place the gfx0 code. For me it's at:

IOService:/AppleACPIPlatformExpert/PCI0@180000/AppleACPIPCI/PCE2@2/IOPCI2PCIBridge/display@0

Which places my DSDT code somewhere like:

PCI0/PCE2/GFX0

I'm pretty sure that PCI0/GFX0 is wrong (where DSDTSE tells you to put it). Retail Mac DSDT put onboard video at PCI0/P0P2/GFX0. PCE1 if you get the SLOT-1 display message on boot, and PCE2 if you get SLOT-2. Although, I used to get SLOT-2 on boot, but now it's SLOT-1 after using GFX0, so it's best to check IOReg.

 

Results: I can change my model string, so I know it's injecting it. I figured that I'd try to reduce the total VRAM to see if it was trying to use more memory than it knew what to do with, BUT changing the VRAM entries to "0x00, 0x00, 0x00, 0x10" (that should be 256M) does not work. It still shows "0x20000000" in IOReg. I'm not sure if I need to be using a different format than "0x00, 0x00, 0x00, 0x10", because it doesn't show up in IOReg that way. That will be my next test, trying to use Memory32Fixed or something like that, rather than Buffer.

 

I've been looking through retail DSDT dumps trying to figure out a fix. Found a bunch of them at ProjectOSX. If the DSDT doesn't work out, it's on the the binary driver :). I've always avoided learning ASM out of laziness, but I guess now I have a reason.

  • Like 1
Link to comment
Share on other sites

I've got SL 10.6.3 running on my GIGABYTE EP45-UD3R, and everything starts up fine using an ATI x1900 card. However, when I try to boot the computer with my GIGABYTE GV-R435OC, it stalls on the apple screen, and then gives me the "you need to restart you computer. etc etc" screen. Any ideas on this? I used the kext you provided in this thread, and am using Chameleon RC3 and PC EFI 10.6.

Link to comment
Share on other sites

i already did exactly that! i even wrote a kext

click here

 

@DIMAN0id thanks for fixing the dsdt thing, i just copied and pasted the original without the extra },

no wonder it didnt work. i will try it when i get the chance

 

 

I PM'd you about your link not opening the specific posting you referred to but I don't need you to reply because I searched through your postings and found the relevant one. Thanks.

Link to comment
Share on other sites

This is my DSDT file.

DSDT.zip

Thanks much DIMAN0id i will have a look and see if i can rig up a working injector into mine. Then i can finally use AsereBLN's bootloader......

 

 

I tried to get it working using DVI, but I can use VGA if I need to. I'm running Intel C2D. Any help would be very much appreciated, thanks!
i noticed no response really to my plea of why i have no video output could it be b/c of my dsdt file or something else i was told to change the framebuffer in chameleon. ;)

 

look, i posted a guide for how to get either DVI or VGA if you have a vanilla kernal. it on post 88 of this topic.

if you dont have a vanilla kernal then you will have a few anomalies to work out, and i cant help you. most likely you will need modified ATI kexts.

Link to comment
Share on other sites

UPDATE:

Ok, dsdt may work, but it is hard, and i dont like dsdt. what about adapting an efi string? there is a 48x0 string for snow leopard here (control + click and download linked file) http://www.rakov.net/HD48x0.plist . i am attempting to adapt it for 4350.

 

the annoying thing about ATI graphics on osx86, is that it has to have a rom reference in injector and various other confusing things, unlike nVidia......

Link to comment
Share on other sites

hmm, using any injector other than pcefi 10.6 graphics enabler and i get a kernal panic in ATIradeonX2000.kext

 

this includes efi and dsdt....

it is important to move to efi or dsdt rather than GraphicsEnabler, because graphicsenabler cannot be modified easily.

if i could get dsdt or efi string working then it would be possible to fix dual monitor mode etc and get more complete support.

 

i wonder if graphics enabler is changing pciroot option (1 or 0), or what its doing to my system that makes it work when other injectors dont.

here is an efistring version of the dsdt injector

it injects the same values as the DVI dsdt injector, so currently only DVI will work.

i dumped from ioreg to get the values and entries, and then narrowed the entries down

until only the equivalent of whats injected by the dsdt injector is included in the string

if i can get this basic version to work, i will expand the values to include those that

will enable dualmonitors etc

 

once i can get my system to work with an injector thats not GraphicsEnabler i can finally

begin to improve the injector (efistring) or the fix.kext to fix things like the greenapple, dualmonitors, etc etc

 

you still need the ATI4350.Fix.kext installed. but no other injectors are required. remember it may not work.

it may not work if you are using custom dsdt.

 

the zip attached includes everything nescessery to get the efistring working.

just open the files in the right order (open step1, then step2 etc) and follow the instructions.

4350.Efi.String.zip

Link to comment
Share on other sites

 Share

×
×
  • Create New...