diff options
author | Nico Huber <nico.huber@secunet.com> | 2016-11-08 12:29:50 +0100 |
---|---|---|
committer | Nico Huber <nico.h@gmx.de> | 2016-12-19 16:11:35 +0100 |
commit | a4facf80f2df7ebd51d512c4091ab8df24bb71c9 (patch) | |
tree | 93a5d1499c1d2a466cf02d32d0d217ee6e693826 | |
parent | 66203df660ad2230389597a942f5252074a33aac (diff) | |
download | coreboot-a4facf80f2df7ebd51d512c4091ab8df24bb71c9.tar.xz |
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>
Reviewed-on: https://review.coreboot.org/17492
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
Tested-by: build bot (Jenkins)
-rw-r--r-- | src/drivers/intel/gma/hires_fb/gma.adb | 29 |
1 files 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 7ebc4f88bc..87e0900981 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); |