Re:VESA is too slow !!!
Posted: Sun Nov 07, 2004 6:05 pm
Although sounding good at first, using the frame buffer memory for more structures is actually a bad idea. The reason is, in order to update a window (either data or other structures) means you have to send all the information across the data bus, putt putt putt, slug slug slug - you get the idea.
Having the windows and their data in main memory allows you to fiddle with everything at max speed, composite an actual screen and then blit that one screen across the bus. This can easily achieve fps of 60+ or more if you tie updates to the system clock. (Just that one screen - nothing else).
The 64/128/256 megs of memory you have in your video card are mainly there for texturing or storing triangles produced by the vertex engines of your VPU. It was never designed for general purpose data storage. In games like Quake etc, once textures are loaded, very little info is sent to the graphics card. This is the entire point of an accelerator - get the GPU to do all the dirty work, leave the processor for AI.
My first attempts at any graphics (totally separate from OS development) was with Turbo C and 16 bit assembler. 60fps is easily achievable even without linear framebuffer. The software graphics pipeline is the killer, not the hardware. This includes Quake et al. Even through windows directX, if the system used to produce your display lists aren't set up you'll never see more than 24fps no matter how good your drivers or hardware. NVIDIA / ATI cards to my knowledge currently support quad buffering in hardware.
I agree with Brendan's point about caches not set up properly. When using a large VESA frame, those caches will only spit out their data when forced to, all those stosd's from the memset are probably piling up in the cache and only being sent to the video buffer every 4K or so.
Stay safe.
Having the windows and their data in main memory allows you to fiddle with everything at max speed, composite an actual screen and then blit that one screen across the bus. This can easily achieve fps of 60+ or more if you tie updates to the system clock. (Just that one screen - nothing else).
The 64/128/256 megs of memory you have in your video card are mainly there for texturing or storing triangles produced by the vertex engines of your VPU. It was never designed for general purpose data storage. In games like Quake etc, once textures are loaded, very little info is sent to the graphics card. This is the entire point of an accelerator - get the GPU to do all the dirty work, leave the processor for AI.
My first attempts at any graphics (totally separate from OS development) was with Turbo C and 16 bit assembler. 60fps is easily achievable even without linear framebuffer. The software graphics pipeline is the killer, not the hardware. This includes Quake et al. Even through windows directX, if the system used to produce your display lists aren't set up you'll never see more than 24fps no matter how good your drivers or hardware. NVIDIA / ATI cards to my knowledge currently support quad buffering in hardware.
I agree with Brendan's point about caches not set up properly. When using a large VESA frame, those caches will only spit out their data when forced to, all those stosd's from the memset are probably piling up in the cache and only being sent to the video buffer every 4K or so.
Stay safe.