From 77d92d5e3bd6083280b1fb07a23330de2dc3f4b3 Mon Sep 17 00:00:00 2001 From: Rod Kay Date: Sun, 18 Aug 2024 11:31:26 +1000 Subject: [PATCH] opengl+gel.world: Performance mods. --- .../lean/renderer/opengl-renderer-lean.adb | 4 ++-- .../lean/renderer/opengl-renderer-lean.ads | 15 +++++++++++--- 4-high/gel/source/world/gel-world-client.adb | 10 +++++----- 4-high/gel/source/world/gel-world-server.adb | 4 ++-- 4-high/gel/source/world/gel-world.adb | 20 +++++++++---------- 5 files changed, 31 insertions(+), 22 deletions(-) diff --git a/3-mid/opengl/source/lean/renderer/opengl-renderer-lean.adb b/3-mid/opengl/source/lean/renderer/opengl-renderer-lean.adb index 02f1b2f..80428af 100644 --- a/3-mid/opengl/source/lean/renderer/opengl-renderer-lean.adb +++ b/3-mid/opengl/source/lean/renderer/opengl-renderer-lean.adb @@ -191,7 +191,7 @@ is is use Model; - free_Models : graphics_Models; + free_Models : graphics_Models with Convention => C; -- Convention C is for performance. Last : Natural; begin Self.obsolete_Models.fetch (free_Models, Last); @@ -208,7 +208,7 @@ is is use Impostor; - free_Impostors : Impostor_Set; + free_Impostors : Impostor_Set with Convention => C; -- Convention C is for performance. Last : Natural; begin Self.obsolete_Impostors.fetch (free_Impostors, Last); diff --git a/3-mid/opengl/source/lean/renderer/opengl-renderer-lean.ads b/3-mid/opengl/source/lean/renderer/opengl-renderer-lean.ads index 6a9f11f..697a661 100644 --- a/3-mid/opengl/source/lean/renderer/opengl-renderer-lean.ads +++ b/3-mid/opengl/source/lean/renderer/opengl-renderer-lean.ads @@ -208,10 +208,15 @@ private type visual_geometry_Couples_view is access all visual_geometry_Couples; - -- graphics_Models + --- graphics_Models -- - type graphics_Models is array (1 .. max_Visuals) of Model.view; + -- Convention C is for performance. + -- + + type graphics_Models is array (1 .. max_Visuals) of Model.view + with Convention => C; + protected type safe_Models @@ -228,7 +233,11 @@ private -- Impostors -- - type Impostor_Set is array (1 .. max_Visuals) of Impostor.view; + -- Convention C is for performance. + -- + + type Impostor_Set is array (1 .. max_Visuals) of Impostor.view + with Convention => C; protected type safe_Impostors diff --git a/4-high/gel/source/world/gel-world-client.adb b/4-high/gel/source/world/gel-world-client.adb index ad5eefe..2f7fbcc 100644 --- a/4-high/gel/source/world/gel-world-client.adb +++ b/4-high/gel/source/world/gel-world-client.adb @@ -546,8 +546,8 @@ is is use type remote.World.sequence_Id; - all_Sprites : constant id_Maps_of_sprite.Map := Self.all_Sprites.Map.fetch_all; - the_Id : gel.sprite_Id; + all_Sprites : id_Maps_of_sprite.Map renames Self.all_Sprites.Map.fetch_all; + the_Id : gel.sprite_Id; begin if seq_Id > Self.seq_Id.Value @@ -624,9 +624,9 @@ is use id_Maps_of_sprite; -- all_Sprites : constant id_Maps_of_sprite.Map := Self.id_Map_of_sprite; - all_Sprites : constant id_Maps_of_sprite.Map := Self.all_Sprites.Map.fetch_all; - Cursor : id_Maps_of_sprite.Cursor := all_Sprites.First; - the_Sprite : gel.Sprite.view; + all_Sprites : id_Maps_of_sprite.Map renames Self.all_Sprites.Map.fetch_all; + Cursor : id_Maps_of_sprite.Cursor := all_Sprites.First; + the_Sprite : gel.Sprite.view; begin while has_Element (Cursor) diff --git a/4-high/gel/source/world/gel-world-server.adb b/4-high/gel/source/world/gel-world-server.adb index 27f51b1..aa7a224 100644 --- a/4-high/gel/source/world/gel-world-server.adb +++ b/4-high/gel/source/world/gel-world-server.adb @@ -168,8 +168,8 @@ is use id_Maps_of_sprite, remote.World; - all_Sprites : constant id_Maps_of_sprite.Map := Self.all_Sprites.fetch; - Cursor : id_Maps_of_sprite.Cursor := all_Sprites.First; + all_Sprites : id_Maps_of_sprite.Map renames Self.all_Sprites.fetch; + Cursor : id_Maps_of_sprite.Cursor := all_Sprites.First; the_Sprite : gel.Sprite.view; diff --git a/4-high/gel/source/world/gel-world.adb b/4-high/gel/source/world/gel-world.adb index 1977b13..63016a4 100644 --- a/4-high/gel/source/world/gel-world.adb +++ b/4-high/gel/source/world/gel-world.adb @@ -615,8 +615,8 @@ is is use id_Maps_of_sprite; - all_Sprites : constant id_Maps_of_sprite.Map := Self.all_Sprites.fetch; - Cursor : id_Maps_of_sprite.Cursor := all_Sprites.First; + all_Sprites : id_Maps_of_sprite.Map renames Self.all_Sprites.fetch; + Cursor : id_Maps_of_sprite.Cursor := all_Sprites.First; the_sprite_Transforms : sprite_transform_Pairs (1 .. Natural (all_Sprites.Length)) := (others => <>); Count : Natural := 0; @@ -959,9 +959,9 @@ is declare use id_Maps_of_sprite; - all_Sprites : constant id_Maps_of_sprite.Map := Item'Class (Self).all_Sprites.fetch; - Cursor : id_Maps_of_sprite.Cursor := all_Sprites.First; - the_Sprite : Sprite.view; + all_Sprites : id_Maps_of_sprite.Map renames Item'Class (Self).all_Sprites.fetch; + Cursor : id_Maps_of_sprite.Cursor := all_Sprites.First; + the_Sprite : Sprite.view; begin while has_Element (Cursor) loop @@ -1036,11 +1036,11 @@ is use id_Maps_of_sprite, lace.Text; - all_Sprites : constant id_Maps_of_sprite.Map := Item'Class (Self).all_Sprites.fetch; - Cursor : id_Maps_of_sprite.Cursor := all_Sprites.First; - the_Pairs : remote.World.sprite_model_Pairs (1 .. Natural (all_Sprites.Length)); - the_Sprite : Sprite.view; - i : Natural := 0; + all_Sprites : id_Maps_of_sprite.Map renames Item'Class (Self).all_Sprites.fetch; + Cursor : id_Maps_of_sprite.Cursor := all_Sprites.First; + the_Pairs : remote.World.sprite_model_Pairs (1 .. Natural (all_Sprites.Length)); + the_Sprite : Sprite.view; + i : Natural := 0; begin while has_Element (Cursor) loop