• Hello, Guest! Welcome back, and be sure to check out this post for more info about the recent service interruption and migration.

Documenting the Macintosh hardware graphics stack (NuBus/built-in/SCSI, QuickDraw and OpenGL acceleration, etc.)

uyjulian

Well-known member
It seems like there isn't much information in one place on how the graphics on Classic MacOS work (relatively to modern graphics APIs like Vulkan etc).

I'd like to document this further, hopefully to fix graphics acceleration for newer processor/OS or to implement your own graphics interface over NuBus or SCSI (e.g. RaSCSI).

Let's start off with a few questions, and see if others can answer or provide documentation references.

---

On older Macintoshes, you can access the framebuffer directly. Which machines or system configurations started to make this not possible?

---

Does QuickDraw immediately display the operation on the screen, or is there a command queue?

---

For NuBus cards, how does the framebuffer get accessed? Is there a separate framebuffer on main memory and NuBus which need to be synchronized, or it is only on NuBus card? If it is the latter, is it memory mapped?

---

How does acceleration with cards such as Macintosh Display Card 8•24 GC work? Is there an API for providing your own implementation of QuickDraw commands for the specific card (like OpenGL ICDs), or does each INIT hook the traps?

---

Is there a unified API to read the framebuffer for both built-in and NuBus cards, or is it specific to the output method?

---

What possible APIs are used for graphics acceleration? (QuickDraw, OpenGL 1.x… any others?)

---

What are the most common cards or configuration that support graphics acceleration (e.g. with an INIT)?

---

 

Dog Cow

Well-known member
1.) On older Macintoshes, you can access the framebuffer directly. Which machines or system configurations started to make this not possible?

2.) Does QuickDraw immediately display the operation on the screen, or is there a command queue?

3.) For NuBus cards, how does the framebuffer get accessed? Is there a separate framebuffer on main memory and NuBus which need to be synchronized, or it is only on NuBus card? If it is the latter, is it memory mapped?


1.) The Macintosh II, released in spring 1987, was the first Macintosh that did not have built-in video.

2.) Immediately

3.) Framebuffer is accessed thru NuBus memory. The framebuffer is on the NuBus card. It is memory mapped into the CPU's address space.

Read Inside Macintosh volume V for details on NuBus and video for the Macintosh II. It should give answers to some of your other questions.

 
Last edited by a moderator:

cheesestraws

Well-known member
On older Macintoshes, you can access the framebuffer directly. Which machines or system configurations started to make this not possible?


As far as I know, 'provides dumb framebuffer that can be accessed directly' is the case all the way through, or at very least is necessary for being a boot screen all the way through (though I don't know much about OS 9). 

 
Top