Thursday, August 10, 2006

A little progress

Work has been taking up a lot of my time recently (well, the occasional session on WoW also slips in ofc.) but im still working on a few things when I can..

Im at the early stages of making AROSMesaGL into a shared library, and have the library itself compiling with a bunch of stub functions in place (its roughly 3mb in size!) however theres a long way till it works properly.

I have also been tinkering with an audio driver for SoundBlaster PCI type cards (es137x based chipsets) which is slowly making progress, though im about to redo the main code now that I understand it a little better..

Ho hum, back to the code ..

Sunday, June 04, 2006

Lots of going on ..


A lot of things are happening on the mesa front.

Fisrtly, Ive been beavering away on a GLUT for AROSMesa.
Its starting to take shape now and every new build seems a bit more responsive and feature complete.

The only main lacking features of GLUT at the moment are using the AROS timer device to signal when a timed event is to happen saving us iterating loops every run, and using the AROS systems fonts instead of hardcoded ones.

Ive successfully compiled a number of test apps, including nearly everything in the mesa 6.5 demos archive - and only a very small number dont work.

Ive also started porting a first test game- FrontierGL at oliviers request, however its requiring me to use the full SDL (1.2.10 atm) from its main branch - and so far im not having much joy getting it to correctly link.

It does compile however - as does FrontierGL (and loads!) - so hopefully sometime soon i can get it all running.

One thing im pleased with is the change to use a global message port in the glut alphas. Instead of letting the app run in a continuous loop we wait after every "run" - and send a message to ourself if we need to run again.
This lets the system have its turn every time we finish doing something, so it should make the apps a bit more system friendly. Test runs so far actualy indicate it makes GLUT apps run faster (upto 3x!) since they are processing less pointless stuff.

It also seems to have had a knock on effect on some benchmarking demos (gltesperf and trispd for instance) in that they now actually work - and very well too afaict!

Ive fixed up the alpha channel code in AROSMesa/mesagl.hidd so the demos needing it now work properly - and look v nice =)

Friday, May 19, 2006

Mesa continues ..

Its been pretty hard goin with Mesa over the last week or so..

Firstly, The mesagl.hidd started working properly with mesa3.5, so I started merging the code with the newest refresh of Mesa (6.5) - quite a jump!

Well, today I finally got the binaries to output something - though there where clearly a couple of bugs and some unexpected surprises =)

The accelerated software line and triangle functions which didnt get called with mesa3.5 now are being utilised, so those demos arew now running a little faster. Morph3D is showing a bug - the glclear function isnt operating correctly yet.

Over the next few days I will tidy up the AROSMesa linklib code to work properly with 6.5 which will hopefully make it a bit more efficient, and then start about updating the mesagl.hidd to operate properly with the new setup.

If i find time l8r I will try and "port" a small shader test to check mesa is indeed working properly with all the latest gl functionality.

Monday, May 08, 2006


Expect Spam in this blog !

Ive started to rework the AROSMesa software rasterizing code into hidds (namely mesagl.hidd and mesaglrast.hidd) in the hope of bringing atleast a basic level of hardware accelerateble OpenGL to AROS. So far tests of the basic class operations themselves (not the actual linklib) have been successfull.

Code is inplace for a gfx.hidd to identify a mesagl.hidd replacement to use, and for the replacement to register and be used instead of mesagl.hidd's object.

Anyhow this is the current debug output - the hidd is only intially used at the moment for testing, then it returns to the default AROSMesa code.

OpenWorkbenchObject: name = AROS Live CD:Extras/Gfx/Mesa/Demos-old/morph3d
OpenWorkbenchObject: isDefaultIcon = 1
OpenWorkbenchObject: it's a TOOL
OpenWorkbenchObject: it's a CLI program
OpenWorkbenchObject: success = 1
The function ChangeExtSpriteA() is not implemented.
[AROSMESA] AROSMesaCreateContext(taglist @ 1f39ac0)
[AROSMESA] AROSMesaCreateContext: Opened OOP subsystem

[hiddmesagl][libinit] Initialising MesaGL.hidd ..
[hiddmesagl][libinit] Memory Pool Allocated @ 1ca16e0
[hiddmesagl][libinit] Driver List Prepared ..
[hiddmesagl][libinit] Context List Prepared ..
[hiddmesagl][libexpunge] Expunging MesaGL.hidd ..
[hiddmesaglrast][libinit] Initialising MesaGLRast.hidd ..
[hiddmesaglrast][libexpunge] Expunging MesaGLRast.hidd ..
[hiddmesagl][root] MesaGL__Root__New()
[hiddmesagl][root] MesaGL__Root__New: Finding Hidd for specified RastPort @ 1ca0698
[hiddmesagl][root] MesaGL__Root__New: Using base mesaGL.hidd (software rendering)
[hiddmesagl][root] MesaGL__Root__New: MesaGL Hidd Object allocated @ 1ca1308

[AROSMESA] AROSMesaCreateContext: MesaGL.hidd object @ 1ca1308

[hiddmesagl] CreateContext(taglist @ 1f39ac0)
[hiddmesagl] CreateContext: context record allocated @ 1c7e46c
[hiddmesagl] CreateContext: rasterizer record allocated @ 1ca132c
[hiddmesagl] CreateContext: Called with RastPort @ 1ca0698
[hiddmesagl] CreateContext: Using Rasterizer 'hidd.mesagl.rast' (pointer = 1ca15c8)
[hiddmesaglrast][root] MesaGLRast__Root__New()
[hiddmesaglrast][root] MesaGLRast__Root__New: MesaGLRast Hidd Object allocated @ 1ca1710
[hiddmesagl] CreateContext: Rasterizer Object @ 1ca1710

[AROSMESA] AROSMesaCreateContext: MesaGL.hidd_CreateContext() returns 1c7e46c
[AROSMESA] AROSMesaCreateContext: AROSMesaContext Allocated @ 1ca0e54
[AROSMESA] AROSMesaCreateContext: gl_ctx Allocated @ 1ffad4c
[AROSMESA] AROSMesaCreateContext: Screen @ 1725a28
[AROSMESA] AROSMesaCreateContext: window @ 1ca0790
[AROSMESA] AROSMesaCreateContext: Using RastPort @ 1ca0698
[AROSMESA] AROSMesaCreateContext: Creating new AROSMesaVisual

[hiddmesagl] CreateVisual(taglist @ 1f39ac0)
[hiddmesagl] CreateVisual: visual record allocated @ 1ca1734
[hiddmesagl] CreateVisual: Visual Rastport @ 1ca1d48 [24bit]
[hiddmesagl] CreateVisual: Allocated BackBuffer RastPort @ 1d55468 (DOUBLEBUFFER)
[hiddmesagl] CreateVisual: RastPort Dimensions [width:647, height:510]

[AROSMESA] AROSMesaCreateContext: MesaGL.hidd_CreateVisual() returns 1ca1734
[AROSMESA] AROSMesaCreateVisual(taglist @ 1f39a60)
[AROSMESA] AROSMesaCreateVisual: amesa Context @ 1ca0e54
[AROSMESA] AROSMesaCreateVisual: Using RastPort @ 1ca0698
[AROSMESA] AROSMesaCreateVisual: RastPort.BitMap Depth = 24
[AROSMESA] AROSMesaCreateVisual: Using RGB Mode
[AROSMESA] AROSMesaCreateContext: [ASSERT] RastPort @ 1ca0698
[AROSMESA] AROSMesaCreateContext: [ASSERT] RastPort @ 1ca0698
[AROSMESA] AROSMesaCreateContext: Enabled Mesa Software Extensions
[AROSMESA] AROSMesaCreateContext: Using Direct Rendering on RastPort @ 1ca0698
[AROSMESA:TC] arosTC_Standard_init(amesa @ 1ca0e54, taglist @ 1f39ac0)
[AROSMESA:TC] arosTC_Standard_init: Using RastPort @ 1ca0698
[AROSMESA:TC] arosTC_Standard_init: Cloned RastPort @ 1ca17a8
[AROSMESA:TC] arosTC_Standard_init: Clipping Rastport to Window's dimensions
[AROSMESA:TC] arosTC_Standard_init: Context Base dimensions set -:
[AROSMESA:TC] arosTC_Standard_init: amesa->RealWidth = 647
[AROSMESA:TC] arosTC_Standard_init: amesa->RealHeight = 510
[AROSMESA:TC] arosTC_Standard_init: amesa->width = 637
[AROSMESA:TC] arosTC_Standard_init: amesa->height = 477
[AROSMESA:TC] arosTC_Standard_init: amesa->left = 5
[AROSMESA:TC] arosTC_Standard_init: amesa->right = 5
[AROSMESA:TC] arosTC_Standard_init: amesa->top = 18
[AROSMESA:TC] arosTC_Standard_init: amesa->bottom = 15
[AROSMESA:TC] arosTC_Standard_init: amesa->depth = 24
[AROSMESA:RAST] arosRasterizer_make_rastport()
[AROSMESA:TC] arosTC_Standard_init: Allocated BackBuffer RastPort (DOUBLEBUFFER)
[AROSMESA:RAST] arosRasterizer_AllocOneLine()
[AROSMESA] AROSMesaCreateContext: AROS Rasterizer initialised.

[hiddmesagl] CreateBuffers(hiddMesaGLVisual @ 1ca1734)
[hiddmesagl] CreateBuffers: buffer record allocated @ 1ca0744
[hiddmesagl] CreateBuffers: Single Line Render Buffer allocated @ 216363c

[AROSMESA] AROSMesaCreateContext: MesaGL.hidd_CreateBuffers(visual @ 1ca1734) returns 1ca0744
[AROSMESA] AROSMesaCreateBuffer(visual @ 1b77c8c)
[AROSMESA] AROSMesaCreateBuffer: Context Buffers created
[AROSMESA] AROSMesaCreateContext: Using framebuffer @ 1c1d204.
[AROSMESA] AROSMesaCreateContext: Mesa CORE Contexts Created
[AROSMESA] AROSMesaCreateContext: Context Created
[AROSMESA] AROSMesaMakeCurrent(amesa @ 1ca0e54, buffer @ 1c1d204)
[AROSMESA:TC] arosTC_update_state(ctx @ 1ffad4c, state -1)
[AROSMESA:TC] arosTC_update_state: SWDD @ 2016c74
[AROSMESA:TC] arosTC_update_state: TNL @ 22e6140
[AROSMESA] AROSMesaMakeCurrent: set current mesa context/buffer
[AROSMESA] AROSMesaMakeCurrent: initialised rasterizer driver functions
[AROSMESA] AROSMesaMakeCurrent: call glViewport(0, 0, 637, 477)
[AROSMESA:TC] arosTC_buffer_size(amesa @ 1ca0e54)
[AROSMESA:TC] arosTC_buffer_size(ctx=1ffad4c) = w:637 x h:477
[AROSMESA:TC] arosTC_buffer_size: amesa->RealWidth =647
[AROSMESA:TC] arosTC_buffer_size: amesa->RealHeight=510
[AROSMESA:TC] arosTC_buffer_size: amesa->width =637
[AROSMESA:TC] arosTC_buffer_size: amesa->height=477
[AROSMESA:TC] arosTC_buffer_size: amesa->left =5
[AROSMESA:TC] arosTC_buffer_size: amesa->bottom=15
[AROSMESA:TC] arosTC_buffer_size: amesa->depth =24
[AROSMESA:TC] arosTC_clear_color(c=1ffad4c,r=0,g=0,b=0,a=255) = ff000000
[AROSMESA:TC] arosTC_update_state(ctx @ 1ffad4c, state -1)
[AROSMESA:TC] arosTC_update_state: SWDD @ 2016c74
[AROSMESA:TC] arosTC_update_state: TNL @ 22e6140
[AROSMESA:TC] arosTC_clear(all:1,x:0,y:0,w:637,h:477)
[AROSMESA:TC] arosTC_clear: back_rp->Clearing viewport (ALL)
[AROSMESA:TC] arosTC_flush(ctx @ 1ffad4c) : Unimplemented - glFlush()
[AROSMESA] AROSMesaSwapBuffers(amesa @ 1ca0e54)
[AROSMESA:RAST] arosRasterizer_Standard_SwapBuffer(amesa @ 1ca0e54)
[AROSMESA:TC] arosTC_update_state(ctx @ 1ffad4c, state 525376)
[AROSMESA:TC] arosTC_update_state: SWDD @ 2016c74
[AROSMESA:TC] arosTC_update_state: TNL @ 22e6140
[AROSMESA:TC] arosTC_buffer_size(amesa @ 1ca0e54)
[AROSMESA:TC] arosTC_buffer_size(ctx=1ffad4c) = w:637 x h:477
[AROSMESA:TC] arosTC_buffer_size: amesa->RealWidth =647
[AROSMESA:TC] arosTC_buffer_size: amesa->RealHeight=510
[AROSMESA:TC] arosTC_buffer_size: amesa->width =637
[AROSMESA:TC] arosTC_buffer_size: amesa->height=477
[AROSMESA:TC] arosTC_buffer_size: amesa->left =5
[AROSMESA:TC] arosTC_buffer_size: amesa->bottom=15
[AROSMESA:TC] arosTC_buffer_size: amesa->depth =24
[AROSMESA:TC] arosTC_update_state(ctx @ 1ffad4c, state 1573378)
[AROSMESA:TC] arosTC_update_state: SWDD @ 2016c74
[AROSMESA:TC] arosTC_update_state: TNL @ 22e6140
[AROSMESA:TC] arosTC_clear(all:1,x:0,y:0,w:637,h:477)
[AROSMESA:TC] arosTC_clear: back_rp->Clearing viewport (ALL)
[AROSMESA:TC] arosTC_update_state(ctx @ 1ffad4c, state 1)
[AROSMESA:TC] arosTC_update_state: SWDD @ 2016c74
[AROSMESA:TC] arosTC_update_state: TNL @ 22e6140
[AROSMESA:TC] arosTC_write_rgba_span3(count=1,x=324,y=149)FAST nomask
[AROSMESA:TC] arosTC_write_rgba_span3(count=2,x=323,y=150)FAST nomask
[AROSMESA:TC] arosTC_write_rgba_span3(count=1,x=323,y=149)FAST nomask
[AROSMESA:TC] arosTC_write_rgba_span3(count=1,x=325,y=148)FAST nomask

Thursday, April 27, 2006


Ive finally found the bug causing my Server prefs code to not function. Later today I hope to start getting it fully functional - saving entered servers for later usage.

The server "page" is stil llacking input gadgets so you cant send commands to it just yet except from within a channel page, so I will probably fix this issue also.

A few bugs seem to exist still causing it to crash aswell, and the texteditor class - while working - isnt fully used yet. Theres also a bug causing the output to get inserted into the wrong location on occasion.

Finally, I hope to get the text formatting done sometime soon - aswell as a few other options ( tab name completion, inserting timestamps, logging and private messaging to other users)

Keep watching this space ...

Upto Mesa 3.5 now ..

Ive recently commited another update to mesa.

We now have an OpenGL 1.2 capable implementation of mesa however it doesnt yet support hardware acceleration, and the code isnt shared.

The driver needed a number of changes (mainly to its api and the calls to mesa) but because of this it should be ready to start bringing it upto a higher mesa version.

Hopefully I can find time to merge it with mesa 4 over this weekend before attempting the steps through mesa 5 and finally 6 ( which should give us OpenGL2)

Wednesday, April 19, 2006


Well, since ive been "inactive" for a bit, ive decided to try and get some work done on a few of my projects.

ATM im trying to rework AiRcOS to let seperate modules store their supported commands/actions with the main app (they are linked in at compile time atm still, but in the future I hope to make them as seperate plugins)

Im also trying to rework the main display / input code to work via the TextEditor MUI custom class Georg S recently commited to AROS - however progress is slow since im having probs getting it working =*(

Finally im going to look at adding support for DCC once im done with the previous work.


Ive just commited updates to AROSMesa -:

# Merged the main mesa code with the 3.4.2 tree,
# Fixed a number of bugs in the AROS Rasterizer (thanks to Georg S for a lot of them!)
# Reworked the AROS Rasterizer a bit.