Skip to main content
The EDID (Extended Display Identification Data) integration system allows the Virtual Display Driver to automatically configure display capabilities from monitor profile XML files, providing a more realistic virtual display.

Overview

The EDID integration system reads monitor characteristics from monitor_profile.xml and automatically configures:
  • Display resolutions and refresh rates
  • HDR capabilities and luminance ranges
  • Color primaries and gamma correction
  • Preferred display mode
This provides an alternative to manual configuration and enables emulation of specific physical displays.

Enabling EDID Integration

Configure the EDID integration system in vdd_settings.xml:
<edid_integration>
    <enabled>true</enabled>
    <auto_configure_from_edid>true</auto_configure_from_edid>
    <edid_profile_path>EDID/monitor_profile.xml</edid_profile_path>
    <override_manual_settings>false</override_manual_settings>
    <fallback_on_error>true</fallback_on_error>
</edid_integration>

EDID Integration Parameters

edid_integration.enabled
boolean
default:"false"
Enable the EDID integration system.
Only enable when you have a valid monitor_profile.xml file.
auto_configure_from_edid
boolean
default:"false"
Automatically apply settings from monitor_profile.xml on driver startup.When enabled, the driver reads the monitor profile and configures display modes accordingly.
edid_profile_path
string
default:"EDID/monitor_profile.xml"
Path to the monitor profile XML file, relative to the driver installation directory.Default location: C:\VirtualDisplayDriver\EDID\monitor_profile.xml
override_manual_settings
boolean
default:"false"
Control priority between EDID and manual settings.Values:
  • false - Manual settings in vdd_settings.xml take priority (recommended)
  • true - EDID settings override manual configuration
Keep at false to allow manual overrides of EDID-derived settings.
fallback_on_error
boolean
default:"true"
Use manual settings if EDID profile loading fails.Values:
  • true - Fall back to manual settings on error (recommended)
  • false - Fail if EDID profile cannot be loaded

Monitor Profile Structure

The monitor_profile.xml file defines display characteristics in EDID format:
<?xml version="1.0" encoding="utf-8"?>
<IddCxMonitorConfig>
    <MonitorModes>
        <!-- Display mode definitions -->
    </MonitorModes>
    <HDRCapabilities>
        <!-- HDR metadata -->
    </HDRCapabilities>
    <ColorProfile>
        <!-- Color space configuration -->
    </ColorProfile>
    <PreferredMode>
        <!-- Preferred display mode -->
    </PreferredMode>
</IddCxMonitorConfig>

Monitor Modes

Define available display modes with precise refresh rates:
<MonitorModes>
    <MonitorMode>
        <Width>1920</Width>
        <Height>1080</Height>
        <RefreshRate>60.000</RefreshRate>
        <RefreshRateMultiplier>1000</RefreshRateMultiplier>
        <NominalRefreshRate>60</NominalRefreshRate>
    </MonitorMode>
    <MonitorMode>
        <Width>1920</Width>
        <Height>1080</Height>
        <RefreshRate>59.940</RefreshRate>
        <RefreshRateMultiplier>999</RefreshRateMultiplier>
        <NominalRefreshRate>60</NominalRefreshRate>
    </MonitorMode>
    <MonitorMode>
        <Width>3840</Width>
        <Height>2160</Height>
        <RefreshRate>120.000</RefreshRate>
        <RefreshRateMultiplier>1000</RefreshRateMultiplier>
        <NominalRefreshRate>120</NominalRefreshRate>
    </MonitorMode>
</MonitorModes>

Monitor Mode Parameters

Width
integer
required
Horizontal resolution in pixels.Valid range: 640 - 7680 pixels
Height
integer
required
Vertical resolution in pixels.Valid range: 480 - 4320 pixels
RefreshRate
float
required
Actual refresh rate in Hz, supporting fractional values.Common values:
  • 60.000 - Standard 60Hz
  • 59.940 - NTSC 60Hz (29.97 * 2)
  • 23.976 - Film framerate
  • 120.000 - High refresh gaming
RefreshRateMultiplier
integer
required
Multiplier for fractional refresh rates.Common values:
  • 1000 - Exact refresh rate (60.000)
  • 999 - Fractional refresh rate (59.940, 23.976, 29.970)
Formula: ActualRate = NominalRate × (Multiplier / 1000)
NominalRefreshRate
integer
required
Nominal (rounded) refresh rate for display purposes.This is what Windows displays to users (60Hz, 120Hz, etc.).

HDR Capabilities

Define HDR support and luminance characteristics:
<HDRCapabilities>
    <HDR10Supported>true</HDR10Supported>
    <DolbyVisionSupported>false</DolbyVisionSupported>
    <HDR10PlusSupported>false</HDR10PlusSupported>
    <MaxLuminance>1670.838</MaxLuminance>
    <MinLuminance>10.615</MinLuminance>
</HDRCapabilities>
HDR10Supported
boolean
default:"false"
Enable HDR10 support in the EDID.
DolbyVisionSupported
boolean
default:"false"
Enable Dolby Vision support.
Currently not implemented in the driver.
HDR10PlusSupported
boolean
default:"false"
Enable HDR10+ support.
Currently not implemented in the driver.
MaxLuminance
float
required
Maximum luminance in nits (cd/m²).Common values:
  • 400.0 - Standard HDR displays
  • 1000.0 - Premium HDR displays
  • 1670.838 - High-end HDR displays
MinLuminance
float
required
Minimum luminance in nits (cd/m²).Common values:
  • 0.1 - Standard LCD displays
  • 0.05 - Good HDR displays
  • 0.0001 - OLED displays

Color Profile

Define color space characteristics:
<ColorProfile>
    <PrimaryColorSpace>sRGB</PrimaryColorSpace>
    <Gamma>2.200</Gamma>
    <Chromaticity>
        <RedX>0.6250</RedX>
        <RedY>0.3398</RedY>
        <GreenX>0.2803</GreenX>
        <GreenY>0.5947</GreenY>
        <BlueX>0.1553</BlueX>
        <BlueY>0.0703</BlueY>
        <WhiteX>0.2832</WhiteX>
        <WhiteY>0.2979</WhiteY>
    </Chromaticity>
</ColorProfile>
PrimaryColorSpace
string
required
Primary color space identifier.Valid values: sRGB, DCI-P3, Rec2020
Gamma
float
required
Gamma correction value.Common values:
  • 2.200 - sRGB standard
  • 2.400 - BT.1886 standard
Chromaticity
object
CIE 1931 chromaticity coordinates for color primaries and white point.Each value is in the range 0.0 - 1.0.

Preferred Mode

Specify the default display mode:
<PreferredMode>
    <Width>4096</Width>
    <Height>2160</Height>
    <RefreshRate>59.940</RefreshRate>
</PreferredMode>
PreferredMode
object
The preferred (default) display mode that Windows will use.Must match one of the modes defined in <MonitorModes>.

Complete EDID Profile Example

Professional 4K HDR monitor profile:
<?xml version="1.0" encoding="utf-8"?>
<IddCxMonitorConfig>
    <MonitorModes>
        <!-- 1080p modes -->
        <MonitorMode>
            <Width>1920</Width>
            <Height>1080</Height>
            <RefreshRate>60.000</RefreshRate>
            <RefreshRateMultiplier>1000</RefreshRateMultiplier>
            <NominalRefreshRate>60</NominalRefreshRate>
        </MonitorMode>
        <MonitorMode>
            <Width>1920</Width>
            <Height>1080</Height>
            <RefreshRate>59.940</RefreshRate>
            <RefreshRateMultiplier>999</RefreshRateMultiplier>
            <NominalRefreshRate>60</NominalRefreshRate>
        </MonitorMode>
        
        <!-- 4K modes -->
        <MonitorMode>
            <Width>3840</Width>
            <Height>2160</Height>
            <RefreshRate>24.000</RefreshRate>
            <RefreshRateMultiplier>1000</RefreshRateMultiplier>
            <NominalRefreshRate>24</NominalRefreshRate>
        </MonitorMode>
        <MonitorMode>
            <Width>3840</Width>
            <Height>2160</Height>
            <RefreshRate>23.976</RefreshRate>
            <RefreshRateMultiplier>999</RefreshRateMultiplier>
            <NominalRefreshRate>24</NominalRefreshRate>
        </MonitorMode>
        <MonitorMode>
            <Width>3840</Width>
            <Height>2160</Height>
            <RefreshRate>60.000</RefreshRate>
            <RefreshRateMultiplier>1000</RefreshRateMultiplier>
            <NominalRefreshRate>60</NominalRefreshRate>
        </MonitorMode>
        <MonitorMode>
            <Width>3840</Width>
            <Height>2160</Height>
            <RefreshRate>59.940</RefreshRate>
            <RefreshRateMultiplier>999</RefreshRateMultiplier>
            <NominalRefreshRate>60</NominalRefreshRate>
        </MonitorMode>
        <MonitorMode>
            <Width>3840</Width>
            <Height>2160</Height>
            <RefreshRate>120.000</RefreshRate>
            <RefreshRateMultiplier>1000</RefreshRateMultiplier>
            <NominalRefreshRate>120</NominalRefreshRate>
        </MonitorMode>
    </MonitorModes>
    
    <HDRCapabilities>
        <HDR10Supported>true</HDR10Supported>
        <DolbyVisionSupported>false</DolbyVisionSupported>
        <HDR10PlusSupported>false</HDR10PlusSupported>
        <MaxLuminance>1000.0</MaxLuminance>
        <MinLuminance>0.05</MinLuminance>
    </HDRCapabilities>
    
    <ColorProfile>
        <PrimaryColorSpace>DCI-P3</PrimaryColorSpace>
        <Gamma>2.200</Gamma>
        <Chromaticity>
            <RedX>0.6800</RedX>
            <RedY>0.3200</RedY>
            <GreenX>0.2650</GreenX>
            <GreenY>0.6900</GreenY>
            <BlueX>0.1500</BlueX>
            <BlueY>0.0600</BlueY>
            <WhiteX>0.3127</WhiteX>
            <WhiteY>0.3290</WhiteY>
        </Chromaticity>
    </ColorProfile>
    
    <PreferredMode>
        <Width>3840</Width>
        <Height>2160</Height>
        <RefreshRate>60.000</RefreshRate>
    </PreferredMode>
</IddCxMonitorConfig>

Fractional Refresh Rates

The EDID system supports precise fractional refresh rates for video production:
DescriptionRefreshRateMultiplierNominal
Film (24fps)23.97699924
NTSC 30fps29.97099930
NTSC 60Hz59.94099960
Exact 60Hz60.000100060
120Hz120.0001000120
Fractional rates are crucial for video production and broadcasting to maintain frame-accurate timing.

Custom EDID Binary

For advanced use cases, you can provide a custom EDID binary file:
<edid>
    <CustomEdid>true</CustomEdid>
    <PreventSpoof>false</PreventSpoof>
    <EdidCeaOverride>false</EdidCeaOverride>
</edid>
edid.CustomEdid
boolean
default:"false"
Use custom user_edid.bin file instead of generated EDID.Place the binary EDID file at: C:\VirtualDisplayDriver\user_edid.bin
edid.PreventSpoof
boolean
default:"false"
Prevent manufacturer ID spoofing in EDID.
edid.EdidCeaOverride
boolean
default:"false"
Override CEA extension block in EDID.
Custom EDID binaries require deep understanding of the EDID specification. Invalid EDID data can prevent the display from being recognized.

Configuration Priority

When both EDID and manual settings are present:
if (override_manual_settings == false):
    Priority: Manual settings > EDID settings
else:
    Priority: EDID settings > Manual settings

Troubleshooting

Checklist:
  • edid_integration.enabled is true
  • monitor_profile.xml exists at specified path
  • XML syntax is valid
  • File permissions allow reading
Solution: Check driver logs for EDID parsing errors.
Possible causes:
  • auto_configure_from_edid is false
  • Invalid mode definitions
  • Refresh rate out of range
Solution: Enable auto_configure_from_edid and verify mode definitions.
Cause: override_manual_settings is trueSolution: Set override_manual_settings to false to allow manual overrides.
Checklist:
  • HDR10Supported is true in monitor_profile.xml
  • hdr10_static_metadata.enabled is true in vdd_settings.xml
  • Color depth is 10-bit or higher
Solution: Both EDID and manual HDR settings must be enabled.

Best Practices

1

Start with the provided template

Use the included monitor_profile.xml as a starting point.
2

Keep manual priority

Set override_manual_settings to false for maximum flexibility.
3

Enable fallback

Keep fallback_on_error as true to ensure driver loads even if EDID fails.
4

Test incrementally

Add display modes one at a time to identify any problematic configurations.
5

Validate XML syntax

Use an XML validator before deploying monitor_profile.xml.

Resolutions

Manual resolution configuration

HDR Configuration

HDR metadata in vdd_settings.xml

Build docs developers (and LLMs) love