[comp.windows.x] X11R2 and color displays

schultz@mmm.UUCP (John C Schultz) (05/10/88)

I recently got X11R2 to work with GNU EMACS (18.50.1) on my SUN 3/60C
(4 MB RAM, SunOS 3.5) as a /dev/cgfour.  (Thanks to everyone on the
net who answered my questions and provided patches.)

Now that I can use color displays I have noticed that the display rate
is much slower than for the B&W driver. For example repainting the
screen in an EMACS window looks to be at most 9600 baud whereas on a
B&W X window, the display basically "flashes" up.


Is this a problem with my installation of X/GNU EMACS and/or a problem
with X11R2?

BTW, my mouse does not slide off any side of the /dev/cgfour display to
toggle between B&W and color displays.

john c. schultz                    {umn-cs, ems, tundra}!mmm!schultz
                                    ------or------     schultz@mmm.UUCP
The opinions expressed herein are, as always, my own and not 3M's.

Surface mail:  3M Center,                 AT&T:(612) 733-4047
               Bldg. 518-1-1
               St. Paul, MN  55144-1000

jeff@polyslo.UUCP (Skippy The Wonder Hacker) (05/11/88)

  The color X11 implementation provided by Sun to MIT is a real dog.
This is probably due to the fact that Sun is expending effort on their
X11/NeWS product, which they will charge for.  The slowness you are
seeing is entirely due to the poorly performing server.

	Jeff Weinstein
	Computer Systems Lab
	Cal Poly State Univ.
	jeff@polyslo.uucp
	ucbvax!voder!polyslo!jeff

ndd@duke.cs.duke.edu (Ned Danieley) (05/11/88)

In article <786@mmm.UUCP> schultz@mmm.UUCP (John C Schultz) writes:
>
>BTW, my mouse does not slide off any side of the /dev/cgfour display to
>toggle between B&W and color displays.
>
>john c. schultz                    {umn-cs, ems, tundra}!mmm!schultz

The only way that I've been able to do this is by running X on top
of suntools, after using switcher(1) or adjacentscreens(1). Is this
supposed to be doable directly from X?


Ned Danieley (ndd@sunbar.mc.duke.edu)
Basic Arrhythmia Laboratory
Box 3140, Duke University Medical Center
Durham, NC  27710
(919) 684-6807 or 684-6942

jim@EXPO.LCS.MIT.EDU (Jim Fulton) (05/11/88)

>                                                The slowness you are
> seeing is entirely due to the poorly performing server.

Let's clarify this a bit.  The "poorly performing" part refers to the fact that
the ddx for that device uses the generic Color Frame Buffer code instead of
hardware support, just as the qvss/vs2000 server uses the generic Monochrome
Frame Buffer code.  Servers based on cfb are slower than ones that use mfb
because they have to do a LOT more work (color pixels typically have 4, 8, or
many more times the number of bits that monochrome pixels have).

It ought to be relatively easy for someone who knows the low-level graphics
libraries of the machine to optimize many of the more common operations (solid
and tiled filled rectangles, solid text, copy area, lines, etc.).  Do I hear
any volunteers?


Jim Fulton
MIT X Consortium

paul@torch.UUCP (Paul Andrews) (05/23/88)

In article <8805111410.AA00140@EXPO.LCS.MIT.EDU> jim@EXPO.LCS.MIT.EDU (Jim Fulton) writes:
>
>>                                                The slowness you are
>> seeing is entirely due to the poorly performing server.
>
>Let's clarify this a bit.  The "poorly performing" part refers to the fact that
>the ddx for that device uses the generic Color Frame Buffer code instead of
>hardware support...
>...Jim Fulton

You don't need hardware support to improve the performance of the generic
Colour Frame Buffer code. Take a look at cfbbitblt.c for starters. You'll
find just one special case in there. This case goes reasonably quickly (although
even that could be improved) but ALL the other cases use the same code.
By special casing these a large improvement in performance could be gained.
Another area to look at - one I haven't looked at yet - is special-casing
of text writing. As I have said. I don't know what this code is doing yet, but
the basic problem is that the fonts are all single bit-plane whilst the
destination is multi-bit-planed. This means that pixel expansion has to take
place. This is VERY slow. Caching of expanded font pixmaps may improve things
if this isn't already done. Finally, as the documentation says, fat line
drawing uses floating point DDA's. A little application of Bresenham may help
here.

Over the coming months we'll be investigating all these areas.

P.S. As the documentation implies the generic cfb code isn't so generic. If
you use anything other than 8 bits per pixel you'll have quite a few changes
to make. Some are just hard-coded 8's, some are algorithm changes, some
are bug-fixes. Generally though its pretty good and the changes shouldn't take
more than a week or so from start to finish.

- Paul.

jim@EXPO.LCS.MIT.EDU (Jim Fulton) (05/28/88)

> You don't need hardware support to improve the performance of the generic
> Colour Frame Buffer code.

Of course.  However, you still won't approach the speed in which this could 
be done in hardware.  We'll gladly accept any fixes and optimizations!

Jim