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)?
---
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)?
---