VirtualBox

Ticket #5596 (closed defect: fixed)

Opened 4 years ago

Last modified 20 months ago

Low resolution scaling in full screen mode

Reported by: DrD Owned by:
Priority: major Component: other
Version: VirtualBox 3.2.6 Keywords: resolution full screen
Cc: Guest type: other
Host type: other

Description

When running games such as starcraft (and very likely any game set to a lower resolution then the screen's potential), virtualbox fails to scale the image up to fullscreen in full screen mode. Game (or application at hand) remains in a smaller window (at it's running resolution) without scaling up to full screen as it should in these situations. The remaining space is occupied by black borders surrounding said application.

Change History

comment:1 Changed 4 years ago by tasukete

Searching around Google turns up some discussion about solving this generally, but perhaps a quick fix could provide 90% of the benefit without committing to a fully general solution at this time.

Would it be possible to simply allow the guest to change the host's desktop resolution via !DirectX/Direct3D? Specifically, when the guest invokes (say) IDirect3D9::CreateDevice() with D3DPRESENT_PARAMETERS.Windowed = false and BackBuffer{Width,Height} = foo, could this be passed through to the host? Effectively, VirtualBox itself would behave like a full-screen Direct3D game, temporarily switching the display resolution (without mucking up the host desktop).

This would postpone the need to implement scaling in VirtualBox proper. The host's display driver is better at that, anyway. For instance, I have my driver set to respect 4:3 aspect ratios on a widescreen display, while others might prefer to stretch.

Then, the only case where VirtualBox might offer to scale the display is when the user runs a full-screen guest within a VirtualBox window.

Disclaimer: I know next to nothing about Direct3D.

comment:2 Changed 4 years ago by bartman2589

I can confirm that this is NOT a new problem as EVERY version of VirtualBox that I myself have used (since around 3.0 itself) has suffered from this problem, it would be very nice if someone would finally fix this once and for all. Problem has existed for me on WinXP Pro since I first tried VirtualBox.

comment:3 Changed 4 years ago by michael

  • Host type changed from Mac OS X to other
  • Version changed from VirtualBox 3.0.12 to VirtualBox 3.2.6
  • Guest type changed from Windows to other

We will not implement changing the host's resolution from the guest (see #447 for an explanation). Scaling is being worked on, although it is not trivial as we support several host systems and rendering engines.

comment:4 Changed 4 years ago by michael

Ticket #5875 has been marked a duplicate of this one.

comment:5 Changed 3 years ago by frank

  • Status changed from new to closed
  • Resolution set to fixed

VirtualBox 4 implements a scale mode.

comment:6 in reply to: ↑ description Changed 20 months ago by twipley

Replying to DrD:

When running games such as starcraft (and very likely any game set to a lower resolution then the screen's potential), virtualbox fails to scale the image up to fullscreen in full screen mode. Game (or application at hand) remains in a smaller window (at it's running resolution) without scaling up to full screen as it should in these situations. The remaining space is occupied by black borders surrounding said application.

It is to be remembered, though, that the best scaling method is integer-factor scaling. In other words, the mapping of individual pixels to larger (2x2, 3x3, and so forth) blocks of like-value pixels.

Such an automatic "zoom-in magnifying," if it may be put that way, while under full-screen mode would continue to feature black bordering, although a much-larger area of the screen would be put to good use.

It has to be noted, though, that this is already achievable through reducing host resolution, for example from 1920x1080 to 960x540, although such a method arguably is not that suited for long-term purposes.

The underlying mechanisms of the implementation would be for a check, triggered by definite conditions, to be performed in order to determine whether native width and height in pixels is great enough for integer-factor scaling to take place, then for the largest suitable scaling to be performed.

Such an implementation would be adapted both to text-mode cases (for example, full-screen XP command consoles, and MS-DOS guests), and to classic-video-game cases (StarCraft is to be restated) -- such code would indeed operate great for lots of past games, in which output resolution is of 640x480, and for which double-scaling would be a viable solution relating to current-generation modern monitors.

comment:7 Changed 20 months ago by twipley

I just noticed that this ticket is marked as closed;

I have therefore opened a ticket under a more-appropriate name: https://www.virtualbox.org/ticket/10852

Note: See TracTickets for help on using tickets.

www.oracle.com
ContactPrivacy policyTerms of Use