Hello Huihong,
CC-ing the list again in case this is useful for someone else (I assume
it was just an oversight on your part though).
On 09/12/2011 10:00 PM, Huihong Luo wrote:
When the guest window resizes, I guess the guest drvier must be
notified, and then the guest changes the video mode? Does this mean that
arbitrary video modes are supported?
from BIOS view, there should be only certain number of video modes are
supported.
When the video mode changes the notification goes through the VMMDev
event notification mechanism which I described in a previous e-mail [1].
The notification is VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST - see the
recently-added documentation near VMMDevReq_GetDisplayChangeRequest2 in
include/VBox/VMMDev.h. In the X.Org/X11 Additions (I think the Windows
Additions do things similarly) a user-space client listens for these
events and sends notifications to the drivers. Using
VBoxVideoSetModeRegisters() or the HGSMI APIs we can set any video mode
(see also VBoxVideoAnyWidthAllowed() for completeness), not just those
offered by the BIOS.
Regards,
Michael
[1] http://vbox.innotek.de/pipermail/vbox-dev/2011-September/004524.html
--- On *Mon, 9/12/11, Michael Thayer /<[email protected]>/* wrote:
From: Michael Thayer <[email protected]>
Subject: Re: [vbox-dev] win 95/98 guest additions ?
To: "Huihong Luo" <[email protected]>
Cc: [email protected]
Date: Monday, September 12, 2011, 12:37 PM
Hello Huihong,
On 09/12/2011 06:30 PM, Huihong Luo wrote:
> We are exploring the possibility of implementing this old stuff. In
> particular, the mouse and graphics drivers.
> Seems mouse integration shouldn't be that difficult. However, for
video
> cards, it will take quite some time.
> I have a question, does
> C:\virtualbox-dev\vbox\include\VBox\Hardware\VBoxVideoVBE.h
contains all
> the video card's registry information? In other words, do these
> constants sufficient to develop the display driver? 95/98 uses
totally
> different driver model, and needs to implment in real mode using
> assembly code.
> So wanted to know what is the minimum requirement?
See the files in src/VBox/Additions/common/VBoxVideo for a first
approximation. Those were my first attempt at sharing video driver code
between Linux and Windows. For a minimal driver, the functions
VBoxVideoGetVRAMSize() and VBoxVideoSetModeRegisters() in
Modesetting.cpp which can be used without any of the rest. Those
functions are so basic they ought to be re-usable in 16bit code, or let
me know if that can be achieved with trivial changes. If you wish to go
further, HGSMIBase.cpp contains APIs for setting up the buffers used for
communicating with the graphics device (sending commands and receiving
replies and notifications) and for doing the actual communication.
Modesetting.cpp uses them to set multi-monitor graphics modes (and the
older APIs I mentioned for single-monitor mode-setting). VBVABase.cpp
contains dirty rectangle notification code, particularly for
accelerating remote display.
Feel free to send API documentation patches! I wrote the existing
documentation as I was getting to grips with the API (which was win32
only, and I am a Linux developer...) so it is a bit unclear. See
src/VBox/Additions/x11/vboxvideo/vbva.c for am example of how to set up
the graphics card. pointer.c and setmode.c in that directory build on
top of that.
Hope that helps a bit.
--
ORACLE Deutschland B.V. & Co. KG Michael Thayer
Werkstrasse 24 VirtualBox engineering
71384 Weinstadt, Germany mailto:[email protected]
Hauptverwaltung: Riesstr. 25, D-80992 München
Registergericht: Amtsgericht München, HRA 95603
Komplementärin: ORACLE Deutschland Verwaltung B.V.
Hertogswetering 163/167, 3543 AS Utrecht, Niederlande
Handelsregister der Handelskammer Midden-Niederlande, Nr. 30143697
Geschäftsführer: Jürgen Kunz, Marcel van de Molen, Alexander van der Ven
_______________________________________________
vbox-dev mailing list
[email protected]
http://vbox.innotek.de/mailman/listinfo/vbox-dev