On 02/26/14 02:53, Tim Lewis wrote: > It could be a PCD. I would recommend against using EFI_GLYPH_HEIGHT and > EFI_GLYPH_WIDTH, since that is not necessarily the height of the system > font. > > > > The correct way is to call the GetFontInfo() function of the HII Font > protocol, with a NULL input for StringFontIn set to NULL. This will > return the width and height of the character cell.
(First -- I studied the HII posts on your blog, and they are great, thanks.) I agree that HII could be appropriate for GraphicsConsoleDxe (which currently divides with EFI_GLYPH_* to derive the console resolution from the graphics resolution). However relying on HII in TerminalDxe would be a bit "divergent" in my opinion. My motivation for this patch is that ConSplitterDxe only exposes text modes that are supported by all of the outputs. I want to bump the highest text resolution in the intersection of the mode lists. Of course I can't know about all possible console outputs that might end up underneath ConSplitterDxe, but I do know of the two (presumably) common one that we use in OVMF. That's why I'm touching TerminalDxe. But, TerminalDxe in isolation is independent of HII. It only needs a serial port, and it doesn't know about fonts at all. In fact I can disconnect the QemuVideoDxe driver in OVMF, using the UEFI shell, and then only TerminalDxe remains. At that point I can choose any resolution that I like, from the list hard-coded inside TerminalDxe. At this point, HII fonts have no significance at all I think (not even indirectly, through ConSplitterDxe), and the detailed hard-coded list in TerminalDxe would be *really* useful. Example session, executed on the serial console: (1) Check currently available text modes: Shell> mode Available modes for console output device. Col 80 Row 25 * Col 100 Row 31 (2) Find out about the GOP that's limiting the console splitter: Shell> dh -p GraphicsOutput 89: StdErr ConsoleOut SimpleTextOut GraphicsOutput DevicePath(i(0x2,0x0)/AcpiAdr(0x80010100)) 53: GraphicsOutput SimpleTextOut (3) It's the one with the PCI parent, handle 89. Look up the handle of the parent: Shell> dh -d 89 89: 3EE45C18 StdErr ConsoleOut SimpleTextOut GraphicsOutput DevicePath(i(0x2,0x0)/AcpiAdr(0x80010100)) Controller Name : PciRoot(0x0)/Pci(0x2,0x0)/AcpiAdr(0x80010100) Device Path : PciRoot(0x0)/Pci(0x2,0x0)/AcpiAdr(0x80010100) Controller Type : BUS Configuration : NO Diagnostics : NO Managed by : Drv[4C] : Platform Console Management Driver Drv[50] : Console Splitter Driver Drv[51] : Console Splitter Driver Drv[55] : Graphics Console Driver Parent Controllers : Parent[82] : QEMU Video PCI Adapter Child Controllers : Child[53] : Primary Console Output Device Child[54] : Primary Standard Error Device (4) Disconnect it (ie. the "QEMU Video PCI Adapter" controller): Shell> disconnect 82 Disconnect - (82,3FF74640,3D45F298) Result Success. At this point the graphics console freezes, but the serial port continues working. (5) Let's find the serial port: Shell> dh -p SimpleTextOut 53: SimpleTextOut 54: SimpleTextOut 91: StdErr ConsoleOut ConsoleIn SimpleTextOut SimpleTextInEx SimpleTextIn DevicePath(Uart(115200,8,N,1)/VenPcAnsi()) B5: Shell ShellParameters SimpleTextOut ImageDevicePath LoadedImage (6) It's handle 91. Disconnect that device and reconnect all drivers to it recursively: Shell> reconnect 91 Connect - Handle [91] Result Success. (7) Now that consplitter has been restarted on top of the serial console and nothing else, let's re-check the resolution list: Shell> mode Available modes for console output device. Col 80 Row 25 * Col 80 Row 50 Col 100 Row 25 Col 100 Row 31 Col 104 Row 32 Col 120 Row 33 Col 128 Row 31 Col 128 Row 40 Col 144 Row 45 Col 160 Row 37 Col 160 Row 40 Col 160 Row 42 Col 160 Row 50 Col 160 Row 53 Col 170 Row 40 Col 175 Row 55 Col 180 Row 47 Col 200 Row 47 Col 200 Row 63 Col 210 Row 55 Col 240 Row 56 Col 240 Row 63 Col 240 Row 75 Col 250 Row 105 Col 256 Row 80 Col 256 Row 107 Col 320 Row 75 Col 320 Row 84 Col 320 Row 107 Col 350 Row 110 Col 400 Row 126 Col 480 Row 113 Col 512 Row 113 Col 960 Row 227 Col 1024 Row 227 (8) Select the largest that fits my physical screen: Shell> mode 210 55 My xterm window is resized, and the output of the "drivers" command, for example, is not wrapped any longer. Thanks Laszlo ------------------------------------------------------------------------------ Flow-based real-time traffic analytics software. Cisco certified tool. Monitor traffic, SLAs, QoS, Medianet, WAAS etc. with NetFlow Analyzer Customize your own dashboards, set traffic alerts and generate reports. Network behavioral analysis & security monitoring. All-in-one tool. http://pubads.g.doubleclick.net/gampad/clk?id=126839071&iu=/4140/ostg.clktrk _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel