Re: Advice on Gouraud shading weirdnesses and testing

2001-10-18 Thread Steffen Seeger

Rodolphe Ortalo wrote:

 My usual test program draws a few thousand random Gouraud shaded triangles
 on a 1024x768 16bpp framebuffer (5:6:5), using a 16bpp Z-buffer. Each
 triangle is defined by 3 vertices which are defined using the
 (Matrox-related) structs shown at the end of this mail. The WARP program
 (aka pipe) I use is a TGZ one, so specular, fog, and alpha color
 parameters theoretically have no effect on the drawing.

Are corresponding units in the pixel shading pipeline disabled (e.g.
it might not be enough to disable units setting up triangle parameters,
but also those using (possible uninitialized) parameters...)

 Triangles get drawn correctly wrt x,y positions on the screen. However,
 The actual shading of the triangles is very strange. I usually get a
 *striped* rainbow color-gradient on all triangles. Changing the color of
 the vertices influences the shading, setting textures also affects the
 colors (but textures do not really show up yet). However, overall, it
 seems to me that the triangle drawing is wrong. (I expected to have a
 smooth transition on the triangle surface, not a striped result - but I'm
 not sure of what the drawing should be.)

Do the frame buffer read out unit's and the shader's understanding of
what the frame buffer layout should be match? (e.g. shader set to
555 weights and readout to 565 could give the above result).

 I am not very familiar with Gouraud shading, nor with the potential
 artifacts of this algorithm. (My test program more or less generates the
 vertices parameters randomly - so I guess it may really use the Gouraud
 algo. the ill way.) Initially, I thought it was a problem due to hardware
 setup (this is still a possibility and I'm pursuing efforts to check the
 driver) but well, maybe it is something else.

Gouraud shading just means that color values are interpolated linearly
over the triangle. Flat shading just dives it some constant color (either
from the last vertex or from the average of all vertex colors).
Phong shading interpolates the normals over the triangle and performs
lighting calculation for each pixel.
 
 Does someone with experience debugging (hw-accelerated) 3D rendering can
 give me advice here? Are there situations where Gouraud shaded triangles
 renders to rainbow stripes? Or is it just the driver which is buggy (me
 very stupid sometimes :-).

It looks as if there is an overflow in the color interpolation. Just try
to set the triangles vertex colors to one basic color only but different
intensity. This should result in a smooth gradient with only that color.
May be this gives a hint where overflow takes place...

 teapot wanted
  I'd also really like to (re)use some classical 3D test programs and the
 associated tesselated 3D models in order to check the actual rendering of
 the G400. (If possible with reference output for various rendering
 parameters: with/without specular, with/without alpha, with/without
 textures, etc. And minimal porting work to reuse the code - ideally only
 the draw_triangle() function should need porting. :-) Do you know were I
 can find some?
  /teapot wanted

I think the teapot thingy comes with the SGI sample implementation in the
KGI repository.

Steffen Seeger




Re: GGI and 3dlabs

2001-08-02 Thread Steffen Seeger

Berlin Brown wrote:
 
 Would anybody know who I can talk to at 3d labs about their specification
 for the 3dlabs permedia 2.  It is for a school research project I know it is
 implemented in KGI but I need something even lower level.
 
 Berlin Brown
 [EMAIL PROTECTED]
 
 _
 Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp

What do you need it for?
Have you already tried to contact customer support?

-- 

Steffen

___
Steffen Seeger  mailto:[EMAIL PROTECTED]
TU-Chemnitz  http://www.tu-chemnitz.de/~sse




Re: Lineo guy want to be involved in GGI/KGI (fwd)

2001-07-03 Thread Steffen Seeger


 Although I would like to demonstrate libggi with some pretty eye candy
 (just to show that the API is useful), the main issues I need to deal with
 are just proof of concept. (Pretty much what Steffen and the rest of the
 crew are working on already.) Basically 1.) compile something with KGI
 and see it run. 

Try the PhoeniX server.

 2.) Speed comparison.   3.) perhaps run two apps that
 step on each other on normal frame buffer and show how resource
 management works in practice.

I will try to get a little demo for this done.

Steffen

___
Steffen Seeger  mailto:[EMAIL PROTECTED]
TU-Chemnitz  http://www.tu-chemnitz.de/~sse




Re: libGL/libGLX issue...

2001-02-26 Thread Steffen Seeger

Steffen wrote:
 
 Hello,
 
 I just had the famous teapot demo going with the PhoeniX server with the
 SGI-GLX extension
 all running under kgi-0.9. This means that the GLX integration actually
 worked.
 So basically I can now commit the sources to the KGI repository and
 prepare for the next
 snapshot release. (Which basically means that I finally can get my hands
 
 on testing the kgi-0.9 acceleration framework :-))
 
 However, I do have a question regarding the X/GLX libraries which
 affects the directory layout; so I
 need to sort this out before:
 
 The Mesa implementation merges the OpenGL library and the GLX library
 into libGL.so,
 so that only the "-lGL -lX11 -lXext" options need to be given to the
 linker.
 Is this the right thing to do?

To answer my question: according to the Linux Standard Base and OpenGL ABI
specifications it is.

Steffen

_______
Steffen Seeger  mailto:[EMAIL PROTECTED]
TU-Chemnitz  http://www.tu-chemnitz.de/~sse




Happy New Millennium...

2001-01-03 Thread Steffen Seeger


Hello all, 

a new millenium to everybody, and a little status update on what happened the
last weeks.

1)  There seem to be problems with source-forge after a recent system upgrade
there. bash2 is crashing when generating the KGI-project websites, which
might have caused you trouble accessing our pages during the last days.
I have disabled automatic generation of the pages until this is sorted out.

2)  I have finally managed to build a PhoeniX server with XAA. However, I still
need to do testing and port the actual accelerator driver, but all in all
the most difficult operation (transplanting XAA from XF4.0 into PhoeniX)
seems to be finished successful.

I will keep you uptodate, 

Steffen

___
Steffen Seeger  mailto:[EMAIL PROTECTED]




Re: From Re: Video Memory to politics and Linus

2000-11-30 Thread Steffen Seeger

"Jon M. Taylor" wrote:

* Who will maintain KGI in the kernel?
  
   The current maintainers, plus other people who will see it
   distributed with the kernel sources and become a contributor in the grand
   free software tradition.  That's the way it usually works.
 
 I should qualify this.  Depending on volunteer labor would be
 unwise.  However, a commercial entity would almost certainly come around
 to employing at least one KGI developer full-time to work on maintaining
 the system.  _That's_ the way it usually works these days.

So, anybody to hire me? ;))

Seriously, I think I will apply to some companies for getting paid for KGI
development. At least when I go to Britain at the end of next year. My PhD is
likely to be finished then, and I don't really have any concrete plans yet.
May be, becoming a more clear long-term vision of my life...

Greetings from the Cluster2000,

Steffen

_______
Steffen Seeger  mailto:[EMAIL PROTECTED]




Re: irc meeting about future of ggi

2000-11-24 Thread Steffen Seeger

Tijs van Bakel wrote:
 
 Marcus Sundberg [EMAIL PROTECTED] writes:
 
  This weekend is bad for me. Weekend in two weeks is best I think.
 
 ok, that will be December 10th, 20:00 CET

I'll try to be there,

Steffen

___
Steffen Seeger  mailto:[EMAIL PROTECTED]




Re: KGI / GGI architecture

2000-11-23 Thread Steffen Seeger

Nicolas Souchu wrote:
 
   Could someone draw me a quit picture of the various KGI layers?
 
  You can find documentation of the currently developed kgi-0.9 architecure
  at the site mentioned (Articles section).
 
   Also what's the xterm stuff in the linux drivers?
 
  It's an sane implementation of a xterm-compatible terminal emulation for the
  Linux console. Mainly to have the linux specific extensions separated from
  the standard xterm behaviour.
 
 You mean that you have a big xterm (TERM=xterm) as your console? With scrollbar?

TERM=xterm yes, mouse works as in TERM=xterm (except selections so far) yes,
scrollbar no, but scrollback works as intended. (SHIFT-PgUp/PgDown).
And textronix mode isn't implemented. Otherwise it works fine.

Steffen

___
Steffen Seeger  mailto:[EMAIL PROTECTED]




Re: KGI / GGI architecture

2000-11-23 Thread Steffen Seeger

Nicolas Souchu wrote:
 
 On Tue, Nov 21, 2000 at 06:23:19PM +0100, Steffen Seeger wrote:
 
  libGGI should be portable to *BSD without the need for a KGI port. If, however,
  you are more interested in porting the KGI itself, get in contact with me.
 
 This is actually the way I'd like to proceed. As far as I could understand, 
everything
 should go very well once that done.
 
 But what would be your advice? Should I first port libggi on the FreeBSD framebuffer
 in order to understand its interfaces, or directly consider a port of KGI?

I would port libGGI first, so you have all it's applications too. Done that
I would tackle porting KGI-0.9. I would take that order because this
is probably a more complicated task, because of the kernel hacking involved.

Steffen

___
Steffen Seeger  mailto:[EMAIL PROTECTED]
TU-Chemnitz  http://www.tu-chemnitz.de/~sse




Re: irc meeting about future of ggi

2000-11-23 Thread Steffen Seeger

Tijs van Bakel wrote:
 
 would anyone be interested in this?
 it seems best to use the openprojects irc network
 (http://openprojects.nu/)
 
 --
 Tijs van Bakel, [EMAIL PROTECTED]

If you let me know when and where, I will try to attend.
-- 

Steffen

___
Steffen Seeger  mailto:[EMAIL PROTECTED]




Re: Video memory (Was: Re: GGIMesa updates)

2000-11-21 Thread Steffen Seeger

"Jon M. Taylor" wrote:

 Antonio Campos wrote:

  1) Installing KGI is not an easy task. (It only supports a few cards).
 
 _Running_ KGI is not an easy task, because it only supports a few
 cards.  Installing it is actually pretty easy, unless you don't already
 know about kernel development issues in which case it would be _very_
 difficult.  KGI is not meant for the end user yet, although it is close
 than you might think.

This is correct but also to some way intended. I have concentrated on getting
the framework and concepts worked out, not to write as many drivers as possible.

  2) It doesn't expose a way to handle 2D and 3D graphics in an unified
  (inside kernel) way.
 
 Yes, it does.  Read the docs, please.

To what I only like to add that they may be found at http://kgi.sourceforge.net
...

  3) It doesn't handle the resource allocation of buffers (framebuffer
  memory (back and front, double and triple buffers, etc.), stencil
  buffers, and the like...)
 
 Yes, it does.  Or rather, it provides support for resource
 allocation of abstract buffer types, and the individual KGI drivers
 themselves map out whatever buffers their hardware provides.

It does handle mode specification and initialization of almost all buffer
formats I know. Even more. You can specify z-buffered modes, whith/without
alpha channels, overlays, stereo, anything you can think of.

E.g. initialization of a double-buffered 16bpp stero mode with 16bit z-buffer
works fine with the Permedia2 driver.

However, splitting resources is not yet addressed by KGI-0.9, but is planned
once I have an accelerated X server going.

So, in that way we are in the right direction (though not yet really there
where we want to go).

Steffen

_______
Steffen Seeger  mailto:[EMAIL PROTECTED]




Re: KGI / GGI architecture

2000-11-21 Thread Steffen Seeger

Nicolas Souchu wrote:

 I'm a bit confused by the source layout and the KGI / GGI architecture.
 For exemple, what's the kgi directory in the GGI distribution?

It contains an outdated version of the KGI implementation that works with
libggi. Shortly after the stable libGGI release we decided to separate
libGGI and KGI development, in order to have more frequent libGGI releases.

The new KGI tree can be found at http://kgi.sourceforge.net (or
www.kgi-project.org).

 Could someone draw me a quit picture of the various KGI layers?

You can find documentation of the currently developed kgi-0.9 architecure
at the site mentioned (Articles section).

 Also what's the xterm stuff in the linux drivers?

It's an sane implementation of a xterm-compatible terminal emulation for the
Linux console. Mainly to have the linux specific extensions separated from
the standard xterm behaviour.

 Sorry, but the sources are not commented and since I'm not a Linux kernel
 expert I can't distinguish Linux from KGI interfaces.

There are similar files in kgi-0.9, located in linux/drivers/kgi in the
patched kernel. These implement a full reimplementation of a console subsystem,
which now also official kernel develoers have accepted to be neccessary.
However, as KGI development started, it was just broken and we had to do
a sane console implementation first. The problem was mainly that you have
to coordinate who is accessing which hardware, and the console driver,
SVGAlib and XFree86 are happily competing for concurent access...

 I would have imagined something much more light from the KGI point of view.

So would have I, but the console code in Linux was just crap. The linuxconsole
project attempts to address some of the issues, but does not do this
consequently
enough, in my opinion.

libGGI should be portable to *BSD without the need for a KGI port. If, however,
you are more interested in porting the KGI itself, get in contact with me.

Yours,
Steffen

___
Steffen Seeger  mailto:[EMAIL PROTECTED]




Re: one linux box, multiple X users

2000-11-20 Thread Steffen Seeger

Andreas Beck wrote:
 
  Since Linux supports multiple keyboards, mice and graphic cards it should
  be possible to have one computer on which different people can work on
  simultaneously.
 
 Yes, though it is a bit tricky.

It's quite some work before that becomes possible. I have tried to ge such a
machine
running with kgi-0.9 and even had some success as far as console work was
concerned.
Getting two graphical sessions going was a quite difficult. It worked in the
end somehow (even with XF86) but was not in a very useable state. Mainly
because the XF86 server thought it should initialize all video cards it finds...

  The problem are the mulitple keyboards. How can I assign them to a X
  server?
 
 For XF, AFAIK this isn't possible.

Using the KGI-0.9 code I have had such a machine with two independent sessions
going. However, only one could have been graphical.

The among some initialization issues popping up with XFree 4.0 there were mainly
problems with the console (device) permissions which require work.

Steffen

___
Steffen Seeger  mailto:[EMAIL PROTECTED]




Re: Video memory

2000-11-08 Thread Steffen Seeger

Lee Brown wrote:
 
 On Tue, 07 Nov 2000, Christoph Egger wrote:
 
  
   Thank you for responding to my original request.  As a result I read a little
   on RRM.   You have clever friends.  This idea of multiplexing the graphics
   registers is interesting.  I guess you would have to put graphics context into
   the task struct in order for it to work.  When the kernel switches tasks, not
   only does it set the cpu registers it sets the graphics registers too.
   Or something like that.
 
  I doubt, that Linus will accept that in this way, because that slows down the
  task-switching rapidly...
 
 I thought of this too.  Does it?  I mean it's just a few more registers to
 reset (on top of the CPU registers).  

Yes, for a decent 3D card a minimum of 200 to 300 registers, to be read out
and set over the PCI bus...

This is the simple but not really scalable approach. You have to avoid graphics
context switches whenever possible, and this is what the /dev/graphics mapper
in kgi-0.9 tries to accomplish.

Steffen

___
Steffen Seeger  mailto:[EMAIL PROTECTED]
TU-Chemnitz  http://www.tu-chemnitz.de/~sse




Re: Video memory

2000-11-07 Thread Steffen Seeger

Lee Brown wrote:
 
 On Mon, 06 Nov 2000, Christoph Egger wrote:
 
  It seems, that the time comes, where KGI can go into the kernel, no?
 
 I am still not sure under what conditions Linus would accept KGI.  I
 mean does he have to take it ASIS or can he make a laundry list of requirements
 and have KGI make the neccessary changes?

Just a list of requirements what is so bad about it would be something a
civilized discussion could start on. So far I have only heard that he would not
accept it, but no acceptable reasons why. This requires he has a look at it,
but I doubt he will given that DRI seems to fit his 'needs'.

 I say this because after reading the kernel mailing list I get the idea that
 Linus has very specific ideas about what he likes and doesn't like in the
 kernel.

I hope he is, but this seems to have a certain shift in time...

Steffen

___
Steffen Seeger  mailto:[EMAIL PROTECTED]




Re: Video memory

2000-11-07 Thread Steffen Seeger

Lee Brown wrote:
 
  It seems, that the time comes, where KGI can go into the kernel, no?
 
 Would Linus have to take KGI ASIS or are the terms negotiable?

There are quite some terms negotiable, but not the main goals of KGI: portable
graphics drivers, possibility of high security and high performance
implementations,
independence of the windowing system.

As far as I have understood Linus, he wants everything 'for Linu X only',
and this is contradictonary to some goals of KGI.

Steffen

___
Steffen Seeger  mailto:[EMAIL PROTECTED]
TU-Chemnitz  http://www.tu-chemnitz.de/~sse




Re: Porting to PowerPC

2000-10-13 Thread Steffen Seeger

Paolo Scaffardi wrote:
 
 i am developing on a PowerPC embedded processor (MPC823) and i want to run
 an X-server on its video-controller that can handle YCbYCr data format
 (4:2:2) in memory. It simply stores 2 bytes per pixel, depending of even of
 odd position, YCb or YCr.
 
 I ported GGI and XGGI on my board, but the problem is that XGGI doesnt use
 GGI primitives, but its directbuffer feature, that permit the program access
 directly to the memory buffer that it supposes to be a RGB framebuffer, not
 YCbYCr.
 
 I heard of KGI and its PhoeniX  X11 but i dont know how they works togheter
 and if they access directly to the memory or if they use other library
 primitives.
 
 Have you any hint for me?

The only chance is probably to use the YCbYCr buffer as a direct color buffer
(fixed pixel value to color mapping) and use a translation table/function
to convert RGB into palette values. Also you will probably only be able
to use half the resolution in x-direction, as the color values are shared
among two neighbouring pixels. 

Another method could be to have a shadow buffer (rgb) and translate it into
YCbYCr when blitting it to the screen. The memory visual of libGGI/XGGI 
does probably allow for this, at least it could probably be modified to do so.

However, PhoeniX so far works only with 8bbp, and needs at least the pallette
setting implemented. I would not recommend it for your application if you need
to get it going quickly.

Steffen

___
Steffen Seeger  mailto:[EMAIL PROTECTED]




kgi-0.9-20001011 snapshot

2000-10-11 Thread Steffen Seeger

Hello all,

it took it's time, but here it is, the new snapshot of the kgi-0.9 source
tree, now featuring

- a /dev/event mapper implementation
- a semiworking X server (not yet accelerated, but I am working on it).
- an improved Display DDK documentation.

Have fun,

Steffen

___
Steffen Seeger  mailto:[EMAIL PROTECTED]




Re: KGI documentation

2000-10-04 Thread Steffen Seeger

Lee Brown wrote:
 
 Steffen,
 
 Here is the finished product of my little introduction to kernel graphics.  The 
documentation comes in multiple forms:
 HTML
 PS
 texinfo
 DocBook
 
 It was written in texinfo.  I used texinfo 2 DocBook to get the SGML version.  BTW 
if anyone is interested in converting texinfo to DocBook I have the software.
 
 Comments?
 
 Thank You,
 Lee
 --

Got it and will be reading through it.

Steffen

___
Steffen Seeger  mailto:[EMAIL PROTECTED]




Re: Where is the GGI project heading?

2000-09-11 Thread Steffen Seeger

Andreas Beck wrote:
 
  I mean, is there any schedule on when a new release of GGI/KGI is going
  to happen?
 
 Hmm - Marcus: How is your current schedule ? We should probably finally whip
 up a new LibGGI release.
 
  * Is going KGI to be integrated in the new 2.4x kernel series?
 
 No.
 
  If not, why?
 
 Hmm - Steffen what is your status ?

Current status is that I returned from a badly needed holiday, finding that the
important threads always happen when I am away. 

 Still working, or did you quit ?

Still working. I am currently getting a light-weight X server running with
KGI-0.9, which is currently initializing the graphics card and displaying
the windows. I am right now implementing the event delivery in KGI-0.9 and
getting the X server to respond to my input. Then there will be another
snapshot release.

  and should the GGI team develop a branch of the kernel?
 
 If someone wants to do this, it might make sense. We maintained patches for
 a long time a long while ago, but as noone seemed to be too interested,
 we started lagging behind kernel changes and finally stopped updating stuff.

KGI-0.9 will follow 

  Why doesn't Linus want KGI inside the kernel sources?.
 
 The data about this topic is very dated. I wouldn't count on that still
 being the case, with stuff like DRI also getting its helper modules in.

That's a question Linus has to answer, not I.

  And DRI? Is DRI possible under GGI?
 
 Noone has tried yet. According to Steffen DRI is something one shouldn't
 really try ...

You could try it, it might work, but I cannot recommend it for everyday use, as 
any user running a DRI program can accidentally freeze the machine, just
by halting the program in question at a bad time. See the security analysis
at PI's website.

  Is GGI/KGI ending as a curiosity - another kind of graphics library - ,
 
 I am afraid it will - regarding Linux.

Which is my feeling too. However, as long as there is no solution to the
problems I intend to solve with KGI, I will continue with it. Maybe someone
can use it too.


Jon M. Taylor wrote:

 *BSD has been ascendant recently.  There have been discussions in
 the past about using *BSD instead of Linux as the primary KGI development
 OS, but nothing ever happened.  HURD was also mentioned at one point, as
 was Win32(!).

This is still on my list of cool things to do, and recent developments have
only made me more certain about that. There is, however, one point that keeps
me from immediately jumping at HURD/Mach, or other OSes: I want to have the
concepts for the driver model _working_ and fleshed out before ports to another
platform start. As a beginning, I would love to see the current KGI-0.9 running
on PPC or Alpha, but I have no hardware to test it, nor are there developers
having the hardware and wanting to do the port.

Once the KGI-0.9 acceleration concept is proved, we can focus on taking the
world,
doing it before will cause a bigger mess than worth the hassle.

 * I never got the 2.3/2.4 port working.  Close (it wasn't _that_
 difficult), but no cigar.  The 2.2 kernel series is still being actively
 maintained by Alan Cox, but 2.4 will have several new features (most
 notably kiobufs and devfs) which if used by KGI would make the KGI kernel
 patches quite a bit smaller and simpler.

Intentionally I do not put work into a 2.4 port before 2.4-final is out.
Mainly because then is clear what parts of the new console system
are in. For the current stuff I am working on, 2.4 is not a requirement,
so its not on the priority list.

In sum, while KGI does require a decent bit of work, it is already
 quite far along.

Oh yes, it is. Though it needs work. Fortunately I will find the
time to give it another push during the next two weeks.

  Don't give up on it.

It's hard some times, but I've quite a high frustration level...
But even that gets exceeded sometimes.

 If you don't already know about
 how kick-ass Steffen's design for the new KGI is, or haven't read
 Steffen's excellent architectural descriptions of KGI, please head over to
 SourceForge and do some KGI browsing.  You'll be amazed.

Thanks for the credits :-) 



Steffen

___
Steffen Seeger  mailto:[EMAIL PROTECTED]
TU-Chemnitz  http://www.tu-chemnitz.de/~sse




Re: new GNU libxmi released

2000-07-12 Thread Steffen Seeger

"Jon M. Taylor" wrote:
 
 On Mon, 10 Jul 2000, Steffen Seeger wrote:
 
  "Robert S. Maier" wrote:
 
   Hi, Jon and other GGI folks.  I haven't been sending anything to your list
   (I've just been lurking), but being the maintainer of GNU libxmi, I thought
   I ought to do so now.
 
  So you (and Jon) might be the right people to ask this question:
 
  Does libXMI work out of the box as an replacement to the MI code in the
  X11R6.4 sample implementation (with XFree enhancements)?
 
 Out of the box?  No, for the simple reason that I had to modify
 the API calls to take an additional ggi_visual_t pointer as their first
 argument.  I have also altered the miPixmap datatype and removed the
 miBitmap datatype.  The majority of the rest remains the same, though.

I am asking because now that I have the PhoeniX framework in CVS and compiling,
I wanted to add a DDX driver t for a simple framebuffer X on kgi-0.9.

The thing I was wondering about was if I could use libXMI as a mi replacement
for PhoeniX, and investing into an accelerated libXMI.

However, so far it looks as if I stick with my plan on getting XAA running.

Any suggestions/comments?

Steffen

_______
Steffen Seeger  mailto:[EMAIL PROTECTED]
TU-Chemnitz  http://www.tu-chemnitz.de/~sse




Re: Kgicon - Many questions, any answers ?

2000-06-30 Thread Steffen Seeger

Christoph Egger wrote:

  XGGI: Just wanted to know whether there is still active developement.
 
 Well, it seems to me, that all XGGI-stuff is now done by Steffen.

Not 100% correct. PhoeniX is for now intended as an _experimental_
project-internal server to have something to play with KGI-0.9.
It's an X11R6.4 server based on the XFree-4.0 distribution, but not
relying on XFree-4.0 device dependent (ddx) code. It's just the server
cut out of the XF40 distribution, in order to reduce build time considerably.

XGGI development is still in the trustworthy hands of Marcus, who
is, however busy with libGGI development at the moment.

Steffen

___
Steffen Seeger  mailto:[EMAIL PROTECTED]




Re: SVGALIB4ggi

2000-04-25 Thread Steffen Seeger

Andreas Beck wrote:
 
  I tried several times last week to subscribe to various ggi/kgi mailing
  lists without sucess
 
 Hmm - most of the kludge.org stuff seems dead - but it isn't used much
 anyway. Please try the [EMAIL PROTECTED] .

The KGI mailing lists have been moved to SourceForge, detailed
instructions which mails are availabe and how to subscribe can be
found at 

http://kgi.sourceforge.net/developers/resources/welcome.en.html#mailing-lists 

Steffen

PS: Is the kludge.org mailing list maintainer still around?
___
Steffen Seeger  mailto:[EMAIL PROTECTED]




kgi-0.9-20000418

2000-04-18 Thread Steffen Seeger

Hello,

a new snapshot of KGI-0.9 has been released and may be downloaded from
http://kgi.sourceforge.net

What's new?

- Overall source tree cleanup
- source tree now moved to SourceForge's CVS Repository
- added driver development SDK (basically a few scripts that aid
  you in getting a driver framework started easily)
- added TI TVP3026 ramdac driver (which was created using the SDK within
  a day).
- it all compiles again except for the X server.

Enjoy trying it,
Steffen

___
Steffen Seeger  mailto:[EMAIL PROTECTED]




new KGI mailing lists

2000-04-04 Thread Steffen Seeger

Hello everyone,

the KGI mailing lists are operational at sourceforge:

[EMAIL PROTECTED]
If you have comments, suggestions or technical questions about
software developed by the KGI Project this list is the one to
subscribe to. If you want to participate in the development of
KGI, the kgi-develop list is one you should be subscribed to.
Subscription info can be found at
http://lists.sourceforge.net/mailman/listinfo/kgi-develop

[EMAIL PROTECTED]
If you are interested in the development of the KGI Project,
but don't want to know the details, this list is the one you
should subscribe to. kgi-announce is intended for general
announcements regarding the Kernel Graphics Interface Project,
such as snapshot releases, news of public interest etc.
It therefore should be rather low-traffic.
Subscription info can be found at
http://lists.sourceforge.net/mailman/listinfo/kgi-announce 

[EMAIL PROTECTED]
If you have problems installing and using software from the
KGI Project or want to discuss general issues or your experience
with other users, you may direct your questions to this list.
Subscription info can be found at
http://lists.sourceforge.net/mailman/listinfo/kgi-users

I would like to ask anyone subscribed to [EMAIL PROTECTED] to move
over to the new lists now. I will stay subscribed and crosspost
to [EMAIL PROTECTED] for about two months but main activity will
be on the SourceForge lists from now on.

I am sorry for this inconvenience, but it appears to be better to move
now than later.

Yours,
Steffen

___
Steffen Seeger  mailto:[EMAIL PROTECTED]




Re: moving KGI to Sourceforge

2000-04-04 Thread Steffen Seeger

Thanks to everyone for their support.

Steffen

___
Steffen Seeger  mailto:[EMAIL PROTECTED]




Re: moving KGI to Sourceforge

2000-03-30 Thread Steffen Seeger

Andrew Apted wrote:
 
 Steffen Seeger writes:
 
   I have created a sourceforge account to host KGI related resources in
   one central point. There is a web-page available at
   http://kgi.sourceforge.net/
 
 What is the license on KGI-0.9 ?  None of the files in the 2000-02-22
 version contain any license info, except for something nasty looking
 in the nVidia source, and the files COPYING.[L]GPL in the config
 directory.

The core and all drivers I have copyright of will be under MIT/X style
license. The sample implementations (for Linux so far) will be 
just as the target requires.

 KGI used to be under the GPL (IIRC), 

The Linux sample implementation, yes. However, if you need a different
copyright for parts I have written, just ask me what for.

 perhaps now KGI will be under an
 Xfree style license like LibGGI ?

As said above, KGI itself will/is MIT/X (I am just going through the
files before moving the CVS-Repository to SourceForge and add a
copyright notice stating it is under MIT/X license where appropriate.

That's what we agreed on at the last copyright debate.  

Steffen

___
Steffen Seeger  mailto:[EMAIL PROTECTED]




moving KGI to Sourceforge

2000-03-28 Thread Steffen Seeger

Hello all,

I have created a sourceforge account to host KGI related resources in
one central point. There is a web-page available at
http://kgi.sourceforge.net/

with some of the articles I have written about KGI in the past.
New ones, will follow, especially driver development guides and
API specifications.

For now I will try to get the resources and infrastructure set up.

Attention driver developers (Jon, Johan, Jos, ...): Please get your own
source-forge account (preferably lastname_firstname initial) and
send me the neccessary info so I can add you to the developers list.

Some misc points:

0)  I still had some trouble getting developer access for CVS to work.
As soon as I resolved this, I will put my CVS tree up on Sourceforge.
1)  I would like to have the KGI mailing list moved (for the last time
hopefully) to sourceforge as long as it is low-traffic and not very
widespread.
Can we set up the old list such that it sends a 'this list has
moved, please subscribe to ...' message to new subscribers?

That's all for today, updates will follow.

Steffen

___
Steffen Seeger  mailto:[EMAIL PROTECTED]




Re: introductory architecture questions ?

2000-03-20 Thread Steffen Seeger

Hi Jon,

you wrote:

 I am interested in security and microkernels, so GGI appeals to me because
 I like the idea of small kernel modules that securely multiplex graphics.
 However I have some concerns I was not able to answer from the online
 documentation.
 
 Firstly, more architectural diagrams please ...
 
 I searched and read lots of pages on GGI before I found Peter Amstutz's
 diagrams in the 'OLD' documents section.
 I found they helped, almost as much as everything else I read put together.
 
 I think it might help other interested people if architectural diagrams
 occurred up front in an introduction
 document, then readers know which bits they want to read about.
 
 In particular the FAQ compares GGI to X, to SVGAlib, window managers etc.
 Several of these are obviously bogus comparisons (as the FAQ points out)
 but I think a couple of diagrams would clear this up much better.
 [ 4 in particular: GGI, X, SVGAlib, and GGI on X on GGI ]

I will take these valid suggestions into account for the new documentation
I am writing at the moment.

 The obvious missing comparison was Plan 9's 8.5 which securely virtualises
 devices.

Could you perhaps give me some pointers to information about Plan9?
I am not a OS-researcher (yet) but doing physics. All I know about
OS/driver design is what read/learned myself. 

 And a couple of security questions.
 [ Please assume a system in which multiple processes of the same user may
 have different security domains ]
 
 1) Can two GGI programs securely share a display ?

This depends on the target I would say. If the target supports proper
virtualization and protection (e.g. a secure X11-like protocol
that checks permissions before performing graphics operations)
it could definately be. The problem I see more is how to impose
that security without drastic performance loss. That's what the
KGI portion is supposed to help with. 

 Presumably each would have a device whose virtual display was a portion of
 the physical display.

This is much like KGI-0.9 is working internally. The graphics driver
exports so-called resources, that e.g. may be a memory region,
a accelerator FIFO, etc. which then is mapped to the application.

The application thereby opens a device (virtual display) and requests
to map resources into it's address space. However, its up to the hardware,
the driver and the mapper to enforce proper isolation and protection.
I have not yet seen any hardware that was designed to meet these goals
under the constraint of decent performance.

 1b) If two programs securely share a display, do they do so by giving up
 hardware acceleration ?

How do you define the term 'securely'?

 2) Can I implement a feature like the WinNT logon dialog that comes up in
 response to the three fingered salute ?
 In security parlance a trusted-path: a user can trust the dialog that comes
 up in response to ctrl-alt-delete because
 a) kernel catches ctrl-alt-delete before any programs, and
 b) no programs can access the window list associated with the login dialog.

Doesn't do pressing CTRL-ALT-BACKSPACE at the XDM prompt something simuilar?
 
 Because I don't really have a good grasp on the architecture its possible
 Im not asking the right questions ...
 
 TIA
 - JonT

I am currently (re-)writing the documentation for KGI-0.9 which is
mainly about such issues. I would be happy if you could attempt to
read through them and give some comments on both the docs and KGI
in general.

Do you have any time constraints to be met?

Steffen

___
Steffen Seeger  mailto:[EMAIL PROTECTED]



Re: kgi-0.9-20000222

2000-02-23 Thread Steffen Seeger

Rubén wrote:
 
 On 2000/Feb/22, Steffen Seeger wrote:
 
 Hi,
 
  a new KGI-0.9 snapshot is available from
 
 What about acceleration? I've downloaded this version but it has
 nothing under the accel directory... Is it only available at KGIcon yet?

I have added (untested) acceleration handling code to the Permedia2
driver
in the previous release. I am currently busy at work/my phd, so I had no
chance to test it. However, acceleration handling will be done in the
chipset driver, there will be no separate module.

 
  - added S3 ViRGE driver framework by Jos Hulzink
 
 Cool!

Beware it's a framework, it doesn't do anything yet as far as I can
tell without the hardware.
 
 [ GGL developer ]  [ IRCore developer ]  [ GPUL member ]

You still get your code snap from my OpenGL experiments...

Steffen

___
Steffen Seeger 
mailto:[EMAIL PROTECTED]



kgi-0.9-20000222

2000-02-22 Thread Steffen Seeger

Hello,

a new KGI-0.9 snapshot is available from

http://www.tu-chemnitz.de/~sse/ggi/kgi-0.9-2222.tar.gz


1)  CHANGES
===
2222:
- merged jmt3 branch by Jon M. Taylor:
- added generic VGA driver framework by Jon M. Taylor
- added nVidia TNT2 driver framework by Jon M. Taylor
- added S3 ViRGE driver framework by Jos Hulzink
- added fixed clock driver

- merged Matrox Gx00 driver by Johan Karlberg (Gx00-degas-4):
- added Gx00 driver framework

- added XGGI framework, simplified build and patching process
- this does not compile yet

- simplified patch  build process for kernels and X servers

Steffen

___
Steffen Seeger 
mailto:[EMAIL PROTECTED]
TU-Chemnitz 
http://www.tu-chemnitz.de/~sse
--- The GGI Project: http://www.ggi-project.org
---



Re: evstack

2000-02-16 Thread Steffen Seeger

James Simmons wrote in respone to Jason McMullan:

BTW: Was there _anyone_ other than I that cared about GGI Console
  enough to try the code what I was developing it?
 
 Yes.

Yes, Jason, there were. And it worked for me.

  If there's a
  desire, I would love to work with the FBdev team to get more
  GGI Console type structure into the kernel, at least on the
  display side.

The same for me.

Multihead systems are planned for 2.5.X. So far the people involved in
 the design of the new console system are Vojtech Pavlik, myself, and Geert
 Uytterhoeven. Others are welcomed. Matrin Mares was invloved in the new
 design but due to limitations in time he placed me in charge of the
 developement of the new console system. Unfortunely I have the same
 problem. Developement will pcik up once 2.4.X comes out. Vojtech has
 worked on the input system based on GGI consoles input system and has
 quite a bit done. I have worked with Geert to prepare fbdev for real
 multihead support. Some still needs to be done. The core part the console
 system itself needs a really work over. This part is really vaporware.
 Both me and Matrin Mares have some early code which is in the input patch.
 Of course this wasn't completed since me and Mares disagree on several
 design issues.
 
What needs to be done? Well both me and Vojtech have early work for
 multihead support in 2.3.X. Vojtech already has /dev/event in the usb
 directory of the developement branch. I have slowly been placing a new
 fbdev API in place. Many drivers have not been converted over to this new
 API. I need those drivers ported over and I can't do it alone.
 
 What I have learned which will heavly influence the design of the
 console system. That the driver for the raw hardware does NOT need to know
 anything about the console system. Fbdev is heading in this direction. The
 fbdev driver will have no console code what so ever in the near future.
 It will be fbcon.c that will provide the abstarction layer to the console
 system alone. This provides the ability to have fbdev and vgacon run
 together and lots of other nice features. The same will go for the input
 drivers.

Fine.

Jason and Steffen since you have attempted multiheaded support before
 your input will be greatly welcomed : If we all work together we can come
 up with one heck of a solution. This is going to be my project at 3Dfx.
 It's going to kick butt to have quake run on multiple heads of course with
 several voodoo cards.

Sure, but this requires you have some people you may put your input into
and that that some people need to care what you say. From what I
understand
your statements above, the effort so far has been private conversation
between Vojtech Pavlik, myself, and Geert Uytterhoeven. KGI has been
open
since it's beginning, is open, and remains open to anyone willing to
contribute.

Steffen

___
The difference between a "concept" and a "random collection of routines"
is that the concept will survive, and the routines won't. -- L.Torvalds
_______
Steffen Seeger 
mailto:[EMAIL PROTECTED]



Re: evstack

2000-02-16 Thread Steffen Seeger

Steffen Seeger wrote:
 
 From what I understand
 your statements above, the effort so far has been private conversation
 between Vojtech Pavlik, myself, and Geert Uytterhoeven.

Ooops. Don't cut paste   ^^ - yourself ;)

Steffen

___
Steffen Seeger 
mailto:[EMAIL PROTECTED]



mailing list archives broken

2000-02-11 Thread Steffen Seeger

Hi,

the mailing list archives on www.ggi-project.org seem to be
broken (no messages since September 1999.


Steffen

- e-mail: [EMAIL PROTECTED] -



Re: SGI OpenGL freely avalibale.

2000-01-27 Thread Steffen Seeger

On Wed, Jan 26, 2000 at 04:42:38PM -0500, James A Simmons wrote:
 
 http://oss.sgi.com/projects/ogl-sample/

 What's missing from the current Sample Implementation?
 
 Dynamic assembly code generation for rasterization is not yet included, 
 making software rendering performance slow.

Interesting, we came about the same technique as SGI:
The GGL code in KGI-0.9 was a code-study how to dynamically 
generate i386 assembly code for software rasterization.

Steffen
 
- e-mail: [EMAIL PROTECTED] -



Re: KGI-0.9 stuff

2000-01-16 Thread Steffen Seeger

On Sat, Jan 15, 2000 at 01:32:12PM -0800, Jon M. Taylor wrote:
   I will be working on a jmt3 release this weekend, so if anyone out
 there has outstanding patches and wants them merged into jmt3, get them to
 my by midnight PST.  Jos, I have your latest ViRGE patches which you
 posted to thie list.  Brian, I will be working on the VGA driver again
 this weekend, so if you have made any useful changes since jmt2, please
 let me know OK?  The goal is to get the VGA driver to set one or more
 textmodes, as well as 320x200x8 and 640x480x4 modes.  This will be plenty
 to write and test a LibGGI target against.

So I will start my merge from jmt3. Please send me your jmt3 tarball as
soon as it is ready, and I will prepare the next official KGI-0.9 release
starting from it.

Steffen



Re: CT65555

2000-01-05 Thread Steffen Seeger

 I've contacted to author of the CT driver. He told me that it is 2years old
 sources.  So I have no idea now where can I get driver. Worst case will be
 writing a driver by myself. But I have no time at all :(.
 Dmitry

I have a CT 6 in my laptop I planned to support once the P2 driver is
reasonably finished (accelerated X). But this is some time away.

Steffen

- e-mail: [EMAIL PROTECTED] -



Re: DirectX

1999-12-14 Thread Steffen Seeger

 
 Also can libGGI handle DMA transfers, AGP? 

That's handled by KGI/the drivers respectively. The Permedia2 driver
has a first pre-alpha version of accelerator handling for KGI-0.9
from the driver side, but this code is not yet complete (about 95%).
And it needs testing, of course. 

However, in theory it should be able to handle an 'unlimited' number of
independent graphics command streams, fully virtualized and decoupled from
applications.

AGP support is under construction, with a code study of a AGP 'miniport'
driver so far. However, I will first need to have the Permedia2 
accelerator code running, before AGP becomes an issue.

Steffen

- e-mail: [EMAIL PROTECTED] -



A question on wait queues...

1999-12-07 Thread Steffen Seeger

Hello,

I have started to debug the accelerator mapping code. It has a
bug I suspect to have it's origin in wrong useage of wait queues.

Can someone give some hints or pointers where to find information about
the intended use of wait_queue_t is in 2.2 and 2.3 kernels, and what 
are the differences between 2.2 and 2.3?

I have a good documentation about the 2.0 wait queues, but this info seems
rather outdated.

Thanks a lot,
Steffen

- e-mail: [EMAIL PROTECTED] -



Re: More Gx00 code for those truely insane.

1999-11-29 Thread Steffen Seeger

  
  * Don't use pcicfg space for other purposes than initial configuration.
Especially do not use it in _mode_setup() to distinguish device versions.
Use flags or a chipset_version field in the meta_t structure instead.
  
 
 A question on this.
 
 Is it sugested that I detect the vendor/device id and revision once in the
 chipset bind code only, and then somehow share that data with the ramdac and
 clock code, or should I probe this in every meta driver?

Neither nor. vendor/device id and revision should be probed in
the chipset binding driver and the ramdac binding driver if it is an integrated
ramdac. All code in the binding driver has to 'bind' the meta driver to
a particular instance of the device(s) handled by the meta driver.
Therefore it has to do detection and verification.

Chipset drivers must verify the vendor/device ID and ramdac drivers should
do this, if the chipset driver may serve at least one device that does not
have this ramdac fitted.

 In this specific case, I also need to know the RAM type, since the cards
 clock capabilities vary from RAM type to RAM type. 

Can you give some more details on this? How do the clock capabilties vary
between the RAM types? If it only affects the RAM bandwidth, or LCLK limits,
this can safely be handled in the chipset drivers.

 now I have this
 implemented as a flag in _chipset_t, but I'm not aware of how to share this
 with the other sections, like the GET_PRIVATE does in KGIcon.

Not at all. Each driver should not make assumptions about others, except 
where a kgim_ metalanguage type (e.g. kgim_monitor_mode_t) is defined.
This requires some proper thought, but should be possible.

Steffen

- e-mail: [EMAIL PROTECTED] -



Re: More Gx00 code for those truely insane.

1999-11-23 Thread Steffen Seeger

Hello Johan,

 the Degas code however, is on a sorry state of disrepair, It's still missing
 big parts of functionality and is so riddled with #warning and #error
 statement that even thinking of compiling it would be a waste of time.
 however, if somebody is interested in looking it over, feel free to do so.

Some comments from a really insane...

* all symbols visible with 'nm objectfile.o' should be prefixed with 
  the metalanguage prefix. 

* Don't use pcicfg space for other purposes than initial configuration.
  Especially do not use it in _mode_setup() to distinguish device versions.
  Use flags or a chipset_version field in the meta_t structure instead.

* calc_partials() is a "permedianism". The Permedia can only accelerate 
  frame buffers with certain widths. calc_partials() calculates the next 
  supported width.

* bpd, bpf, bpc and bpp refer to the number of bits per
{d}ot   (unit transfered to the dot port)
{f}rame (unit stored per pixel and frame)
{c}ommon(unit stored common to all frames)
{p}ixel = bpc + (stereo ? 2 : 1) * frames * bpf

* Drivers must not share region information. E.g. you must not give the
  DAC driver access to the memory control region claimed by the chipset
  driver except through the DacOut() functions. If you have to access
  indexed registers, declare a 'static inline' function in the 
  ramdac/clock driver.

* The kgi/ directory is reserved for kgi extension headers. 
  Chipset register declarations should go to chipset/Matrox/Gx00.h in your 
  case. This has the benefit you have them at hand where you work the 
  most time.

* I found it useful to convert the header to the naming conventions first.
  Especially as this gives a good overview what registers do what.

These are the comments that came to mind when I had a quick glance over it
yesterday. Keep asking/working on it!

Thanks,

Steffen

- e-mail: [EMAIL PROTECTED] -



Re: Multiple users

1999-11-08 Thread Steffen Seeger

 
   Works great with all four buttons and the wheel. As of kernel 2.3.25 the 
   USB mouse driver only supports one USB mouse, 
  
  ARGL ... will they make the same mistakes again over and over ?
 
 Yes :( The good news is Vojetch is working on something that does use
 multiple mice. Even regualr mice.

I can only make suggestions, but he should have a look at using KGI-0.9 as a 
base and simply enhance the somewhat neglected KII input interface a bit.
Thanks Brian there is a patch that allows the input interface to be used
with kgi-0.9. 
 
   but if none of the USB people does it before me I intend to fix that.
  
  Good. TNX.
  
   As for keyboards it seems you can attach multiple USB keyboards,
   but everything will go into the normal (single-headed) console
   system via calls to handle_scancode(), so multiple keyboards are
   pretty useless. 
  
  Ouch ...
 
 Vojetch is also working on that :) Last time I tried it I got two ps/2
 keyboards to work (one was in my ps/2 mouse port). 

No comment. Thanks Brian there is a patch that allows the input interface
to be used with kgi-0.9. If you manage to get the input drivers by Vojtech
working with KGI-0.9 for multiple USB keyboards, you are ready to go 
multihead! Even without KGI-0.9 drivers... 
 
   I intend to hack the USB keyboard driver to export
   a character device per keyboard, supporting medium-raw mode and
   the normal keyboard LED ioctl()s. If the USB people doesn't like
   that I'll maintain a separate patch.
 
 Take a look at Vojetch work. 
 
 ftp://ftp://atrey.karlin.mff.cuni.cz/pub/linux/input

I would be very grateful if his work could be used with KGI without having
to rewrite it again. 
 
  Hmm - I'd rather just export an event oriented interface and handle dispatching
  in userspace ... greetings from EvStack, you know ... :-).
 
 By the way Vojetch work is based on GGI console. 

I am not clear what you referring to here... EvStack? ggi-0.0.9? kgi-0.9?

 He thinks it was really good work. The only real difference is its 
 less streams orientated. Linus hates ATT Streams for some reason :(

Or other three-letter words...

 Vojetch is working on the keyboard
 part and I'm working on fbcon so we can have a true multiheaded system.
 Note also the newest 2.3.x kernels have real resource management now. Its
 being worked on for other types of buses. So linux is finally evolving to
 the KGI level.  

Good to hear.

Steffen

- e-mail: [EMAIL PROTECTED] -



Re: tested KGI 19991017 snapshot

1999-10-20 Thread Steffen Seeger

 
 Just tested kgi 19991017 snapshot on a fresh 2.2.10 kernel. All I
 could test was a textmode IBM VGA driver. Everything is rocksteady!

Thank you for testing. Well, there are some known bugs, but all in all
it's quite useable.
 
 A few 'bugs' that are not in the documentation:
 
 - keyboard in svgalib programs does not work (probably because of the
   RAW mode it operates in)

Mhmm... X operates in in RAW mode too... Could perhaps investiage 
this further? I don't have a chance to test svgalib (unsupported
chipsets).
 
 - when killing an svgalib program and switching consoles, almost
   simultaneously, the screen goes black; it could be restored by
   switching to x11 and back

Does this occur with a standard-kernel too? If not, it is a KGI bug,
if so, it is a feature. Showing that the emulation is able to produce
the same bugs.

 - alt-f? work in X11 too, where one would
   expect them to be ctrl-alt-f?; this is probably hard to fix -

Yes and no. We just have to deny console requests if the keyboard 
device is in graphics/raw mode. A fix I would like to suggest is
to use CTRL-ALT-F? for console switching too.

 When/how will I be able to use libggi on kgi again? 

When the drivers are operational again. The Permedia2 driver works
quite reasonably, at least setting modes and exporting the
framebuffers. However, there is still some work to be done so that
it can take over a running board safely.

 Is there some place I can hack on a graphic mode for ibm vga? 

Yes.

1)  The fixed clock driver needs to be ported.
2)  The following drivers need to be written:

chipset/IBM/VGA-meta.c
chipset/IBM/VGA-bind.c

ramdac/IBM/VGA.h
ramdac/IBM/VGA-meta.c
ramdac/IBM/VGA-bind.c

 (the source tree is, even after reading the docs over and over 
 and over again, very hard to understand..) I couldn't make out 
 if there was graphic support for ibm vga _at all_.

No there isn't. 

The concept behind the 'difficult' layout is actually simple, but not
yet documented. For each piece of hardware, there is a 'driver'. Each
driver consists of a register definition (.h), a 'meta-language' part 
(-meta.h) that implements the features of that piece of hardware
(e.g. how to set a video mode, what modes are possible, mode checking, ...)
and a 'binding part' that implements the hardware detection and access
stuff.

So, you would have to write a driver for the VGA, just to support graphics
modes (for text modes, just fall back to the VGA-text driver, as
the PERMEDIA driver does).

There is virtually no documentation, but also not yet a fully working
driver to document. Sorry, but getting the driver running is #1 priority
at the moment.

 All in all, it's gotten a lot more usable! Great work.
 
 -- 
 Tijs van Bakel, [EMAIL PROTECTED]


Steffen

- e-mail: [EMAIL PROTECTED] -



Re: RFD: KGI(con) speed optimization

1999-10-04 Thread Steffen Seeger

 Hi
 
 Working on my ViRGE driver, I noticed something:
 
 Handling the KGI commands, most drivers use a switch () {case ...}
 structure. This looks nice, but results in very slow code (each case
 results in at least one conditional jump, which can slow down the CPU
 badly)
 
 I was wondering: Using a procedure lookup table would improve the speed a
 lot, but would require that I can take the definitions in kgi_commands.h
 as static ones. It would result in code like (this is no real code, 
 only to make things clear)
 
 int * accelleration_command[](void *, struct kgi_display)= {
   ViRGE_2D_DrawLine, /* This depends on kgi_commands.h */
   ViRGE_2D_DrawBox,
   ... etc...
 }
 
 (*accelleration_command[_IOC_NR(cmd)])(gr-io_buf,gr-dev.dpy);
 
 instead of :
 switch (cmd) {
   case ACCEL_DRAW_LINE:
   case 
   case 
 }
 
 Notes here: _IOC_NR is Linux only and must be replaced by a KGI defined
 compatible function. I use _IOC_NR to get values in the range 0-255,
 otherwise the table would become very huge with many unused entries.
 
 Comments please...
 
 Jos

AFAIK GNU C does that if it becomes faster. So, it depends on the compiler
you use :-)

Steffen

- e-mail: [EMAIL PROTECTED] -