Skip to main content

What is a Virtual Display?

A virtual display is a software-emulated monitor that appears to Windows as a real physical display. Unlike traditional monitors that connect via HDMI, DisplayPort, or other physical interfaces, virtual displays exist entirely in software and are created by a display driver.
The Virtual Display Driver creates monitors that function identically to physical displays from the operating system’s perspective, enabling all standard display features and applications.

How Virtual Displays Work

Virtual displays leverage Windows’ Indirect Display Driver (IDD) architecture to create displays without physical hardware:

Core Components

Display Adapter

The virtual adapter (IDDCX_ADAPTER) that Windows recognizes as a display device, similar to a GPU

Monitor Object

Virtual monitors (IDDCX_MONITOR) that represent individual displays with their own EDIDs and capabilities

SwapChain

A buffer exchange mechanism (IDDCX_SWAPCHAIN) that receives rendered frames from the Windows compositor

Direct3D Device

A D3D11 device that processes graphics buffers, enabling GPU-accelerated rendering

Benefits vs Physical Monitors

Flexibility Beyond Hardware

Virtual displays offer capabilities that physical monitors cannot provide:
Create displays with any resolution combination, unconstrained by monitor hardware:
  • Ultra-wide resolutions like 7680x4320 (8K)
  • Non-standard aspect ratios (21:9, 32:9, custom)
  • Portrait or landscape orientations
  • Multiple displays at different resolutions simultaneously
Support for precise refresh rates including fractional values:
  • 23.976 Hz (film standard)
  • 29.97 Hz / 59.94 Hz (broadcast video)
  • 119.88 Hz (gaming)
  • Any custom rate from 1 to 240+ Hz
Change display properties without hardware limitations:
  • Add or remove displays on-demand
  • Modify resolutions and refresh rates in real-time
  • Switch between SDR and HDR modes instantly
  • Reconfigure without physical cable reconnection
Full control over color depth and formats:
  • 8-bit SDR for standard content
  • 10-bit SDR for professional color work
  • 10-bit HDR10 for high dynamic range
  • 12-bit HDR+ for maximum color precision
  • Custom EDID color profiles

Cost and Resource Efficiency

No Physical Hardware

Eliminate the need for HDMI dummy plugs, extra monitors, or physical display devices

Low Overhead

Virtual displays use minimal system resources when inactive, with efficient GPU memory management

Infinite Scalability

Create as many virtual displays as your system can support (typically 5+ monitors)

Zero Cable Management

No physical connections, cables, or desk space required

Common Use Cases

Headless Systems

Servers and computers without physical monitors can still run graphical applications:
# Example: Running a GUI application on a headless server
# The virtual display provides a target for rendering
Remote Desktop Virtual Display Application Window
Ideal for cloud gaming servers, render farms, CI/CD systems with GUI testing, and remote workstations.

Streaming and Recording

Create dedicated displays for streaming software like OBS:
  • Capture Source: Use the virtual display as a clean capture source
  • Scene Management: Separate virtual displays for different scenes or overlays
  • Resolution Control: Match streaming resolution exactly (1920x1080, 2560x1440)
  • Performance: Offload capture to a dedicated display without affecting your main monitor

VR and Extended Reality

Virtual displays work seamlessly with VR headsets:
  • Provide desktop windows inside VR environments (Oculus, SteamVR)
  • Create multi-monitor setups in virtual space
  • Display 2D applications alongside VR content
  • Enable spatial window management

Multi-Monitor Development

Developers can test multi-monitor layouts without owning multiple physical displays:
// Test responsive designs across multiple resolutions
const testDisplays = [
  { width: 1920, height: 1080, name: 'Full HD' },
  { width: 2560, height: 1440, name: '2K' },
  { width: 3840, height: 2160, name: '4K' }
];

Technical Implementation

The driver implements virtual displays using the IndirectDeviceContext class:
class IndirectDeviceContext {
  IDDCX_ADAPTER m_Adapter;      // Virtual display adapter
  IDDCX_MONITOR m_Monitor;      // Primary virtual monitor
  IDDCX_MONITOR m_Monitor2;     // Secondary virtual monitor
  SwapChainProcessor* m_ProcessingThread;  // Frame processor
};

Monitor Lifecycle

  1. Initialization: Driver creates adapter and registers with IddCx framework
  2. Monitor Creation: Virtual monitors are instantiated with EDID data
  3. Mode Enumeration: Windows queries supported resolutions and refresh rates
  4. SwapChain Assignment: Graphics buffers are assigned when displays activate
  5. Frame Processing: Rendered frames are processed through the SwapChain
  6. Cleanup: Resources are freed when monitors are removed
Each virtual monitor maintains its own Direct3D device cache for efficient GPU resource management.

Comparison with Physical Displays

FeaturePhysical MonitorVirtual Display
ResolutionFixed by hardware panelConfigurable in software
Refresh RateLimited by panel specsAny rate from 1-240+ Hz
Setup TimePhysical installationInstant software creation
CostHardware purchase requiredFree
PortabilityBulky, requires transportPortable with configuration file
HDR SupportDepends on panelConfigurable (HDR10, HDR10+)
Custom EDIDFactory programmedFully customizable
Multi-GPULimited by portsSoftware-assigned to any GPU
Dynamic ChangesRequires cable reconnectionInstant reconfiguration

Performance Considerations

GPU Resource Usage

Virtual displays consume GPU resources based on active rendering:
1

Inactive Display

Minimal memory usage when no applications are rendering to the display
2

Active Rendering

GPU memory allocated for frame buffers and swapchain (varies by resolution)
3

Hardware Acceleration

Full GPU acceleration through Direct3D 11.2, same performance as physical displays

System Impact

  • CPU: Minimal overhead, primarily for driver callbacks and buffer management
  • Memory: Small footprint for driver code, GPU memory for active frame buffers
  • Performance: Negligible impact when displays are inactive
Creating many high-resolution virtual displays (e.g., 10+ at 4K) may consume significant GPU memory. Monitor your GPU VRAM usage.

Next Steps

IddCx Framework

Learn about the underlying Windows framework that powers virtual displays

Architecture

Explore the driver’s internal architecture and components

Installation

Get started by installing the Virtual Display Driver

Configuration

Configure your virtual displays for specific use cases

Build docs developers (and LLMs) love