Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

Andrew A

macrumors newbie
Original poster
Dec 10, 2020
9
2
Seattle
Short version: Is it possible to get better than 1024x768 resolution from a stock G4 Cube booted into 10.4, with no display attached and connecting via screen sharing? (I can get 1680x1050 when booted into 10.5, and supposedly the system is capable of 1920x1200.)


Detailed version:

I have a 450 MHz Cube, mostly stock (I've replaced the HDD with a 120 GB SSD). Base video card: Rage 128 Pro. I have multiple boot partitions with different versions of Mac OS.

When running it headless booted into fully updated 10.4 Tiger, and connecting via Screen Sharing, the best screen resolution I can get is 1024x768. Connecting a 4k dummy HDMI plug (via ADC-to-DVI + DVI-to-HDMI adapters) doesn't help.

I can get a higher resolution — 1280x1024 — when using an iPad as the display (via adding an HDMI-to-USB C capture dongle + the Orion iPad app) and the screen sharing session benefits from the higher resolution simultaneously. I was thinking it was because the capture dongle is getting power from the iPad, whereas I don't know if the dummy plug is getting power from the Cube. (I don't have a reasonable DVI much less ADC display to test with.)

Meanwhile, if I boot the Cube into 10.5 Leopard, I can get *much* better: 1680x1050. And it doesn't require either the capture dongle or the HDMI dummy plug. (Even that is less than the 1920x1200 that this system is supposedly capable of, but I'm pretty satisfied with it.)

Anyone happen to have a solution for this, or a definitive answer that it doesn't work in 10.4, and possibly even a broader explanation of why not? (Tried searching the forums but if it's been discussed there I couldn't find it.) I did give DisplayConfigX a quick try (an old version that runs on that machine), but I didn't see anything helpful (possibly partly because I didn't find docs for that version), and I didn't know what manual values to try. (Somehow I still managed to mess up the video such that when I logged in, my remote display was very corrupted; ended up having to reinstall 10.4 on the Cube to recover. So I'm a bit leery to try it again, though I probably would given a solid enough lead.)

Thanks!
 
  • Like
Reactions: micahgartman
Don't you have a HDMI TV or display you can connect?

What's the EDID of the HDMI plug?

Can you run AllRez in 10.4 and 10.5 and we can compare the results?
https://github.com/joevt/AllRez
I don't have a display with an HDMI input, and my (4k) TV claims there's no signal when the cube is connected and booted up. (A newer machine with its own HDMI port works fine, so it's not the TV or cable. And the DVI-to-HDMI adaptor works on a Mac mini that I'm running headless, so it wouldn't seem to be the issue either.)

(I hadn't tried any of this before today as the goal is to run this headless for the most part, and the iPad with HDMI capture was working fine for my install/setup purposes.)

I have both 2k and 4k HDMI dummy plugs. The cube doesn't seem to see either one of them: they don't get listed by system_profiler. (A 2014 Intel Mac mini *does* see them both.)

I'm not set up to build AllRez for 10.4; exploring that is probably not going to be a project for today, but I very much appreciate the pointer and do intend to attempt it when I have some more time.

I'm not sure if you were interested in the raw EDID or what, but here's the one for the 4k dummy plug (retrieved via the aforementioned Intel mac Mini):

0x00ffffffffffff0061a49a0000000000271b0103803c22780acf74a3574cb02309484c2108008180810061409500a9c0b300a940d100023a801871382d40582c4500e00e1100001e3c414096b00824701e0a4804d0c22100001e000000fc004d692054560a20202020202020000000fd0031500f8c3c000a20202020202001d702033b714f5f0304056490121314162021221f3f29090707111750510700830100006e030c003000f87620808001020304e50e60616566e3060501e26800a0a0402e603020360080902100001e565e00a0a0a029503020360080682100001e662156aa51001e30468f330055c01000001e0000000000000000000000000000f2

Thanks for the response.
 
You can set the resolution via Terminal:

Thanks for the pointer, but looks like the various options listed there aren't available for 10.4. (They possibly all require at least 10.6 for some specific CG API, per an issue filed in the cscreen github.)
 
  • Like
Reactions: micahgartman
I'm not set up to build AllRez for 10.4; exploring that is probably not going to be a project for today, but I very much appreciate the pointer and do intend to attempt it when I have some more time.
I think the v1.2.1 release has a version that works with 10.4 ppc?
https://github.com/joevt/AllRez/releases


I'm not sure if you were interested in the raw EDID or what, but here's the one for the 4k dummy plug (retrieved via the aforementioned Intel mac Mini):

0x00ffffffffffff0061a49a0000000000271b0103803c22780acf74a3574cb02309484c2108008180810061409500a9c0b300a940d100023a801871382d40582c4500e00e1100001e3c414096b00824701e0a4804d0c22100001e000000fc004d692054560a20202020202020000000fd0031500f8c3c000a20202020202001d702033b714f5f0304056490121314162021221f3f29090707111750510700830100006e030c003000f87620808001020304e50e60616566e3060501e26800a0a0402e603020360080902100001e565e00a0a0a029503020360080682100001e662156aa51001e30468f330055c01000001e0000000000000000000000000000f2
The EDID has serval modes. I suppose any mode < 165 MHz should be compatible with single link DVI (digital, not analog). I don't know the max pixel clock supported by your GPU. The AllRez output might have some related info.

Code:
edid-decode <<< '00ffffffffffff0061a49a0000000000271b0103803c22780acf74a3574cb02309484c2108008180810061409500a9c0b300a940d100023a801871382d40582c4500e00e1100001e3c414096b00824701e0a4804d0c22100001e000000fc004d692054560a20202020202020000000fd0031500f8c3c000a20202020202001d702033b714f5f0304056490121314162021221f3f29090707111750510700830100006e030c003000f87620808001020304e50e60616566e3060501e26800a0a0402e603020360080902100001e565e00a0a0a029503020360080682100001e662156aa51001e30468f330055c01000001e0000000000000000000000000000f2'
edid-decode (hex):

----------------

Block 0, Base EDID:
  EDID Structure Version & Revision: 1.3
  Vendor & Product Identification:
    Manufacturer: XMD
    Model: 154
    Made in: week 39 of 2017
  Basic Display Parameters & Features:
    Digital display
    Maximum image size: 60 cm x 34 cm
    Gamma: 2.20
    RGB color display
    First detailed timing is the preferred timing
  Color Characteristics:
    Red  : 0.6396, 0.3398
    Green: 0.2998, 0.6904
    Blue : 0.1376, 0.0380
    White: 0.2822, 0.2968
  Established Timings I & II:
    DMT 0x04:   640x480    59.940476 Hz   4:3     31.469 kHz     25.175000 MHz
    DMT 0x09:   800x600    60.316541 Hz   4:3     37.879 kHz     40.000000 MHz
    DMT 0x10:  1024x768    60.003840 Hz   4:3     48.363 kHz     65.000000 MHz
  Standard Timings:
    DMT 0x23:  1280x1024   60.019740 Hz   5:4     63.981 kHz    108.000000 MHz
    DMT 0x1c:  1280x800    59.810326 Hz  16:10    49.702 kHz     83.500000 MHz
    DMT 0x10:  1024x768    60.003840 Hz   4:3     48.363 kHz     65.000000 MHz
    DMT 0x2f:  1440x900    59.887445 Hz  16:10    55.935 kHz    106.500000 MHz
    DMT 0x53:  1600x900    60.000000 Hz  16:9     60.000 kHz    108.000000 MHz (RB)
    DMT 0x3a:  1680x1050   59.954250 Hz  16:10    65.290 kHz    146.250000 MHz
    DMT 0x33:  1600x1200   60.000000 Hz   4:3     75.000 kHz    162.000000 MHz
    DMT 0x45:  1920x1200   59.884600 Hz  16:10    74.556 kHz    193.250000 MHz
  Detailed Timing Descriptors:
    DTD 1:  1920x1080   60.000000 Hz  16:9     67.500 kHz    148.500000 MHz (480 mm x 270 mm)
                 Hfront   88 Hsync  44 Hback  148 Hpol P
                 Vfront    4 Vsync   5 Vback   36 Vpol P
    DTD 2:  2880x1800   30.019342 Hz  16:10    55.116 kHz    167.000000 MHz (720 mm x 450 mm)
                 Hfront   30 Hsync  10 Hback  110 Hpol P
                 Vfront   20 Vsync   8 Vback    8 Vpol P
    Display Product Name: 'Mi TV'
    Display Range Limits:
      Monitor ranges (GTF): 49-80 Hz V, 15-140 kHz H, max dotclock 600 MHz
  Extension blocks: 1
Checksum: 0xd7

----------------

Block 1, CTA-861 Extension Block:
  Revision: 3
  Basic audio support
  Supports YCbCr 4:4:4
  Supports YCbCr 4:2:2
  Native detailed modes: 1
  Video Data Block:
    VIC  95:  3840x2160   30.000000 Hz  16:9     67.500 kHz    297.000000 MHz
    VIC   3:   720x480    59.940060 Hz  16:9     31.469 kHz     27.000000 MHz
    VIC   4:  1280x720    60.000000 Hz  16:9     45.000 kHz     74.250000 MHz
    VIC   5:  1920x1080i  60.000000 Hz  16:9     33.750 kHz     74.250000 MHz
    VIC 100:  4096x2160   30.000000 Hz 256:135   67.500 kHz    297.000000 MHz
    VIC  16:  1920x1080   60.000000 Hz  16:9     67.500 kHz    148.500000 MHz (native)
    VIC  18:   720x576    50.000000 Hz  16:9     31.250 kHz     27.000000 MHz
    VIC  19:  1280x720    50.000000 Hz  16:9     37.500 kHz     74.250000 MHz
    VIC  20:  1920x1080i  50.000000 Hz  16:9     28.125 kHz     74.250000 MHz
    VIC  22:  1440x576i   50.000000 Hz  16:9     15.625 kHz     27.000000 MHz
    VIC  32:  1920x1080   24.000000 Hz  16:9     27.000 kHz     74.250000 MHz
    VIC  33:  1920x1080   25.000000 Hz  16:9     28.125 kHz     74.250000 MHz
    VIC  34:  1920x1080   30.000000 Hz  16:9     33.750 kHz     74.250000 MHz
    VIC  31:  1920x1080   50.000000 Hz  16:9     56.250 kHz    148.500000 MHz
    VIC  63:  1920x1080  120.000000 Hz  16:9    135.000 kHz    297.000000 MHz
  Audio Data Block:
    Linear PCM:
      Max channels: 2
      Supported sample rates (kHz): 48 44.1 32
      Supported sample sizes (bits): 24 20 16
    AC-3:
      Max channels: 2
      Supported sample rates (kHz): 96 48 44.1 32
      Maximum bit rate: 640 kb/s
    Enhanced AC-3 (DD+):
      Max channels: 2
      Supported sample rates (kHz): 48 44.1 32
  Speaker Allocation Data Block:
    FL/FR - Front Left/Right
  Vendor-Specific Data Block (HDMI), OUI 00-0C-03:
    Source physical address: 3.0.0.0
    Supports_AI
    DC_48bit
    DC_36bit
    DC_30bit
    DC_Y444
    Maximum TMDS clock: 590 MHz
    Extended HDMI video details:
      3D present
      HDMI VICs:
        HDMI VIC 1:  3840x2160   30.000000 Hz  16:9     67.500 kHz    297.000000 MHz
        HDMI VIC 2:  3840x2160   25.000000 Hz  16:9     56.250 kHz    297.000000 MHz
        HDMI VIC 3:  3840x2160   24.000000 Hz  16:9     54.000 kHz    297.000000 MHz
        HDMI VIC 4:  4096x2160   24.000000 Hz 256:135   54.000 kHz    297.000000 MHz
  YCbCr 4:2:0 Video Data Block:
    VIC  96:  3840x2160   50.000000 Hz  16:9    112.500 kHz    594.000000 MHz
    VIC  97:  3840x2160   60.000000 Hz  16:9    135.000 kHz    594.000000 MHz
    VIC 101:  4096x2160   50.000000 Hz 256:135  112.500 kHz    594.000000 MHz
    VIC 102:  4096x2160   60.000000 Hz 256:135  135.000 kHz    594.000000 MHz
  HDR Static Metadata Data Block:
    Electro optical transfer functions:
      Traditional gamma - SDR luminance range
      SMPTE ST2084
    Supported static metadata descriptors:
      Static metadata type 1
  Detailed Timing Descriptors:
    DTD 3:  2560x1600   59.971589 Hz  16:10    98.713 kHz    268.500000 MHz (640 mm x 400 mm)
                 Hfront   48 Hsync  32 Hback   80 Hpol P
                 Vfront    3 Vsync   6 Vback   37 Vpol P
    DTD 4:  2560x1440   59.950550 Hz  16:9     88.787 kHz    241.500000 MHz (640 mm x 360 mm)
                 Hfront   48 Hsync  32 Hback   80 Hpol P
                 Vfront    3 Vsync   6 Vback   32 Vpol P
    DTD 5:  1366x768    59.789541 Hz 683:384   47.712 kHz     85.500000 MHz (341 mm x 192 mm)
                 Hfront   70 Hsync 143 Hback  213 Hpol P
                 Vfront    3 Vsync   3 Vback   24 Vpol P
Checksum: 0xf2  Unused space in Extension Block: 14 bytes
 
I have noticed that one of my G5’s does this as well, when running Tiger.

I leave a DVI->VGA adaptor plugged into it to get higher resolutions when running headless.
 
  • Like
Reactions: micahgartman
I salvaged and repaired a logic board from a smashed Cube, and it can boot/run with basically nothing more than the CPU plugged in. It can net boot 10.4 and I can VNC into it even though it has no graphics card. iirc, the resolution I get is 1024x768 and I don't think I could change it in System Preferences.

I'm curious if any of these methods discussed would still work to increase the resolution in this case.
 
I have noticed that one of my G5’s does this as well, when running Tiger.

I leave a DVI->VGA adaptor plugged into it to get higher resolutions when running headless.
Honestly I was fixated on the HDMI dummy plug, and the possibility of a DVI->VGA hadn't occurred to me. But to extend that thought, the Cube has a VGA port, and I see there VGA dummy plugs exist, claiming to enable 1080p resolution, so I've ordered one that should arrive later this week. Thanks for the thought!
 
I think the v1.2.1 release has a version that works with 10.4 ppc?
https://github.com/joevt/AllRez/releases

And indeed it does; I had missed that there were built binaries there. Thanks!

I'm including the output below, HOWEVER: I've now ordered a dummy VGA plug that claims 1080p support (didn't previously occur to me that VGA dummy plugs were a thing). That should arrive in a few days, and if it works it there's no need to drag you or anyone else through unnecessary efforts.


But now that I have the AllRez output it seems annoying to withhold it, so I'm including it below, should anyone want to take a look. The immediately/obviously relevant difference between the two is that 10.4.11's CGDisplayAvailableModes has 10 monitor modes (of 1x1, 800x600, and 1024x768) whereas 10.5.8's has 16 modes: the same ones as 10.4.11, plus some 1280x1024 and 1680x1050 modes. (All at 60 Hz.)

Also 10.4 reports a monitor size of 361.199 x 270.899 mm, whereas 10.5 reports a monitor size of 592.593 x 370.37 mm.

(I checked 10.4 and 10.5 both with the HDMI dummy plug and without anything connected to the computer's video ports. I can post the latter as well if anyone is interested, but the only differences are some object IDs: power management private data in the case of 10.4, and a CGColorSpace object and IOFrameBuffer ID in the case of 10.5.)

Thanks again. I'll update either way once I try the VGA dummy plug.


10.4.11
Code:
AllRez ppc on Mac OS X 10.4.11 (Darwin 8.11.0 ppc) built on May 9 2023 at 01:06:29 using SDK 10.6.0
Mac OS X 10.5 is required for CGDisplayRotation.
Mac OS X 10.5 is required for CGDisplayCopyColorSpace.
Mac OS X 10.5 is required for DisplayServicesGetBrightness.
Mac OS X 10.5 is required for DisplayServicesSetBrightness.
Mac OS X 10.6 is required for CGDisplayCopyDisplayMode.
Mac OS X 10.6 is required for CGDisplayCopyAllDisplayModes.
OS X 10.8 SDK is required for kCGDisplayShowDuplicateLowResolutionModes.
OS X 10.11 SDK is required for CGSEnableHDR.
OS X 10.11 SDK is required for CGSIsHDREnabled.
OS X 10.11 SDK is required for CGSIsHDRSupported.
macOS 11 SDK is required for SLSDisplaySetHDRModeEnabled.
macOS 11 SDK is required for SLSDisplayIsHDRModeEnabled.
macOS 11 SDK is required for SLSDisplaySupportsHDRMode.
macOS 12 SDK is required for SLSIsDisplayModeVRR.
macOS 12 SDK is required for SLSIsDisplayModeProMotion.
macOS 12 SDK is required for SLSGetDisplayModeMinRefreshRate.


1 Online Monitors found
Main display: 0x41dc9d00
-----------------------------------------------------
DISPLAYS = {
    Monitor[0] = {
        modeAlias = 0;
        DisplayID = 0x41dc9d00;
        PrimaryID = 0x41dc9d00;
        MirrorsID = 0x0;
        vendorNumber = 0x756e6b6e;
        modelNumber = 0x76697274;
        serialNumber = 0;
        unitNumber = 0;
        IOService = 0x0;
        Main = true;
        Active = true;
        Online = true;
        Asleep = false;
        Stereo = false;
        Builtin = true;
        Quartz Extreme = false;
        InMirrorSet = false;
        InHWMirrorSet = false;
        AlwaysInMirrorSet = false;
        Bounds (l,t,w,h) = { 0, 0, 1024, 768 };
        Size = 361.199 x 270.899 mm;
    }, // Monitor[0]
}; // DISPLAYS
-----------------------------------------------------
IOSERVICE = {
    Monitor[0]:  = {
        (IORegistryEntryGetChildIterator  result:?0x10000003)
        IOFramebuffer 0x0 = {
        }; // IOFramebuffer


        IOFramebufferOpen = {
        }; // IOFramebufferOpen
    }, // Monitor[0]:


    IOFramebuffer: /Core99PE/pci@f0000000/AppleMacRiscAGP/ATY,Rage128Pd@10/.Display_Rage128 = {
        IOFramebuffer 0x1f03 = {
            IOFramebuffer properties (unparsed) = {type = fixed-mutable, count = 15, capacity = 15, pairs = (
                0 : Power Management protected data = { theNumberOfPowerStates = 0, aggressiveness = 0, myCurrentState = 0, parentsCurrentPowerFlags = 00000002, maxCapability = 0 }
                1 : driver,AAPL,MacOS,PowerPC = {length = 128, capacity = 128, bytes = 0x6d74656a000000000d4154592c526167 ... 7669646f01000000}
                5 : IOAccelTypes = IOService:/Core99PE/pci@f0000000/AppleMacRiscAGP/ATY,Rage128Pd@10/ATIRage128
                8 : CFBundleIdentifier = com.apple.iokit.IONDRVSupport
                9 : IOClass = IONDRVFramebuffer
                10 : IONameMatched = display
                13 : IOProbeScore = {value = +20000, type = kCFNumberSInt32Type}
                14 : Power Management private data = { this object = 0181b400, driverDesire = 0, deviceDesire = 0, ourDesiredPowerState = 0, previousRequest = 0 }
                15 : IOMatchCategory = IOFramebuffer
                16 : IONameMatch = display
                17 : IONDRVFramebufferGeneration = {length = 8, capacity = 8, bytes = 0x0000000100000001}
                18 : IOAccelIndex = {value = +0, type = kCFNumberSInt32Type}
                19 : IOAccelRevision = {value = +2, type = kCFNumberSInt32Type}
                20 : IOCFPlugInTypes = {type = fixed-mutable, count = 1, capacity = 1, pairs = (
                2 : ACCF0000-0000-0000-0000-000a2789904e = ATIRage128GA.plugin
            )}
                21 : IOProviderClass = IOPCIDevice
            )}; // IOFramebuffer properties (unparsed)
        }; // IOFramebuffer


        IOFramebufferOpen = {
        }; // IOFramebufferOpen
    }, // IOFramebuffer: /Core99PE/pci@f0000000/AppleMacRiscAGP/ATY,Rage128Pd@10/.Display_Rage128


}; // IOSERVICE
-----------------------------------------------------
CURRENT MODE = {
    Monitor[0] = {
        current mode by CGSGetCurrentDisplayMode (private) = 9 = { 9: id:0x0000.000 1024x768@0.000Hz 60Hz (dens=√∏) pixels:√∏x√∏ resolution:72x72 32bpp 8bpc 3cpp rowbytes:4096 IOFlags:() flags:(Valid,Default,BuiltIn) depthFormat:4 encoding:--------RRRRRRRRGGGGGGGGBBBBBBBB refreshRate.unk0.unk1:00000000.0000.00000000 unknown20:?0x7952525200000001 unknown21:?0x84003c0000 unknown22:?0x40300000000 (?0 bytes) };
        current mode by CGDisplayCurrentMode (deprecated)      = { 9: id:√∏ 1024x768@60.000Hz 60Hz (dens=√∏) pixels:√∏x√∏ resolution:√∏x√∏ 32bpp 8bpc 3cpp rowbytes:4096 IOFlags:(Valid,Safe,BuiltIn) flags:(gui usable,hw safe,√∏,√∏,√∏,√∏,√∏) depthFormat:√∏ encoding:√∏ };
        current mode info by CGDisplay* (deprecated)           = { 1024x768 32bpp 8bpc 3cpp rowbytes:4096 };
    }, // Monitor[0]
}; // CURRENT MODE
-----------------------------------------------------
ALL MODES = {
    Monitor[0] = {
        CGDisplayAvailableModes (deprecated) (10 modes) = {
            { 0: id:√∏ 1x1@60.000Hz 60Hz (dens=√∏) pixels:√∏x√∏ resolution:√∏x√∏ 8bpp 2bpc 3cpp rowbytes:256 IOFlags:(Valid,Safe,Default) flags:(hw safe,√∏,√∏,√∏,√∏,√∏) depthFormat:√∏ encoding:√∏ },
            { 1: id:√∏ 1x1@60.000Hz 60Hz (dens=√∏) pixels:√∏x√∏ resolution:√∏x√∏ 16bpp 5bpc 3cpp rowbytes:256 IOFlags:(Valid,Safe,Default) flags:(hw safe,√∏,√∏,√∏,√∏,√∏) depthFormat:√∏ encoding:√∏ },
            { 2: id:√∏ 1x1@60.000Hz 60Hz (dens=√∏) pixels:√∏x√∏ resolution:√∏x√∏ 32bpp 8bpc 3cpp rowbytes:256 IOFlags:(Valid,Safe,Default) flags:(hw safe,√∏,√∏,√∏,√∏,√∏) depthFormat:√∏ encoding:√∏ },
            { 3: id:√∏ 800x600@60.000Hz 60Hz (dens=√∏) pixels:√∏x√∏ resolution:√∏x√∏ 8bpp 2bpc 3cpp rowbytes:832 IOFlags:(Valid,Safe,BuiltIn) flags:(gui usable,hw safe,√∏,√∏,√∏,√∏,√∏) depthFormat:√∏ encoding:√∏ },
            { 4: id:√∏ 800x600@60.000Hz 60Hz (dens=√∏) pixels:√∏x√∏ resolution:√∏x√∏ 16bpp 5bpc 3cpp rowbytes:1664 IOFlags:(Valid,Safe,Default,BuiltIn) flags:(gui usable,hw safe,√∏,√∏,√∏,√∏,√∏) depthFormat:√∏ encoding:√∏ },
            { 5: id:√∏ 800x600@60.000Hz 60Hz (dens=√∏) pixels:√∏x√∏ resolution:√∏x√∏ 32bpp 8bpc 3cpp rowbytes:3328 IOFlags:(Valid,Safe,BuiltIn) flags:(gui usable,hw safe,√∏,√∏,√∏,√∏,√∏) depthFormat:√∏ encoding:√∏ },
            { 6: id:√∏ 1024x768@60.000Hz 60Hz (dens=√∏) pixels:√∏x√∏ resolution:√∏x√∏ 8bpp 2bpc 3cpp rowbytes:1088 IOFlags:(Valid,Safe,BuiltIn) flags:(gui usable,hw safe,√∏,√∏,√∏,√∏,√∏) depthFormat:√∏ encoding:√∏ },
            { 7: id:√∏ 1024x768@60.000Hz 60Hz (dens=√∏) pixels:√∏x√∏ resolution:√∏x√∏ 16bpp 5bpc 3cpp rowbytes:2176 IOFlags:(Valid,Safe,BuiltIn) flags:(gui usable,hw safe,√∏,√∏,√∏,√∏,√∏) depthFormat:√∏ encoding:√∏ },
            { 8: id:√∏ 1024x768@60.000Hz 60Hz (dens=√∏) pixels:√∏x√∏ resolution:√∏x√∏ 32bpp 8bpc 3cpp rowbytes:4352 IOFlags:(Valid,Safe,BuiltIn) flags:(gui usable,hw safe,√∏,√∏,√∏,√∏,√∏) depthFormat:√∏ encoding:√∏ },
            { 9: id:√∏ 1024x768@60.000Hz 60Hz (dens=√∏) pixels:√∏x√∏ resolution:√∏x√∏ 32bpp 8bpc 3cpp rowbytes:4096 IOFlags:(Valid,Safe,BuiltIn) flags:(gui usable,hw safe,√∏,√∏,√∏,√∏,√∏) depthFormat:√∏ encoding:√∏ },
        }; // CGDisplayAvailableModes
        CGSGetDisplayModeDescriptionOfLength (10 modes) = {
            { 0: id:0x0000.000 1x1@0.000Hz 60Hz (dens=√∏) pixels:√∏x√∏ resolution:72x72 8bpp 2bpc 3cpp rowbytes:256 IOFlags:() flags:(Default,¬øE<<28) depthFormat:2 encoding:PPPPPPPP refreshRate.unk0.unk1:00000000.0000.00000000 unknown20:?0x1 unknown21:?0x84003c0000 unknown22:?0x700000000 (?0 bytes) },
            { 1: id:0x0000.000 1x1@0.000Hz 60Hz (dens=√∏) pixels:√∏x√∏ resolution:72x72 16bpp 5bpc 3cpp rowbytes:256 IOFlags:() flags:(Default,¬øE<<28) depthFormat:3 encoding:-RRRRRGGGGGBBBBB refreshRate.unk0.unk1:00000000.0000.00000000 unknown20:?0x42424200000001 unknown21:?0x84003c0000 unknown22:?0x700000000 (?0 bytes) },
            { 2: id:0x0000.000 1x1@0.000Hz 60Hz (dens=√∏) pixels:√∏x√∏ resolution:72x72 32bpp 8bpc 3cpp rowbytes:256 IOFlags:() flags:(Default,¬øE<<28) depthFormat:4 encoding:--------RRRRRRRRGGGGGGGGBBBBBBBB refreshRate.unk0.unk1:00000000.0000.00000000 unknown20:?0x52525200000001 unknown21:?0x84003c0000 unknown22:?0x700000000 (?0 bytes) },
            { 3: id:0x0000.000 800x600@0.000Hz 60Hz (dens=√∏) pixels:√∏x√∏ resolution:72x72 8bpp 2bpc 3cpp rowbytes:832 IOFlags:() flags:(Valid,BuiltIn) depthFormat:2 encoding:PPPPPPPP refreshRate.unk0.unk1:00000000.0000.00000000 unknown20:?0x1 unknown21:?0x84003c0000 unknown22:?0x40300000000 (?0 bytes) },
            { 4: id:0x0000.000 800x600@0.000Hz 60Hz (dens=√∏) pixels:√∏x√∏ resolution:72x72 16bpp 5bpc 3cpp rowbytes:1664 IOFlags:() flags:(Valid,BuiltIn) depthFormat:3 encoding:-RRRRRGGGGGBBBBB refreshRate.unk0.unk1:00000000.0000.00000000 unknown20:?0x42424200000001 unknown21:?0x84003c0000 unknown22:?0x40700000000 (?0 bytes) },
            { 5: id:0x0000.000 800x600@0.000Hz 60Hz (dens=√∏) pixels:√∏x√∏ resolution:72x72 32bpp 8bpc 3cpp rowbytes:3328 IOFlags:() flags:(Valid,BuiltIn) depthFormat:4 encoding:--------RRRRRRRRGGGGGGGGBBBBBBBB refreshRate.unk0.unk1:00000000.0000.00000000 unknown20:?0x52525200000001 unknown21:?0x84003c0000 unknown22:?0x40300000000 (?0 bytes) },
            { 6: id:0x0000.000 1024x768@0.000Hz 60Hz (dens=√∏) pixels:√∏x√∏ resolution:72x72 8bpp 2bpc 3cpp rowbytes:1088 IOFlags:() flags:(Valid,BuiltIn) depthFormat:2 encoding:PPPPPPPP refreshRate.unk0.unk1:00000000.0000.00000000 unknown20:?0x1 unknown21:?0x84003c0000 unknown22:?0x40300000000 (?0 bytes) },
            { 7: id:0x0000.000 1024x768@0.000Hz 60Hz (dens=√∏) pixels:√∏x√∏ resolution:72x72 16bpp 5bpc 3cpp rowbytes:2176 IOFlags:() flags:(Valid,BuiltIn) depthFormat:3 encoding:-RRRRRGGGGGBBBBB refreshRate.unk0.unk1:00000000.0000.00000000 unknown20:?0x42424200000001 unknown21:?0x84003c0000 unknown22:?0x40300000000 (?0 bytes) },
            { 8: id:0x0000.000 1024x768@0.000Hz 60Hz (dens=√∏) pixels:√∏x√∏ resolution:72x72 32bpp 8bpc 3cpp rowbytes:4352 IOFlags:() flags:(Valid,BuiltIn) depthFormat:4 encoding:--------RRRRRRRRGGGGGGGGBBBBBBBB refreshRate.unk0.unk1:00000000.0000.00000000 unknown20:?0x52525200000001 unknown21:?0x84003c0000 unknown22:?0x40300000000 (?0 bytes) },
            { 9: id:0x0000.000 1024x768@0.000Hz 60Hz (dens=√∏) pixels:√∏x√∏ resolution:72x72 32bpp 8bpc 3cpp rowbytes:4096 IOFlags:() flags:(Valid,Default,BuiltIn) depthFormat:4 encoding:--------RRRRRRRRGGGGGGGGBBBBBBBB refreshRate.unk0.unk1:00000000.0000.00000000 unknown20:?0x7952525200000001 unknown21:?0x84003c0000 unknown22:?0x40300000000 (?0 bytes) },
        }; // CGSGetDisplayModeDescriptionOfLength
    }, // Monitor[0]
}; // ALL MODES


10.5.8
Code:
AllRez ppc on Mac OS X 10.5.8 (Darwin 9.8.0 ppc) built on May  9 2023 at 01:06:29 using SDK 10.6.0
CGDisplayRotation is available since Mac OS X 10.5.
CGDisplayCopyColorSpace is available since Mac OS X 10.5.
DisplayServicesGetBrightness is available since Mac OS X 10.5.
DisplayServicesSetBrightness is available since Mac OS X 10.5.
Mac OS X 10.6 is required for CGDisplayCopyDisplayMode.
Mac OS X 10.6 is required for CGDisplayCopyAllDisplayModes.
OS X 10.8 SDK is required for kCGDisplayShowDuplicateLowResolutionModes.
OS X 10.11 SDK is required for CGSEnableHDR.
OS X 10.11 SDK is required for CGSIsHDREnabled.
OS X 10.11 SDK is required for CGSIsHDRSupported.
macOS 11 SDK is required for SLSDisplaySetHDRModeEnabled.
macOS 11 SDK is required for SLSDisplayIsHDRModeEnabled.
macOS 11 SDK is required for SLSDisplaySupportsHDRMode.
macOS 12 SDK is required for SLSIsDisplayModeVRR.
macOS 12 SDK is required for SLSIsDisplayModeProMotion.
macOS 12 SDK is required for SLSGetDisplayModeMinRefreshRate.

1 Online Monitors found
Main display: 0x41dc9d00
-----------------------------------------------------
DISPLAYS = {
    Monitor[0] = {
        modeAlias = 0;
        DisplayID = 0x41dc9d00;
        PrimaryID = 0x41dc9d00;
        MirrorsID = 0x0;
        vendorNumber = 0x756e6b6e;
        modelNumber = 0x76697274;
        serialNumber = 0;
        unitNumber = 0;
        IOService = 0x0;
        Main = true;
        Active = true;
        Online = true;
        Asleep = false;
        Stereo = false;
        Builtin = true;
        Quartz Extreme = false;
        InMirrorSet = false;
        InHWMirrorSet = false;
        AlwaysInMirrorSet = false;
        Rotation = 0°;
        Bounds (l,t,w,h) = { 0, 0, 1680, 1050 };
        Size = 592.593 x 370.37 mm;
        Brightness = -1234 (err:1000) (did not get brightness);
        ColorSpace = { <CGColorSpace 0x20f350> (kCGColorSpaceICCBased; kCGColorSpaceModelRGB; Display) };
    }, // Monitor[0]
}; // DISPLAYS
-----------------------------------------------------
IOSERVICE = {
    Monitor[0]:  = {
        (IORegistryEntryGetChildIterator  result:?0x10000003)
        IOFramebuffer 0x0 = {
        }; // IOFramebuffer

        IOFramebufferOpen = {
        }; // IOFramebufferOpen
    }, // Monitor[0]: 

    IOFramebuffer: /MacRISC2PE/pci@f0000000/AppleMacRiscAGP/ATY,Rage128Pd@10/.Display_Rage128 = {
        IOFramebuffer 0x1f03 = {
            IOPMStrictTreeOrder = true;
            IOFramebuffer properties (unparsed) = {type = mutable, count = 10, capacity = 12, pairs = (
                0 : IOProbeScore = {value = +20000, type = kCFNumberSInt32Type}
                1 : IOProviderClass = IOPCIDevice
                6 : CFBundleIdentifier = com.apple.iokit.IONDRVSupport
                8 : driver,AAPL,MacOS,PowerPC = {length = 128, capacity = 128, bytes = 0x6d74656a000000000d4154592c526167 ... 7669646f01000000}
                9 : IOMatchCategory = IOFramebuffer
                10 : IONDRVFramebufferGeneration = {length = 8, capacity = 8, bytes = 0x0000000100000001}
                11 : IONameMatched = display
                12 : IOClass = IONDRVFramebuffer
                13 : IONameMatch = display
                14 : IOPowerManagement = {type = mutable, count = 1, capacity = 3, pairs = (
                1 : CurrentPowerState = {value = +0, type = kCFNumberSInt32Type}
            )}
            )}; // IOFramebuffer properties (unparsed)
        }; // IOFramebuffer
    }, // IOFramebuffer: /MacRISC2PE/pci@f0000000/AppleMacRiscAGP/ATY,Rage128Pd@10/.Display_Rage128

}; // IOSERVICE
-----------------------------------------------------
CURRENT MODE = {
    Monitor[0] = {
        current mode by CGSGetCurrentDisplayMode (private) = 14 = { 14: id:0x0000.00e 1680x1050@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:72x72 32bpp 8bpc 3cpp rowbytes:6912 IOFlags:(Valid,Safe,BuiltIn) flags:(Valid,BuiltIn) depthFormat:4 encoding:--------RRRRRRRRGGGGGGGGBBBBBBBB refreshRate.unk0.unk1:003c0000.0004.00000001 };
        current mode by CGDisplayCurrentMode (deprecated)       = { 14: id:0x0000.00e 1680x1050@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:øxø 32bpp 8bpc 3cpp rowbytes:6912 IOFlags:(Valid,Safe,BuiltIn) flags:(gui usable,hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø };
        current mode info by CGDisplay* (deprecated)            = { 1680x1050 32bpp 8bpc 3cpp rowbytes:6912 };
    }, // Monitor[0]
}; // CURRENT MODE
-----------------------------------------------------
ALL MODES = {
    Monitor[0] = {
        CGDisplayAvailableModes (deprecated) (16 modes) = {
            { 0: id:0x0000.000 1x1@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:øxø 8bpp 2bpc 3cpp rowbytes:256 IOFlags:(Valid,Safe,Default) flags:(hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
            { 1: id:0x0000.001 1x1@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:øxø 16bpp 5bpc 3cpp rowbytes:256 IOFlags:(Valid,Safe,Default) flags:(hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
            { 2: id:0x0000.002 1x1@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:øxø 32bpp 8bpc 3cpp rowbytes:256 IOFlags:(Valid,Safe,Default) flags:(hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
            { 3: id:0x0000.003 800x600@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:øxø 8bpp 2bpc 3cpp rowbytes:832 IOFlags:(Valid,Safe,BuiltIn) flags:(gui usable,hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
            { 4: id:0x0000.004 800x600@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:øxø 16bpp 5bpc 3cpp rowbytes:1664 IOFlags:(Valid,Safe,Default,BuiltIn) flags:(gui usable,hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
            { 5: id:0x0000.005 800x600@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:øxø 32bpp 8bpc 3cpp rowbytes:3328 IOFlags:(Valid,Safe,BuiltIn) flags:(gui usable,hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
            { 6: id:0x0000.006 1024x768@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:øxø 8bpp 2bpc 3cpp rowbytes:1088 IOFlags:(Valid,Safe,BuiltIn) flags:(gui usable,hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
            { 7: id:0x0000.007 1024x768@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:øxø 16bpp 5bpc 3cpp rowbytes:2176 IOFlags:(Valid,Safe,BuiltIn) flags:(gui usable,hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
            { 8: id:0x0000.008 1024x768@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:øxø 32bpp 8bpc 3cpp rowbytes:4352 IOFlags:(Valid,Safe,BuiltIn) flags:(gui usable,hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
            { 9: id:0x0000.009 1280x1024@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:øxø 8bpp 2bpc 3cpp rowbytes:1344 IOFlags:(Valid,Safe,BuiltIn) flags:(gui usable,hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
            { 10: id:0x0000.00a 1280x1024@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:øxø 16bpp 5bpc 3cpp rowbytes:2560 IOFlags:(Valid,Safe,BuiltIn) flags:(gui usable,hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
            { 11: id:0x0000.00b 1280x1024@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:øxø 32bpp 8bpc 3cpp rowbytes:5120 IOFlags:(Valid,Safe,BuiltIn) flags:(gui usable,hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
            { 12: id:0x0000.00c 1680x1050@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:øxø 8bpp 2bpc 3cpp rowbytes:1712 IOFlags:(Valid,Safe,BuiltIn) flags:(gui usable,hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
            { 13: id:0x0000.00d 1680x1050@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:øxø 16bpp 5bpc 3cpp rowbytes:3584 IOFlags:(Valid,Safe,BuiltIn) flags:(gui usable,hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
            { 14: id:0x0000.00e 1680x1050@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:øxø 32bpp 8bpc 3cpp rowbytes:6912 IOFlags:(Valid,Safe,BuiltIn) flags:(gui usable,hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
            { 15: id:0x5f636f75 1280x1024@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:øxø 32bpp 8bpc 3cpp rowbytes:5120 IOFlags:(Valid,Safe,BuiltIn) flags:(gui usable,hw safe,ø,ø,ø,ø,ø) depthFormat:ø encoding:ø },
        }; // CGDisplayAvailableModes
        CGSGetDisplayModeDescriptionOfLength (16 modes) = {
            { 0: id:0x0000.000 1x1@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:72x72 8bpp 2bpc 3cpp rowbytes:256 IOFlags:(Valid,Safe,Default) flags:(Default,¿E<<28) depthFormat:2 encoding:PPPPPPPP refreshRate.unk0.unk1:003c0000.0000.00000001 },
            { 1: id:0x0000.001 1x1@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:72x72 16bpp 5bpc 3cpp rowbytes:256 IOFlags:(Valid,Safe,Default) flags:(Default,¿E<<28) depthFormat:3 encoding:-RRRRRGGGGGBBBBB refreshRate.unk0.unk1:003c0000.0000.00000001 },
            { 2: id:0x0000.002 1x1@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:72x72 32bpp 8bpc 3cpp rowbytes:256 IOFlags:(Valid,Safe,Default) flags:(Default,¿E<<28) depthFormat:4 encoding:--------RRRRRRRRGGGGGGGGBBBBBBBB refreshRate.unk0.unk1:003c0000.0000.00000001 },
            { 3: id:0x0000.003 800x600@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:72x72 8bpp 2bpc 3cpp rowbytes:832 IOFlags:(Valid,Safe,BuiltIn) flags:(Valid,BuiltIn) depthFormat:2 encoding:PPPPPPPP refreshRate.unk0.unk1:003c0000.0004.00000001 },
            { 4: id:0x0000.004 800x600@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:72x72 16bpp 5bpc 3cpp rowbytes:1664 IOFlags:(Valid,Safe,Default,BuiltIn) flags:(Valid,BuiltIn) depthFormat:3 encoding:-RRRRRGGGGGBBBBB refreshRate.unk0.unk1:003c0000.0004.00000001 },
            { 5: id:0x0000.005 800x600@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:72x72 32bpp 8bpc 3cpp rowbytes:3328 IOFlags:(Valid,Safe,BuiltIn) flags:(Valid,BuiltIn) depthFormat:4 encoding:--------RRRRRRRRGGGGGGGGBBBBBBBB refreshRate.unk0.unk1:003c0000.0004.00000001 },
            { 6: id:0x0000.006 1024x768@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:72x72 8bpp 2bpc 3cpp rowbytes:1088 IOFlags:(Valid,Safe,BuiltIn) flags:(Valid,BuiltIn) depthFormat:2 encoding:PPPPPPPP refreshRate.unk0.unk1:003c0000.0004.00000001 },
            { 7: id:0x0000.007 1024x768@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:72x72 16bpp 5bpc 3cpp rowbytes:2176 IOFlags:(Valid,Safe,BuiltIn) flags:(Valid,BuiltIn) depthFormat:3 encoding:-RRRRRGGGGGBBBBB refreshRate.unk0.unk1:003c0000.0004.00000001 },
            { 8: id:0x0000.008 1024x768@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:72x72 32bpp 8bpc 3cpp rowbytes:4352 IOFlags:(Valid,Safe,BuiltIn) flags:(Valid,BuiltIn) depthFormat:4 encoding:--------RRRRRRRRGGGGGGGGBBBBBBBB refreshRate.unk0.unk1:003c0000.0004.00000001 },
            { 9: id:0x0000.009 1280x1024@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:72x72 8bpp 2bpc 3cpp rowbytes:1344 IOFlags:(Valid,Safe,BuiltIn) flags:(Valid,BuiltIn) depthFormat:2 encoding:PPPPPPPP refreshRate.unk0.unk1:003c0000.0004.00000001 },
            { 10: id:0x0000.00a 1280x1024@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:72x72 16bpp 5bpc 3cpp rowbytes:2560 IOFlags:(Valid,Safe,BuiltIn) flags:(Valid,BuiltIn) depthFormat:3 encoding:-RRRRRGGGGGBBBBB refreshRate.unk0.unk1:003c0000.0004.00000001 },
            { 11: id:0x0000.00b 1280x1024@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:72x72 32bpp 8bpc 3cpp rowbytes:5120 IOFlags:(Valid,Safe,BuiltIn) flags:(Valid,BuiltIn) depthFormat:4 encoding:--------RRRRRRRRGGGGGGGGBBBBBBBB refreshRate.unk0.unk1:003c0000.0004.00000001 },
            { 12: id:0x0000.00c 1680x1050@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:72x72 8bpp 2bpc 3cpp rowbytes:1712 IOFlags:(Valid,Safe,BuiltIn) flags:(Valid,BuiltIn) depthFormat:2 encoding:PPPPPPPP refreshRate.unk0.unk1:003c0000.0004.00000001 },
            { 13: id:0x0000.00d 1680x1050@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:72x72 16bpp 5bpc 3cpp rowbytes:3584 IOFlags:(Valid,Safe,BuiltIn) flags:(Valid,BuiltIn) depthFormat:3 encoding:-RRRRRGGGGGBBBBB refreshRate.unk0.unk1:003c0000.0004.00000001 },
            { 14: id:0x0000.00e 1680x1050@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:72x72 32bpp 8bpc 3cpp rowbytes:6912 IOFlags:(Valid,Safe,BuiltIn) flags:(Valid,BuiltIn) depthFormat:4 encoding:--------RRRRRRRRGGGGGGGGBBBBBBBB refreshRate.unk0.unk1:003c0000.0004.00000001 },
            { 15: id:0x5f636f75 1280x1024@60.000Hz 60Hz (dens=ø) pixels:øxø resolution:72x72 32bpp 8bpc 3cpp rowbytes:5120 IOFlags:(Valid,Safe,BuiltIn) flags:(Valid,Default,BuiltIn) depthFormat:4 encoding:--------RRRRRRRRGGGGGGGGBBBBBBBB refreshRate.unk0.unk1:003c0000.6904.00000001 unknown20:?0x7669646f01000000 unknown21:?0x100000019 unknown23:?0x6e6472765f766572 unknown24:?0x73696f6e006d795f unknown25:?0x496431006d795f49 unknown26:?0x6432006d795f636f unknown27:?0x756e74006d795f64 },
        }; // CGSGetDisplayModeDescriptionOfLength
    }, // Monitor[0]
}; // ALL MODES
 
Hmm, PowerPC Macs didn't have a lot of display related info in the ioreg (should compare with ioreg to make sure AllRez isn't missing anything). It's interesting to see how the IOFrameBuffers changed over time.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.