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 )
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).