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.