Index: [thread] [date] [subject] [author]
  From: James Simmons <jsimmons@edgeglobal.com>
  To  : ggi-develop <ggi-develop@eskimo.com>
  Date: Sat, 6 Feb 1999 11:01:13 -0500 (EST)

Re: [linux-fbdev] Accel or not accel in kernel! (fwd)

Hi guys. I have tried to make a comprimise which I think will be in the
best interest of everyone.

> Why not have a separate distribution of theese things... :-)
> We can then stop arguing about this here.. There is no need for accel in
> fbdev. Let's do acceldevs instead and distribute them beside the kernel.
> As it look today this is leading nowhere.    
>

I completely agree. I have been doing research on SGI stations and coming
up with ideas to NOT bloat the kernel and to bring peace to everyone.

Yes accels do not belong in fbcon! Here are my reasons.

1: 
  Not every video card supports accels but every video card does support
  setting at least one mode. This is the true purpose of fbdev. I know one
  fear was the scattered accel API mess and what if people wanted to use
  software accels in the kernel to make their cards behave like true HW
  accelerated cards. 

2:
  Some cards come with a extra graphics coprocessor which can't be
  detected by the BUS ie. glint cards. How would fbdev handle this?
  Its shouldn't have to handle this. Also what about video cards that
  support accels but not framebuffers. Placing accels into fbcon will bind
  accel support only to fbdev. Then the accel API would have to be
  ported to non framebuffer devices.

3:
  I realized that accels in fbcon would limit the potential at using
  accels properly. This is something SGI showed me. Lets take the position
  that fbcon did add accels to its API. Now I start X windows that uses
  fbdev and starts to use accels. Now I want to start to use accels in 3
  different graphics programs. Here are the different models that exist:

  I. Present model with fbdev.

  Regular   app in X -> Xlib -> Xserver -> fbdev
  Graphical app in X -> Xlib -> Xserver -> fbdev
                                        -> hit accels in userland.
   /* or we can do it this way like MESA does */
  Grpahical app in X -> Xlib -> Xserver -> fbdev /* to set mode */ 
                     -> hit accels in user land 
  Graphical app not in X -> open fb -> hit accels in userland if needed.

  The above situation can hose a system. Also you have to admit to make
  libsvga, X server, OpenGL, Mesa, libggi all make sure the other doesn't
  step on each others feet would add alot of overhead. You needed to
  manage accels because the 2nd and 3rd situation can happen at the same.
 
  II. Fbdev with accels.  

  Regular app in X -> Xlib -> Xserver -> fbdev  
  Graphical app in X -> Xlib -> Xserver -> fbdev -> accels in fbdev.
  Graphical app in X -> open fb -> accels in fbdev.
  Graphical app not in X -> open fb -> accels in fbdev

  As you can see you have to open fb again to just use accels to avoid
  the overhead of going threw Xlib. This also binds the accels API to
  fbcon and not every card has accels and not every card that has accels
  has a framebuffer.
 
  III. Purposed model.

  The direct rendering model SGI uses.

  Regular app in X -> Xlib -> Xserver -> fbdev or some other device.
  Regular app in X -> Xlib -> Xserver -> X server wants to use /dev/gfx
                                         for things like blits to move
                                         windows fast. Independent of app
                                         and if X uses fbdev or some other
                                         device to set a mode.
  Graphics app in X -> hit /dev/gfx directly for speed. 
  Graphics app not in X -> hit /dev/gfx directly for speed.

  
As you can see the SGI model has its strong points. With this model fbcon
will never hear about accels again. Does this purposal sound like
something everyone can live with?


Index: [thread] [date] [subject] [author]