Skip to main content

monitor_profile.xml Reference

The monitor_profile.xml file is an XML representation of a monitor’s EDID (Extended Display Identification Data). It allows the Virtual Display Driver to automatically configure itself based on a real monitor’s capabilities, including supported resolutions, HDR metadata, and color profiles.
Purpose: Import EDID data from real monitors to configure the virtual display with accurate capabilities, ensuring compatibility with HDR streaming and capture applications.

Generation

The monitor_profile.xml file is typically generated using the included EDID Parser utility:
EDIDParser.exe monitor.bin
This reads a binary EDID file and generates a structured XML profile.

File Structure

<?xml version="1.0" encoding="utf-8"?>
<IddCxMonitorConfig>
  <MonitorModes>...</MonitorModes>
  <HDRCapabilities>...</HDRCapabilities>
  <ColorProfile>...</ColorProfile>
  <PreferredMode>...</PreferredMode>
</IddCxMonitorConfig>

Monitor Modes

The <MonitorModes> section defines all supported display modes (resolution and refresh rate combinations).

MonitorMode Fields

MonitorMode.Width
integer
required
Horizontal resolution in pixels.Valid Range: 640-10240Example: 3840 for 4K UHD
MonitorMode.Height
integer
required
Vertical resolution in pixels.Valid Range: 480-4320Example: 2160 for 4K UHD
MonitorMode.RefreshRate
float
required
Actual refresh rate in Hz (including fractional rates).Common Values:
  • 60.000 - Standard 60 Hz
  • 59.940 - NTSC fractional rate (60Hz * 999/1000)
  • 120.000 - High refresh rate
  • 23.976 - Cinema frame rate
Example: 59.940
MonitorMode.RefreshRateMultiplier
integer
required
Multiplier for fractional refresh rates (Z value).Values:
  • 1000 - Exact refresh rate (e.g., 60.000 Hz)
  • 999 - NTSC fractional rate (multiply by 999/1000)
The actual refresh rate is calculated as:
ActualHz = NominalRefreshRate × (RefreshRateMultiplier / 1000)
Example: 999 for 59.94 Hz (60 × 999/1000)
MonitorMode.NominalRefreshRate
integer
required
Nominal (rounded) refresh rate in Hz.Example: 60 for both 60.000 Hz and 59.940 Hz modes

Fractional Refresh Rates Explained

NTSC Fractional Rates: Some refresh rates use a 999/1000 multiplier to achieve NTSC-compatible timings:
  • 60 Hz → 59.94 Hz (60 × 999/1000)
  • 30 Hz → 29.97 Hz (30 × 999/1000)
  • 24 Hz → 23.976 Hz (24 × 999/1000)
These fractional rates are required for proper HDMI/broadcast compatibility.

Example Mode Definitions

<!-- 1080p @ 60 Hz -->
<MonitorMode>
  <Width>1920</Width>
  <Height>1080</Height>
  <RefreshRate>60.000</RefreshRate>
  <RefreshRateMultiplier>1000</RefreshRateMultiplier>
  <NominalRefreshRate>60</NominalRefreshRate>
</MonitorMode>

<!-- 1080p @ 59.94 Hz (NTSC) -->
<MonitorMode>
  <Width>1920</Width>
  <Height>1080</Height>
  <RefreshRate>59.940</RefreshRate>
  <RefreshRateMultiplier>999</RefreshRateMultiplier>
  <NominalRefreshRate>60</NominalRefreshRate>
</MonitorMode>

<!-- 4K @ 120 Hz -->
<MonitorMode>
  <Width>3840</Width>
  <Height>2160</Height>
  <RefreshRate>120.000</RefreshRate>
  <RefreshRateMultiplier>1000</RefreshRateMultiplier>
  <NominalRefreshRate>120</NominalRefreshRate>
</MonitorMode>

HDR Capabilities

The <HDRCapabilities> section defines the HDR support and luminance ranges.
HDRCapabilities.HDR10Supported
boolean
required
Indicates HDR10 support (SMPTE ST.2084 PQ EOTF).Values:
  • true - Display supports HDR10
  • false - SDR only
HDRCapabilities.DolbyVisionSupported
boolean
required
Indicates Dolby Vision support.
Dolby Vision support in virtual displays is limited. Most streaming applications only require HDR10.
HDRCapabilities.HDR10PlusSupported
boolean
required
Indicates HDR10+ (dynamic metadata) support.
HDRCapabilities.MaxLuminance
float
required
Maximum display luminance in nits (cd/m²).Common Values:
  • 400.0 - Entry-level HDR
  • 600.0 - Mid-range HDR
  • 1000.0 - Premium HDR
  • 1600.0 - High-end HDR
  • 4000.0 - Reference HDR monitors
Valid Range: 50.0-10000.0
HDRCapabilities.MinLuminance
float
required
Minimum display luminance in nits.Lower values indicate better black levels. OLED displays can achieve near-zero minimum luminance.Typical Values:
  • 0.001 - OLED displays
  • 0.05 - High-end LCD with local dimming
  • 0.1 - Standard HDR LCD
Valid Range: 0.0001-10.0

HDR Configuration Examples

<HDRCapabilities>
  <HDR10Supported>true</HDR10Supported>
  <DolbyVisionSupported>false</DolbyVisionSupported>
  <HDR10PlusSupported>false</HDR10PlusSupported>
  <MaxLuminance>600.0</MaxLuminance>
  <MinLuminance>0.1</MinLuminance>
</HDRCapabilities>

Color Profile

The <ColorProfile> section defines the color space and chromaticity coordinates.
ColorProfile.PrimaryColorSpace
string
required
Primary color space identifier.Options:
  • sRGB - Standard RGB (most common)
  • Rec709 - ITU-R BT.709 (HDTV, same primaries as sRGB)
  • Rec2020 - ITU-R BT.2020 (UHDTV, wide gamut)
  • DCI-P3 - Digital Cinema color space
  • Adobe RGB - Adobe RGB (photography)
ColorProfile.Gamma
float
required
Gamma correction value.Common Values:
  • 2.200 - sRGB standard (most common)
  • 2.400 - Pure power gamma (Rec.709)
  • 1.000 - Linear (no gamma)
Valid Range: 1.0-3.0

Chromaticity Coordinates

Chromaticity coordinates use the CIE 1931 color space, with values from 0.0 to 1.0.
Chromaticity.RedX
float
required
Red primary X coordinate.Valid Range: 0.0-1.0
Chromaticity.RedY
float
required
Red primary Y coordinate.Valid Range: 0.0-1.0
Chromaticity.GreenX
float
required
Green primary X coordinate.Valid Range: 0.0-1.0
Chromaticity.GreenY
float
required
Green primary Y coordinate.Valid Range: 0.0-1.0
Chromaticity.BlueX
float
required
Blue primary X coordinate.Valid Range: 0.0-1.0
Chromaticity.BlueY
float
required
Blue primary Y coordinate.Valid Range: 0.0-1.0
Chromaticity.WhiteX
float
required
White point X coordinate (typically D65 illuminant).D65 Standard: 0.3127Valid Range: 0.0-1.0
Chromaticity.WhiteY
float
required
White point Y coordinate.D65 Standard: 0.3290Valid Range: 0.0-1.0

Standard Color Space Chromaticities

Preferred Mode

The <PreferredMode> section specifies the default display mode.
PreferredMode.Width
integer
required
Preferred mode width in pixels.Must match one of the defined MonitorModes.
PreferredMode.Height
integer
required
Preferred mode height in pixels.Must match one of the defined MonitorModes.
PreferredMode.RefreshRate
float
required
Preferred mode refresh rate in Hz.Must match one of the defined MonitorModes.

Example Preferred Mode

<PreferredMode>
  <Width>3840</Width>
  <Height>2160</Height>
  <RefreshRate>60.000</RefreshRate>
</PreferredMode>

Complete Example Profiles

Integration with vdd_settings.xml

To use a monitor_profile.xml file, configure the EDID integration section 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>
Priority: When override_manual_settings is false, manual settings in vdd_settings.xml take priority. The EDID profile fills in gaps where manual settings aren’t specified.

Workflow: From EDID to Monitor Profile

1

Extract EDID from Monitor

Use Windows Device Manager or third-party tools to extract the EDID binary from a real monitor.Save as monitor.bin
2

Parse EDID Binary

Run the EDID Parser utility:
EDIDParser.exe monitor.bin
This generates monitor_profile.xml
3

Copy to Driver Directory

Place monitor_profile.xml in the driver’s EDID directory:
C:\VirtualDisplayDriver\EDID\monitor_profile.xml
4

Enable EDID Integration

Configure vdd_settings.xml to use the profile (see Integration section above)
5

Reload Driver

Restart the driver to apply the new configuration:
.\ToggleVDD.ps1 restart

vdd_settings.xml

Main driver configuration file reference

EDID Files

Working with binary EDID files

EDID Parser Utility

Complete guide to the EDID Parser tool

EDID Integration

Comprehensive EDID integration guide

Build docs developers (and LLMs) love