改进
This commit is contained in:
@@ -54,11 +54,12 @@ TEST(render_dag_test, one_graph_assigns_dense_execution_slots_and_versions_only_
|
||||
changed_graph.edges.push_back({100, 101});
|
||||
const auto changed = history.publish(std::move(changed_graph));
|
||||
EXPECT_GT(changed->version, first->version);
|
||||
const auto reused = history.publish(make_parallel_graph());
|
||||
EXPECT_EQ(reused, first);
|
||||
EXPECT_EQ(history.current(), first);
|
||||
const auto restored = history.publish(make_parallel_graph());
|
||||
EXPECT_GT(restored->version, changed->version);
|
||||
EXPECT_EQ(history.current(), restored);
|
||||
EXPECT_EQ(history.find(first->version), first);
|
||||
EXPECT_EQ(history.find(changed->version), changed);
|
||||
EXPECT_EQ(history.find(restored->version), restored);
|
||||
}
|
||||
|
||||
TEST(render_dag_test, analysis_derives_wait_critical_path_and_parallel_overlap_from_frame_slots) {
|
||||
|
||||
@@ -191,7 +191,7 @@ TEST(render_plan_execution_test, dependent_prepare_does_not_wait_for_dependency_
|
||||
}
|
||||
#endif
|
||||
|
||||
TEST(render_plan_execution_test, prepare_and_paint_cache_validity_are_independent_and_prune_nodes) {
|
||||
TEST(render_plan_execution_test, prepare_and_paint_cache_validity_do_not_recompile_render_plan) {
|
||||
Scene2D_Context<> scene;
|
||||
auto renderable = renderive_Owner<Pipeline_Renderable>::make(true);
|
||||
attach_initial(scene, renderable);
|
||||
@@ -199,6 +199,8 @@ TEST(render_plan_execution_test, prepare_and_paint_cache_validity_are_independen
|
||||
scene.wait_for_render();
|
||||
EXPECT_TRUE(renderable->prepare_cache_valid_for_test());
|
||||
EXPECT_TRUE(renderable->paint_cache_valid_for_test());
|
||||
EXPECT_EQ(renderable->prepare_count.load(), 1);
|
||||
EXPECT_EQ(renderable->paint_count.load(), 1);
|
||||
const auto first_plan = scene.render_plan_snapshot();
|
||||
const Render_Node_Id prepare_id = node(*first_plan, renderable->renderable_id(),
|
||||
Render_Node_Kind::prepare).node_id;
|
||||
@@ -208,12 +210,13 @@ TEST(render_plan_execution_test, prepare_and_paint_cache_validity_are_independen
|
||||
scene.render();
|
||||
scene.wait_for_render();
|
||||
const auto cached_plan = scene.render_plan_snapshot();
|
||||
EXPECT_GT(cached_plan->version, first_plan->version);
|
||||
EXPECT_EQ(std::count_if(cached_plan->graph.nodes.begin(), cached_plan->graph.nodes.end(),
|
||||
[&](const Render_Node& value) {
|
||||
return value.owner_id == renderable->renderable_id() &&
|
||||
value.kind != Render_Node_Kind::composite;
|
||||
}), 0);
|
||||
EXPECT_EQ(cached_plan, first_plan);
|
||||
EXPECT_EQ(renderable->prepare_count.load(), 1);
|
||||
EXPECT_EQ(renderable->paint_count.load(), 1);
|
||||
EXPECT_EQ(node(*cached_plan, renderable->renderable_id(), Render_Node_Kind::prepare).node_id,
|
||||
prepare_id);
|
||||
EXPECT_EQ(node(*cached_plan, renderable->renderable_id(), Render_Node_Kind::paint).node_id,
|
||||
paint_id);
|
||||
|
||||
renderable->invalidate_paint_for_test();
|
||||
EXPECT_TRUE(renderable->prepare_cache_valid_for_test());
|
||||
@@ -221,14 +224,13 @@ TEST(render_plan_execution_test, prepare_and_paint_cache_validity_are_independen
|
||||
scene.render();
|
||||
scene.wait_for_render();
|
||||
const auto paint_plan = scene.render_plan_snapshot();
|
||||
EXPECT_GT(paint_plan->version, cached_plan->version);
|
||||
EXPECT_EQ(paint_plan, first_plan);
|
||||
EXPECT_EQ(renderable->prepare_count.load(), 1);
|
||||
EXPECT_EQ(renderable->paint_count.load(), 2);
|
||||
EXPECT_EQ(node(*paint_plan, renderable->renderable_id(), Render_Node_Kind::prepare).node_id,
|
||||
prepare_id);
|
||||
EXPECT_EQ(node(*paint_plan, renderable->renderable_id(), Render_Node_Kind::paint).node_id,
|
||||
paint_id);
|
||||
EXPECT_EQ(std::count_if(paint_plan->graph.nodes.begin(), paint_plan->graph.nodes.end(),
|
||||
[&](const Render_Node& value) {
|
||||
return value.owner_id == renderable->renderable_id() &&
|
||||
value.kind == Render_Node_Kind::prepare;
|
||||
}), 0);
|
||||
|
||||
renderable->invalidate_prepare_for_test();
|
||||
EXPECT_FALSE(renderable->prepare_cache_valid_for_test());
|
||||
@@ -236,7 +238,9 @@ TEST(render_plan_execution_test, prepare_and_paint_cache_validity_are_independen
|
||||
scene.render();
|
||||
scene.wait_for_render();
|
||||
const auto rebuilt_plan = scene.render_plan_snapshot();
|
||||
EXPECT_GT(rebuilt_plan->version, paint_plan->version);
|
||||
EXPECT_EQ(rebuilt_plan, first_plan);
|
||||
EXPECT_EQ(renderable->prepare_count.load(), 2);
|
||||
EXPECT_EQ(renderable->paint_count.load(), 3);
|
||||
EXPECT_EQ(node(*rebuilt_plan, renderable->renderable_id(), Render_Node_Kind::prepare).node_id,
|
||||
prepare_id);
|
||||
EXPECT_EQ(node(*rebuilt_plan, renderable->renderable_id(), Render_Node_Kind::paint).node_id,
|
||||
|
||||
Reference in New Issue
Block a user