Im not so sure its as had as people make out. Its not as easy as people make out either. Direct-x has no problems drawing things in a window. The solution on a windows host doesnt seem so bad. Install a driver in the guest that 1) passes the direct-x calls to the host client. and 2) takes any non direct-x use of the video hardware and converts it into direct-x calls (might as well be consistent). Either the driver in the guest,or the host could make any changes to the calls to make them work right. There would of course be some overhead to alter the calls,but the hardware on the graphics card would be able to do its job. All the acceleration would happen on the card and the only performance hit would be in the overhead for the calls. This of course would only on a windows host. For a mac or Linux host,there is the problem that direct-x is supported on the host system. There is however a possible solution.Some Direct-x support does exist on Linux and mac platforms through wine,winelib and cedega. While it is true that wine sucks pretty bad (Im going to get trolled for that one,but seriously.... ) ,cedega shows that a reasonable degree of improvement is possible. Winelib seems to be the way to go here, creating a linux or mac client that can access the video hardware and take advantage of the acceleration of the video hardware. It might even be possible to license technology from Cedega. It seems to me that a CedegaLib might be possible without too much trouble,just like winelib. Should cedega be open to licensing it,it could provide full hardware accelerated graphics on a windows host under linux or mac. Its by no means trivial,but not impossible either. The rest of the computer is easy. Sound is trivial to virtualize, you just pass it to the host,and network connections can simply be bridged. While it certainly would be alot of work,it might actually be worth it for them to do it. If you could run hardware accelerated 3D apps in a guest,I think it would open a huge new market for them. In fact,I imagine alot of people would see linux or mac as a viable alternative to windows in such a case.
You should take into account that you can have different DirectX/OpenGL versions. The ideal, is to expose the raw video card to the guest os. That way, the guest acceleration is independant from the host.
Ideally,yes,but that runs into problems which may not be easy to solve. If we give the guest direct access to hardware,then we cant give it to the host. I dont see anyway to avoid the two conflicting. My guess is that if we ever expect to have any sort of 3D acceleration in a guest,it will have to be supported by special drivers within the guest,or special hardware that is made to be able to handle it. (the latter seems unlikely)
The video card manufacturers will eventually support virtualization instructions, just like recent CPU are doing it . Even moreso with AMD buying ATI. We'll have to wait a while though.
Eventually will be nice,but It would be nice if I could do it on the video card I just bought a week ago instead of the one that I wll buy in two years at the next major upgrade. Its true that virtualization capability would make me more likely to push up that video card upgrade by a significant amount,but still,hardware based video virtualization is going to be a long way off. In fact,most people s computers dont even support cpu virtualization.
True enough. Virtualization has become mainstream in the recent years (it's been for decades in mainframe environments). As it happened with accelerated video cards, virtualization will be a feature in increasingly more hardware devices, but for now we have to wait. Anyway, video card acceleration is -useful- only for modeling/gaming. Desktop effects are pure eye candy save some (for example, turning non responsive windows into greyscale).
Why can't Parallels run like a DVD player app, or a game, where Parallels itself has direct video card access and provides custom drivers to the guest OS. This seems like a natural progression for the "Parallels Tools" approach allready existing.
Vista requires DirectX 9 video card support for many of it's applications. Vista shows a video card with 8MB of VRAM. It would be nice if parallels would better support the video card.
Sure you know this already, but qemu has an experimental opengl support for linux guest systems (German: http://www.golem.de/showhigh2.php?file=/0611/49017.html&wort[]=qemu) So if the support for opengl could be done, an direct3d wrapper would be possible i think.
an aside: I also would LOVE Direct X support. It really is the Last thing I really need out of Parallels. I love this product so much, and now that I've got it doing everything else I wanted, I've been trying to run some of my favourite Windows-Only games, and this (what I thought was a small thing) is the only thing holding me back. Toook me forever to figure it out too, since DirectX will install, it just won't actually work!
PS. Who wants to Boot Into Windows? This defeats the whole reason I bought Parallels! Booting into windows kills all my servers (FTP, web etc.), all my downloads, video conversion or Cd burning or anything else I have my computer processing for me. Booting into Windows is the same as saying "Just use a PC running Windows" (well, perhaps that's an exaggeration, but similar as far as I'm concerned)
If you're a hardcore gamer you'll want all the processing power for your game so it's pretty much the same deal with killing processes. Besides, Parallels is emulating hardware which will -always- be slower than the real thing. 3D support is only for gamers who are too lazy to dual boot. Before you tell that artists/designers need 3D applications, all the mayor applications run natively on Mac/Linux so there's not point in emulating them.
DirectX would be hard, because there's not necessarily even any DirectX support in Apple's version of the video cards in their computers. OpenGL, though, should be able to be bridged... Apple supports shared OpenGL between applications already.
If you're a hardcore gamer you'll want all the processing power for your game so it's pretty much the same deal with killing processes. If you're not a hardcore gamer, you don't matter? Friend, if you're a hardcore gamer you're not using a Mac in the first place. Before you tell that artists/designers need 3D applications, all the mayor applications run natively on Mac/Linux so there's not point in emulating them. There's plenty of applications that are not on Mac or are not yet native on Intel. Given a choice of Rosetta and Parallels, for example, I'm running Photoshop under Parallels. I'm sure there's people using 3d apps who are in the same boat, but for whom Parallels isn't yet an option because it's not virtualizing OpenGL.
So I guess the best way for parallels at the moment is to create a virtual driver to bridge opengl between windows and mac and may be with the help of cedega directx can be emulated. Of course the best thing is to have a virtualization support in the gfx card itself. BTW how can I tell if my processor supports VT-X intel virtualization technology or not ? is there a software to do that?
If you're a hardcore gamer, you'll want the most out of your system. That's why they do silly stuff like buying ram for twice the price to get 2 seconds faster loading times. Parallels will -always- be emulated so there will be an overhead for gaming. Photoshop has been available for Mac for years. Same goes for Maya, CAD, 3dsmax, etc. I find it hard to believe there's a ton of applications -tailored for real work-, which rely exclusively on 3D acceleration (and good one) that were usable in the PPC architecture but don't have universal binaries as of yet. Also, Photoshop doesn't benefit from your video card a lot. It's not a 3D application, it's a raster image processing tool. So, it doesn't matter if you have a quadro or a 5200fx, you won't be crunching FPS up the roof and doing spatial transformations. My main concern is that most people posting for these kind of features are those who are too lazy to reboot in order to play XYZ on their Mac. Bother the vendors to support your architecture. I gotta admit that I might be biased here because I think of Parallels as a working tool (incomplete though) instead of a windows game box emulator.
What about... If we limited 3D support to fullscreen only... why couldn't we "hibernate" the GPU on entry to fullscreen mode, pass off direct control of the GPU to a modified Parallels aware Windows GPU driver? This modified Windows driver could initialize the GPU to a Parallels friendly state, and re-hibernate the GPU when fullscreen is lost or the VM is closed. When OS X gets the GPU back, it can restore from the initially hibernated state and pick up from there... Why couldn't something like this work? If we can hibernate the entire computer, I don't really see why we can't freeze just one portion of it. Obviously, the devil is in the details, but to say it's impossible sounds awefully premature. What does anyone else think?
Photoshop is not native on the Intel Mac. It's a Power PC application and runs like a slug. A fast slug - Rosetta is pretty good - but it's still massively faster under Parallels. In any case, I didn't say it was a 3d app, or that it benefitted from acceleration, I was merely noting one application I used that runs faster under Parallels. I find it unlikely that there's no 3d apps that are still PPC-only on the Mac.