New i.MX8MP GPU Driver

  • 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:

    1. GPU Driver (galcore.sys): Manages GPU functionality
    2. 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.

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • fs-support_MRO

    Changed the title of the thread from “New i.MX8MP GPU Driver for Windows 10 IoT” to “New i.MX8MP GPU Driver”.