Jump to content
  • Announcements

    • Allan

      Forum Rules   04/13/2018

      Hello folks! As some things are being fixed, we'll keep you updated. Per hour the Forum Rules don't have a dedicated "Tab", so here is the place that we have our Rules back. New Users Lounge > [READ] - InsanelyMac Forum Rules - The InsanelyMac Staff Team. 
Slice

QE problem on some Radeons investigations

31 posts in this topic

Recommended Posts

I begin new topic because I need new ideas and advices what to do.

I have Radeon Mobility 9000IGP (devID=58351002) with shared memory which is the main problem.

Chipset is RS300 (devID=58311002) integrated into the Radeon.

I have sources of some drivers and can read binaries of any others.

I also have many observations and I want to collect its in one place.

 

Existing drivers

AGPGart.kext. My own sources so I can change any what I want. Probably it works. Only with one settings I can enter GUI.

ATIRadeon8500.kext. Write DevID into info.plist. Patch internal DevID to work as 4c66 - approximatly the same card. Patch initialization for DISPLAY_ADDRESS because of shared memory. After the patch I can enter GUI with hardware OpenGL.

ATIRadeon8500GA.plugin. I have no sources and don't know it's protocol. How it works?

ATIRadeon8500GLdriver.bundle. It is a library for hardware OpenGL. Same problem - no any information about it.

ATILead.kext. In the driver I can launch any framebuffer and tune Radeon registers. Problem N1 is register F8. What I found. It is SCRATCH register used by BIOS to report to Radeon driver the size of video memory. OpenGL Extension Viewer read the value as OpenGL memory but System profiler shows other value. The register is used also in ATIRadeon8500.kext in procedure set_display_mode_and_vram. BUT. I can enter GUI only when I set F8=3Mb.

Why-y-y-? :)

The same for users of Radeon 200M

IONDRVSupport and IOGraphicsFamily. I have working sources and can influence on its. But I still not find a link to GA.plugin.

 

How they works?

0. With default system drivers I have fuzzy screen.

1. Without AGPGart I can enter GUI. All is fast except SCROLL. Any attempt to scroll a text in window lead to system hangs at all.

2. With AGPGart all is slo-o-ow. About 10 seconds on any graphics event. But SCROLL works!

3. With GA.plugin but without GL.bundle I can boot with any AGP settings and always slo-o-ow.

4. Without GA.plugin but with GL.bundle I can boot and all is fast but all OpenGL programs always crashes with log

Thread 0 Crashed:
 0   ...apple.ATIRadeon8500GLDriver	 0x0140c284 gldChoosePixelFormat + 1974
 1   GLEngine						   0x00606728 gliChoosePixelFormat + 78
 2   com.apple.CoreGraphics			 0x904093ef _CGXGLDisplayContextForDisplayDevice + 983

So

GA.plugin always delays my system in AGP mode and crash SCROLL in PCI mode.

GL.bundle always crashes at one place.

 

Other users observations.

1. Toadspit with the same chipset but with nVidia graphic card has GL crashes in AGP mode but no problem in PCI. AGP problem?!

2. Radeon200M users (PCIE graphics) can enter GUI with QE supported only with F8=3Mb as mine. And also have 10 seconds delays!!! So it is not AGP problem?!

3. Users of 4c66 that is the same Radeon but with dedicated memory and with Intel chipset report me fuzzy screen with any of my drivers. No good testings.

 

Other observation of problematic Radeons?

Advices, propositions?

 

Now I know that GL and GA works independent.

 

PARTIAL SUCCESS!!!

I rename 9700GL to 8500GL and try it.

Now OpenGL applications is no more crashes and I see spinning things in OpenGL test in XBench!!!

Radeon9000GL.zip

OpenGL_xBench.png

Share this post


Link to post
Share on other sites

GL crashes approximatly here

Thread 0 crashed with i386 Thread State:
eax: 0x0000001a	ebx: 0x00300000 ecx:0x00000001 edx: 0x00000000
edi: 0x00000000	esi: 0xbfffe8ac ebp:0xbfffe878 esp: 0xbfffe710
ss: 0x0000002f	efl: 0x00010246 eip:0x0140c284  cs: 0x00000027
ds: 0x0000002f	 es: 0x0000002f  fs:0x00000000  gs: 0x00000037

loc_7A58:			; CODE XREF: _gldChoosePixelFormat+747j
	mov	eax, ds:(off_299149 - 7303h)[ebx]
	mov	eax, [eax+4]
	mov	[ebp+var_13C], eax
	test	eax, eax
	jz	loc_7CE0

In register EBX I found my F8 value! Why Video_Memory_Size used as address?

Share this post


Link to post
Share on other sites
Hey Slice, would any trial with my Radeon 9250 be useful considering it's a PCI card ?

Can you tell your observation about graphics behaviuor with and witout any drivers?

I know your card and have your ioreg. Can you try RadeonPCI by Dong to get registers dump?

Any information can be useful.

Share this post


Link to post
Share on other sites

May be a problem is in IORegistry keys values?

For example

AAPL,vram-memory

this key used by IONDRVSupport to get VRAM address and memsize.

But in Real Mac I see

	| |	 | |   "vendor-id" = <00001002>
| |	 | |   "device-id" = <00004966>
| |	 | |   "AAPL,vram-memory" = <9c00000004000000>
| |	 | |   "VRAM,memsize" = <0400000004000000>   -- why twice?
| |	 | |   "address" = <9c008000>
| |	 +-o ATY,Radeon9000i_B  <class IONDRVDevice, registered, matched, active, busy 0, retain count 7>
| |	   | {
| |	   |   "vendor-id" = <00001002>
| |	   |   "device-id" = <00004966>
| |	   |   "AAPL,vram-memory" = <9800000004000000>
| |	   |   "VRAM,memsize" = <0000000004000000>
| |	   |   "address" = <9a008000>

I never see such values in HackOS

Share this post


Link to post
Share on other sites

hi there..

 

i just whant to say that thank you for all of you trying to make the x200 chipset work..!!

 

shame i dont know much about programming and stuff.. but know that a lot of people will thank you!!!

 

Best regards.. bruce

Share this post


Link to post
Share on other sites

Macintosh and Linux are both based off of unix. Linux has just gotten it's open source drivers for the 200m chipset to work with 3d acceleration. I don't know if linux and macs handle the drivers in a similar way, but you might want to look at the source code of the linux driver.

Share this post


Link to post
Share on other sites

If you can see from ATI Framebuffer project I already use Linux sources. May be later I found solution. Here I want to get your observation what is wrong in existing drivers.

Share this post


Link to post
Share on other sites

Slice, I plugged my ATI 9250 could you precise what registers range you want, and also what you call the drivers, if there's something more than the stock kexts.

Share this post


Link to post
Share on other sites
Slice, I plugged my ATI 9250 could you precise what registers range you want, and also what you call the drivers, if there's something more than the stock kexts.

To get registers you need to install RadeonPCI.kext and type in terminal

./RadeonDump -r 0,300

it is most interesting range. In my version of RadeonDump (RadeonDumpS) I make more compact output for registers.

About other drivers - first I want to know about stock drivers

ATIRadeon8500.kext - you need no patch

...GA.plugin

...GLDriver.bundle

If you get boot into desktop with the drivers then check please OpenGL works or no. OpenGL Extension Viewer, OpenMark, xBench etc.

Thank you in advance.

Share this post


Link to post
Share on other sites

if its any help i have a Xpress 1100 which doesnt ID properly (200M) even in windows Vista X64 (infact windows vista 32bit is the only OS that ID's correctly) that is in a laptop, i would really like to help, not only for my benefit but for anyone with this graphics processor (alot of asus laptops have them) i can boot and get to the desktop but no QE and i have to boot from the DVD with "rd=disk0s3 mach_kernel" because otherwise i get a artifacted image. i have been following your guide and it only partially works for my chipset.

 

profiler shows the Device ID as 5a62 and that i have 256MB of VRAM (even though Darwin only can find 16MB :S)

 

oh and im not some total noob i am newish to osx but i know my way around the terminal and kext editing (been doing alot of that to get the rest of my hardware working)

 

Thanks

 

Little Stevie

 

(P.S: im not requesting anything im offering in helping to get more support)

 

System Specs:

 

Celeron T530 1.6GHz 1MB L2 Cache

2GB DDR (system profiler cant pull the speed of it though)

SB400 southbridge

X1100 Graphics

80GB seagate SATA HDD 5400rpm

15.1" Widescreen

(i dont think audio wifi bluetooth need to be spec'd for you)

Share this post


Link to post
Share on other sites

Ok, Im back with the results.

 

I attached the 2 dumps, with and without drivers.

With drivers, anything that uses OpenGL will crash as soon as it tries (screensaver panel, Xbench, OpenGL extensions viewer). I joined the crashlog, I thought it might be useful.

 

Did this under 10.4.8, using 10.4.7 GFX kexts and OpenGL.framework

 

PS : Maybe you already knew but I noticed that ATIRadeon8500.kext is not unibin anymore in Leopard.

crashlogOGL9250PCI.txt

dump9250PCIdriver.txt

dump9250PCInodriver.txt

Share this post


Link to post
Share on other sites
Ok, Im back with the results.

 

I attached the 2 dumps, with and without drivers.

With drivers, anything that uses OpenGL will crash as soon as it tries (screensaver panel, Xbench, OpenGL extensions viewer). I joined the crashlog, I thought it might be useful.

 

Did this under 10.4.8, using 10.4.7 GFX kexts and OpenGL.framework

 

PS : Maybe you already knew but I noticed that ATIRadeon8500.kext is not unibin anymore in Leopard.

I read your reports. No answers but new questions.

You have exactly the same crash.log as me. Why?

1. You have no AGPGart so it is not problem of the AGP driver.

2. Your DevID is directly supported by Radeon8500 so it is not problem of incorrect patch.

3. You have dedicated memory while I have shared memory so it is not problem of addressing.

So I can suppose that the problem in ATIRadeonGLDriver or in OpenGL.framework.

Thread 0 Crashed:
0   ...apple.ATIRadeon8500GLDriver 	0x0ea75964 gldChoosePixelFormat + 1974
1   GLEngine					   	0x0e90670c gliChoosePixelFormat + 78

 

ATIRadeon8500.kext is PPC only in Leo because Apple didn't make a whole set of ATI drivers for R200 in Intel flavour. Significant part of PowerPC driver contains in EFI that inject it in registry

	| |	   |   "driver,AAPL,MacOS,PowerPC" = <6d74656a000000000f4154592c526f636b486f70706572320000000000000000000000000000
0000101806400000006112e446973706c61795f4475616c486561640000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000016e6472
67669646f01000000>

But it is useless for us.

Share this post


Link to post
Share on other sites

I found some contradiction. Don't know how to use the knowledge.

In X1000GA.plugin as well as 8500GA I see methods

_radeonGAInterface dd 0		; DATA XREF: _ATIRadeonX1000GAFactory+15Dr
	dd offset __QueryInterface
	dd offset __AddRef
	dd offset __Release
	dd offset __Probe
	dd offset __Start
	dd offset __Stop
	dd offset __Reset
	dd offset __GetCapabilities
	dd offset __Flush
	dd offset __Synchronize
	dd offset __GetBeamPosition
	dd offset __AllocateSurface
	dd offset __FreeSurface
	dd offset __LockSurface
	dd offset __UnlockSurface
	dd offset __SwapSurface
	dd offset __SetDestination
	dd offset __GetBlitter
	dd offset __WaitComplete
	dd offset __WaitSurface
	dd offset __SetSurface

But in IOGraphics project any version I see

typedef struct IOGraphicsAcceleratorInterfaceStruct {
IOReturn (*Reset) (void *thisPointer, IOOptionBits options);
IOReturn (*CopyCapabilities)   (void *thisPointer, FourCharCode select, CFTypeRef * capabilities);
#ifdef IOGA_COMPAT
IOReturn (*GetBlitProc)  (void *thisPointer, IOOptionBits options, IOBlitType type, IOBlitSourceDestType sourceDestType,
	 IOBlitProcPtr * blitProc );
#else
void * __gaInterfaceReserved0;
#endif
IOReturn (*Flush)  (void *thisPointer, IOOptionBits options);
#ifdef IOGA_COMPAT
IOReturn (*WaitForCompletion) (void *thisPointer, IOOptionBits options, IOBlitCompletionToken completionToken);
#else
void * __gaInterfaceReserved1;
#endif
IOReturn (*Synchronize) (void *thisPointer, UInt32 options, UInt32 x, UInt32 y, UInt32 w, UInt32 h );
IOReturn (*GetBeamPosition) (void *thisPointer, IOOptionBits options, SInt32 * position);
IOReturn (*AllocateSurface) (void *thisPointer, IOOptionBits options, IOBlitSurface * surface, void * cgsSurfaceID );
IOReturn (*FreeSurface) (void *thisPointer, IOOptionBits options, IOBlitSurface * surface);
IOReturn (*LockSurface) (void *thisPointer, IOOptionBits options, IOBlitSurface * surface, vm_address_t * address );
IOReturn (*UnlockSurface) (void *thisPointer, IOOptionBits options, IOBlitSurface * surface, IOOptionBits * swapFlags);
IOReturn (*SwapSurface) (void *thisPointer, IOOptionBits options, IOBlitSurface * surface, IOOptionBits * swapFlags);
IOReturn (*SetDestination) (void *thisPointer, IOOptionBits options, IOBlitSurface * surface );
IOReturn (*GetBlitter) (void *thisPointer, IOOptionBits options, IOBlitType type, IOBlitSourceType sourceType,
	 IOBlitterPtr * blitter );
IOReturn (*WaitComplete) (void *thisPointer, IOOptionBits options);

Almost the same but some differencies. Is it significant?

Share this post


Link to post
Share on other sites
I found in IOKitUser project by Apple some routings like GA.plugin. It is new chance for investigations.

 

Hi Slice,

I just returned from trip, I am posting results/errors of ATI 9800pro-i865g combo, I apologize if

this is redundant, just trying to give all info possible.

It is interesting that I have ATI Dev: 0x4e48, which is supposed to be native support in 9700.kext, yet nothing seems to work. With 9700GA plug I show QE and CI support, yet neither seem to function, with or without AGPGart.kext. Open GL fails to initialize and I will get blank black or white window. CI also gives same result. Also, with 9700GA plug and AGPGart loaded, I get very slow scrolling/window redraw even though I show QE/CI. Let me know if I can test anything.

Thanks again for huge effort,

rj

9800pro_i865g_logs.zip

Share this post


Link to post
Share on other sites

Thanks for testing. Really new results.

I see crash log is always different. Different reasons? Or different effect for a one reason?

Needs to think.

 

Aboud bad XBench UI result - no news. I think it is framebuffer problem and I am trying to make new one.

ATIMonitor crashes with the same reason

3   com.apple.CoreGraphics 	0x90326543 CGSNewRegionWithRect + 371
4   com.apple.CoreGraphics 	0x903d4283 bindDisplayMapping + 337
5   com.apple.CoreGraphics 	0x90325169 updateAllDisplayInfoAsNeeded + 193

It is allocating region to write into display. Typical task for framebuffer.

 

And DVD crash with

Binary Images Description:
0x1000 -   0x1acfff com.apple.DVDPlayer 4.6.5	/Applications/DVD Player.app/Contents/MacOS/DVD Player
0xc102000 -  0xc1a1fff ch.rafz.naegeli.christoph.xvid_codec 0.x.x	/Library/QuickTime/XviD_Codec-r58 (Intel).component/Contents/MacOS/XviD_Codec
0xc257000 -  0xc2c8fff com.DivXInc.DivXDecoder 6.2.5	/Library/QuickTime/DivX Decoder.component/Contents/MacOS/DivX Decoder
0xc2d6000 -  0xc375fff com.apple.QuickTimeImporters.component 7.4.5 (67)	/System/Library/QuickTime/QuickTimeImporters.component/Contents/MacOS/QuickTimeImporters
0xc399000 -  0xc4ebfff ch.rafz.naegeli.christoph.ff_avi_importer 1.0 (0.0)	/Library/QuickTime/AviImporter-r7 (Intel).component/Contents/MacOS/AviImporter
0xd38d000 -  0xd3e1fff com.apple.AppleVADriver 4.0.3	/System/Library/Extensions/AppleVADriver.bundle/Contents/MacOS/AppleVADriver

May be Xvid is not correct?

Share this post


Link to post
Share on other sites
Thanks for testing. Really new results.

I see crash log is always different. Different reasons? Or different effect for a one reason?

Needs to think.

 

Aboud bad XBench UI result - no news. I think it is framebuffer problem and I am trying to make new one.

ATIMonitor crashes with the same reason

3   com.apple.CoreGraphics	 0x90326543 CGSNewRegionWithRect + 371
  4   com.apple.CoreGraphics	 0x903d4283 bindDisplayMapping + 337
  5   com.apple.CoreGraphics	 0x90325169 updateAllDisplayInfoAsNeeded + 193

It is allocating region to write into display. Typical task for framebuffer.

 

And DVD crash with

Binary Images Description:
   0x1000 -   0x1acfff com.apple.DVDPlayer 4.6.5	/Applications/DVD Player.app/Contents/MacOS/DVD Player
0xc102000 -  0xc1a1fff ch.rafz.naegeli.christoph.xvid_codec 0.x.x	/Library/QuickTime/XviD_Codec-r58 (Intel).component/Contents/MacOS/XviD_Codec
0xc257000 -  0xc2c8fff com.DivXInc.DivXDecoder 6.2.5	/Library/QuickTime/DivX Decoder.component/Contents/MacOS/DivX Decoder
0xc2d6000 -  0xc375fff com.apple.QuickTimeImporters.component 7.4.5 (67)	/System/Library/QuickTime/QuickTimeImporters.component/Contents/MacOS/QuickTimeImporters
0xc399000 -  0xc4ebfff ch.rafz.naegeli.christoph.ff_avi_importer 1.0 (0.0)	/Library/QuickTime/AviImporter-r7 (Intel).component/Contents/MacOS/AviImporter
0xd38d000 -  0xd3e1fff com.apple.AppleVADriver 4.0.3	/System/Library/Extensions/AppleVADriver.bundle/Contents/MacOS/AppleVADriver

May be Xvid is not correct?

 

Hi Slice,

I was thinking about doing fresh install of 10.4.11 on this machine, for sake of consistency of logging each change to system, maybe I can test each item as it is added to machine and post results. Maybe useful info as I have supposed native support in 9700.kext.

What do you think?

Also, there are so many posts with different osx versions, maybe we should test with same version? I also have Jas 10.4.8, but I have not been able to locate any earlier versions i.e. 10.4.6 etc.

Thanks,

rj

Share this post


Link to post
Share on other sites
Hi Slice,

I was thinking about doing fresh install of 10.4.11 on this machine, for sake of consistency of logging each change to system, maybe I can test each item as it is added to machine and post results. Maybe useful info as I have supposed native support in 9700.kext.

What do you think?

Also, there are so many posts with different osx versions, maybe we should test with same version? I also have Jas 10.4.8, but I have not been able to locate any earlier versions i.e. 10.4.6 etc.

Thanks,

rj

Don't know about different versions. I found that kexts from 1.4.8 works for me but 1.4.9 - no.

And I have a report that OpenGL.framework from 10.4.6 may resolve some QE problem. Advice - use older framework even in new OS version. You can find it within old drivers packages proposed in the forum.

Share this post


Link to post
Share on other sites

Hi slice,

I have samsung laptop P29. with Mobility radeon 9000 IGP(devid 5835).

I had sucessfully installed 10.4.9(uphuck) and upgraded to 10.4.11

with using your ATILead, AGPGart and ATIRadeon.kext, I can boot into GUI, but it's really slow.

my shared memory settings is 128mb.

what should i do to enable QE or 3d Acceleration?

Thanks.

(Sorry for bad english)

Share this post


Link to post
Share on other sites
Hi slice,

I have samsung laptop P29. with Mobility radeon 9000 IGP(devid 5835).

I had sucessfully installed 10.4.9(uphuck) and upgraded to 10.4.11

with using your ATILead, AGPGart and ATIRadeon.kext, I can boot into GUI, but it's really slow.

my shared memory settings is 128mb.

what should i do to enable QE or 3d Acceleration?

Thanks.

(Sorry for bad english)

Wow! You have exactly the same laptop as me.

Till now I have no QE and I am trying to understand why. It is not big problem for me to make a patch to somewhat. But I need to know what is needed to be patching. I need new observations, informations and ideas.

 

You are happy to install 10.4.11, I didn't find distr installable for me except 10.4.6.

Share this post


Link to post
Share on other sites

A month no news here. Nobody knows how to investigate the problem.

 

I found that GA.plugin, as well as OpenGL, works in UserSpace and perform a connection to drivers in KernelSpace.

I don't understand how the system may works without it.

Without it system works in software QE mode writing graphics directly to VRAM. Without Accelerator driver such as ATIRadeon8500.kext.

Share this post


Link to post
Share on other sites

I begin to understand how GA.plugin works

arg_0		= dword	ptr  8	//this
arg_4		= dword	ptr  0Ch  //options
arg_8		= dword	ptr  10h  //*surface
arg_C		= dword	ptr  14h  //*address

	push	ebp
	mov	ebp, esp
	push	esi
	sub	esp, 34h
	mov	esi, [ebp+arg_8]  //*surface
	mov	eax, [esi+28h]	// interfaceRef=*IOBlitMemory
	mov	edx, 0E00002D8h   // kIOReturnNotReady
	test	eax, eax
	jz	short loc_16D8
	mov	eax, [eax+4]		//pixelFormat
	test	eax, eax
	jz	short loc_16E0
	mov	edx, [ebp+arg_C]   //*address
	mov	[edx], eax		// output parameter - pixelFormat
	xor	edx, edx		  // kIOReturnSuccess

Continue

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.

×