Opened 17 months ago

Last modified 17 months ago

#18440 new enhancement

Support multiple displays in EFI framebuffer driver — at Version 1

Reported by: pulkomandy Owned by:
Priority: normal Milestone: Unscheduled
Component: Drivers/Graphics/framebuffer Version: R1/beta4
Keywords: Cc:
Blocked By: Blocking:
Platform: All

Description (last modified by pulkomandy)

It looks like we should be able to support at least "clone" mode relatively easily, and real multiple displays should also be possible.

Documentation is here: https://uefi.org/specs/UEFI/2.9_A/12_Protocols_Console_Support.html#rules-for-pci-agp-devices

We are currently using LocateProtocol to find the graphics protocol (this happens in src/system/boot/platform/efi/video.cpp). According to this: https://stackoverflow.com/questions/57487924/what-is-the-correct-way-to-load-a-uefi-protocol , we only get the first instance when doing this. But there should be one instance of the protocol per combination of displays (one for each display plus one for each pair of displays that have at least one videomode in common).

From there we have two possible options:

  • Locate one of the "display pairs" instances, and use that to set up the hardware in a way that both displays will show the same framebuffer
  • Locate each "single display" instance, and allocate a separate framebuffer to each of them. Then we can have true multiple displays.

This may also help with the intel_extreme driver: if displays are already initialized during boot, the intel driver can skip all the lowlevel parts of modesetting (DDI link training) and use the already configured display, but add the ability to change videomodes (and anything else the intel driver may support later).

Change History (1)

comment:1 by pulkomandy, 17 months ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.