Path: utzoo!attcan!uunet!husc6!mailrus!ncar!ames!oliveb!sun!david
From: david@sun.uucp (David DiGiacomo)
Newsgroups: comp.windows.x
Subject: Re: Color on Suns
Message-ID: <64587@sun.uucp>
Date: 17 Aug 88 16:58:22 GMT
References: <368@megatek.UUCP> <19880816201951.6.RWS@KILLINGTON.LCS.MIT.EDU>
Organization: Sun Microsystems, Inc. - Mtn View, CA
Lines: 34

In article <19880816201951.6.RWS@KILLINGTON.LCS.MIT.EDU>
RWS@ZERMATT.LCS.MIT.EDU (Robert Scheifler) writes:
>
>    Date: 16 Aug 88 17:43:47 GMT
>    From: ucsdhub!hp-sdd!megatek!corona!rgs@ucsd.edu  (Rusty Sanders)
>
>    I disagree with the statement that the sun server needs to use pixrect and
>    the hardware rop operations to get good performance.
>
>It does depend somewhat on which Sun hardware you use.  As I recall, on
>at least some Sun configurations, the frame buffer is being accessed
>through a slow diagnostic port, which makes for inherent performance
>problems, not matter how much you speed up the code.  But, I certainly
>believe you can do a lot to speed up cfb without resorting to hardware
>specifics.

This is a little misleading.  Of the Sun frame buffers supported by X11,
only the "cgtwo" type has on board graphics hardware (the infamous
"rasterop chips").  It also has an access mode where it appears to be an 8
bit memory frame buffer, and this is what is used by the X11 Sun ddx code.
Note that this is not a "diagnostic port" and it is not slow!  It is just
another mode which is available.

There is nothing magical about the pixrect library.  The "memory pixrect"
part of the code is just a fairly well-written (in my opinion anyway) and
not very portable (although it runs on 680x0s, SPARCs, and 386s)
implementation of ideas very similar to mfb/cfb.  This is what drives the
most common Sun frame buffers: "bwtwo", "cgthree" (Sun-386i), and "cgfour".
No hardware specifics are involved.

You can certainly get good performance from even a "cgtwo" by treating it
as a memory frame buffer and driving it with well written code, but you
can do even better by taking advantage of the hardware features:  128 bit
data path, function unit, shifter, edge and plane masks, etc.