Index: [thread] [date] [subject] [author]
  From: James A Simmons <jsimmons@acsu.buffalo.edu>
  To  : ggi-develop@eskimo.com
  Date: Mon, 17 Aug 1998 21:59:46 -0400 (EDT)

Re: 3d

On Mon, 17 Aug 1998, teunis wrote:

> On Mon, 17 Aug 1998, James A Simmons wrote:
> 
> > On Mon, 17 Aug 1998, Marcus Sundberg wrote:
> > 
> > > > I like to see library independent accelleration. Threw ioctl not special
> > > > library stubs. 
> > > 
> > > Besides the fact that ioctl()s are not exactly the fastest way to
> > > communicate with a GFX accelerator, having a generic ioctl() API
> > > for 3D acceleration would bloat the kernel way to much without
> > > gaining anything compared to having a small HW driver in the
> > > kernel and a library to interface it.
> > 
> > Yes but fb doesn't have a accel buffer like /dev/graphics.
> > 
> > If you do good code this bloat can be very small. 
> 
> Yeah - possibly up to 512K.  Still a bit much for Linux.

Were do you get this number from ? I think you and alot of other people
misunderstand what I am suggesting. I'm not asking to put a OpenGL like
library into the kernel. That would be insane.

> Yes a simple rendering stack can be done in (thinking) <8K, but that
> doesn't mean that yer typical modern accelerator (ie: Permedia) can be
> done so easily.  (and you are stuck with just simple rendered triangles
> with maybe a Z-buffer if you're feeling happy :)

Yes. That is what I am suggesting.

> 
> Though here's something:
> 	How about a microcode IOCTL interface.  Just a standard way
> 	of forwarding microcode into/out-of a graphics card.
> 	- This is for those programmable cards (ie: 3DFX,Permedia,...)
> 	! Oh - and some kind of back-hooks (RT-Linux?) to hook responses
> 	  from videocard into a kernel-service. Simple use (many
> 	  videocards) is IRQ handling on video-refresh.  Complex could
> 	  include DMA Accel-handling and hooks from 3D rendering engines :)
> 
> What do y'all think?

Bingo. This is what I'm talking about. Here is my idea.

Idea I.

   The ability to allocate frames and tell what type of frames they are.
  Basically saying hey give me three frames. One display frame, one
  zbuffer, and one double buffer. Most Hardware support this. Lets not
  over do it for types of frames.

Idea II.
   As for primivites. Support arbitratory lines. Support span lines (aka
  horizontal lines). Do NOT support things like polygon or B Spline
  curves. This would bloat the kernel but a library could break down a
  polygon into span lines which is accelerated into the kernel. Do support
  boxes and triangles but thats it. Triangles are nice because a well
  written library could make curved shapes from triangle strips. B Spline
  and things like this can be broken down by the library into basic lines.
  With these shapes just support factes. Not whole objects like a 3D box
  at one time.  

Idea III.
   Support alpha component in color. Support gourand shading. Do not
  support texture mapping. This is the really mess out there. As for
  lighting effects stay away from this as well. Although I have a
  interesting idea to handle this. This could be simulated by a color
  function table. Sort of like how the 3Dfx cards do it. They can't do
  lighting but have a color blend function table. Also looking at the
  ATI Mach64 Rage 3D card has a similar function table. I will have to
  work on this later. 

Thank you. I hope this clearify everything.

PS. How is the linux Makefile system coming. Please we need to get this
ready in the next few days. I'm home all day tomorrow so I want to write 
the Makefile system. We need to get are drivers into the kernel. This is
numbe one to do. Once in the kernel we can continue on improving the
drivers.

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