Overview
The EDID (Extended Display Identification Data) parser provides functionality to load and parse monitor profiles from XML files, enabling automatic configuration of display modes, HDR capabilities, and color profiles.Core Data Structures
EdidProfileData
Stores parsed EDID profile information:- Element 0: Width (pixels)
- Element 1: Height (pixels)
- Element 2: Refresh rate multiplier (typically 1000)
- Element 3: Nominal refresh rate (Hz)
Key Functions
LoadEdidProfile
Loads and parses an EDID profile from an XML file:profilePath: Relative path to the EDID profile XML file (relative to config directory)profile: Output parameter to receive parsed profile data
true if profile loaded successfully, false otherwise.
File Location: The function looks for the profile at C:\VirtualDisplayDriver\<profilePath>
Example:
ApplyEdidProfile
Applies a loaded EDID profile to the driver configuration:profile: Loaded EDID profile data to apply
true if profile applied successfully, false if EDID integration is disabled.
Functionality:
- Merges EDID modes with manual configuration based on priority settings
- Applies HDR metadata if enabled
- Configures color primaries and color space settings
- Generates gamma ramp configurations
- Validates and optimizes final mode list
XML Profile Format
EDID profiles are stored in XML format with the following structure:Mode Management Functions
GenerateModesFromEdid
Generates and filters display modes from EDID profile based on configuration settings:- Resolution range (min/max width and height)
- Refresh rate range (min/max refresh rate)
- Fractional rates exclusion (optional)
- Aspect ratio validation
FindPreferredModeFromEdid
Locates the preferred display mode from the EDID profile:profile: EDID profile containing preferred mode informationavailableModes: List of available modes to search
MergeAndOptimizeModes
Merges manual and EDID modes based on priority settings:"edid": Use only EDID modes"manual": Use only manual modes"combined": Merge both, removing duplicates
sourcePriority global setting.
OptimizeModeList
Optimizes the final mode list for performance and compatibility:- Places preferred mode first in the list
- Removes duplicate modes
- Limits total modes to 32 for optimal performance
- Sorts by resolution and refresh rate
ValidateModeList
Validates a mode list and generates diagnostic report:- Non-empty mode list
- Resolution distribution analysis
- Refresh rate variety
- Preferred mode confirmation
true if validation passes, false otherwise.
HDR Metadata Conversion
ConvertEdidToSmpteMetadata
Converts EDID profile data to SMPTE ST.2086 HDR metadata format:- Chromaticity coordinates: 0.0-1.0 → 0-50000 (SMPTE format)
- Luminance values: nits → 0.0001 cd/m² units
- Content light levels from configuration settings
Color Space Conversion
ConvertEdidToGammaRamp
Generates gamma ramp from EDID color profile:- sRGB (gamma 2.2)
- DCI-P3 (gamma 2.4)
- Rec.2020 (gamma 2.4)
- Adobe RGB (gamma 2.2)
VddGammaRamp structure with gamma value, color space, and optional 3x4 transformation matrix.
Configuration Settings
EDID integration behavior is controlled by global settings:Error Handling
All EDID functions include comprehensive error handling:- File not found: Returns
false, logs warning - XML parsing errors: Returns
false, logs error with details - Invalid data values: Uses defaults, logs warning
- Empty mode list: Falls back to manual configuration
References
- Source File:
~/workspace/source/Virtual Display Driver (HDR)/MttVDD/Driver.cpp(lines 661-1301) - EDID Standard: VESA Enhanced Extended Display Identification Data Standard
- SMPTE ST.2086: Mastering Display Color Volume Metadata