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

Reply via email to