Virtual Display Driver

What is the Virtual Display Driver?

The Virtual Display Driver is a software solution that enables users to create virtual displays without the need for a physical monitor. This is particularly useful for headless servers, remote desktop applications, and other scenarios where physical monitors are impractical or unnecessary.

Just take me to the download

Key Features

  • Multiple Virtual Displays: Users can create and manage multiple virtual displays, overcoming the physical limitations of traditional setups.
  • Enhanced Productivity: Ideal for remote work, the Virtual Display Driver allows users to efficiently manage multiple tasks and applications across different virtual screens.
  • Flexible Configurations: Users can customize the virtual displays to meet their specific needs, whether for development, testing, or general use. Options expanding more and more.

Advantages

  • No Dummy Plug needed: Create as many virtual displays as needed without worrying about physical ports being used
  • Improved Remote Work: Boost productivity by managing multiple virtual screens, making it easier to multitask and organize work.
  • Easy Integration: The driver works seamlessly with existing windows 10 and 11 systems
  • Customizable: Tailor the virtual displays to fit different requirements, providing flexibility for various use cases.
Star History

About the Project

This project emulates virtual displays, offering additional screen space without requiring a physical monitor. It is designed to help users create multiple displays in environments such as headless systems or remote desktops.

The Virtual Display Driver is based on the Microsoft Indirect Display Driver Sample. It creates a virtual display in Windows that acts and functions just like a real one. This is particularly useful for various applications including streaming, virtual reality, recording, and managing headless servers. By adding virtual monitors to Windows 10/11 devices, it enhances the flexibility and functionality of desktop sharing software like OBS and Sunshine1.

Programmers

Mikethetech

Mikethetech

Project creator, overseeing the design and technical implementation.

GitHub Profile
Bud

Bud

Core programmer focused on developing the expansion of the core display driver functionality.

GitHub Profile
Jocke

Jocke

Idea man, Draft builder & Programmer

GitHub Profile

Acknowledgements

Special thanks to the contributors and developers who made this project possible:

  • Roshkins
    Original repo creator GitHub
  • timminator
    Upcoming installer GitHub
  • Baloukj
    8 bit / 10 bit support GitHub
  • Anakngtokwa
    Assisting with finding driver sources
  • AKATrevorJay
    Hi-res EDID GitHub
  • Sajidur78
    Render Adapter picking support. GitHub
  • Community contributors and issue reporters
    For their support and suggestions in both finding bugs and improving the driver!

Installation & Uninstallation

Installation

  1. Download the latest version from the releases page.
  2. Extract contents to a folder.
  3. Copy the IddSampleDriver folder to C:\IddSampleDriver.
  4. Run the .bat file as Administrator to add the driver certificate. (This is only for the first time installing)
  5. Open Device Manager, click "Action" → "Add Legacy Hardware" → "Display Adapters" → "Have Disk..." → select the .inf file.

Uninstallation

  1. Open Device Manager → Display Adapters.
  2. Right-click IddSampleDriver → Uninstall device → "Attempt to remove driver for this device".
  3. Remove C:\IddSampleDriver from the C drive.

Force Uninstall

  1. Open PowerShell and run: pnputil /enum-drivers.
  2. Find iddsampledriver.inf, note the "published name", often oem139.inf.
  3. Run: pnputil /delete-driver oem139.inf.

Virtual Display Driver Configurator

This is an experimental feature created with care. While I have thoroughly tested it, I apologize in advance for any issues you may encounter. Thank you for your understanding. Made with love by Bud.

Drag & Drop XML File Here or Click to Upload

Download Virtual Display Driver

Stable Version

Release Windows 10 and 11 (No HDR) - Version 23.10.20.2

Added new resolutions and refresh rates.

Release Windows 11 23H2+ (HDR) - Version 23.12.2

First release with HDR support.

Beta Version

Beta Virtual Display Driver (24.10.27) Pre-release

Massive Update By bud

• Added Direct3D Feature levels
• Added SDR 10 bit support (Enabling 10 bit SDR will disabled HDR+)
• Added support to prevent EDID manufacturer spoofing when using custom EDID
• Added support to override CEA extension to bring HDR Support to 128 byte EDID
• Fixed wide colour space support
• Removed live updating logs via xml (For performance)
• More pipe commands added
• General small tweaks/bug fixes.
• General small optimisations tweaks

NO HDR FOR WINDOWS 10

Contributors

Thanks to @bud3699 (Me) for adding all of the above. Updated with love <3

Source Code

Check out the source code

Older Versions

Beta Virtual Display Driver (24.10.16) Pre-release

Massive Update By bud

• Hardware Cursor Support (can toggle off in XML).
• HDR10+ Support (can toggle in XML).
• Custom EDID Support (can toggle in XML - format is user_edid.bin; NO EMULATING RESOLUTIONS).
• Floating point refresh rates.
• Updated file path location.
• Updated Driver name.*
• Added ARM64 Support.
• General small tweaks/bug fixes.

NO HDR FOR WINDOWS 10

Contributors

Thanks to @bud3699 for adding all the above but 1*
Thanks to @zjoasan for support/company and the driver rename.
Thanks to @itsmikethetech for the trust in me blowing up the commits recently!

Beta Universal Driver (Windows 10/11) - Version 24.10.6 Beta

• Now includes and uses XML file for configuration.
• Added pipelines for direct/live configuration in future companion app releases.
• Added new multi-level debug logging for easier troubleshooting.

NO HDR FOR WINDOWS 10

Contributors

zjoasan and bud3699

Beta Universal Driver (Windows 10/11) - Version 24.9.11 Beta

Beta build with XML configuration, automatic/manual GPU selection, and more.

NO HDR FOR WINDOWS 10

Beta Universal Driver (Windows 10/11) - 24.8.6

Added XML configuration and automatic or manual detection of best render adapter.

Beta Windows 11 23H2+ (HDR) - 24.7.18

This release includes the first implementation of custom GPU adapter switching via adapter.txt.

Beta Windows 10+ - 23.10.21

Initial attempt to fix broken refresh rates. All resolutions should now work with all refresh rates. Some resolutions may use a higher signal mode to accommodate, but the desktop resolution will remain correct. Working to align all active signals and desktop signals.

Release Windows 10+ - 23.10.20.1

Added support for new resolutions and refresh rates.

Release Windows 10+ - 23.10.20

Added support for more resolutions

Release Windows 10+ - 23.10.19

Added 2732 x 2048 support.

Release Windows 10+ - 23.10.14.4

Added 90Hz support for VR and related applications.

Release Windows 10+ - 23.10.14.3

Added support for 75hz, 144hz, and 240hz.

Release Windows 10+ - 23.10.14.2

Fixed compatibility

Release Windows 10+ - 23.10.14

Limited to 60hz and 120hz due to minor incompatibility. Adding new refresh rates soon.

Release Windows 10+ - 1.0

Windows 10/11. Initial release with support for up to 240hz refresh rates.

Development Instructions

Pre-Requisites

Ensure your development environment is set up with Visual Studio 2022, the proper Windows Driver Kit (WDK), and Software Development Kit (SDK).

You should have a solid understanding of driver development concepts

System corruption
Privilege elevation
Windows APIs
C++

Using the Source Code

  1. When using the driver’s source code, be aware that modifying the code may limit the support available from the project developers. They cannot account for any changes you introduce.
  2. To maximize support from the developers, consider forking the repository on GitHub and keeping your forked repository public.

Contribution Guidelines

  1. Submit your changes through pull requests (PRs). To improve reviewability and streamline contributions, it is recommended to make your PRs small and focused, such as submitting one PR per feature or bug fix.
  2. Always work in branches for different features or bug fixes before submitting PRs, allowing for better tracking and separation of changes.