Virtual PC and video ram

Virtual PC and video ram

  • Comments 22

Virtual PC emulates an S3 Trio 64 Video card with 8mb of video ram (VRAM).  From time to time I get people asking me why we do not increase the amount of VRAM - and there are a couple of reasons why:

  1. VRAM is a fixed overhead.  Each virtual machine that you launch uses 8mb of your computers memory to store our VRAM information.  If we increase this - it will increase the amount of memory used for each virtual machine - whether the virtual machine is using this extra memory or not.

  2. On video cards with hardware 3D acceleration support VRAM is used for storage of textures, and other performance improving measures.  However with a 2D video card VRAM is only used to store a single frame buffer of the contents on screen.  This means that with a 2D video card (such as we emulate) adding more VRAM just allows you to support higher resolutions - but it does not provide better performance.  At 8mb we are able to display at up to 1600x1200 resolutions.

Cheers,
Ben

Leave a Comment
  • Please add 2 and 3 and type the answer here:
  • Post
  • That actually brings up an interesting question I've pondered a few times. For my DOS VMs, as I don't do any GUI work, I should be able to drop the value to something slightly more reasonable, say 1MB or 512KB without it doing anything unexpected, right?
  • Wouldn't it be possible to just add a second video card type? For example, if you had an emulated Direct3D-capable card which used 64MB RAM, you could allow the user to choose the 8MB S3 Trio if they're not doing anything graphically intensive. If they plan on using any hardware acceleration, they can use the 64MB card. As far as I know, the S3 Trio is emulated in pure code and has no dependency on the physical hardware, so I wouldn't think adding a more capable card would cause any hardware issues to arise. The only problem I can think of is the computer may not be able to emulate a video card that powerful without a considerable hit on VM performance in general.
  • Okay so I will not be able to run a vm fullscreen on my notebook (never felt the urge to do so yet but it might be convienient)
    new widescreen TFT's can be up to 1920*1200, I can only use 16 bit colors then I guess

    maybe make the value configurable in a new release ??? (if that is at all possible)
  • Reminds me of on-board graphics, which sometimes gets advetised as "up to 256MB video RAM!", failing to mention that it's taken from system RAM.
  • This is one area that VMware hoses all over VPC. Being able to configure the display adaptor helps two ways - I can set a VM so that its max res fits on my screen properly; and I can set the video memory to exactly what I want and no more.

    The max res issue is actually a really annoying "feature" of VPC - I can't drag the VPC window to almost full screen because at about 20 pixels off the bottom or right of the screen VPC pops up scroll bars. So I can either have VPC annoyingly smaller than my screen, or maximised. Combine this with the inablility to maximise to a multi-monitor desktop and I get quite annoyed trying to run devlopment environments in VPC.

    VMware lets me use their "tab bar of active machines" mode with each machine "maximised" to cover what's left of the monitor (I lose about 4 pixels width and 30 height) which is great for having a stack of VMs on one monitor.

    Of course, both products current suck for trying to use multiple monitors, the best I've found is to get a video card that offers a merged monitor mode (so the two monitors come up as one, 2560x1024 monitor in display properties). The other hack is to rotate the right hand monitor so that the right hand monitor is centered vertically, allowing the VPC/VMware window to be dragged off the top and bottom of the left hand monitor while extending most of the way across the right hand one. Except VPC stops at 1600 wide, of course, while VMware extends full width.
  • I appreciate the point in respect of a 2D card - and that emulating a 3D card is going to be a major performance hit on the host machine, but is there any chance of virtualising the GPU as well as the CPU in a future release?

    That would allow for decent 3D performance in a virtual machine, which is going to be invaluable for Glass, as well as DirectX gaming.
  • One thing that is nice about the S3 emulation by VPC is many legacy games run much better (and just plain run) on VPC then VMWare.

    One game in particular is Battlespire. Albeit I have odd mouse issues with VPC when running the game in Win95, and the performance isn't nearly as good as win95 when I run it under FreeDOS/PC-Dos, it actually runs. I have yet to be able to install it in VMWare due to the graphics card displaying a garbled install screen. Thus, I need to get cdrom drivers working in DOS to install it from there (another thing VPC actually installs for you... which is nice). My only qualm with VPC happens to be I can't get the game (albeit could just be THIS game) to see the stinking 8MB video card. I'm pondering if it is due to the VESA emulation.

    Richard Gadsden, I would think offloading the commands to an actual GPU might be more efficient then emulating it. I know this doesn't exactly fit in the currently stuctrue of VPC, but it would most likely offer much better performance then trying to emulate one. The amount of operations a gpu does these days (and I believe even the first generation of gpus) was just trouncing what the cpu could do in the same amount of time. Albeit both solutions would work rather nice because some situtations would warrent both an emulated gpu and operations offloaded to a gpu.
  • Tim -

    You are correct that the real problem with emulating a 3D video card is that it would take soooo much CPU resource as to degrade the overall performance of the virtual machine.

    Geode -

    Yes we are investigating this as larger screens become more common place.

    Moz -

    AFAIK - Virtual PC provides all of the options VMware does - and it definitely provides the features you mention here.

    Richard -

    Sorry - I don't talk about future releases too much here :-)

    Cheers,
    Ben
  • Why not simply let the user choose the amount of VRAM for the emulated videocard? Think on about DOS virtual machines that not even require more than 2 mb. of VRAM on the videocard, I remember of having even a 1 mb. Trident videocard that run just fine for DOS.
    I know that you need more RAM for games, but, if I wanna setup a simply and small guest OS with few VRAM and few RAM, why not? it would save my host RAM has you said for higher values.
    Think on it.
    greets,

    Akuma.
  • As far as specifying VRAM size. Open your virtual machine's .vmc file in Notepad and navigate to the section below;

    <video_adapter>
    <vram_size type="integer">8</vram_size>
    </video_adapter>

    I've not had a chance to test individual values yet (or even the resulting VRAM size in a virtual PC) but I don't see any reason why changing the value wouldn't work.

    Perhaps Ben can confirm.
  • That's what I've been doing with my DOS VMs. so far I havn't had much problem running with 1MB, but I don't really do much stuff in DOS anymore.
  • Ross, I've tried raising the values above 8MB and have not noticed a difference. I can't remember if it dropped it automatically back down to 8MB or not.
  • Ben said:
    > AFAIK - Virtual PC provides all of the
    > options VMware does - and it definitely
    > provides the features you mention here.

    I have spent quite a bit of time looking, and I can't find the features.
    - there's a vram entry, but no video size ones in the vmc file. What do I set to change the max resolution?
    - how do I get the tab list of active VPCs maximised on a monitor?
    - how do I disable the "snap to monitor res and show scoll bars" feature (just disable scroll bar modes altogether)
    - how do I go wider than 1600? I'd like to lock in 2560x1024 and 3590x1024 as max resolutions (changing would probably requring me to shut down the VPC to edit the vmc file, I realise).
    (I specifically don't want any kind of free resizing - I want to be able to use the client display settings to pick the resolution rather than having to drag the windows about every time I start a VPC)

    And one that VMware doesn't do :)
    - how do I maximise to a multi-monitor desktop?

    thanks
    Moz
  • Nathaniel,

    Yup, you're quite right. I've just changed the value (up and down) and it doesn't seem to make one bit of difference. :-(

    Oh well, perhaps we'll see something new in VPC2006...
  • Just tinkering around, I changed the values to:

    <video_adapter>
    <vram_size type="integer">128</vram_size>
    </video_adapter>

    the restarted my VPC and checked the VRAM size. It is now 16MB!!!

    That is great, except that I really do want to use 128MB regardless of any performance hit. I recently bought a super-dooper HP zd8000 complete with 256MB of dedicated VRAM. I do use the power for everyday work, but I got the extra VRAM because I hoped to be able to run the latest 3D video games in my VPC so my box doesn't get all cluttered with gaming software junk.

    I understand the current limitations, but couldn't your team at least just give us the OPTION of using a 3D emulator and choose whatever VRAM we want to use? How soon can that happen?
Page 1 of 2 (22 items) 12