qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug 1896561] [NEW] EFI GOP Mode 1366x768


From: Benjamin David Lunt
Subject: [Bug 1896561] [NEW] EFI GOP Mode 1366x768
Date: Tue, 22 Sep 2020 02:52:04 -0000

Public bug reported:

When using the EFI firmware from
https://www.kraxel.org/repos/jenkins/edk2/
(https://www.kraxel.org/repos/jenkins/edk2/edk2.git-
ovmf-x64-0-20200919.1453.g7faece6985.noarch.rpm) (OVMF-pure-efi.fd and
OVMF_VARS-pure-efi.fd) then using the GOP, setting the mode to 1366x768,
QEMU uses a width of 1360 instead.

I am using QEMU for windows (https://qemu.weilnetz.de/) on a Windows 10
machine.

To verify, while in the EFI firmware loaded code (within BOOTx64.EFI)
and before ExitBootServices(), I choose the 1360x768 mode.  I then took
notice of where the host window was and how many pixels it occupied.  I
then reset the emulation (without quitting) and chose the 1366x768 mode.
QEMU set the host window to the exact same width as the 1360 mode.
i.e.: The same exact pixels where shown in the host background.  The
window did not expand the extra 6 pixels.

I allowed the firmware to run its course to my test environment when
using mode 1366x768, all pixels are 6 pixels off to the right.  i.e.: 6
pixels down the Frame Buffer.  If my test environment changes its HORZ
WIDTH and PIXELS PER SCANLINE to 1360 while using this (1366x768) mode,
the display is correct.

This told me that it could be a few things.
1) Since most (I didn't check them all) of the other modes have the width 
value's bits 2:0 clear, mode 1366x768 is the only mode the EDK2 firmware has 
with a width where bits 2:0 are not zero.  Could EDK2 or QEMU (which for the 
Windows version may use SDL2 so it must be considered here) be clearing these 
bits?  The value of 1366 when clearing bits 2:0 is 1360.

2) Could there be a typo in the code EDK2 where the width should have been 1366?
(I went looking at both QEMU (for Windows) and EDK2 and after looking at many 
lines of code, I could not find anywhere where this might happen. 

By the way, in /ui/sdl2-2d.c (QEMU Windows version only?), there is a
typo in a comment, missing the second 'e':

Line 156:  * the native ones. Thes are the ones I have tested.

3) Could EDK2 be sending 1360 instead of 1366?
4) Could QEMU (passing it on to SDL2 in SDL_SetWindowSize()?) be destroying the 
value (bottom three bits)?

Anyway, using the latest version of the EDK2 from the URL listed above,
choosing the 1366x768 mode, does not set QEMU (for Windows) to 1366
pixels in width.

Ben

** Affects: qemu
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1896561

Title:
  EFI GOP Mode 1366x768

Status in QEMU:
  New

Bug description:
  When using the EFI firmware from
  https://www.kraxel.org/repos/jenkins/edk2/
  (https://www.kraxel.org/repos/jenkins/edk2/edk2.git-
  ovmf-x64-0-20200919.1453.g7faece6985.noarch.rpm) (OVMF-pure-efi.fd and
  OVMF_VARS-pure-efi.fd) then using the GOP, setting the mode to
  1366x768, QEMU uses a width of 1360 instead.

  I am using QEMU for windows (https://qemu.weilnetz.de/) on a Windows
  10 machine.

  To verify, while in the EFI firmware loaded code (within BOOTx64.EFI)
  and before ExitBootServices(), I choose the 1360x768 mode.  I then
  took notice of where the host window was and how many pixels it
  occupied.  I then reset the emulation (without quitting) and chose the
  1366x768 mode.  QEMU set the host window to the exact same width as
  the 1360 mode.  i.e.: The same exact pixels where shown in the host
  background.  The window did not expand the extra 6 pixels.

  I allowed the firmware to run its course to my test environment when
  using mode 1366x768, all pixels are 6 pixels off to the right.  i.e.:
  6 pixels down the Frame Buffer.  If my test environment changes its
  HORZ WIDTH and PIXELS PER SCANLINE to 1360 while using this (1366x768)
  mode, the display is correct.

  This told me that it could be a few things.
  1) Since most (I didn't check them all) of the other modes have the width 
value's bits 2:0 clear, mode 1366x768 is the only mode the EDK2 firmware has 
with a width where bits 2:0 are not zero.  Could EDK2 or QEMU (which for the 
Windows version may use SDL2 so it must be considered here) be clearing these 
bits?  The value of 1366 when clearing bits 2:0 is 1360.

  2) Could there be a typo in the code EDK2 where the width should have been 
1366?
  (I went looking at both QEMU (for Windows) and EDK2 and after looking at many 
lines of code, I could not find anywhere where this might happen. 

  By the way, in /ui/sdl2-2d.c (QEMU Windows version only?), there is a
  typo in a comment, missing the second 'e':

  Line 156:  * the native ones. Thes are the ones I have tested.

  3) Could EDK2 be sending 1360 instead of 1366?
  4) Could QEMU (passing it on to SDL2 in SDL_SetWindowSize()?) be destroying 
the value (bottom three bits)?

  Anyway, using the latest version of the EDK2 from the URL listed
  above, choosing the 1366x768 mode, does not set QEMU (for Windows) to
  1366 pixels in width.

  Ben

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1896561/+subscriptions



reply via email to

[Prev in Thread] Current Thread [Next in Thread]