mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-14 16:46:23 +00:00
gfx, gma: Add helper to decide scaling aspect
Scaling_Type() returns the resulting scaling format, `Letterbox`, `Pillarbox`, or `Evenly` when keeping aspect ratio. Change-Id: I86fb15b03c2f4b55cb00e85b57dc7a64583557d0 Signed-off-by: Nico Huber <nico.h@gmx.de> Reviewed-on: https://review.coreboot.org/26766 Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
This commit is contained in:
@@ -164,6 +164,9 @@ private
|
||||
function Requires_Scaling (Pipe_Cfg : Pipe_Config) return Boolean is
|
||||
(Requires_Scaling (Pipe_Cfg.Framebuffer, Pipe_Cfg.Mode));
|
||||
|
||||
function Scaling_Type (Pipe_Cfg : Pipe_Config) return Scaling_Aspect is
|
||||
(Scaling_Type (Pipe_Cfg.Framebuffer, Pipe_Cfg.Mode));
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
-- Internal representation of a single pipe's configuration
|
||||
|
||||
|
||||
@@ -197,4 +197,18 @@ private
|
||||
(Rotated_Width (FB) /= Mode.H_Visible or
|
||||
Rotated_Height (FB) /= Mode.V_Visible);
|
||||
|
||||
type Scaling_Aspect is (Uniform, Letterbox, Pillarbox);
|
||||
function Scaling_Type (FB : Framebuffer_Type; Mode : Mode_Type)
|
||||
return Scaling_Aspect is
|
||||
(if Pos32 (Mode.H_Visible) * Pos32 (Rotated_Height (FB)) <
|
||||
Pos32 (Mode.V_Visible) * Pos32 (Rotated_Width (FB))
|
||||
then
|
||||
Letterbox
|
||||
elsif Pos32 (Mode.H_Visible) * Pos32 (Rotated_Height (FB)) >
|
||||
Pos32 (Mode.V_Visible) * Pos32 (Rotated_Width (FB))
|
||||
then
|
||||
Pillarbox
|
||||
else
|
||||
Uniform);
|
||||
|
||||
end HW.GFX;
|
||||
|
||||
Reference in New Issue
Block a user