Back to Article List

Windows VPS with a graphics card: What it can and cannot do

Windows VPS with a graphics card: What it can and cannot do

The comparison of GPU VPS vs dedicated GPU server vs cloud GPU settles which way to rent a card. This article picks up on the Windows side of that decision, where a second problem sits on top of the first: even with a physical GPU in the VM, the way you look at a Windows server (RDP) has its own ideas about graphics, and half the "my GPU isn't working" tickets are RDP doing exactly what it's designed to do. What follows is what a Windows VPS can render without a GPU, what breaks, what passthrough changes, and the settings and tools that make the card visible on your screen.

What a standard Windows VPS renders with

Open Device Manager on an ordinary Windows VPS and expand Display adapters. You'll see one entry: Microsoft Basic Display Adapter, Microsoft Hyper-V Video, Red Hat QXL controller or a virtio GPU entry, depending on the hypervisor and the drivers the template shipped with. None of those is a GPU. They're virtual framebuffers: a region of RAM the guest draws into and the hypervisor can read, with no shader units, no video encoder and no hardware Direct3D.

Everything you see over RDP on that machine was drawn by the CPU. The Windows desktop composes fine that way (DWM has a software path), a browser works, Office works, SQL Server Management Studio works. Windows includes a software Direct3D implementation called WARP that emulates a GPU on the CPU, and it's what lets a lot of DirectX-using applications start at all. It's slow in proportion to how much the app leans on the GPU, which is why a charting app with two hundred candles is fine and a 3D viewport is a slideshow.

RDP then encodes that framebuffer, also on the CPU, and sends it to your client. On a 2 vCPU VPS the encoder competes with your applications for the same cores, which is the reason a busy Windows VPS feels laggy over RDP even when Task Manager says the app itself is idle.

What breaks without a GPU

DirectX 11 and 12 applications that check for hardware feature levels and refuse to run on WARP, which includes most game clients and a good share of 3D CAD packages. OpenGL applications, since Windows has no software OpenGL past version 1.1 and the basic display adapter reports exactly that; Blender, older CAD tools and some scientific plotting software fall over here. Video editors like DaVinci Resolve and Premiere, which want CUDA or at least a D3D11 device and will refuse to start, or run their timeline at a frame every few seconds. Hardware video encoding of any kind: OBS, FFmpeg's NVENC path, Plex or Jellyfin transcoding on Windows. Browser pages built on WebGL and WebGPU, which fall back to a software renderer or show a blank canvas; Google Maps in 3D mode and Figma are the ones people notice.

Anything that says "no compatible graphics device found" on startup is telling you about the virtual adapter, and no amount of RDP tuning changes that. The fix is a real card in the VM.

Race towards the future

Unrivaled speed meets competitive pricing

Ready in seconds 7-day money-back guaranteeA risk-free way to try LumaDock. Covers the GPU VPS plan on your first order. Cancel anytime
Abonament

GPU.T4

$149.00 Save  13 %
$129.00 Lunar
  • GPU dedicat
  • Tesla T4

  • 16 GB GDDR6vRAM
  • 2560CUDA CORES
  • Server virtual
  • 8 vCPUAMD EPYC
  • 32 GBMEMORIE ECC
  • 250 GB NVMeSTOCARE
  • Trafic nelimitat
  • IPv4 & IPv6 incluse Suportul IPv6 este momentan indisponibil în Franța, Finlanda sau Țările de Jos.

GPU.ADA4000SFF

$249.00 Save  20 %
$199.00 Lunar
  • GPU dedicat
  • RTX 4000 SFF Ada

  • 20 GB GDDR6 ECCvRAM
  • 6144CUDA CORES
  • Server virtual
  • 16 vCPUAMD EPYC
  • 64 GBMEMORIE ECC
  • 350 GB NVMeSTOCARE
  • Trafic nelimitat
  • IPv4 & IPv6 incluse Suportul IPv6 este momentan indisponibil în Franța, Finlanda sau Țările de Jos.

GPU.PRO4000SFF

$299.00 Save  20 %
$239.00 Lunar
  • GPU dedicat
  • RTX PRO 4000 Blackwell

  • 24 GB GDDR7 ECCvRAM
  • 8960CUDA CORES
  • Server virtual
  • 16 vCPUAMD EPYC
  • 64 GBMEMORIE ECC
  • 400 GB NVMeSTOCARE
  • Trafic nelimitat
  • IPv4 & IPv6 incluse Suportul IPv6 este momentan indisponibil în Franța, Finlanda sau Țările de Jos.

GPU.PRO4500

$499.00 Save  20 %
$399.00 Lunar
  • Dedicated GPU
  • RTX PRO 4500 Blackwell

  • 32 GB GDDR7 ECCvRAM
  • 10496CUDA CORES
  • Virtual Server
  • 16 vCPUAMD EPYC
  • 64 GBECC MEMORY
  • 450 GB NVMeSTORAGE
  • Unmetered bandwidth
  • IPv4 & IPv6IPv6 is currently unavailable in France, Finland or the Netherlands. included

GPU.PRO5000

$699.00 Save  20 %
$559.00 Lunar
  • Dedicated GPU
  • RTX PRO 5000 Blackwell

  • 48 GB GDDR7 ECCvRAM
  • 14080CUDA CORES
  • Virtual Server
  • 32 vCPUAMD EPYC
  • 96 GBECC MEMORY
  • 500 GB NVMeSTORAGE
  • Unmetered bandwidth
  • IPv4 & IPv6IPv6 is currently unavailable in France, Finland or the Netherlands. included

GPU.PRO6000

$1,199.00 Save  19 %
$969.00 Lunar
  • Dedicated GPU
  • RTX PRO 6000 Blackwell

  • 96 GB GDDR7 ECCvRAM
  • 24064CUDA CORES
  • Virtual Server
  • 32 vCPUAMD EPYC
  • 128 GBECC MEMORY
  • 650 GB NVMeSTORAGE
  • Unmetered bandwidth
  • IPv4 & IPv6IPv6 is currently unavailable in France, Finland or the Netherlands. included

*VAT excluded.

INCLUDED WITH EVERY PLAN

✓ No setup fees ✓1 Gbps network
✓ Free server monitoring ✓ Firewall management ✓24/7 support ✓ KVM virtualization

What a passed-through GPU changes

With a physical GPU handed to the VM through VFIO (or DDA on Hyper-V), Device Manager shows two entries under Display adapters: the virtual one that was always there and the NVIDIA card with its real name once the datacenter driver is installed. nvidia-smi in a command prompt lists it with driver version and memory. CUDA works. DirectX 12 and OpenGL 4.6 work, because the real driver is present. NVENC works for OBS and FFmpeg. The list of things that break above gets short.

Two things don't change. The VM's CPU, RAM, disk and network are still virtualised and still shared with the host's other tenants, so a passed-through card on a small plan is a fast GPU behind a slow everything else. And RDP doesn't automatically know the card exists, which is the next section.

RDP and the GPU

Remote Desktop has its own rendering and encoding path, and by default on Windows Server it uses the CPU for both even when a GPU is present. That surprises people who've just spent money on a card, so here is precisely what Microsoft ships and what they took away.

RemoteFX vGPU, the old mechanism that gave RDP sessions a share of a host GPU, is gone. Microsoft's KB4570006 states it "was disabled in all applicable Windows platforms in the July 2020 Windows security updates (July 14, 2020)" after a set of remote code execution vulnerabilities (CVE-2020-1036 among them) and removed in the April 2021 updates, with DDA named as the secure replacement. Any guide that tells you to enable RemoteFX is describing a Windows that no longer exists.

What exists now is a pair of group policies that tell the Remote Desktop Session Host to use the GPU. Microsoft documents them for Azure Virtual Desktop in the guide to enabling GPU acceleration, and the same policies apply to any Windows Server session host. In gpedit.msc, under Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Remote Session Environment:

Use hardware graphics adapters for all Remote Desktop Services sessions set to Enabled makes the session render applications on the GPU and skips the software path. This is the one that makes DirectX and OpenGL apps work at speed inside an RDP session.

Configure H.264/AVC hardware encoding for Remote Desktop Connections set to Enabled moves the encoding of the screen to the GPU's NVENC engine, which takes the encoder off your vCPUs. Prioritize H.264/AVC 444 Graphics mode for Remote Desktop Connections switches the codec to a 4:4:4 chroma profile that keeps text sharp, which matters on a desktop with a lot of small type and matters less for video.

After a gpupdate /force and a fresh RDP session, Microsoft's verification is an event log: Applications and Services Logs > Microsoft > Windows > RemoteDesktopServices-RdpCoreTs > Operational, event ID 170 with the text "AVC hardware encoder enabled: 1", and event ID 162 showing the AVC444 profile. If 170 reports 0, the encoder policy isn't in effect or the driver doesn't expose NVENC to the session.

Even with all three policies on, RDP is still RDP. It runs at a capped frame rate, it drops frames under network jitter, it has input latency of a few tens of milliseconds on a good link, and it's tuned for a desktop with documents on it, not for a 60 fps viewport. For CAD review and a trading platform that's fine. For anything that feels like a game it isn't, and that's the case for the tools in the next section.

Parsec, Sunshine and Moonlight, NICE DCV

The alternatives to RDP for a GPU desktop all work the same way: a host agent captures the display output from the GPU, encodes it with NVENC (or the AMD and Intel equivalents) at 60 frames a second or more, streams it over UDP with a low-latency client and treats input as a first-class stream. Parsec is the commercial one with a free personal tier and a client for everything. Sunshine is the open-source host, whose documentation lists NVENC, AMD AMF, Intel QuickSync and a software encoder, and it pairs with the Moonlight client, which started life as an open-source implementation of NVIDIA's GameStream protocol. NICE DCV is Amazon's, free to use on their instances and licensed elsewhere, and it's the one enterprise CAD shops tend to have already.

The practical difference from RDP: you log in to the console session, not a separate RDP session, so the GPU is driving the actual desktop and every application sees it. That has a consequence for headless servers, and it's the next section.

A caveat I don't have a clean answer for: Sunshine's Windows service can't capture a desktop that no user has logged into at the console, so a reboot leaves you needing a way to log in first. People solve it with an auto-logon plus a lock-screen workaround, or by keeping RDP as the fallback to reach the machine and then disconnecting into the console with tscon. I've used the second one and it works, but I've never found a version of it that felt like anything other than a workaround.

The virtual display problem on a headless GPU

A GPU in a server has no monitor attached. Windows treats a GPU with no display as a compute device: it won't put a desktop on it, and a capture tool like Sunshine or Parsec asking for the display output of that card gets nothing. Datacenter cards like the L4 have no display outputs at all, so this is the default state on every GPU VPS.

Two fixes. The hardware one is a dummy plug, an HDMI or DisplayPort dongle with resistors that convinces the card a monitor is connected; it works on cards that have a port, which means it works on a workstation card in a dedicated server you can ask a technician to fit, and not on an L4 in a VPS. The software one is an IDD (Indirect Display Driver), which Microsoft's driver documentation describes as "a simple user-mode driver model to support monitors that aren't connected to traditional GPU display outputs", with "creating virtual monitors for applications such as virtual desktop environments" listed as a typical scenario. An IDD creates a virtual monitor of whatever resolution and refresh rate you choose, Windows extends the desktop onto it, and because the driver is user-mode (UMDF) it can't take the system down when it misbehaves. Open-source IDDs exist and are what most GPU streaming setups on headless Windows use; Parsec ships its own. Install one, set it as the only active display, then point the streaming host at it.

A flat reference for the state of Device Manager on a working setup: Display adapters shows the NVIDIA card and the hypervisor's virtual adapter; Monitors shows the IDD's virtual monitor (or Generic PnP Monitor for a dummy plug); Display Settings shows one display at the resolution you set. If the virtual adapter is still the one with the desktop on it, the streaming host will capture the CPU-rendered framebuffer and the GPU will sit idle.

Windows licensing on a VPS

You bring the Windows licence. A provider can supply a template with Windows Server installed, but activation is against a licence key you hold, either a retail or volume key or a subscription, and Windows Server's licensing is core-based with a minimum count per VM. Remote Desktop beyond the two administrative sessions needs RDS CALs on top. None of that changes because a GPU is in the VM, and none of it is the provider's to include. The GPU driver itself is free for datacenter and RTX PRO cards; vGPU profiles need an NVIDIA licence, which is one more reason passthrough is the simpler product.

The connection basics, client settings and the first login on a fresh Windows VPS are in the knowledge base on connecting to your Windows VPS using RDP. LumaDock's Windows VPS hosting line, for reference, is the plain case: a KVM VM on NVMe with the virtual display adapter described at the top of this article. A card in the VM is the GPU line's job.

Use cases that fit and use cases providers ban

The legitimate list is long. Render nodes for Blender, V-Ray or Unreal, driven headless by a farm manager, where nobody looks at a desktop at all. CUDA on Windows for teams whose toolchain is Windows-only. Trading and charting platforms whose GUIs redraw hundreds of series in real time and stutter on WARP; the earlier piece on forex VPS hosting for MetaTrader covers the non-GPU version of that setup, and a card makes the difference for the heavier platforms. A remote workstation for CAD, video or DAW work, used over Parsec or DCV by one person at a time. Game servers that need a GPU, which is a smaller set than people think, since most dedicated server binaries are headless, but a few (some Unreal Engine servers with rendering enabled, simulation-heavy titles) do.

Then there's the list that gets accounts closed. Running a game client on a server to bot, farm, multi-box or bypass anti-cheat is prohibited in the terms of every hosting provider I've read, and the game publishers' terms on top. Providers detect it and terminate without much discussion, the anti-cheat vendors flag datacenter IP ranges, and the whole thing ends with a banned game account and a banned hosting account. A GPU VPS is a fine place to host a game server for other people to join, and a bad place to be a player on, because both the hosting terms and the anti-cheat vendors treat a datacenter address as a red flag.

The same goes for cryptocurrency mining on a GPU VPS, which most acceptable-use policies exclude explicitly. A monthly GPU plan is priced for inference and desktops, and a card pegged at 100% for weeks for hashing is the kind of thing a provider notices within a day.

What to verify on day one

Device Manager showing the real card under Display adapters. nvidia-smi printing it. A quick dxdiag, whose Display tab should name the NVIDIA card with a hardware feature level of 12_x and not "Microsoft Basic Render Driver". If RDP is your daily client, the three group policies from above and event 170 with a 1 in it. If it isn't, an IDD or dummy plug, the streaming host pointed at it, and a test from the client you'll use in practice. And one measurement I'd take before deciding the card is slow: run the same DirectX or CUDA benchmark once over RDP and once over Parsec. On the VMs I've set up the gap was large enough to make people think the GPU had stopped working when they went back to RDP.

Questions?

Why does my NVIDIA GPU show Code 43 in Device Manager after passthrough?

Code 43 means a driver told Windows the device had failed, and on a passed-through NVIDIA card the classic cause was the GeForce driver spotting the hypervisor and refusing to start. NVIDIA removed that block from the R465 driver branch onward, adding beta GeForce passthrough support for one Windows VM, so on a current driver the error points somewhere else: the driver package, or the VM's configuration on the host. Code 12, "cannot find enough free resources", is a different problem, which Microsoft's DDA guide for Hyper-V traces to the VM's memory-mapped I/O space and fixes by raising Set-VM -HighMemoryMappedIoSpace. On a rented VPS the VM configuration behind either code sits on the host, so after a clean driver reinstall send the provider the exact code from Device Manager.

About the author

William Ramsay

I've earned my living from technical writing for more than 20 years. There were a few other jobs before that: university IT, a spell doing Unix administration, some training/paid work. Over these years, writing became the part people kept asking me to do, so I stopped pretending it was secondary.

Most of my career has been in infrastructure. The names have changed. We had dedicated servers, then virtual servers, then cloud instances; now there are another dozen ways to rent somebody else's computer. But the underlying problems don't change nearly as quickly. I'm in Glasgow, where I've lived for most of my life. I keep paper notebooks, walk in the hills when my knees agree to it and repair old hand tools. I've never been particularly interested in gadgets for their own sake. I like knowing how things work and being able to fix them.

Your models deserve a GPU of their own

Run them on a full card from our RTX PRO Blackwell lineup, with dedicated VRAM and a price that stays the same however hard the GPU works. Your first GPU order comes with a 7-day money-back guarantee.