Hi RuiYu, patch file is attached. Thanks.
------------------ BR winddy_zhang ------------------ Original ------------------ From: "Ni, Ruiyu";<ruiyu...@intel.com>; Date: Tue, Nov 17, 2015 05:14 PM To: "winddy"<winddy_zh...@foxmail.com>; "edk2-devel"<edk2-devel@lists.01.org>; Subject: RE: [edk2] It seems something wrong inGraphicsConsoleControllerDriverStart() when user defined resolution is notsupported Winddy, Thanks for reporting this issue back. I agree with your analysis. Could you please submit a patch to correct this? Regards, Ray -----Original Message----- From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of winddy Sent: Tuesday, November 17, 2015 2:19 PM To: edk2-devel <edk2-devel@lists.01.org> Subject: [edk2] It seems something wrong in GraphicsConsoleControllerDriverStart() when user defined resolution is not supported Dear Experts, Now I meet a problem: my GOP driver has something wrong that it only supports 800x600 and 640x480, but I defined screen resolution as 1024x768 before (PcdVideoHorizontalResolution, PcdVideoVerticalResolution). When it boots to shell, screen scroll function seems wrong. I think the reason is that: variable HorizontalResolution and VerticalResolution are not set correctly. In line 473, Console driver will try to set OEM resolution, if failed, then try 800x600, if still failed, uses current resolution. in my case, 1024x768 failed, 800x600 success, but HorizontalResolution and VerticalResolution are still 1024, 768. so InitializeGraphicsConsoleTextMode() may set wrong text mode. So I think solution is that: remove the result check of set mode 800x600 (see below, line 490). Whatever 800x600 is set successfully or not, we should update HorizontalResolution, VerticalResolution, and CurrentMode(ModeNumber) to match the real setting. After removed it, screen scroll function is OK under shell. (my GraphicsConsole driver is older, but I think the problem is similar.) Thanks. // // if not supporting current mode, try 800x600 which is required by UEFI/EFI spec // Status = CheckModeSupported ( Private->GraphicsOutput, 800, 600, &ModeNumber ); Mode = Private->GraphicsOutput->Mode; //- if (EFI_ERROR (Status) && Mode->MaxMode != 0) { // <--- remove this line. // // Set default mode failed or device don't support default mode, then get the current mode information // HorizontalResolution = Mode->Info->HorizontalResolution; VerticalResolution = Mode->Info->VerticalResolution; ModeNumber = Mode->Mode; //- } // <--- remove this line. ------------------ BR winddy_zhang _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel