-
-
Notifications
You must be signed in to change notification settings - Fork 4.2k
Closed
Labels
A-ECSEntities, components, systems, and eventsEntities, components, systems, and eventsA-RenderingDrawing game state to the screenDrawing game state to the screenC-BugAn unexpected or incorrect behaviorAn unexpected or incorrect behaviorC-Code-QualityA section of code that is hard to understand or changeA section of code that is hard to understand or changeC-Tracking-IssueAn issue that collects information about a broad development initiativeAn issue that collects information about a broad development initiative
Description
@alfonsolage and I have made the system execution order ambiguity detector significantly more user-friendly in #4299.
As a result, I think it's now worth pushing towards internal determinism as a goal (for the reasons laid out in #2480).
At the time of writing, there are 54 pairs of ambiguities (full list in next comment), split across two stages: CoreStage::PostUpdate and RenderStage::Extract. These are most usefully divided into true positives (which represent genuine bugs and require explicit ordering) and false positives (which should either be explicitly ignored or have their data access tweaked).
True positives
-
flex_node_systemconflicts withparent_update_systemon ["Children"] -
ui_z_systemconflicts withparent_update_systemon ["Children"] -
camera_system<OrthographicProjection>conflicts withassign_lights_to_clusterson ["Camera"] -
camera_system<OrthographicProjection>conflicts withupdate_frusta<OrthographicProjection>on ["OrthographicProjection"] -
assign_lights_to_clustersconflicts with variousupdate_frustasystems on ["Frustum"] -
check_visibilityconflicts withupdate_directional_light_frustaon ["Frustum"]
False positives
-
change_window,play_queued_audio_system<AudioSource>andadd_clusters- None of these should be exclusive systems ([Merged by Bors] - Converted exclusive systems to parallel systems wherever possible #2774), but don't clash internally
-
text_system,image_node_system,camera_system,text_2d_system: clashing onAssets<Image>- we don't really care what order those run in.
-
camera_system<OrthographicProjection>conflicts withcamera_system<PerspectiveProjection>on ["Camera"] (and the same for update_frustra)- these queries should be disjoint
-
extract_camerasandextract_lightsconflict onVisibleEntities- this seems to just want stricter query filtering
- many extraction systems conflict on
RenderWorldextract_sprites,extract_clear_color,extract_cameras,extract_windows,extract_uinodes,extract_shaders,extract_text_uinodes,extract_text2dsprite,extract_sprite_events- these all seem to have disjoint data access, but because it's within a subworld, we can't represent this to the scheduler correctly
- [Merged by Bors] - Make
RenderStage::Extractrun on the render world #4402 should help address this, even though it's not the main goal
Metadata
Metadata
Assignees
Labels
A-ECSEntities, components, systems, and eventsEntities, components, systems, and eventsA-RenderingDrawing game state to the screenDrawing game state to the screenC-BugAn unexpected or incorrect behaviorAn unexpected or incorrect behaviorC-Code-QualityA section of code that is hard to understand or changeA section of code that is hard to understand or changeC-Tracking-IssueAn issue that collects information about a broad development initiativeAn issue that collects information about a broad development initiative