Reply 160 of 163, by JH64
- Rank
- Newbie
LSS10999+RayeR: GDI is still pain, there 2 two reasons for this, first is that DIB driver is reading from GPU (when scrolling, it reads block from VRAM, moves pointer of x lines and writes it back). Second is that the DIB engine runs in PM16 and all operations crossing segments are super slow. Other drivers are solving this with HW blit, but in VESA is nothing like that. Solution can be shadow frame buffer in RAM and updating by one way copy to video ram. I’m already doing when emulating double buffering (on VMware), but shadow buffer is still in VRAM, but essence is similar. I can also implement BLIT in PM32 RING-0 (more important is PM32 than RING-0), resp. I can use existing code from HAL, but I think that reading operations from GPU are main bottleneck.
Fortunately, I made the things bit faster by is by implemented my own procedures for working with the mouse cursor, but GDI is still quite slow.