Re: Polling for VSYNC doesn't work (0x3DA port)
Posted: Sun Nov 01, 2020 12:34 pm
Seems like a massive oversight... But then again, we weren’t privy to the design meetings.Octocontrabass wrote:Correct. Most hardware has the capability, but VBE doesn't expose it.bloodline wrote:It appears that there is absolutely no VBlank interrupt,
It depends on the hardware. GRUB can report VBE information, which will tell you if the current mode has register-level compatibility with VGA (including vblank), but it won't help you when the current mode lacks VGA register compatibility, and it won't help you when the "compatibility" isn't actually attached to vblank.bloodline wrote:and no VBL hardware flag accessible once grub has set a VBE mode...
Ok, that’s good advice! I can at least check and take advantage is available.
They might work, but that would mean building the display from scratch each frame... and given the lack of hardware blitter functions, I’m just updating the parts of the display which have changed... Otherwise performance is dreadful, especially when there are lots of windows open and each could have 10s of cliprects!VBE offers double-buffering functions that are supposed to wait for vblank before switching buffers. Whether or not they work is a mystery, and it doesn't help you on modern PCs without VBE.bloodline wrote:It seems the only solution is to run updates every 16ms (~60Hz), which won’t allow display syncing, but will at least offer the regularity required for GFX display tasks.
I’m not writing a native graphics driver any time soon, any offers? No?If you're not limited to VBE, though, a native driver solves this problem easily. (For certain definitions of "easily".)