Choosing output mode

I am new to OSDev, and I am currently trying to write my OS from bare bones, i.e. using GRUP as my bootloader, on x86 arch. I want my OS to support both BIOS and UEFI boot.

I am currently trying to write my own graphical interface. And I am kind of confused on how to do it so it would work on all platforms.

I observed that on UEFI 2.x I must use GOP, while on UEFI 1.x I should use UGA and on BIOS I must use either VESA or VGA.

Does it means that in order to implement a cross-firmware OS I would have to support all of them? And only choose one from the supported interfaces? How can I even tell from my OS if I was booted by UEFI? And what version of UEFI?

Should I just abandon the compatibility goal and simply pick one setting and implement my OS for that one?

How many English words
do you know?
Test your English vocabulary size, and measure
how many words do you know
Online Test
Powered by Examplum