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).
Show MonitorModes Structure
< MonitorModes >
< MonitorMode >
< Width > 3840 </ Width >
< Height > 2160 </ Height >
< RefreshRate > 59.940 </ RefreshRate >
< RefreshRateMultiplier > 999 </ RefreshRateMultiplier >
< NominalRefreshRate > 60 </ NominalRefreshRate >
</ MonitorMode >
<!-- Additional modes... -->
</ MonitorModes >
MonitorMode Fields
Horizontal resolution in pixels. Valid Range : 640-10240Example : 3840 for 4K UHD
Vertical resolution in pixels. Valid Range : 480-4320Example : 2160 for 4K UHD
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
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
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
Common Modes
High Refresh
Cinema
<!-- 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.
Show HDRCapabilities Structure
< HDRCapabilities >
< HDR10Supported > true </ HDR10Supported >
< DolbyVisionSupported > false </ DolbyVisionSupported >
< HDR10PlusSupported > false </ HDR10PlusSupported >
< MaxLuminance > 1670.838 </ MaxLuminance >
< MinLuminance > 10.615 </ MinLuminance >
</ HDRCapabilities >
HDRCapabilities.HDR10Supported
Indicates HDR10 support (SMPTE ST.2084 PQ EOTF). Values :
true - Display supports HDR10
false - SDR only
HDRCapabilities.DolbyVisionSupported
Indicates Dolby Vision support. Dolby Vision support in virtual displays is limited. Most streaming applications only require HDR10.
HDRCapabilities.HDR10PlusSupported
Indicates HDR10+ (dynamic metadata) support.
HDRCapabilities.MaxLuminance
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
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
Mid-Range HDR
Premium HDR
OLED Display
< 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.
Show ColorProfile Structure
< 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 >
ColorProfile.PrimaryColorSpace
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)
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.
Red primary X coordinate. Valid Range : 0.0-1.0
Red primary Y coordinate. Valid Range : 0.0-1.0
Green primary X coordinate. Valid Range : 0.0-1.0
Green primary Y coordinate. Valid Range : 0.0-1.0
Blue primary X coordinate. Valid Range : 0.0-1.0
Blue primary Y coordinate. Valid Range : 0.0-1.0
White point X coordinate (typically D65 illuminant). D65 Standard : 0.3127Valid Range : 0.0-1.0
White point Y coordinate. D65 Standard : 0.3290Valid Range : 0.0-1.0
Standard Color Space Chromaticities
Show Standard Color Space Reference
sRGB / Rec.709 :< Chromaticity >
< RedX > 0.6400 </ RedX > < RedY > 0.3300 </ RedY >
< GreenX > 0.3000 </ GreenX > < GreenY > 0.6000 </ GreenY >
< BlueX > 0.1500 </ BlueX > < BlueY > 0.0600 </ BlueY >
< WhiteX > 0.3127 </ WhiteX > < WhiteY > 0.3290 </ WhiteY > <!-- D65 -->
</ Chromaticity >
DCI-P3 :< 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 > <!-- D65 -->
</ Chromaticity >
Rec.2020 (Wide Gamut):< Chromaticity >
< RedX > 0.7080 </ RedX > < RedY > 0.2920 </ RedY >
< GreenX > 0.1700 </ GreenX > < GreenY > 0.7970 </ GreenY >
< BlueX > 0.1310 </ BlueX > < BlueY > 0.0460 </ BlueY >
< WhiteX > 0.3127 </ WhiteX > < WhiteY > 0.3290 </ WhiteY > <!-- D65 -->
</ Chromaticity >
Preferred Mode
The <PreferredMode> section specifies the default display mode.
Preferred mode width in pixels. Must match one of the defined MonitorModes.
Preferred mode height in pixels. Must match one of the defined MonitorModes.
PreferredMode.RefreshRate
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
Show Example: Standard 4K HDR Monitor
<? 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 >
<!-- 1440p modes -->
< MonitorMode >
< Width > 2560 </ Width >
< Height > 1440 </ Height >
< RefreshRate > 60.000 </ RefreshRate >
< RefreshRateMultiplier > 1000 </ RefreshRateMultiplier >
< NominalRefreshRate > 60 </ NominalRefreshRate >
</ MonitorMode >
<!-- 4K modes -->
< 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 > 50.000 </ RefreshRate >
< RefreshRateMultiplier > 1000 </ RefreshRateMultiplier >
< NominalRefreshRate > 50 </ NominalRefreshRate >
</ MonitorMode >
< MonitorMode >
< Width > 3840 </ Width >
< Height > 2160 </ Height >
< RefreshRate > 30.000 </ RefreshRate >
< RefreshRateMultiplier > 1000 </ RefreshRateMultiplier >
< NominalRefreshRate > 30 </ NominalRefreshRate >
</ MonitorMode >
< MonitorMode >
< Width > 3840 </ Width >
< Height > 2160 </ Height >
< RefreshRate > 29.970 </ RefreshRate >
< RefreshRateMultiplier > 999 </ RefreshRateMultiplier >
< NominalRefreshRate > 30 </ NominalRefreshRate >
</ MonitorMode >
< 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 >
</ MonitorModes >
< HDRCapabilities >
< HDR10Supported > true </ HDR10Supported >
< DolbyVisionSupported > false </ DolbyVisionSupported >
< HDR10PlusSupported > false </ HDR10PlusSupported >
< MaxLuminance > 1000.0 </ MaxLuminance >
< MinLuminance > 0.05 </ MinLuminance >
</ HDRCapabilities >
< ColorProfile >
< PrimaryColorSpace > sRGB </ PrimaryColorSpace >
< Gamma > 2.200 </ Gamma >
< Chromaticity >
< RedX > 0.6400 </ RedX >
< RedY > 0.3300 </ RedY >
< GreenX > 0.3000 </ GreenX >
< GreenY > 0.6000 </ 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 >
Show Example: High Refresh Gaming Monitor (1440p 165Hz)
<? 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 > 120.000 </ RefreshRate >
< RefreshRateMultiplier > 1000 </ RefreshRateMultiplier >
< NominalRefreshRate > 120 </ NominalRefreshRate >
</ MonitorMode >
< MonitorMode >
< Width > 1920 </ Width >
< Height > 1080 </ Height >
< RefreshRate > 144.000 </ RefreshRate >
< RefreshRateMultiplier > 1000 </ RefreshRateMultiplier >
< NominalRefreshRate > 144 </ NominalRefreshRate >
</ MonitorMode >
<!-- 1440p modes -->
< MonitorMode >
< Width > 2560 </ Width >
< Height > 1440 </ Height >
< RefreshRate > 60.000 </ RefreshRate >
< RefreshRateMultiplier > 1000 </ RefreshRateMultiplier >
< NominalRefreshRate > 60 </ NominalRefreshRate >
</ MonitorMode >
< MonitorMode >
< Width > 2560 </ Width >
< Height > 1440 </ Height >
< RefreshRate > 120.000 </ RefreshRate >
< RefreshRateMultiplier > 1000 </ RefreshRateMultiplier >
< NominalRefreshRate > 120 </ NominalRefreshRate >
</ MonitorMode >
< MonitorMode >
< Width > 2560 </ Width >
< Height > 1440 </ Height >
< RefreshRate > 144.000 </ RefreshRate >
< RefreshRateMultiplier > 1000 </ RefreshRateMultiplier >
< NominalRefreshRate > 144 </ NominalRefreshRate >
</ MonitorMode >
< MonitorMode >
< Width > 2560 </ Width >
< Height > 1440 </ Height >
< RefreshRate > 165.000 </ RefreshRate >
< RefreshRateMultiplier > 1000 </ RefreshRateMultiplier >
< NominalRefreshRate > 165 </ NominalRefreshRate >
</ MonitorMode >
</ MonitorModes >
< HDRCapabilities >
< HDR10Supported > true </ HDR10Supported >
< DolbyVisionSupported > false </ DolbyVisionSupported >
< HDR10PlusSupported > false </ HDR10PlusSupported >
< MaxLuminance > 600.0 </ MaxLuminance >
< MinLuminance > 0.1 </ 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 > 2560 </ Width >
< Height > 1440 </ Height >
< RefreshRate > 165.000 </ RefreshRate >
</ PreferredMode >
</ IddCxMonitorConfig >
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
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
Parse EDID Binary
Run the EDID Parser utility: EDIDParser.exe monitor.bin
This generates monitor_profile.xml
Copy to Driver Directory
Place monitor_profile.xml in the driver’s EDID directory: C:\VirtualDisplayDriver\EDID\monitor_profile.xml
Enable EDID Integration
Configure vdd_settings.xml to use the profile (see Integration section above)
Reload Driver
Restart the driver to apply the new configuration:
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