[<<] [<] Page 1 of 2 [>] [>>] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subject:
Bogl changes & Nano-X-0.5
From: Alex Holden ####@####.#### Date: 18 May 1999 15:46:29 -0000 Message-Id: <Pine.LNX.4.04.9905181430170.4779-100000@hyperspace> I was just wondering what is happening with the Bogl code in Nano-X? How far are we away from being able to use an unmodified Bogl library? The reason I ask is that I would like to make a NanoGUI demo disk which uses the VGA16 driver; I have the boot disk setup with a VGA16 frame buffer okay, but the VGA16 driver in Nano-X doesn't work any more... Is there anything I can do to help things along myself? BTW, since Greg has volunteered to clean up all the loose ends I mentioned in an earlier mail, I'm working on rewriting the networking code according to David's suggestions. On the subject of changes, I think we should have several pre-5 releases before we release an official new version this time, and make sure everything works properly before we release it. Since I've been having some problems getting the CVS server to behave, and Greg doesn't want to use it anyway, I'll have to juggle the patches myself and put up new pre-releases whenever I get a few new things working together. Okay, I'd like to make up a "To do for V0.5" list. So far I have: Rewrite networking code. Make Nano-X work with the latest Bogl. Tidy up code in general. Make whatever API changes are needed to support GDK. Implement a basic WM API. Document the APIs. Make demo disk. I'd like to hear suggestions as to what else people think should be done before the 0.5 release. I'll discuss the WM and GDK API stuff in seperate mails on the subject (note that I'm not suggesting writing a WM or porting GDK, just getting the necessary changes over with now, so that someone can do it before Nano-X-0.6). --------------- Linux- the choice of a GNU generation. -------------- : Alex Holden (M1CJD)- Caver, Programmer, Land Rover nut, Radio Ham : -------------------- http://www.linuxhacker.org/ -------------------- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subject:
RE: Bogl changes & Nano-X-0.5
From: Greg Haerr ####@####.#### Date: 18 May 1999 17:18:36 -0000 Message-Id: <01BEA11F.7BC8AE00.greg@censoft.com> On Tuesday, May 18, 1999 9:36 AM, Alex Holden ####@####.#### wrote: > I was just wondering what is happening with the Bogl code in Nano-X? > How far are we away from being able to use an unmodified Bogl library? There are considerable changes that need to be made to use unmodified bogl libraries. The first major issue is that all the bogl entry points need to have code added to support drawing in AND, OR and XOR modes, in addition to SET, which is already implemented. Secondly, bogl code currently resets the keyboard, etc when asked to open the screen. This code should be removed, or called separately by the upper level. NanoX currently has separately controlled keyboard drivers. Thirdly, a ReadPixel() entry point needs to be added to all bogl drivers. Fourthly, with my nano-X v0.5 modifications (detailed following) I have re-designed cursor management and no longer use the low-level pointer draw routines in bogl. This was to give some common upper-level code that knows about a nanoX cursor format so that we could support the GR_BITMAP format for cursors. In addition, nanoX now supports color cursors, which bogl doesn't. The new mid-level cursor routines depend on scrdev.DrawPixel and scrdev.ReadPixel to support any cursor included with the mini-x demos. So, the scr_bogl.c routine and the included server/drivers/bogl directory contain the modifed bogl library code that's necessary to support the advanced draw code requests in the current demos. Ben is very interested in contributing, but I have been discussing a more advanced monochrome/color bitmap format that would allow pictures etc to be displayed with nanoX using 8/16/24/32 bit color formats. So, basically, unless alot more people start coding, we're using the single driver that I've made work for the demo functionality. I also have serious architectual concerns about using non-nanoX drivers, for speed and future bitblt issues... BTW, in the nano-X v0.5 release that I've prepared, I've included a hardware VGA driver for 640x480x16 color mode that supports the damned VGA hardware 4-plane mode. Currently, this driver is limited to running under DOS or NT DOS emulation. Some research that needs to be done is how the Linux framebuffer device supports more than just MODE_SET draw modes, while being just a memory-mapped device. The VGA hardware supports XOR/AND/OR drawing by setting bits in a control register. Is this the way that the framebuffer device is supposed to be used also? > The reason I ask is that I would like to make a NanoGUI demo disk which > uses the VGA16 driver; I have the boot disk setup with a VGA16 frame > buffer okay, but the VGA16 driver in Nano-X doesn't work any more... > Is there anything I can do to help things along myself? This shouldn't be too hard, the server/drivers/bogl directory contains an earlier VGA16 driver. Just define BOGL_VGA16_FB=1 in the included makefile, and type make clean; make from the server directory. That driver needs all the other mods made in the bogl-cfb8.c file. > > BTW, since Greg has volunteered to clean up all the loose ends I mentioned > in an earlier mail, I'm working on rewriting the networking code according > to David's suggestions. I've made the changes so that, for instance, Dave's mini-x world program compiles and runs with a few lines of code changes. > > On the subject of changes, I think we should have several pre-5 releases > before we release an official new version this time, and make sure > everything works properly before we release it. Since I've been having > some problems getting the CVS server to behave, and Greg doesn't want to > use it anyway, I'll have to juggle the patches myself and put up new > pre-releases whenever I get a few new things working together. I have completed work on an interim v0.5, that, should you want it, contains the following changes: * Rewrote cursor routines * Separated mouse from cursor routines * Removed DrawCursor from device driver * Added ReadPixel to device driver * Made demo programs work with cursor changes * Added support for color cursors * Added polygon draw and fill routines * Added area pixel reading/writing, removed 8-bit limit for colors * Reworked color model * Added direct hardware 640x480x16 support for VGA real mode systems * Made api backwards compatible with mini-x * Ported mini-x world demo program to examples library I recommend that we post this stuff, since it contains considerable changes to the driver level, and then you work on a v0.6. Maybe I'll work on some other things for a while. Greg > > Okay, I'd like to make up a "To do for V0.5" list. So far I have: > Rewrite networking code. > Make Nano-X work with the latest Bogl. > Tidy up code in general. > Make whatever API changes are needed to support GDK. > Implement a basic WM API. > Document the APIs. > Make demo disk. > > I'd like to hear suggestions as to what else people think should be done > before the 0.5 release. > > I'll discuss the WM and GDK API stuff in seperate mails on the subject > (note that I'm not suggesting writing a WM or porting GDK, just getting > the necessary changes over with now, so that someone can do it before > Nano-X-0.6). > > --------------- Linux- the choice of a GNU generation. -------------- > : Alex Holden (M1CJD)- Caver, Programmer, Land Rover nut, Radio Ham : > -------------------- http://www.linuxhacker.org/ -------------------- > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: ####@####.#### > For additional commands, e-mail: ####@####.#### > | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subject:
RE: Bogl changes & Nano-X-0.5
From: Alex Holden ####@####.#### Date: 18 May 1999 20:01:44 -0000 Message-Id: <Pine.LNX.4.04.9905181946530.691-100000@hyperspace> On Tue, 18 May 1999, Greg Haerr wrote: > There are considerable changes that need to be made to use unmodified > bogl libraries. The first major issue is that all the bogl entry points > need to have code added to support drawing in AND, OR and XOR modes, in > addition to SET, which is already implemented. I'll take a look at it > Secondly, bogl code currently resets the keyboard, etc when asked to open the > screen. This code should be removed, or called separately by the upper level. > NanoX currently has separately controlled keyboard drivers. It'd probably be a better idea for us to use the Bogl keyboard driver when Bogl is available, and maybe the mouse driver too. > Fourthly, with my nano-X v0.5 modifications (detailed following) I have > re-designed cursor management and no longer use the low-level pointer > draw routines in bogl. This was to give some common upper-level code > that knows about a nanoX cursor format so that we could support the > GR_BITMAP format for cursors. In addition, nanoX now supports color > cursors, which bogl doesn't. The new mid-level cursor routines depend Is there any point having colour cursors? I don't think I have ever seen X or 'doze produce a colour mouse pointer. > Some research that needs to be done is how the Linux framebuffer device supports > more than just MODE_SET draw modes, while being just a memory-mapped device. > The VGA hardware supports XOR/AND/OR drawing by setting bits in a control register. > Is this the way that the framebuffer device is supposed to be used also? The XFREE86 FB driver might be a useful reference; I have a copy somewhere. > This shouldn't be too hard, the server/drivers/bogl directory contains > an earlier VGA16 driver. Just define BOGL_VGA16_FB=1 in the included > makefile, and type make clean; make from the server directory. That driver I suppose you haven't tried then, I got a screenfull of errors when I tried :). Seriously, I haven't looked at how much needs changing yet. > > On the subject of changes, I think we should have several pre-5 releases > I have completed work on an interim v0.5, that, should you want it, I'll be releasing that in about half an hour as 0.5pre1 --------------- Linux- the choice of a GNU generation. -------------- : Alex Holden (M1CJD)- Caver, Programmer, Land Rover nut, Radio Ham : -------------------- http://www.linuxhacker.org/ -------------------- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subject:
RE: Bogl changes & Nano-X-0.5
From: Vidar Hokstad ####@####.#### Date: 18 May 1999 22:50:51 -0000 Message-Id: <Pine.LNX.4.10.9905190043050.2715-100000@a.ncg.net> On Tue, 18 May 1999, Alex Holden wrote: > On Tue, 18 May 1999, Greg Haerr wrote: > > Fourthly, with my nano-X v0.5 modifications (detailed following) I have > > re-designed cursor management and no longer use the low-level pointer > > draw routines in bogl. This was to give some common upper-level code > > that knows about a nanoX cursor format so that we could support the > > GR_BITMAP format for cursors. In addition, nanoX now supports color > > cursors, which bogl doesn't. The new mid-level cursor routines depend > > Is there any point having colour cursors? I don't think I have ever seen X > or 'doze produce a colour mouse pointer. At least in the case of X, that is because X uses X bitmaps for pointers, and X bitmaps are mono only, so X doesn't _support_ colour mouse pointers... Don't know about Windows though - I only rarely touch Windows machines :) Regards, Vidar | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subject:
RE: Bogl changes & Nano-X-0.5
From: Alex Holden ####@####.#### Date: 18 May 1999 23:06:38 -0000 Message-Id: <Pine.LNX.4.04.9905182346090.16616-100000@hyperspace> On Tue, 18 May 1999, Greg Haerr wrote: > There are considerable changes that need to be made to use unmodified bogl libraries. > The first major issue is that all the bogl entry points need to have code added > to support drawing in AND, OR and XOR modes, in addition to SET, which is > already implemented. After thinking about this, and looking at the code, isn't the best way to do this for the graphics screen to be mirrored in main memory, and do the processing on that then copy only the altered areas out to the buffer on the graphics card? That way, you aren't shipping large amounts of data over a PCI or ISA bus... I seem to recall Allegro had about five different ways of dealing with this problem though, so there probably isn't one answer which is best for all situations. It doesn't seem that reading from the frame buffer, performing an operation on it, and writing it back out again is going to be a very good idea, and I couldn't see any obvious way to use the hardware capabilities of the graphics card to do it with the Linux Framebuffer interface (maybe you can do it with the accelerated ones though). BTW, I've just switched the newest bogl library in place of the old one. Very few changes at all were needed, though I didn't copy the readpixel() stuff (as I said above, I don't think reading it from the framebuffer itself is the best way to do it anyway) so you can "rub out" the screen by waving the mouse over it. The Map program looks good in VGA16 mode, but on the NetWinder it's just a mess of random lines (structure alignment problems, no doubt). --------------- Linux- the choice of a GNU generation. -------------- : Alex Holden (M1CJD)- Caver, Programmer, Land Rover nut, Radio Ham : -------------------- http://www.linuxhacker.org/ -------------------- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subject:
RE: Bogl changes & Nano-X-0.5
From: Greg Haerr ####@####.#### Date: 18 May 1999 23:13:12 -0000 Message-Id: <01BEA151.78DF5E00.greg@censoft.com> > > Is there any point having colour cursors? I don't think I have ever seen X > > or 'doze produce a colour mouse pointer. > > At least in the case of X, that is because X uses X bitmaps for pointers, > and X bitmaps are mono only, so X doesn't _support_ colour mouse > pointers... Don't know about Windows though - I only rarely touch Windows > machines :) > There isn't much point, other than user fascination with bells and whistles. Monocrhome bitmaps (the same as those used by nano-X) can be drawn with different foreground and bg colors. This is the new algorithm that is used for all bitmap draws, including cursors in v0.5, thus color cursors for free. The bogl driver assumed a fixed palette, which won't work if we ever want to display pictures, and ignored the currently set fg and bg colors. In addition, a very similar routine needed to be written for regular bitmap drawing.... BTW, Windows supports not only full color cursors, but also animated ones as well. It's little gizmos like this that can add considerable customer zeal to a product. On small LCD machines, for instance, the mouse cursor can be told to "slide" along the screen leaving a faint memory. This allows users to spot the mouse quicker when there's only two colors. Greg | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subject:
RE: Bogl changes & Nano-X-0.5
From: Alex Holden ####@####.#### Date: 18 May 1999 23:18:04 -0000 Message-Id: <Pine.LNX.4.04.9905190005330.16616-100000@hyperspace> On Tue, 18 May 1999, Greg Haerr wrote: > It's little gizmos like this that can add considerable customer zeal to a product. On > small LCD machines, for instance, the mouse cursor can be told to "slide" along the > screen leaving a faint memory. This allows users to spot the mouse quicker when > there's only two colors. "Ee, when I was a lad..." I remember with 'doze 3.1 on my PC it would lock the machine solid if you enabled that option. I later used a friend's laptop which had it on, and it drove me insane after two minutes. --------------- Linux- the choice of a GNU generation. -------------- : Alex Holden (M1CJD)- Caver, Programmer, Land Rover nut, Radio Ham : -------------------- http://www.linuxhacker.org/ -------------------- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subject:
RE: Bogl changes & Nano-X-0.5
From: Greg Haerr ####@####.#### Date: 18 May 1999 23:18:43 -0000 Message-Id: <01BEA152.4B714FE0.greg@censoft.com> On Tuesday, May 18, 1999 4:56 PM, Alex Holden ####@####.#### wrote: > On Tue, 18 May 1999, Greg Haerr wrote: > > There are considerable changes that need to be made to use unmodified bogl libraries. > > The first major issue is that all the bogl entry points need to have code added > > to support drawing in AND, OR and XOR modes, in addition to SET, which is > > already implemented. > > After thinking about this, and looking at the code, isn't the best way to > do this for the graphics screen to be mirrored in main memory, and do the > processing on that then copy only the altered areas out to the buffer on > the graphics card? That way, you aren't shipping large amounts of data > over a PCI or ISA bus... I seem to recall Allegro had about five different > ways of dealing with this problem though, so there probably isn't one > answer which is best for all situations. It doesn't seem that reading from > the frame buffer, performing an operation on it, and writing it back out > again is going to be a very good idea, and I couldn't see any obvious way > to use the hardware capabilities of the graphics card to do it with the > Linux Framebuffer interface (maybe you can do it with the accelerated ones > though). That is precisely my point about the VGA hw registers that do this operation for you. In the mean time, XOR draw mode is a must for all the demos... No, it is far too slow to draw everything twice, once in main, then in graphics ram. In addition, you'd never know what's been modified. However, the bitblt operations you speak of are solved with a rearchitecture of the driver model I spoke of in an earlier mail msg. This involved allowing all graphics operations to be performed on a "bitmap", where the bitmap is either offscreen memory or the graphics memory. Thus, the low-level draw primitives take a buffer address into account for all their operations, and record how many bits per planes, etc. This is how Allegro does it. This is how nanoX should do it. > > BTW, I've just switched the newest bogl library in place of the old one. > Very few changes at all were needed, though I didn't copy the readpixel() > stuff (as I said above, I don't think reading it from the framebuffer > itself is the best way to do it anyway) so you can "rub out" the screen by > waving the mouse over it. The Map program looks good in VGA16 mode, but on > the NetWinder it's just a mess of random lines (structure alignment > problems, no doubt). Please copy the readpixel routine into your new driver. Readpixel is required for demo.c program to run, as well as the ReadArea api, as well as the cursor drawing. Greg > > --------------- Linux- the choice of a GNU generation. -------------- > : Alex Holden (M1CJD)- Caver, Programmer, Land Rover nut, Radio Ham : > -------------------- http://www.linuxhacker.org/ -------------------- > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: ####@####.#### > For additional commands, e-mail: ####@####.#### > | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subject:
RE: Bogl changes & Nano-X-0.5
From: Greg Haerr ####@####.#### Date: 18 May 1999 23:23:13 -0000 Message-Id: <01BEA152.ECA921D0.greg@censoft.com> > > Secondly, bogl code currently resets the keyboard, etc when asked to open the > > screen. This code should be removed, or called separately by the upper level. > > NanoX currently has separately controlled keyboard drivers. > > It'd probably be a better idea for us to use the Bogl keyboard driver when > Bogl is available, and maybe the mouse driver too. I'd rather see separate capabilities for mouse and kbd, then people can add/modify them if desired. > > The XFREE86 FB driver might be a useful reference; I have a copy > somewhere. I'd love to see the Xfree86 FB driver. Greg | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subject:
RE: Bogl changes & Nano-X-0.5
From: Alex Holden ####@####.#### Date: 18 May 1999 23:34:40 -0000 Message-Id: <Pine.LNX.4.04.9905190019240.16616-100000@hyperspace> On Tue, 18 May 1999, Greg Haerr wrote: > No, it is far too slow to draw everything twice, once in main, then in graphics ram. In I don't know if there is a way to specify the write mode with the framebuffer drivers, but if there isn't then the best way is to use a buffer. > addition, you'd never know what's been modified. However, the bitblt operations you That depends on how you implement it. > speak of are solved with a rearchitecture of the driver model I spoke of in an earlier > mail msg. This involved allowing all graphics operations to be performed on a "bitmap", That's a seperate issue to the drawing modes. > Please copy the readpixel routine into your new driver. Readpixel is required > for demo.c program to run, as well as the ReadArea api, as well as the cursor drawing. I never suggested not having a readpixel() routine. --------------- Linux- the choice of a GNU generation. -------------- : Alex Holden (M1CJD)- Caver, Programmer, Land Rover nut, Radio Ham : -------------------- http://www.linuxhacker.org/ -------------------- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[<<] [<] Page 1 of 2 [>] [>>] |