|
CPU family compilation of allegro? |
Michael Jensen
Member #2,870
October 2002
|
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 should be able to find a cd-rom, and either a VLB card for the 486, let me know... edit: edit2: 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
|
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.. -- |
soniCron
Member #5,721
April 2005
|
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
|
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. -- |
HoHo
Member #4,534
April 2004
|
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. __________ |
Evert
Member #794
November 2000
|
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. 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. 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 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
|
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 )
|
soniCron
Member #5,721
April 2005
|
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
|
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. __________ |
Bob
Free Market Evangelist
September 2000
|
Quote: I'm just without understanding why these optimizations haven't been implimented yet, is all Those optimizations are incompatible with Allegro's API. -- |
Evert
Member #794
November 2000
|
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
|
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
|
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. -- |
soniCron
Member #5,721
April 2005
|
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
|
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? -- |
soniCron
Member #5,721
April 2005
|
Thomas Fjellstrom said: What does that have to do with anything? Do you know what a rasterizer does? |
Thomas Fjellstrom
Member #476
June 2000
|
yup. read my edit. -- |
soniCron
Member #5,721
April 2005
|
edit: misread your edit 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
|
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. -- |
soniCron
Member #5,721
April 2005
|
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
|
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. -- |
Kitty Cat
Member #2,815
October 2002
|
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. -- |
soniCron
Member #5,721
April 2005
|
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. |
|
|