Jump to content

XRadeonFB


joblo10
 Share

71 posts in this topic

Recommended Posts

How do I run the setdisplay script

You will be using this utility if your video is scrambled.

 

Download the zip NOW to your Desktop and expand it. Put the setdisplay script in the Applications folder for safe keeping.

 

If you have a scrambled display, boot in safe mode (F8 followed by -s) and type:

mount -uw /
cd /Applications
./setdisplay

If you want to set a particular resolution and refresh rate, the format of the setdisplay command is:

setdisplay width height bits refreshrate

So if you want, for example, 1024x768x32 @60hz, you would type:

./setdisplay 1024 768 32 60

Link to comment
Share on other sites

joblo,

 

"I have not been able to get QE and CI to work with AGPGart, though OpenGL is still accelerated."

 

I'm using AGPGart2.0 + Callisto and I get QE (CI I cannot because i don't have hardware support for it). Actually using AGPGart2 is the only way to get QE for me.

 

PS: great work!

Link to comment
Share on other sites

You will be using this utility if your video is scrambled.

 

Download the zip NOW to your Desktop and expand it. Put the setdisplay script in the Applications folder for safe keeping.

 

If you have a scrambled display, boot in safe mode (F8 followed by -s) and type:

 

mount -uw /
cd /Applications
./setdisplay

 

Thanks, it worked but tells me it "cant set display (1011)" :thumbsdown_anim: I think because the file is set to 75 refreshrate, could I hex in 60 :angry:

Link to comment
Share on other sites

Thanks, it worked but tells me it "cant set display (1011)" :) I think because the file is set to 75 refreshrate, could I hex in 60 :blink:

 

The format of the command is "./setdisplay widht height bpp refreshrate".

 

So if you wnat for example 1024x768x32 @60hz, you would type

 

"./setdisplay 1024 768 32 60" withtout the "x"'s.

 

Hope this helps

Link to comment
Share on other sites

The format of the command is "./setdisplay widht height bpp refreshrate".

 

So if you wnat for example 1024x768x32 @60hz, you would type

 

"./setdisplay 1024 768 32 60" withtout the "x"'s.

 

Hope this helps

 

Thank you :thumbsdown_anim: Keep us updated on the new forum :D

 

Edit: It still says "Cannot get displays (1011)":2cents:

Link to comment
Share on other sites

The format of the command is "./setdisplay widht height bpp refreshrate".

 

So if you wnat for example 1024x768x32 @60hz, you would type

 

"./setdisplay 1024 768 32 60" withtout the "x"'s.

Where was this previously explained? I saw nothing posted and no instruction in the zip file.

 

I'll add the info to my posting above for posterity sake.

Link to comment
Share on other sites

Thanks for considering posterity :(

Most newbies don't know how to search. And most don't know how to read. I want anyone who enters this forum in the future and does manage to search and find my posting to have the complete command rather than forgetting to read a few more postings below it to find it. That's what I mean by "posterity".

Link to comment
Share on other sites

Most newbies don't know how to search. And most don't know how to read. I want anyone who enters this forum in the future and does manage to search and find my posting to have the complete command rather than forgetting to read a few more postings below it to find it. That's what I mean by "posterity".

 

I know what you meant, I was just poking fun at your thoroughness :D Thanks for keeping watch over us :thumbsdown_anim:

Link to comment
Share on other sites

Guest goodtime

Great work. I will try testing it on a VGA monitor from my Laptop. Looking forward to future releases. ATI 9000 Mobility user.

 

GT

Link to comment
Share on other sites

  • 1 month later...
  • 6 months later...
  • 7 months later...
  • 3 weeks later...

based on IOGraphics-191.5.tar.gz archive from Darwin

 

interesting fact was found from IONDRVFramebuffer.cpp:

 

IONDRVFramebuffer is no longer manage graphic card framebuffer directly,

instead it forwarding all requests/messages to appropriate display driver

 

for example IONDRVFramebuffer::setGammaTable

IOReturn IONDRVFramebuffer::setGammaTable( UInt32 channelCount, UInt32 dataCount, UInt32 dataWidth, void * data )

 

is sending cursor information to packager _doControl

IOReturn IONDRVFramebuffer::_doControl( IONDRVFramebuffer * self, UInt32 code, void * params )

 

which is sending command kIONDRVControlCommand type of kIONDRVImmediateIOCommandKind

to dispatcher doDriverIO

IOReturn IONDRVFramebuffer::doDriverIO( UInt32 commandID, void * contents, UInt32 commandCode, UInt32 commandKind )

 

which is retrieving display driver from NUB

ndrv = IOBootNDRV::fromRegistryEntry( nub );

and forwarding command to it's own dispatcher with same name doDriverIO

err = ndrv->doDriverIO( commandID, contents, commandCode, commandKind );

 

ndrv itself is a member of class IONDRVFramebuffer

class IONDRV * ndrv;

 

and, the only method ndrv->doDriverIO (IONDRV::doDriverIO) was found, is in

class IOBootNDRV : public IONDRV (inherited from IONDRV), but virtual one:

 

IOReturn IOBootNDRV::doDriverIO( UInt32 commandID, void * contents,

UInt32 commandCode, UInt32 commandKind )

 

which is doing actual command dispatching (depends on control or status)

 

switch (commandCode)

{

case kIONDRVInitializeCommand:

case kIONDRVOpenCommand:

ret = kIOReturnSuccess;

break;

 

case kIONDRVControlCommand:

ret = doControl( pb->code, pb->params );

break;

case kIONDRVStatusCommand:

ret = doStatus( pb->code, pb->params );

break;

 

default:

ret = kIOReturnUnsupported;

break;

}

 

which is sent then forward to doControl

IOReturn IOBootNDRV::doControl( UInt32 code, void * params )

 

which is handing orders (commands), example setting Gamma:

 

switch (code)

{

case cscSetEntries:

case cscSetGamma:

ret = kIOReturnSuccess;

break;

 

default:

ret = kIOReturnUnsupported;

break;

}

 

return (ret);

 

another dispatcher was found in same archive in another source IONDRV.cpp:

 

inside class IOPEFNDRV : public IONDRV

 

IOReturn IOPEFNDRV::doDriverIO( UInt32 commandID, void * contents,

UInt32 commandCode, UInt32 commandKind )

 

but following one does almost nothing with commands:

 

switch (commandCode)

{

case kIONDRVReplaceCommand:

case kIONDRVInitializeCommand:

err = _IONDRVLibrariesInitialize( (IOService *) contents );

if (kIOReturnSuccess != err)

break;

/* fall thru */

 

case kIONDRVFinalizeCommand:

case kIONDRVSupersededCommand:

initInfo.refNum = 0xffff & ((UInt32) this);

MAKE_REG_ENTRY((&initInfo.deviceEntry), contents)

contents = &initInfo;

break;

 

case kIONDRVControlCommand:

case kIONDRVStatusCommand:

case kIONDRVOpenCommand:

case kIONDRVCloseCommand:

case kIONDRVReadCommand:

case kIONDRVWriteCommand:

case kIONDRVKillIOCommand:

 

pb = (CntrlParam *) contents;

pb->qLink = 0;

pb->ioCRefNum = 0xffff & ((UInt32) this);

break;

}

 

most of the commands seems to be just ignored

 

my question is:

 

if class IOATYNDRV(or some other name) : public IONDRV inheritance with proper methods implementation, is all what we need for framebuffer functionality on osx86 with ATI chipset?

Link to comment
Share on other sites

  • 1 month later...
not exactly dead,

ole2 and slice are working on it now

How is the IOATINDRV class going on now? I'm also looking into this and try to find a way to implement something like CallistoFB for my ATI X1400 mobility, but still struggling in understanding the source code yet.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...