]> git.tdb.fi Git - libs/game.git/commitdiff
Allow read-only accesses to a component to occur in parallel
authorMikko Rasa <tdb@tdb.fi>
Tue, 18 Mar 2025 13:48:17 +0000 (15:48 +0200)
committerMikko Rasa <tdb@tdb.fi>
Tue, 18 Mar 2025 13:48:17 +0000 (15:48 +0200)
source/game/systemscheduler.cpp

index 7cad3e18386f864d29fa014b127f4fe5c563c057..40a951eaa2fe2db6f23011e5e957a5b525592b82 100644 (file)
@@ -91,16 +91,14 @@ int SystemScheduler::get_data_order(const GraphNode &node1, const GraphNode &nod
                                continue;
 
                        int order = 0;
-                       // Read-only access to old data always comes first
-                       if(flags1==System::READ_OLD)
-                               order = -1;
-                       else if(flags2==System::READ_OLD)
-                               order = 1;
-                       // Read-only access to fresh data always comes last
-                       else if(flags1==System::READ_FRESH)
+                       // Read-only access to fresh data comes after any writes
+                       if(flags1==System::READ_FRESH && (flags2&System::WRITE))
                                order = 1;
-                       else if(flags2==System::READ_FRESH)
+                       else if(flags2==System::READ_FRESH && (flags1&System::WRITE))
                                order = -1;
+                       // Other read-only access situations are not ordered
+                       else if(!(flags1&System::WRITE) || !(flags2&System::WRITE))
+                               order = 0;
                        // Chained updates always come after non-chained writes
                        else if(flags1==System::CHAINED_UPDATE && (flags2==System::WRITE || flags2==System::UPDATE))
                                order = 1;