Allegro.cc - Online Community

Allegro.cc Forums » Allegro Development » CPU family compilation of allegro?

This thread is locked; no one can reply to it. rss feed Print
CPU family compilation of allegro?
Michael Jensen
Member #2,870
October 2002
avatar

Since i've got a closet full of p1s and olders, I might as well, but what I dont have is a closet full of hard drives or ram, so if someone wants to point me towards a fairly light version of linux that would run blazingly fast on such computer and still work with allegro I would be more than willing to test...

hardware I probably have
586: ~100mhz, 8-16 mb of ram, 300-500mb disk space
486: <100mhz, 4-16 mb of ram, 300-500mb disk space

should be able to find a cd-rom, and either a VLB card for the 486,
or hopefully a PCI one for the 586...

let me know...

edit:
I've also got a 250mb parallel port zip drive if a suitable version of linux supports booting off of that...

edit2:
I've got a system setup
586: 100mhz, 32mb of ram, 325mb hdd, complete with working cd-rom, and 3.5" drive. This one is a "customized" (as in just now -- to get it working) HP vectra, with on-board video, probably on the PCI bus.

I also have a 486 that I can probably do next, but only one at a time.

I had to unhook another computer to get a spot to hook this one up so I can't have it running for more than a couple of days... At this point I need an OS, any suggestions?

soniCron
Member #5,721
April 2005
avatar

I'm curious. I'm seeing a lot of discussion about whether or not to support the i386 ASM code. But, the compiler optimized code is faster, and people are having to make an effort trying to get even a 486 computer to test stuff on. Since DOS support is being dropped (incidentally or on purpose) for 4.3x, why even bother with the i386 ASM? I believe it's long lived its days, and worth retiring, especially if it's easier to maintain the code. And I have a hunch that it would be much easier, since, (and this is only from what I can understand) nobody seems to be maintaining it anyway. It IS still 386 code, after all, and nobody seems to have been interested in updating it.

Now, don't get me wrong, I'm not knocking the quality of the code. It's far more organized and well written than anything I could dream of writing. But it just seems, to me, that keeping this legacy code in it, that isn't being updated when the rest of the system is, is pointless. If someone is going to be using Allegro in DOS on a 386DX, (any takers? ANYone?) the 4.03 release should be more than sufficient. I just read the changelog for everything between 4.03 to 4.1.18, and there were no references to any fixes to any 386 or DOS code. In fact, quite the contrary.

There were a significant portion of fixes BECAUSE of the 386 code!! This seems a little counterintuitive, to me. Someone mentioned not worrying about the DOS support in 4.3x because it doesn't make much sense to support an unaccellerated platform. I'd say the 386 follows the same...

Now, I've been using Allegro for years and years and years. I plan on getting involved in the development of the core system once I have some free time to do so. So please don't think I'm knocking the development team, or anything of the like. I have very much respect for those of you that work on Allegro. But I cannot, for the life of me, understand why there's even a discussion of whether or not to update the code from 386 support! Chuck it.

My two cents.

Elias
Member #358
May 2000

Quote:

But I cannot, for the life of me, understand why there's even a discussion of whether or not to update the code from 386 support!

The tests are not to decide whether to drop the code or not in case C is always faster, but they are to decide if it is (and maybe why). It would be very unwise throwing out that asm code based on 1 or 2 tests, just to discover later that there was some reason the asm code was slower on that specific systems only but not on others..

--
"Either help out or stop whining" - Evert

soniCron
Member #5,721
April 2005
avatar

Elias said:

The tests are not to decide whether to drop the code or not in case C is always faster, but they are to decide if it is (and maybe why). It would be very unwise throwing out that asm code based on 1 or 2 tests, just to discover later that there was some reason the asm code was slower on that specific systems only but not on others..

Unless compiling for a pre-MMX compatible system, using an optimizing compiler will be faster than pure 386 assembly. And more portable. Period.

I'm just saying, if nobody is maintaining the 386 ASM, then chuck it, because it's getting in the way of the compiler's optimizations.

Matthew Leverton
Supreme Loser
January 1999
avatar

Has anyone posted a test that can be downloaded? If two static binaries are provided for Windows users, testing could be done quite quickly.

Elias
Member #358
May 2000

Quote:

I'm just saying, if nobody is maintaining the 386 ASM, then chuck it, because it's getting in the way of the compiler's optimizations.

Yes, as I said in this (or another) thread already, I'm happy myself about the prospect of removing the current asm code.

Quote:

Has anyone posted a test that can be downloaded? If two static binaries are provided for Windows users, testing could be done quite quickly.

Yes, that would be nice. Allegro's test program is quite awkward to use, without any automated benchmark feature.

--
"Either help out or stop whining" - Evert

HoHo
Member #4,534
April 2004
avatar

Quote:

Has anyone posted a test that can be downloaded?

I'm working on it but it doesn't move as fast as I would like because I'm having so much other things to do.

I think for a start allegro test with some (big) changes would be enough. E.g executing with "--profile test.cfg" it would run through some tests(selected in input file) using different bitdepths and drivers.

__________
In theory, there is no difference between theory and practice. But, in practice, there is - Jan L.A. van de Snepscheut
MMORPG's...Many Men Online Role Playing Girls - Radagar
"Is Java REALLY slower? Does STL really bloat your exes? Find out with your friendly host, HoHo, and his benchmarking machine!" - Jakub Wasilewski

Evert
Member #794
November 2000
avatar

Quote:

I just read the changelog for everything between 4.03 to 4.1.18, and there were NO references to any fixes to ANY 386 or DOS code.

Changes from 4.1.14 to 4.1.15 said:

Henrik Stokseth enabled the asm color converters for the X11 port.

Although I think this is the most recent major addition that has been seen recently. As Elias pointed out, this was included because it lead to a speed increase. If benchmarks now indicate the C version is faster, well... that's peculiar and something to be investigated.
As for fixes specific to the DOS/DJGPP code, there have been several fixes, but they are not clearly marked in the docs as being DOS specific.

Also, if there are no fixes, I think that is more a sign that there are no known bugs in those portions of code. The DOS and 386 assembler code are probably the oldest parts of the library. As long as there are no changes to the internals, they do not need to be touched or modified and no new bugs appear.

Anyway, it will stay for 4.2, we can discuss removing or disabling the code after that. But, as long as there are people who want to maintain the DOS or 386 code they are welcome to do so (and yes, there are people actually interested in that).

Quote:

I plan on getting involved in the development of the core system once I have some free time to do so.

None of us have much time anyway, so you should fit right in now. :P

Quote:

But I cannot, for the life of me, understand why there's even a discussion of whether or not to update the code from 386 support!

Because it works and has been well tested over the years and you should take care before you change something that works. It may be that the asm code is slower than the code the compiler produces on the latest generation of processors. As I said, a year ago this was not the case.
The C only version already exists and can be made the default in due time if that makes sense. But it will have to be looked into and considered first.

The first step to making the C version more useful, in my opinion, would be to get it to compile in MSVC without the aid of MinGW or DJGPP.

Michael Jensen
Member #2,870
October 2002
avatar

Quote:

Has anyone posted a test that can be downloaded? If two static binaries are provided for Windows users, testing could be done quite quickly.

that would kick arse, donkey even... especially if it was provided also for DOS users and dumped the results to a text file... ;)

I left make running over night and allegro default build should be done on my 586... How do you build the "C only" version with djgpp?

Quote:

and people are having to make an effort trying to get even a 486 computer to test stuff

People out there still use 486s, it's just us developers that don't... besides I've got a 486 that I can test this on next; but it is a lot of effort, I'm going to reuse the stuff the 586 compiled (actually, I'm just going to use the same hdd 8-))

soniCron
Member #5,721
April 2005
avatar

Evert said:

...if there are no fixes, I think that is more a sign that there are no known bugs in those portions of code.

It's also a sign of neglected code. Assembly isn't something you write once and leave. As processors change, you update and add to it, if possible. The point of writing in assembler is that you can utilize the maximum potential of the processor. If you're not updating the code, you're not utilizing the maximum potential of the processor. I'm not saying it doesn't work, I'm saying it doesn't work well enough.

Evert said:

Because it works and has been well tested over the years and you should take care before you change something that works.

Are you still using an Apple II? Progress is worth change.

I'm suprised that after almost 10 years of hardware accelerated graphics, Allegro still won't use the blending features found on any cheap 3D card. If it's a problem of compatability, use different rasterizers: software and hardware. This isn't a new concept, the two biggest graphics API's come to mind: OpenGL and DirectX.

And please don't tell me that "it's coming", because I know. 4.3x is supposed to have it. I'm just without understanding why these optimizations haven't been implimented yet, is all. If someone can tell me, please. I'm not upset that Allegro doesn't use the latest and greatest, but I'm upset that nobody seems to be saying why.

Michael Jensen said:

People out there still use 486s, it's just us developers that don't...

If the developers don't still use 486s, then they're probably not developing for them. Which means that the 386/486 users are getting little to no benefit from using the latest version of Allegro. The non-architectural changes since the last major 386 and DOS code updates are negligible, and make almost no, if any, difference to a developer on a 386.

The 386 and DOS users have their Allegro 4.03. I'm not saying that it should be cut out before 4.3x, but if the 386 assembly is not updated for 4.3x, you're still backboning on an inferior technology. Like running Windows on top of DOS. It's a fruitless method.

HoHo
Member #4,534
April 2004
avatar

Quote:

I'm suprised that after almost 10 years of hardware accelerated graphics, Allegro still won't use the blending features found on any cheap 3D card.

Have you actually any ideas how diffenrent are opengl/dx and allegro? In it's current state there is almost no way allegro could use any accelerated functions of modern gfx cards. In (near?) future when OpenGL gets added to Allegro these things will change but not until then.

__________
In theory, there is no difference between theory and practice. But, in practice, there is - Jan L.A. van de Snepscheut
MMORPG's...Many Men Online Role Playing Girls - Radagar
"Is Java REALLY slower? Does STL really bloat your exes? Find out with your friendly host, HoHo, and his benchmarking machine!" - Jakub Wasilewski

Bob
Free Market Evangelist
September 2000
avatar

Quote:

I'm just without understanding why these optimizations haven't been implimented yet, is all

Those optimizations are incompatible with Allegro's API.

--
- Bob
[ -- All my signature links are 404 -- ]

Evert
Member #794
November 2000
avatar

Quote:

I'm just without understanding why these optimizations haven't been implimented yet

Because the big rewrite `Allegro5' was supposed to have it all.

Not entirely accurate, but it is a big part of the reason no one bothered to try and add some things: because Allegro5 was supposed to have it anyway and no one wanted to do double work.

soniCron
Member #5,721
April 2005
avatar

HoHo said:

In (near?) future when OpenGL gets added to Allegro these things will change but not until then.

That is exactly my point. "(near?) future" Nobody is even sure when it will be implimented. It's been 2 years since the last "stable" version of Allegro came out. It'll probably another 2 years before OpenGL support comes to Allegro.

Bob said:

Those optimizations are incompatible with Allegro's API.

Not entirely. Phasing in certain features is a good way to move an API from one direction to another. The primitive drawing could be done in 3D. Any bitmap objects can be textures. (There are system bitmaps, video bitmaps, etc, why not texture bitmaps). Writing to these texture bitmaps would be slow, but if you're developing with that in mind, you could simply not do per-pixel drawing, or updating of bitmaps, very often.

Blitting from a bitmap to screen would then be done via texturing a GL quad primitive. There's nothing the GUI draws that can't be done in 3D. Most of the blending functions wouldn't be able to translate without pixel shaders, and I admit that would be a downside. But how often do people use the "saturate" blender? Stretching, rotating, lighting, shading, and flipping sprites would be insanely easy in GL. With exception to writing directly to the screen, every drawing function can be done with GL, albiet slower if you try to draw directly to textures every frame. But using GL as a rendering device could be explicitly defined in the source, so older programs will use the software rendering, and programs wanting to use GL can. Obviously, those using GL wouldn't work in some environments, like DOS (unless you also included Mesa), but drawing 200 half-transparent sprites is gonna suck any way you do it on a 386. Oh, and the 3D drawing functions could actually draw in...3D.

I guess my whole point boils down to this: Why is fblend still an external library?! If it is a highly recommended library for any Allegro developer, then why does it even exist? Why is it not in the Allegro library? That makes no sense. It's this kind of backassward development that lead to my developing my own software and hardware rasterizer for Allegro. This kind of stuff should be in Allegro to begin with.

IMHO, Allegro is easily the best game development library to work with. Even though SDL is designed for any form of cross-platform multimedia development, there's a reason why it's the most widely used free library for making games. It's not at all easier to use. But nobody developing SDL is saying "and you should take care before you change something that works.". But having to use an external library for decently fast blending means it doesn't work!

I'm done.

Thomas Fjellstrom
Member #476
June 2000
avatar

Quote:

It'll probably another 2 years before OpenGL support comes to Allegro.

AllegroGl. Already has nearly complete Allegro Mode support.

All of you points boil down to noone with time to do the nesesary work. You want it done that bad, do it yourself.

--
Thomas Fjellstrom - [website] - [email] - [Allegro Wiki] - [Allegro TODO]
"If you can't think of a better solution, don't try to make a better solution." -- weapon_S
"The less evidence we have for what we believe is certain, the more violently we defend beliefs against those who don't agree" -- https://twitter.com/neiltyson/status/592870205409353730

soniCron
Member #5,721
April 2005
avatar

Thomas Fjellstrom said:

AllegroGl. Already has nearly complete Allegro Mode support.

This just proves my point as with fblend. Why is it not part of the Allegro core?

Thomas Fjellstrom said:

All of you points boil down to noone with time to do the nesesary work.

I disagree. I have a feeling it has to do with lack of project organization. There's no public roadmap that I can find. I hear about this magical roadmap all the time, and people keep referencing it, but I have yet to see it. If it does exist, I would appreciate someone telling me where I can find it. I, for some time, wanted to get involved with Allegro, but I have no idea how. There's no "head honcho" to get in touch with. The website offers little information on getting involved, as well. The SourceForge page has 5 admins listed, with no indication of who to contact to help support the project.

Thomas Fjellstrom said:

You want it done that bad, do it yourself.

Like I said in my last post, I am writing a software and hardware rasterizer. Please thoughly read my posts before responding to them.

Thomas Fjellstrom
Member #476
June 2000
avatar

I don't have the time or skills to integrate either FBlend or AllegroGL into allegro propper.

The few devs we do have barely have time to get bug fixes and releases done.

Quote:

I am writing a software and hardware rasterizer.

What does that have to do with anything?

Want to get involved? Get on the AD list. Thats mentioned on the home page.

edit: Just what are you doing for allegro? That justifies calling the dev team lazy and unorganized?

--
Thomas Fjellstrom - [website] - [email] - [Allegro Wiki] - [Allegro TODO]
"If you can't think of a better solution, don't try to make a better solution." -- weapon_S
"The less evidence we have for what we believe is certain, the more violently we defend beliefs against those who don't agree" -- https://twitter.com/neiltyson/status/592870205409353730

soniCron
Member #5,721
April 2005
avatar

Thomas Fjellstrom said:

What does that have to do with anything?

Do you know what a rasterizer does?

Thomas Fjellstrom
Member #476
June 2000
avatar

yup. read my edit.

--
Thomas Fjellstrom - [website] - [email] - [Allegro Wiki] - [Allegro TODO]
"If you can't think of a better solution, don't try to make a better solution." -- weapon_S
"The less evidence we have for what we believe is certain, the more violently we defend beliefs against those who don't agree" -- https://twitter.com/neiltyson/status/592870205409353730

soniCron
Member #5,721
April 2005
avatar

edit: misread your edit
edit: Thomas Fjellstromm, thank you. I will join the dev list.

Thomas Fjellstrom said:

Just what are you doing for allegro?

Give me a couple more weeks, and you will see. You may not hate me anymore when I'm done. ;)

Edit: Well, now, Thomas, after reading some of the mail list, I retract what I said about them being unorganized (though I never said they were lazy). When most of the development progress takes place in a mail list, it makes it seem, to the public, that there's not much going on. Obviously I was wrong, though it would be nice to have more frequent updates to the homepage. But that's just me being picky! ;)

Kitty Cat
Member #2,815
October 2002
avatar

Quote:

Why is fblend still an external library?

I asked this same question, and I was told because they didn't want two seperate blending APIs in Allegro, even if they don't directly conflict with each other. I said, and still say, it's better to have two blending APIs with one fast one, than just one slow one.

The only thing I can think of currently for not integrating FBlend's blending functions into Allegro is that FBlend's blending functions don't work on video or system bitmaps at all (not even slowly/falling back on Allegro's current ones). As for AllegroGL, last I heard Bob said it wasn't quite done enough to integrate into Allegro.. particularly, it's missing vtable functions (which cause crashes when used).

IMHO, once those are done, I'm all for them being integrated.. but that isn't going to happen in time for 4.2. 4.3 will likely see something, and (good new for that) 4.3 has been worked on some already, so it shouldn't be terribly long after 4.2 before that sees daylight.

--
"Do not meddle in the affairs of cats, for they are subtle and will pee on your computer." -- Bruce Graham

soniCron
Member #5,721
April 2005
avatar

Kitty Cat said:

I asked this same question, and I was told because they didn't want two seperate blending APIs in Allegro, even if they don't directly conflict with each other.

Well, I'm currently merging the Allegro blending code with fblend so they both work with the regular Allegro blend functions. I'll probably have something to submit by tomorrow.

Bob
Free Market Evangelist
September 2000
avatar

Quote:

Most of the blending functions wouldn't be able to translate without pixel shaders

Sorry, no. You can't read the destination buffer from a pixel shader.

Quote:

Not entirely. Phasing in certain features is a good way to move an API from one direction to another.

You can phase things in, but you can't phase things out. Allegro 4.x still needs to be source-compatible with 1.0.

Quote:

Any bitmap objects can be textures. (There are system bitmaps, video bitmaps, etc, why not texture bitmaps). Writing to these texture bitmaps would be slow, but if you're developing with that in mind, you could simply not do per-pixel drawing, or updating of bitmaps, very often.

AllegroGL already implements all of this.

Quote:

Stretching, rotating, lighting, shading, and flipping sprites would be insanely easy in GL.

You'd think so... Allegro has lots of neat little corner cases that makes this slightly more complicated. GPUs have a bunch more corner cases that makes this a lot more difficult.

For example, masked_blit in AllegroGL is actually implemented by a dynamic bitmap vtable change, based on the current state and which GPU you are running on.

Quote:

Obviously, those using GL wouldn't work in some environments, like DOS (unless you also included Mesa

AllegroGL already works under DOS, with MESA.

Quote:

Why is fblend still an external library?!

There are many reasons. One of them is that there is no one to maintain the code. I simply don't have time for this anymore. And the FBlend code isn't exactly trivial either.

Quote:

I have a feeling it has to do with lack of project organization.

No amount of organization makes up for the lack of manpower.

Quote:

The only thing I can think of currently for not integrating FBlend's blending functions into Allegro is that FBlend's blending functions don't work on video or system bitmaps at all (not even slowly/falling back on Allegro's current ones).

Is that true? I've never tested it (and recommended against it), but the code is written in a way that makes this possible. Of course, there could be bugs...

Besides, the more common case of sourcing from memory bitmaps and writting to the screen does work.

--
- Bob
[ -- All my signature links are 404 -- ]

Kitty Cat
Member #2,815
October 2002
avatar

Quote:

Is that true?

I thought I heard that FBlend only works on memory bitmaps. I could be wrong or thinking of something else, though.

--
"Do not meddle in the affairs of cats, for they are subtle and will pee on your computer." -- Bruce Graham

soniCron
Member #5,721
April 2005
avatar

Bob said:

You can phase things in, but you can't phase things out. Allegro 4.x still needs to be source-compatible with 1.0.

You can phase things out, it's just a matter of wanting to. A lot of work seems to be going on with Allegro 4.x, but not so much with 5.x. And I'm assuming that 5 will break API compatability?

Bob said:

AllegroGL already implements all of this.

But Allegro does not. Yet again, making library authors impliment features that should be in Allegro.

Bob said:

GPUs have a bunch more corner cases that makes this a lot more difficult.

For one, nothing has to be implimented by the GPU. For another, sorry, but moving, rotating, scaling, etc a quad is negligible in GL.

Bob said:

AllegroGL already works under DOS, with MESA.

Forwarded to: Department of Redundancy Department

Bob said:

I simply don't have time for this anymore. And the FBlend code isn't exactly trivial either.

The last stable fblend release was in 2001. The last stable release of Allegro was in 2003. I think, sometime after a stable release of fblend and before the 4.03 release of Allegro, something could have been integrated. In those 2 years.

Bob said:

No amount of organization makes up for the lack of manpower.

This has already been addressed. Please read my previous posts.



Go to: