Continuation of my reply from yesterday...
...That said, DOS games would always come with software VESA as many graphics cards lacked support, or supported the wrong specification. So the whole VESA introduction could just have easily been done with software drivers anyway except as people were using DOS (Win95 was not yet a large enough install base to support exclusively) it was easier to keep it in the graphics card BIOS. The instant enough people were using Win95 over pure DOS though they made the jump, as it was so much easier to support. If keeping things in hardware was as good as you say, why was it so hard to get DOS games working properly compared to once they made the jump to Windows?
...
I am treating VESA also as an API but at the time VESA BIOS was introduced, most of the other ports were standard so you can use VESA to set the video mode and then use direct I/O or write to video memory after that. And putting VESA into ROM is better since you don't have to load any drivers that hogged up valuable DOS memory (from 640K). In fact, I can call some VESA BIOS functions even from Windows 98SE (if they don't rely on selectors). Games did not run in some cases because NOT all video cards had VESA BIOS or supported the various modes the game was requesting. Those required a software (non-ROM) VESA Bios
>The overhead can't be that bad either as games still improved when we jumped to Windows instead of DOS, despite the fact by your argument the extra power in the PC should have been stolen in API inefficiencies.
That's not my argument-- the extra power was lost by API inefficiencies. In all cases, you have more power with direct access to hardware vs. API. Same for Amiga, if you go through API, your games will not make efficient use of hardware as if you go directly to hardware registers.
>And blimey, how large do you think the graphics card BIOS would need to be in order to have backwards compatibility for ALL GPU functions? How often would it need to be patched to fix bugs? Quite frankly, its just not practical and you damn well know it. Using VESA as an argument just seems plain silly, given the above that early VESA was supported via software drivers - very much like how modern drivers support Direct3D today.
You missed the point there. VESA is an API as well; it's not as good as directly being able to set a video mode through direct i/o.
>Nobody is saying that 100% accurate backwards compatibility would be a bad thing. I'm sure there are a few benefits from a developers point of view (for a few very rare unusual applications), but you have to live in reality.
Not "few". If I/O ports and video memory were standard in all video cards for all their functionality, you will have more efficient applications and less restricted games/applications.
>There is no PC standard which says your sound/graphics card must talk in this language (apart from VESA and old VGA standards), with these memory addresses, etc. There is also the little thing of evolution to think of. If you write a strict standard you are stuck with it, forever. However with an API if you find more efficient ways of doing stuff at the hardware level, the only restriction is rewriting the software driver. This is not a whole lot different to how it works at the hardware level except the risk/cost of doing it hardware level is insane (hard to fix once in production, huge BIOS to handle the translation). And no, directly pushing bits around the GPU directly is simply insanity. It was fine for Amiga because the chipset was relatively simple, but a modern graphics card GPU is going to be many times more complex than a whole Amiga so claiming that you should have the same hardware access is just plain silly.
I don't think complexity makes a difference. VGA standard is also pretty complex since it also incorporates EGA/CGA mode compatibility as well.
>Likewise when two competing companies make a graphics card with new functions, how on earth do you propose they would make them compatible with each other without an API? You can't develop the standard that far in advance of the actual hardware development because you are keeping your cards close to your chest to beat the competition to market with the latest features.
How did they make VGA standard cards with same I/O ports and video memory? The same way for newer functions. The act of settling for API compatibility is the problem.
>Again, of course a hardware level API like VESA is handy if you want to bang the hardware more directly and save yourself some CPU cycles. However nobody outside of an insane asylum is going to want that level of control. Nobody actually NEEDS that level of control.
That's your subjective opinion. Most Amiga OCS games go directly to hardware and would be worse if they did not. Most early PC games went directly to CGA/EGA/VGA.