Display / GPU driver
I am pleased to announce that the next release (V1.2) will include a GPU driver. Which allows applications to take advantage of hardware acceleration for graphics and compute tasks, providing smoother rendering of images, faster processing of graphical data, and more efficient use of system resources.
The kernel graphics driver for the i.MX8MP consists primarily of two components:
- GPU Driver (galcore.sys): Manages GPU functionality
- Display Controller Driver (dispctrl.dll): Handles display output
Several timing parameters are configured via the Windows registry, which are later used for driver initialization. The default configuration in the registry is set for our 7" and 10" standard displays. If you wish to use the GPU driver for a different display, you can adjust the configuration as follows.
Configuration Procedure
1. Activate driver: First of all the display driver must be enabled. This can be done under the following registry key:
[HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}]
Entry | Value | Description |
Load | DWORD | Enable/Disable display driver 0x0: Disable (default) 0x1: Enable |
2. Update Display Parameters/Timings:
To configure the display parameters, you will need to update the Windows registry. Modify the registry key at:
[HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\000X]
(Notice: Replace X with the appropriate number for your GPU driver. This number can vary depending on other onboard display adapters i.e. Microsoft Remote Display Adapter, MS Basic Display Adapter)
Entry | Value | Description |
DriverDesc | SZ | Name of the display driver “i.MX GPU Device” (default) |
EnableMultiMon | DWORD | Under this entry you can enable/disable the support of multiple display interfaces. If enabled the first display is determined by the Display0Interface parameter, the second display is determined by the Display1Interface parameter and so on 0x0: single display 0x1: multiple displays (default) |
Display<n>Interface | DWORD | Select display interface for the n display 0x1: DISP_INF_HDMI (default Display1Interface) 0x2: DISP_INF_DSI0 0x3: DISP_INF_DSI1 0x4: DISP_INF_LVDS0 0x5: DISP_INF_LVDS1 (default Display0Interface) 0x6: DISP_INF_DUAL0 0x7: DISP_INF_PARALLEL_LCD |
Display<n>EDID | BINARY | The parameter contains EDID data encoded according to the EDID v1.3 structure (VESA). The first 128-byte data block is used, representing the basic EDID structure without any extensions. Resolution and timing parameters are extracted from the Standard Timing Information Descriptor 1 (offsets 54–71), including the pixel clock, horizontal and vertical active pixels, blanking pixels, synchronization pulse width, front porch, and the polarity of the VSYNC and HSYNC signals. During EDID loading from the registry, the EDID header (offsets 0–7) is verified, and the checksum (offset 127) must match. Other EDID data are ignored by the GPU driver.
00 FF FF FF FF FF FF 00 04 21 00 .... 00 00 00 AF (default Display0EDID) |
Display<n>BusDataWidth | DWORD | Only related to LVDS Interface. This parameter determines the number of pixels mapped to the output signal 0x12: 18 bpp 0x18: 24 bpp (default) |
Display<n>BusMapping | DWORD | Only related to LVDS Interface. This parameter determines the pixel-mapping type in the output signal 0x1: DISP_BUS_MAPPING_SPWG (default) 0x2: DISP_BUS_MAPPING_JEIDA |
Display<n>NumLanes | DWORD | Only related to MIPI-DSI Interface. This parameter determines the number of DSI lanes 0x1: One Lane 0x2: Two Lanes 0x3: Three Lanes 0x4: Four Lanes (default) |
Display<n>ChannelId | DWORD | Only related to MIPI-DSI Interface. This parameter determines the virtual channel ID of the display 0x0: Channel ID 0 (default) |
3. Apply the Configuration: Once the registry has been updated, you can apply the new configuration by:
- Rebooting the board
- Restarting the driver using the
devcon
utility:devcon.exe restart ACPI\VERI700x
- Alternatively, disabling and re-enabling the device through Device Manager under Display adapters > i.MX GPU device
Display Resolution and Timing Parameters
HDMI Display Interface:
- The HDMI display interface will use the native resolution of the connected display, typically obtained from the EDID (Extended Display Identification Data)
- For most standard HDMI monitors, the native resolution is 1920x1080 @ 60 Hz
- Resolution cannot be overridden. If the connected display supports a resolution higher than 1080p, the maximum supported resolution (1080p) will be applied
LVDS Display Interface:
- For LVDS displays, resolution and timing parameters are defined in the Windows registry via the
DisplayEDID
parameter, where<n>
represents the display number - The EDID data is stored in
REG_BINARY
format, which follows the standard EDID v1.3 data format as published by VESA
I hope this information helps you configure your display and GPU setup on the i.MX8MP under Windows IoT. If you have any questions or further feedback, please feel free to share.