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)
This commit is contained in:
parent
66203df660
commit
a4facf80f2
|
@ -59,9 +59,8 @@ is
|
||||||
|
|
||||||
success : boolean;
|
success : boolean;
|
||||||
|
|
||||||
stride : Width_Type;
|
min_h : pos16 := pos16'last;
|
||||||
max_h : pos16 := 1;
|
min_v : pos16 := pos16'last;
|
||||||
max_v : pos16 := 1;
|
|
||||||
begin
|
begin
|
||||||
lightup_ok := 0;
|
lightup_ok := 0;
|
||||||
|
|
||||||
|
@ -77,30 +76,24 @@ is
|
||||||
for i in Config_Index loop
|
for i in Config_Index loop
|
||||||
exit when configs (i).Port = Disabled;
|
exit when configs (i).Port = Disabled;
|
||||||
|
|
||||||
max_h := pos16'max (max_h, configs (i).Mode.H_Visible);
|
min_h := pos16'min (min_h, configs (i).Mode.H_Visible);
|
||||||
max_v := pos16'max (max_v, configs (i).Mode.V_Visible);
|
min_v := pos16'min (min_v, configs (i).Mode.V_Visible);
|
||||||
end loop;
|
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
|
for i in Config_Index loop
|
||||||
exit when configs (i).Port = Disabled;
|
exit when configs (i).Port = Disabled;
|
||||||
|
|
||||||
configs (i).Framebuffer :=
|
configs (i).Framebuffer := fb;
|
||||||
(Width => Width_Type (configs (i).Mode.H_Visible),
|
|
||||||
Height => Height_Type (configs (i).Mode.V_Visible),
|
|
||||||
BPC => 8,
|
|
||||||
Stride => stride,
|
|
||||||
Offset => 0);
|
|
||||||
end loop;
|
end loop;
|
||||||
|
|
||||||
HW.GFX.GMA.Dump_Configs (configs);
|
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.GMA.Setup_Default_GTT (fb, phys_fb);
|
||||||
HW.GFX.Framebuffer_Filler.Fill (linear_fb, fb);
|
HW.GFX.Framebuffer_Filler.Fill (linear_fb, fb);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue