Skip to main content
The Virtual Display Driver provides hardware cursor support with configurable dimensions and alpha channel capabilities. Proper cursor configuration ensures smooth cursor movement and proper rendering.

Hardware Cursor Configuration

Configure hardware cursor support in the <cursor> section:
<cursor>
    <HardwareCursor>true</HardwareCursor>
    <CursorMaxX>128</CursorMaxX>
    <CursorMaxY>128</CursorMaxY>
    <AlphaCursorSupport>true</AlphaCursorSupport>
    <XorCursorSupportLevel>2</XorCursorSupportLevel>
</cursor>

Cursor Parameters

cursor.HardwareCursor
boolean
default:"true"
Enable hardware cursor support.Recommended: Keep enabled for optimal performance and smooth cursor movement.Values:
  • true - Hardware-accelerated cursor (recommended)
  • false - Software cursor (fallback mode)
cursor.CursorMaxX
integer
default:"128"
Maximum cursor width in pixels.Valid range: 32 - 256 pixelsCommon values:
  • 128 - Standard cursor size (recommended)
  • 64 - Smaller cursor for better performance
  • 256 - Large cursor for high-DPI displays
Larger cursors require more GPU memory and bandwidth.
cursor.CursorMaxY
integer
default:"128"
Maximum cursor height in pixels.Valid range: 32 - 256 pixelsShould typically match CursorMaxX for square cursors.
cursor.AlphaCursorSupport
boolean
default:"true"
Enable alpha channel support for cursor transparency.Recommended: Keep enabled for modern cursor designs with transparency.Values:
  • true - Support transparent cursors (recommended)
  • false - Opaque cursors only
cursor.XorCursorSupportLevel
integer
default:"2"
XOR cursor support level.
This setting has a known implementation bug - it is loaded but not used by the driver. Changing this value has no effect.
Kept for compatibility purposes only.

Hardware vs. Software Cursor

Understanding the difference between hardware and software cursors:

Cursor Size Presets

Standard Desktop (Default)

<cursor>
    <HardwareCursor>true</HardwareCursor>
    <CursorMaxX>128</CursorMaxX>
    <CursorMaxY>128</CursorMaxY>
    <AlphaCursorSupport>true</AlphaCursorSupport>
</cursor>
Balanced configuration suitable for most use cases. Supports standard Windows cursors with transparency.

High-DPI Displays

<cursor>
    <HardwareCursor>true</HardwareCursor>
    <CursorMaxX>256</CursorMaxX>
    <CursorMaxY>256</CursorMaxY>
    <AlphaCursorSupport>true</AlphaCursorSupport>
</cursor>
Larger cursor size for 4K and 8K displays. Ensures cursor remains visible and sharp at high resolutions.

Performance Optimized

<cursor>
    <HardwareCursor>true</HardwareCursor>
    <CursorMaxX>64</CursorMaxX>
    <CursorMaxY>64</CursorMaxY>
    <AlphaCursorSupport>true</AlphaCursorSupport>
</cursor>
Smaller cursor size reduces memory usage and bandwidth. Use for maximum performance in resource-constrained environments.

Compatibility Mode

<cursor>
    <HardwareCursor>false</HardwareCursor>
    <CursorMaxX>128</CursorMaxX>
    <CursorMaxY>128</CursorMaxY>
    <AlphaCursorSupport>false</AlphaCursorSupport>
</cursor>
Software cursor without alpha support. Maximum compatibility with older applications.

Alpha Channel Support

Alpha cursor support enables modern cursor designs with transparency:

Cursor Memory Usage

Hardware cursor memory requirements:
Cursor SizeWithout AlphaWith Alpha (32-bit)
32x324 KB4 KB
64x6416 KB16 KB
128x12864 KB64 KB
256x256256 KB256 KB
Memory usage is per cursor image. Windows typically caches multiple cursor shapes (arrow, hand, I-beam, etc.).

Multiple Cursor Shapes

The driver supports all standard Windows cursor shapes:
  • Arrow (normal pointer)
  • I-beam (text cursor)
  • Wait (hourglass/spinner)
  • Crosshair
  • Hand (link select)
  • Size arrows (resize)
  • No/prohibited
  • Custom application cursors
All shapes use the configured CursorMaxX and CursorMaxY limits.

Cursor Performance Considerations

Possible causes:
  • Software cursor enabled
  • Cursor size too large
  • GPU performance issues
Solutions:
  • Enable HardwareCursor
  • Reduce CursorMaxX and CursorMaxY
  • Check GPU load
Possible causes:
  • Hardware cursor not supported by GPU
  • Cursor size set to 0
  • Display driver issues
Solutions:
  • Try software cursor mode (HardwareCursor = false)
  • Verify cursor size settings
  • Reinstall display driver
Possible causes:
  • Insufficient cursor buffer size
  • Alpha channel issues
  • GPU memory corruption
Solutions:
  • Increase CursorMaxX and CursorMaxY
  • Toggle AlphaCursorSupport
  • Restart driver
Cause: AlphaCursorSupport is disabledSolution: Set AlphaCursorSupport to true

Gaming and High-Performance Applications

For gaming and performance-critical applications:
<cursor>
    <HardwareCursor>true</HardwareCursor>
    <CursorMaxX>64</CursorMaxX>
    <CursorMaxY>64</CursorMaxY>
    <AlphaCursorSupport>true</AlphaCursorSupport>
</cursor>
Why this configuration:
  • Hardware cursor: Minimizes latency for competitive gaming
  • 64x64 size: Reduces memory bandwidth usage
  • Alpha support: Maintains cursor quality
Many games use their own custom cursors and don’t rely on the system cursor, so driver cursor settings may not affect in-game cursors.

Remote Desktop Considerations

When using the virtual display driver with remote desktop applications:
<cursor>
    <HardwareCursor>true</HardwareCursor>
    <CursorMaxX>128</CursorMaxX>
    <CursorMaxY>128</CursorMaxY>
    <AlphaCursorSupport>true</AlphaCursorSupport>
</cursor>
Recommendations:
  • Keep hardware cursor enabled for local display
  • Standard 128x128 size works well for remote viewing
  • Alpha support improves cursor visibility
Remote desktop software (RDP, VNC, etc.) may use its own cursor rendering regardless of driver settings.

Troubleshooting

1

Verify configuration

Check that vdd_settings.xml has valid cursor settings.
2

Test with defaults

Use the default configuration (128x128, hardware, alpha enabled) first.
3

Try software cursor

If hardware cursor has issues, disable it temporarily to isolate the problem.
4

Check logs

Review driver logs for cursor-related errors or warnings.
5

Adjust size

Increase cursor size if using high-DPI displays (4K+).

Best Practices

Use hardware cursor

Always enable hardware cursor unless you have specific compatibility issues.

Match display resolution

Use larger cursor sizes (256x256) for 4K/8K displays.

Enable alpha support

Keep alpha channel enabled for modern cursor designs.

Start with defaults

Begin with 128x128 and adjust based on your needs.

Known Issues

XorCursorSupportLevel Implementation BugThe XorCursorSupportLevel setting is loaded from the XML but never used in the driver code. This is a known bug. Setting this value has no effect on driver behavior.This setting is kept in the configuration for backwards compatibility and may be removed in future versions.

Settings Overview

Complete configuration file reference

Troubleshooting

Common cursor issues and solutions

Build docs developers (and LLMs) love