My downstairs PC (on the dining room table) is an HP Touchsmart all-in-one Core 2 Duo Intel Integrated Graphics 965-based box, which makes it absolutely abominable for games.
Upstairs, my internet connection plugs into my Hyper-V host (actually, a TMG instance on it), and I’ve a sort-of-gaming PC set up next to that, which has a nice video card, and chair, and half-assembled steering wheel.
I’ve GigE running all over the place.
Back to the downstairs PC, though: I once tried Borderlands on it, and at the lowest settings, I could’ve made a faster PowerPoint deck. Pretty sure my WP7 phone has more 3D graphics grunt.
Recently, I’ve been playing a lot of Jagged Alliance, because it seems like there’s just so much of it about, and I really loved the earlier incarnations.
But to play Jagged Alliance Online, or Jagged Alliance: Back In Action, I’ve needed to move from downstairs, where I like to hang out in the dining/living room, to upstairs, or The Man Room, where I’m quite isolated from my girlfriend, the TV, and the small family of woodpeckers that’s moved into the dining room table.
The Hyper-V box got upgraded to a Core i7 (from a Q6600) with 16GB RAM recently. This means SLAT/EPT is available, which means that I now have the possibility of sexy 3D GPU graphics without actually crippling the performance of the VMs running on it.
Also, it got me thinking about RemoteFX:
Could I get reasonable 3D gaming performance from the Hyper-V host, using the downstairs box as just a screen?
Not having used RemoteFX before, I did some research. Then some more research. Then some more. Everyone and their dog was trying it with an unsupported GPU (“for business purposes”… suuuuure), but there were some success stories around, so I persevered despite not really understanding what I was doing. (It’s a good quality. Honest.)
Note: This should not be taken as endorsement or condonement of using an unsupported GPU. If stuff just randomly stops working, or a driver update breaks this, there’s no recourse. So if you need a supported, working, supportable solution, DO NOT DO THIS. (yes, just like Xbox Live through TMG).
I jammed an Nvidia 9400 (or something; the only spare PCIe card I had) in the server as a proof of concept (depending on what you read, you either need more than one card, or the Intel isn’t a suitable RemoteFX GPU anyway).
The literature commonly refers to installing the RemoteFX Cap Driver because most servers don’t use WDDM drivers for their inbuilt video cards.
Mine did have a WDDM driver (the i7 has Intel Integrated HD Graphics)… but I didn’t know that, so I assumed it was XPDM and installed the Cap driver; turns out I simply didn’t need to, and there was much installing and uninstalling of the cap driver, with reboots required. (Which take out my house’s Internet connection).
In short: looks to me like if your inbuilt server adapter is WDDM, no need for the CAP driver. But like I said – I removed the ?XPDM? Live Mesh adapter before starting.
It worked, but the 9400 didn’t support new niceties like Shader Model 3.0, so BIA was out. And JAO ran too slowly for my liking. And the card was ollllld. So assuming that’d be the problem, I figured I’d try a new one.
So I bought a new ATI/AMD Radeon HD 6770 1GB card (and a 6790 for the gaming PC…) for $140, and dropped that into the Hyper-V box.
(Yes, I know it’s unsupported. Yes, I know there are special GPUs for this. No, I can’t help you if you run into trouble with this.)
At this point, I tried installing drivers, but it didn’t seem to work initially, possibly because I still had the Cap driver installed (there was screen blanking). Eventually, after several uninstall-reinstall cycles, it just worked. I didn’t (as of 12.1 Catalyst) need different drivers; I didn’t install Catalyst Control Center on the successful run, but I don’t think it was that anyway.
The Event Log messages about nonworking GPUs disappeared, and I had a working RemoteFX host again. (Moral of the story: if you are using a cap driver, and you need to add or change a video card, disable the cap driver first).
It goes alright!
Some games react weirdly to RDP-style inputs (particularly the mouse); some games have glitches they don’t otherwise have with the synthetic 3d adapter.
I would not try playing most FPSs via RemoteFX (you’re instantly dealing with input lag plus network lag plus rendering time on the server and the client, plus that mouse-movement-is-display-mouse-movement thing).
Also, keep in mind: this is a screen remoting protocol; if your box can’t do smooth full-motion 3d on its own, or smooth full-screen video, doing smooth full-motion 2d-of-3d might put a fair load on it as well. If Aero is jerky on the box (it is on the Touchsmart), that’s about the best-case frame-rate you’re likely to get from RemoteFX or anything for that matter. There are performance counters to track where bottlenecks are.
I can now play Jagged Alliance: BIA on my downstairs PC pretty reliably, which is all I wanted to do in the first place. I do it a lot right now. I use 1280x720, 30Hz (seems to respond better), 2xaa, 4xAniso (or 4x whatever that last setting is), and Vsync.
JAO has some graphical weirdness (blank world map and face tiles) which fixes itself up when you play with the 9 and 0 keys (graphics detail level). Again, can now play it on the Touchsmart, which is incapable of playing it on its own.
Company of Heroes looks great, and with all the settings turned up to max, I got a “Great” score on COHmark. Can’t remember the numbers, but better than I expected. Haven’t played with it extensively yet.
I tried Civ IV, and it was the first time I’ve played it… it worked pretty well.
Frozen Synapse didn’t work at all, just crashed to desktop.
Deus Ex: GOTY – man, that game’s a pain to configure these days, what with its software rendering default and 16 bit colour! ugh! – it doesn’t really work well, input issues once the video issues are fixed.
It’s not a solution that allows me to dedicate the full unfettered power of the GPU to a single client (at least, I haven’t worked out how), but with a nice, grunty GPU in the server box, it’s nice that I won’t have to replace the touchsmart until Win8 comes out (bevel-less touch is important), and then I’ll get me one of those sexy new HP all-in-ones, and maybe play games locally again for a while. Or maybe stick with the thin screen/lots of bandwidth solution!
Very cool. Thanks for doing it and writing about it. Saved me a lot of time. JA is a great game.
Can someone explain to me. Why you need virtual machine and dont install remotefx on the main server 2008 R2 platform ?
There's another form of RemoteFX where you do that, which supports faster response and video streaming (if I read it correctly) but it doesn't (didn't?) expose the D3D device to the host, only as a virtualized Hyper-V device. Might be an idea to ask the RDS blog folk?
i will try with dual core g630, 8gb ram and nvidia gt430 ^^
Lets give a try..
FX-8350, 32GB RAM, ATI HD7970
This post was #5 in G for "cheap remotefx card". Kudos.
Hi does remotefx supports the Touchsmart touch capabilities?
Isn't it better/faster/more-efficient to enable "Remote Desktop Session Host" + "Remotefx" on the Hyper-V host?
AFAIK from reading the docs at the time, that was a different type of RemoteFX which didn't include 3d acceleration, which was my raison d'etre for this experiment.
have you tried updating your box to 2012R2? I was waiting hard for DX11 to be fully supported by RemoteFX. I have a setup quite similar to yours, the video card is HD6990. The sad fact is, in Windows 2012 the performance bacame only a half of what I used to have in 2008R2: 6400 3DMark06 points versus 11600. To the moment, no guidelines on that are available.
I was finding it hard to understand what I should or shouldn't be able to do with it, so it's kinda in a state of disrepair at the moment. Getting a Surface Pro 2 also lessened the need for a games box elsewhere, but that's by the by :)
So my current state looks like this:
- the box is upgraded to 2012 R2
- the HP Touchsmart is sitting in the same room, having just been upgraded to 8.1 but decommissioned from the dining table
- the dining table was decommissioned
- the dining table was thrown away
- after 6 months, a new dining table was commissioned
- the lady of the house doesn't think we need a dining table PC
- the VM I was using is long-expired/dead/missing/something
- the 8.0 VM I was trying to use RemoteFX with didn't work
- the 8.1 VM I was trying to use RemoteFX with didn't work *initially* but I remember mixing preview 8.1 with RTM 2012 R2, which is probably not a great idea, and there were video driver crashes noted in the event logs.
- the 8.x VMs I have aren't Enterprise, which is documented as being a requirement, and I haven't yet put the time in to work out whether that's holding me back, or something else is going on.
On performance: I remember the initial performance of 2008R2 not being what I'd hoped it would be (i.e. FULL POWER OF A SINGLE CAAAARD for a single virtualized box) and not approaching single-card performance, but still being way better than the local box would've provided. I did fiddle with all available Group Policy settings to try to make it as "unfair" as possible and bias single-box performance, but I'm not sure what the engineering tradeoffs are there (I can guarantee that it's not considered a core consumer scenario to do this from the Enterprise Ed requirement for the Windows Client).
So, swings and roundabouts. I'll get to it when I want to play CoH2 on my Surface RT, I guess :)