Documentation Index
Fetch the complete documentation index at: https://mintlify.com/VirtualDrivers/Virtual-Display-Driver/llms.txt
Use this file to discover all available pages before exploring further.
The Virtual Display Driver provides advanced color management through configurable color spaces, gamma correction, and precise chromaticity coordinates.
Color Space Configuration
Configure color space settings in the hdr_advanced section:
<hdr_advanced>
<color_space>
<enabled>true</enabled>
<gamma_correction>2.4</gamma_correction>
<primary_color_space>Rec.2020</primary_color_space>
<enable_matrix_transform>true</enable_matrix_transform>
</color_space>
</hdr_advanced>
Enable advanced color space processing. When disabled, driver uses default sRGB.
Gamma curve exponent. Common values:
2.2 - sRGB standard gamma
2.4 - Rec.2020/HDR gamma
2.6 - DCI-P3 cinema gamma
Primary color space selection:
sRGB - Standard RGB (most compatible)
Rec.709 - HD video standard (identical to sRGB)
Rec.2020 - UHD/HDR wide gamut
DCI-P3 - Digital cinema wide gamut
Adobe_RGB - Photography wide gamut
Enable 3×4 color space transformation matrix for advanced color conversion.
Supported Color Spaces
sRGB (Standard RGB)
<color_space>
<enabled>true</enabled>
<gamma_correction>2.2</gamma_correction>
<primary_color_space>sRGB</primary_color_space>
</color_space>
Characteristics:
- Gamma: 2.2
- White point: D65 (0.3127, 0.3290)
- Most widely supported
- Best compatibility
Rec.2020 (UHD/HDR)
<color_space>
<enabled>true</enabled>
<gamma_correction>2.4</gamma_correction>
<primary_color_space>Rec.2020</primary_color_space>
<enable_matrix_transform>true</enable_matrix_transform>
</color_space>
Characteristics:
- Gamma: 2.4 (PQ or HLG for HDR)
- Widest color gamut
- Required for HDR10
- Requires 10-bit color depth
DCI-P3 (Digital Cinema)
<color_space>
<enabled>true</enabled>
<gamma_correction>2.6</gamma_correction>
<primary_color_space>DCI-P3</primary_color_space>
<enable_matrix_transform>true</enable_matrix_transform>
</color_space>
Characteristics:
- Gamma: 2.6
- Wide gamut (between sRGB and Rec.2020)
- Common for content creation
- Requires 10-bit color depth
Color Primaries
Define precise chromaticity coordinates for custom color spaces:
<hdr_advanced>
<color_primaries>
<enabled>true</enabled>
<red_x>0.708</red_x>
<red_y>0.292</red_y>
<green_x>0.170</green_x>
<green_y>0.797</green_y>
<blue_x>0.131</blue_x>
<blue_y>0.046</blue_y>
<white_x>0.3127</white_x>
<white_y>0.3290</white_y>
</color_primaries>
</hdr_advanced>
Standard Primaries
sRGB/Rec.709:
<red_x>0.640</red_x> <red_y>0.330</red_y>
<green_x>0.300</green_x> <green_y>0.600</green_y>
<blue_x>0.150</blue_x> <blue_y>0.060</blue_y>
<white_x>0.3127</white_x> <white_y>0.3290</white_y> <!-- D65 -->
Rec.2020:
<red_x>0.708</red_x> <red_y>0.292</red_y>
<green_x>0.170</green_x> <green_y>0.797</green_y>
<blue_x>0.131</blue_x> <blue_y>0.046</blue_y>
<white_x>0.3127</white_x> <white_y>0.3290</white_y> <!-- D65 -->
DCI-P3:
<red_x>0.680</red_x> <red_y>0.320</red_y>
<green_x>0.265</green_x> <green_y>0.690</green_y>
<blue_x>0.150</blue_x> <blue_y>0.060</blue_y>
<white_x>0.3127</white_x> <white_y>0.3290</white_y> <!-- D65 -->
Color primaries are converted to SMPTE ST.2086 format (0-50000 range) for HDR metadata. See Driver.cpp:851-857 for conversion logic.
Gamma Correction
Gamma correction controls the brightness curve of the display:
Standard Gamma Values
| Gamma | Use Case | Description |
|---|
| 2.2 | sRGB | Standard computer displays |
| 2.4 | Rec.2020 | HDR/UHD content |
| 2.6 | DCI-P3 | Digital cinema |
| 1.0 | Linear | No correction (raw data) |
Custom Gamma Configuration
<color_space>
<enabled>true</enabled>
<gamma_correction>2.35</gamma_correction> <!-- Custom value -->
<primary_color_space>sRGB</primary_color_space>
</color_space>
When enable_matrix_transform is enabled, the driver generates a 3×4 color space transformation matrix:
// Matrix structure (Driver.cpp:681-684)
struct VddColorMatrix {
FLOAT matrix[3][4]; // 3x4 transformation matrix
bool isValid;
};
Matrix Generation
The driver automatically generates conversion matrices (Driver.cpp:700-759):
sRGB to sRGB (identity with gamma):
[γ/2.2, 0, 0, 0]
[0, γ/2.2, 0, 0]
[0, 0, γ/2.2, 0]
DCI-P3 to sRGB:
[1.2249*(γ/2.4), -0.2247, 0, 0]
[-0.0420, 1.0419*(γ/2.4), 0, 0]
[-0.0196, -0.0786, 1.0982*(γ/2.4), 0]
Rec.2020 to sRGB:
[1.7347*(γ/2.4), -0.7347, 0, 0]
[-0.1316, 1.1316*(γ/2.4), 0, 0]
[-0.0241, -0.1289, 1.1530*(γ/2.4), 0]
Matrix transforms require significant GPU processing. Only enable for wide gamut color spaces (DCI-P3, Rec.2020) when necessary.
Automatic Bit Depth Selection
The driver can automatically select bit depth based on color space:
<color_advanced>
<bit_depth_management>
<auto_select_from_color_space>true</auto_select_from_color_space>
</bit_depth_management>
</color_advanced>
Automatic selection logic (Driver.cpp:798-823):
- Rec.2020 → 10-bit
- DCI-P3 → 10-bit
- Adobe_RGB → 10-bit
- sRGB/Rec.709 → 8-bit
Configuration Examples
HDR10 Wide Gamut Setup
<hdr_advanced>
<color_space>
<enabled>true</enabled>
<gamma_correction>2.4</gamma_correction>
<primary_color_space>Rec.2020</primary_color_space>
<enable_matrix_transform>true</enable_matrix_transform>
</color_space>
<color_primaries>
<enabled>true</enabled>
<red_x>0.708</red_x>
<red_y>0.292</red_y>
<green_x>0.170</green_x>
<green_y>0.797</green_y>
<blue_x>0.131</blue_x>
<blue_y>0.046</blue_y>
<white_x>0.3127</white_x>
<white_y>0.3290</white_y>
</color_primaries>
</hdr_advanced>
<color_advanced>
<bit_depth_management>
<auto_select_from_color_space>true</auto_select_from_color_space>
</bit_depth_management>
</color_advanced>
Professional sRGB Setup
<hdr_advanced>
<color_space>
<enabled>true</enabled>
<gamma_correction>2.2</gamma_correction>
<primary_color_space>sRGB</primary_color_space>
<enable_matrix_transform>false</enable_matrix_transform>
</color_space>
<color_primaries>
<enabled>true</enabled>
<red_x>0.640</red_x>
<red_y>0.330</red_y>
<green_x>0.300</green_x>
<green_y>0.600</green_y>
<blue_x>0.150</blue_x>
<blue_y>0.060</blue_y>
<white_x>0.3127</white_x>
<white_y>0.3290</white_y>
</color_primaries>
</hdr_advanced>
Cinema DCI-P3 Setup
<hdr_advanced>
<color_space>
<enabled>true</enabled>
<gamma_correction>2.6</gamma_correction>
<primary_color_space>DCI-P3</primary_color_space>
<enable_matrix_transform>true</enable_matrix_transform>
</color_space>
<color_primaries>
<enabled>true</enabled>
<red_x>0.680</red_x>
<red_y>0.320</red_y>
<green_x>0.265</green_x>
<green_y>0.690</green_y>
<blue_x>0.150</blue_x>
<blue_y>0.060</blue_y>
<white_x>0.3127</white_x>
<white_y>0.3290</white_y>
</color_primaries>
</hdr_advanced>
<color_advanced>
<bit_depth_management>
<force_bit_depth>10</force_bit_depth>
</bit_depth_management>
</color_advanced>
EDID Integration
Color profiles can be automatically loaded from EDID files:
<edid_integration>
<enabled>true</enabled>
<auto_configure_from_edid>true</auto_configure_from_edid>
</edid_integration>
The driver extracts from monitor_profile.xml:
- Color primaries (chromaticity coordinates)
- Gamma value
- Primary color space name
- White point
See Custom EDID for details.
SDR White Level
Configure SDR white level for HDR displays:
<color_advanced>
<color_format_extended>
<sdr_white_level>80.0</sdr_white_level>
</color_format_extended>
</color_advanced>
Standard values:
- 80 nits - Standard SDR on HDR displays
- 100 nits - Brighter SDR content
- 120 nits - Maximum recommended
SDR white level is used when displaying SDR content on HDR-capable displays to maintain consistent brightness.
Verification
Enable logging to verify color configuration:
<logging>
<logging>true</logging>
<debuglogging>true</debuglogging>
</logging>
Log output shows:
[INFO] Generated Gamma Ramp from EDID profile:
Gamma: 2.4 (from 2.400)
Color Space: Rec.2020
Matrix Transform: Enabled
3x4 Matrix:
[1.73, -0.73, 0.00, 0.00]
[-0.13, 1.13, 0.00, 0.00]
[-0.02, -0.13, 1.15, 0.00]
Windows Requirements
Advanced color management requires:
- Windows 10 version 1803 or later for wide gamut support
- IddCx 1.4 or later for matrix transforms
- Compatible GPU with color space conversion support