A built-in graphics rasterization machina was added to mGSTEP's mini CoreGraphics. Though still in its infancy graphics rendering appears competitive with Cairo when mGSTEP is built with optimization as tested with TeatroSVG.app while scaling various SVG files. As a by-product of this feature the use of third-party graphics technology from Xlib and Cairo is deprecated with mGSTEP 2.0.
While Cairo is no longer a supported option it remains a build option. The only test that remains functional with Cairo is the AppKit's lines.app demo. This limited support is retained only to ease comparison testing.
Implementation
The rasterization algorithm is based on a Global Edge Table (GET) as described in Michael Abrash's Graphics Programming Black Book, Special Edition. The private CGPath header (_CGPath.h) contains a brief summary. Graphics are triple-buffered on X11 while a double-buffered scheme is employed on the Linux FB. The graphics drawing surface on both is a user space CGImage object attached to a CGGraphicsContext. On X11 the CGImage is configured for RGBA and gets flushed to an X server RGB Pixmap associated with an X11 Window. The Linux FB implementation lacks a server process so graphics rendered to the CGImage are flushed directly to the FB, eliminating the need for a server side buffer.
A built-in graphics rasterization machina was added to mGSTEP's mini CoreGraphics. Though still in its infancy graphics rendering appears competitive with Cairo when mGSTEP is built with optimization as tested with TeatroSVG.app while scaling various SVG files. As a by-product of this feature the use of third-party graphics technology from Xlib and Cairo is deprecated with mGSTEP 2.0.
While Cairo is no longer a supported option it remains a build option. The only test that remains functional with Cairo is the AppKit's lines.app demo. This limited support is retained only to ease comparison testing.
Implementation
The rasterization algorithm is based on a Global Edge Table (GET) as described in Michael Abrash's Graphics Programming Black Book, Special Edition. The private CGPath header (_CGPath.h) contains a brief summary. Graphics are triple-buffered on X11 while a double-buffered scheme is employed on the Linux FB. The graphics drawing surface on both is a user space CGImage object attached to a CGGraphicsContext. On X11 the CGImage is configured for RGBA and gets flushed to an X server RGB Pixmap associated with an X11 Window. The Linux FB implementation lacks a server process so graphics rendered to the CGImage are flushed directly to the FB, eliminating the need for a server side buffer.