OSDev.org
https://forum.osdev.org/

VESA Tutorial
https://forum.osdev.org/viewtopic.php?f=2&t=30186
Page 2 of 3

Author:  XenOS [ Sat Mar 12, 2016 3:25 pm ]
Post subject:  Re: VESA Tutorial

~ wrote:
By the way, your website at http://hwdb.mipt.cc/Main_Page is down. I can't see it, it just doesn't load.

Indeed. Unfortunately I don't manage the server, but I plan to move the contents to a different server.

Author:  ~ [ Sun Mar 13, 2016 9:28 am ]
Post subject:  Re: VESA Tutorial

XenOS wrote:
~ wrote:
By the way, your website at http://hwdb.mipt.cc/Main_Page is down. I can't see it, it just doesn't load.

Indeed. Unfortunately I don't manage the server, but I plan to move the contents to a different server.
You can host files on http://www.archive.org

>> I opened my account a year ago and I've uploaded around 50 Gigabytes (I want to upload my whole 5-Terabyte drive). <<

It's public domain, free; it gets automatically distributed as a torrent.

It can also can be seen from the web as a regular Geocities website, but with unlimited space (it seems that it's better and easier to upload files smaller than 2GB).

It's like Archive.org and other helpers like ArchiveTeam did it to compensate what happened to Geocities.

Author:  max [ Sun Mar 13, 2016 4:16 pm ]
Post subject:  Re: VESA Tutorial

Nice work!
omarrx024 wrote:
Thanks! Unfortunately, I don't know how to edit the Wiki (using tags, etc). It tooks me a while just to add my OS to the Projects list.
Is there a manual/guide?
I can transfer this to the Wiki and help you if you want me to/did not do so yet. Just tell me.

Author:  omarrx024 [ Mon Mar 14, 2016 12:54 pm ]
Post subject:  Re: VESA Tutorial

max wrote:
Nice work!

Thanks!
max wrote:
I can transfer this to the Wiki and help you if you want me to/did not do so yet. Just tell me.

No, thanks. I will probably add a link to this topic on the Wiki or learn how to write a Wiki page when I'm less lazy. :mrgreen:

Author:  jeaye [ Mon Jun 13, 2016 7:31 pm ]
Post subject:  Re: VESA Tutorial

It's been a few months since this was posted; max offered to copy it over to the wiki, but you said you'd get around to it. Is it safe to assume now that it's not going to happen, and we can take max up on his offer?

This is one of the more helpful VESA write ups and it'd be great to have it on the wiki.

Author:  omarrx024 [ Wed Jul 13, 2016 5:17 pm ]
Post subject:  Re: VESA Tutorial

I've put it on the Wiki here.

Author:  Octacone [ Thu Aug 11, 2016 3:30 pm ]
Post subject:  Re: VESA Tutorial

omarrx024 wrote:
VESA Tutorial
Hello. Today, I'm posting specifically to teach people who want graphics all about VESA. That means that in less than 30 minutes, you'll be able to have a high-color graphics world in your OS!


Less than 30 minutes. :D

Author:  cheapskate01 [ Tue Jan 31, 2017 11:51 am ]
Post subject:  Re: VESA Tutorial

Thanks for the tutorial Omar!

Is there any tutorial on the UEFI GOP you talked about?

Author:  omarrx024 [ Tue Jan 31, 2017 12:39 pm ]
Post subject:  Re: VESA Tutorial

cheapskate01 wrote:
Thanks for the tutorial Omar!

Is there any tutorial on the UEFI GOP you talked about?

I don't know much about UEFI in general, TBH. You can Google around for UEFI docs; they shouldn't be hard to find.
BTW, this tutorial is on the Wiki.

Author:  ARISTOS [ Fri Oct 06, 2017 6:47 am ]
Post subject:  Re: VESA Tutorial

How can I get/use the real screen resolution?
Also does Windows use VBE for graphics? (If not, what?)

Author:  zaval [ Fri Oct 06, 2017 7:11 am ]
Post subject:  Re: VESA Tutorial

ARISTOS wrote:
How can I get/use the real screen resolution?
Also does Windows use VBE for graphics? (If not, what?)

Search for EDID. Monitor reports loads of things with it about itself. Its documentation is available on the VESA site. I wish I could elaborate, but tbh, I am a noobass here yet.) On my target, there is two LCD controllers driving HDMI port. GPU isn't involved here at all. You somehow get access to EDID through I2C, and then knowing what the monitor supports, set aforementioned LCD controllers appropriately. Not only resolution, - timings, framebuffer format, DMA/interrupts etc. It's a long way to learn for me yet.)

Author:  omarrx024 [ Fri Oct 06, 2017 2:27 pm ]
Post subject:  Re: VESA Tutorial

ARISTOS wrote:
How can I get/use the real screen resolution?

If you mean the display's optimal screen resolution, you should use EDID. The EDID is a block of information that the monitor reports about itself, and it includes the optimal screen resolution.

ARISTOS wrote:
Also does Windows use VBE for graphics? (If not, what?)

Windows uses VBE when there is no graphics driver available, otherwise it uses the graphics driver which would also normally allow things like acceleration, hardware blitting and other features that wouldn't be possible using VBE.

zaval wrote:
You somehow get access to EDID through I2C, and then knowing what the monitor supports, set aforementioned LCD controllers appropriately. Not only resolution, - timings, framebuffer format, DMA/interrupts etc.

Unless you're writing a graphics driver, you don't need to know that many details on how to communicate with the monitor itself; VESA offers function 0x4F15 which allows you to request the EDID block. The BIOS does all the dirty work for you in this function. Look at the VBE EDID specification. The defined structures tell you all you need to know.

In case the EDID function fails or the information in it isn't valid, you can either use a default mode (like 640x480 or 800x600) or ask the user for their preferred mode from the list of supported modes.

Author:  ARISTOS [ Fri Oct 06, 2017 11:26 pm ]
Post subject:  Re: VESA Tutorial

omarrx024 wrote:
Unless you're writing a graphics driver, you don't need to know that many details on how to communicate with the monitor itself; VESA offers function 0x4F15 which allows you to request the EDID block. The BIOS does all the dirty work for you in this function.

In case the EDID function fails or the information in it isn't valid, you can either use a default mode (like 640x480 or 800x600) or ask the user for their preferred mode from the list of supported modes.


EDID works I got the resolution of the screen, Do one of the non standard mode os VBE will contain it?
Also I would like to use multiple screens with different resolutions and have different memory address to access them. Am I asking too much?

Author:  omarrx024 [ Sat Oct 07, 2017 4:08 am ]
Post subject:  Re: VESA Tutorial

ARISTOS wrote:
EDID works I got the resolution of the screen, Do one of the non standard mode os VBE will contain it?

Yes. You should scan the supported modes to find the screen resolution you want. On top of that, you should never rely on "standard modes," because most BIOSes support them for backward compatibility only, and the specification says they really don't have to support them if they don't want to. So you should always scan modes and not hardcode numbers.

ARISTOS wrote:
Also I would like to use multiple screens with different resolutions and have different memory address to access them. Am I asking too much?

VBE does not offer multiple monitor support. You'll need a real graphics driver to achieve that, and each graphics device will implement it in a different way.

Author:  Korona [ Sun Oct 08, 2017 5:08 am ]
Post subject:  Re: VESA Tutorial

zaval wrote:
ARISTOS wrote:
How can I get/use the real screen resolution?
Also does Windows use VBE for graphics? (If not, what?)

Search for EDID. Monitor reports loads of things with it about itself. Its documentation is available on the VESA site. I wish I could elaborate, but tbh, I am a noobass here yet.) On my target, there is two LCD controllers driving HDMI port. GPU isn't involved here at all. You somehow get access to EDID through I2C, and then knowing what the monitor supports, set aforementioned LCD controllers appropriately. Not only resolution, - timings, framebuffer format, DMA/interrupts etc. It's a long way to learn for me yet.)

I really dislike posting to necro'd threads but I got a question here. Are the display controllers for those ARM SoCs you're working with (the ones driving the HDMI port, not the number crunching GPU chips) typically documented? If I know the timings, is the documentation sufficient to set them? Is there documentation on how to drive the I2C bus? The I2C (as well as DDC and EDID) protocol is fairly simple (a few lines of C code); the question is if access to the pins itself is documented.

Page 2 of 3 All times are UTC - 6 hours
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/