Nico Huber (nico.h@gmx.de) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/17492
-gerrit
commit 55ed8e8ef2b255b49802a3af8049d7cc0ce5271c Author: Nico Huber nico.huber@secunet.com Date: Tue Nov 8 12:29:50 2016 +0100
drivers/intel/gma: Use scaling to simplify fb config
Utilize libgfxinit's support for scaling to simplify the framebuffer configuration. In case of multiple displays of different resolutions, we had configured one framebuffer big enough for their union, each display only showing its respective upper left window. Instead, we use the smallest resolution now and show the whole image on all displays.
Change-Id: I70a9d92f88ef891703829945264f94ac7eff09b0 Signed-off-by: Nico Huber nico.huber@secunet.com --- src/drivers/intel/gma/hires_fb/gma.adb | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-)
diff --git a/src/drivers/intel/gma/hires_fb/gma.adb b/src/drivers/intel/gma/hires_fb/gma.adb index 7ebc4f8..87e0900 100644 --- a/src/drivers/intel/gma/hires_fb/gma.adb +++ b/src/drivers/intel/gma/hires_fb/gma.adb @@ -59,9 +59,8 @@ is
success : boolean;
- stride : Width_Type; - max_h : pos16 := 1; - max_v : pos16 := 1; + min_h : pos16 := pos16'last; + min_v : pos16 := pos16'last; begin lightup_ok := 0;
@@ -77,30 +76,24 @@ is for i in Config_Index loop exit when configs (i).Port = Disabled;
- max_h := pos16'max (max_h, configs (i).Mode.H_Visible); - max_v := pos16'max (max_v, configs (i).Mode.V_Visible); + min_h := pos16'min (min_h, configs (i).Mode.H_Visible); + min_v := pos16'min (min_v, configs (i).Mode.V_Visible); end loop;
- stride := ((Width_Type (max_h) + 63) / 64) * 64; + fb := + (Width => Width_Type (min_h), + Height => Height_Type (min_v), + BPC => 8, + Stride => ((Width_Type (min_h) + 63) / 64) * 64, + Offset => 0); for i in Config_Index loop exit when configs (i).Port = Disabled;
- configs (i).Framebuffer := - (Width => Width_Type (configs (i).Mode.H_Visible), - Height => Height_Type (configs (i).Mode.V_Visible), - BPC => 8, - Stride => stride, - Offset => 0); + configs (i).Framebuffer := fb; end loop;
HW.GFX.GMA.Dump_Configs (configs);
- fb := - (Width => Width_Type (max_h), - Height => Height_Type (max_v), - BPC => 8, - Stride => stride, - Offset => 0); HW.GFX.GMA.Setup_Default_GTT (fb, phys_fb); HW.GFX.Framebuffer_Filler.Fill (linear_fb, fb);