[coreboot-gerrit] Change in libgfxinit[master]: gfx_test: Refactor to allow Restrictions (No_Elaboration_Code)
Nico Huber (Code Review)
gerrit at coreboot.org
Mon Jun 18 00:58:58 CEST 2018
Nico Huber has uploaded this change for review. ( https://review.coreboot.org/27146
Change subject: gfx_test: Refactor to allow Restrictions (No_Elaboration_Code)
......................................................................
gfx_test: Refactor to allow Restrictions (No_Elaboration_Code)
Move the `Ada.Numerics.Discrete_Random.Generator` into the Main()
procedure.
Change-Id: I63c72501fd7d49574042fc5a459d6751a776a1f1
Signed-off-by: Nico Huber <nico.h at gmx.de>
---
M gfxtest/hw-gfx-gma-gfx_test.adb
1 file changed, 31 insertions(+), 25 deletions(-)
git pull ssh://review.coreboot.org:29418/libgfxinit refs/changes/46/27146/1
diff --git a/gfxtest/hw-gfx-gma-gfx_test.adb b/gfxtest/hw-gfx-gma-gfx_test.adb
index 736b93d..fc1868f 100644
--- a/gfxtest/hw-gfx-gma-gfx_test.adb
+++ b/gfxtest/hw-gfx-gma-gfx_test.adb
@@ -20,8 +20,8 @@
Seed : constant := 12345;
package Rand_P is new Ada.Numerics.Discrete_Random (Natural);
- Gen : Rand_P.Generator;
- function Rand return Int32 is (Int32 (Rand_P.Random (Gen)));
+ function Rand (Gen : Rand_P.Generator)
+ return Int32 is (Int32 (Rand_P.Random (Gen)));
Start_X : constant := 0;
Start_Y : constant := 0;
@@ -341,7 +341,7 @@
Pipes : GMA.Pipe_Configs;
- procedure Prepare_Configs (Rotation : Rotation_Type)
+ procedure Prepare_Configs (Rotation : Rotation_Type; Gen : Rand_P.Generator)
is
use type HW.GFX.GMA.Port_Type;
@@ -366,7 +366,7 @@
end if;
end if;
Prepare_Cursors (Cursors (Pipe), Offset);
- Pipes (Pipe).Cursor := Cursors (Pipe) (Cursor_Size'Val (Rand mod 3));
+ Pipes (Pipe).Cursor := Cursors (Pipe) (Cursor_Size'Val (Rand (Gen) mod 3));
end loop;
GMA.Dump_Configs (Pipes);
@@ -427,18 +427,14 @@
Color : Pipe_Index;
Size : Cursor_Size;
end record;
- function Cursor_Rand return Int32 is (Rand mod 51 - 25);
- Cursor_Infos : array (Pipe_Index) of Cursor_Info :=
- (others =>
- (Color => Pipe_Index'Val (Rand mod 3),
- Size => Cursor_Size'Val (Rand mod 3),
- X_Velo => 3 * Cursor_Rand,
- Y_Velo => 3 * Cursor_Rand,
- others => Cursor_Rand));
+ function Cursor_Rand (Gen : Rand_P.Generator)
+ return Int32 is (Rand (Gen) mod 51 - 25);
+ Cursor_Infos : array (Pipe_Index) of Cursor_Info;
procedure Move_Cursors
(Pipes : in out GMA.Pipe_Configs;
- Time_MS : in Natural)
+ Time_MS : in Natural;
+ Gen : in Rand_P.Generator)
is
procedure Select_New_Cursor
(P : in Pipe_Index;
@@ -448,12 +444,12 @@
Old_C : constant Cursor_Type := C;
begin
-- change either size or color
- if Rand mod 2 = 0 then
+ if Rand (Gen) mod 2 = 0 then
CI.Color := Pipe_Index'Val
- ((Pipe_Index'Pos (CI.Color) + 1 + Rand mod 2) mod 3);
+ ((Pipe_Index'Pos (CI.Color) + 1 + Rand (Gen) mod 2) mod 3);
else
CI.Size := Cursor_Size'Val
- ((Cursor_Size'Pos (CI.Size) + 1 + Rand mod 2) mod 3);
+ ((Cursor_Size'Pos (CI.Size) + 1 + Rand (Gen) mod 2) mod 3);
end if;
C := Cursors (CI.Color) (CI.Size);
C.Center_X := Old_C.Center_X;
@@ -482,8 +478,8 @@
Update : Boolean := False;
begin
if Cnt mod 16 = 0 then
- CI.X_Acc := Cursor_Rand;
- CI.Y_Acc := Cursor_Rand;
+ CI.X_Acc := Cursor_Rand (Gen);
+ CI.Y_Acc := Cursor_Rand (Gen);
end if;
CI.X_Velo := CI.X_Velo + CI.X_Acc;
CI.Y_Velo := CI.Y_Velo + CI.Y_Acc;
@@ -537,6 +533,8 @@
Dev_Init,
Initialized : Boolean;
+ Gen : Rand_P.Generator;
+
function iopl (level : Interfaces.C.int) return Interfaces.C.int;
pragma Import (C, iopl, "iopl");
begin
@@ -584,7 +582,7 @@
if Initialized then
Backup_GTT;
- Prepare_Configs (Rotation);
+ Prepare_Configs (Rotation, Gen);
GMA.Update_Outputs (Pipes);
@@ -600,6 +598,14 @@
end loop;
end loop;
+ Cursor_Infos :=
+ (others =>
+ (Color => Pipe_Index'Val (Rand (Gen) mod 3),
+ Size => Cursor_Size'Val (Rand (Gen) mod 3),
+ X_Velo => 3 * Cursor_Rand (Gen),
+ Y_Velo => 3 * Cursor_Rand (Gen),
+ others => Cursor_Rand (Gen)));
+
if Delay_MS < Primary_Delay_MS + Secondary_Delay_MS then
Script_Cursors (Pipes, Delay_MS);
else -- getting bored?
@@ -609,10 +615,10 @@
New_Pipes : GMA.Pipe_Configs := Pipes;
function Rand_Div (Num : Position_Type) return Position_Type is
- (case Rand mod 4 is
- when 3 => Rand mod Num / 3,
- when 2 => Rand mod Num / 2,
- when 1 => Rand mod Num,
+ (case Rand (Gen) mod 4 is
+ when 3 => Rand (Gen) mod Num / 3,
+ when 2 => Rand (Gen) mod Num / 2,
+ when 1 => Rand (Gen) mod Num,
when others => 0);
begin
Rand_P.Reset (Gen, Seed);
@@ -645,10 +651,10 @@
end loop;
GMA.Dump_Configs (New_Pipes);
GMA.Update_Outputs (New_Pipes);
- Move_Cursors (New_Pipes, Secondary_Delay_MS);
+ Move_Cursors (New_Pipes, Secondary_Delay_MS, Gen);
Delay_MS := Delay_MS - Secondary_Delay_MS;
end loop;
- Move_Cursors (New_Pipes, Delay_MS);
+ Move_Cursors (New_Pipes, Delay_MS, Gen);
end;
end if;
--
To view, visit https://review.coreboot.org/27146
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: libgfxinit
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I63c72501fd7d49574042fc5a459d6751a776a1f1
Gerrit-Change-Number: 27146
Gerrit-PatchSet: 1
Gerrit-Owner: Nico Huber <nico.h at gmx.de>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20180617/fd4f454f/attachment-0001.html>
More information about the coreboot-gerrit
mailing list