结构优化
This commit is contained in:
@@ -9,21 +9,22 @@
|
||||
#include <string>
|
||||
#include <thread>
|
||||
#include "renderive/renderable/Renderable.hpp"
|
||||
#include "renderive/renderable/Renderable_Test_Harness.hpp"
|
||||
#include "renderive/scene/Scene.hpp"
|
||||
#include "Scene_Test_Helpers.hpp"
|
||||
|
||||
namespace {
|
||||
|
||||
class Pipeline_Renderable : public Renderable_Base {
|
||||
class Pipeline_Renderable : public Renderable_Test_Harness {
|
||||
public:
|
||||
explicit Pipeline_Renderable(bool cached = false)
|
||||
: Renderable_Base({.cache_enabled = cached}) {}
|
||||
: Renderable_Test_Harness({.cache_enabled = cached}) {}
|
||||
std::function<void()> prepare_action;
|
||||
std::function<void()> paint_action;
|
||||
std::atomic<int> prepare_count{};
|
||||
std::atomic<int> paint_count{};
|
||||
protected:
|
||||
void build_prepare_graph(Renderable_Graph_Builder& builder) override {
|
||||
void build_prepare_graph_for_test(Renderable_Graph_Builder& builder) override {
|
||||
builder.emplace("prepare", "Prepare",
|
||||
[this](const Prepare_Render_Context&) {
|
||||
++prepare_count;
|
||||
@@ -31,7 +32,7 @@ protected:
|
||||
prepare_action();
|
||||
});
|
||||
}
|
||||
void build_paint_graph(Renderable_Graph_Builder& builder) override {
|
||||
void build_paint_graph_for_test(Renderable_Graph_Builder& builder) override {
|
||||
const auto paint = builder.emplace(
|
||||
"paint", "Paint",
|
||||
[this](const Paint_Render_Context&) {
|
||||
@@ -43,18 +44,18 @@ protected:
|
||||
}
|
||||
};
|
||||
|
||||
class Dynamic_Renderable : public Renderable_Base {
|
||||
class Dynamic_Renderable : public Renderable_Test_Harness {
|
||||
public:
|
||||
explicit Dynamic_Renderable() : Renderable_Base() {}
|
||||
explicit Dynamic_Renderable() = default;
|
||||
void set_chunk_count(std::size_t count) {
|
||||
chunk_count_ = count;
|
||||
rebuild_render_graph();
|
||||
rebuild_render_graph_for_test();
|
||||
}
|
||||
std::shared_ptr<const Renderable_Graph> graph_snapshot() {
|
||||
return render_graph();
|
||||
return render_graph_for_test();
|
||||
}
|
||||
protected:
|
||||
void build_prepare_graph(Renderable_Graph_Builder& builder) override {
|
||||
void build_prepare_graph_for_test(Renderable_Graph_Builder& builder) override {
|
||||
const auto root = builder.emplace("prepare", "Prepare",
|
||||
[](const Prepare_Render_Context&) {});
|
||||
for (std::size_t index = 0; index < chunk_count_; ++index) {
|
||||
@@ -97,8 +98,8 @@ TEST(render_plan_execution_test, dependency_edges_connect_prepare_only_and_layer
|
||||
with_attach_builder(scene, [&](auto& attach) {
|
||||
attach.attach(parent);
|
||||
attach.attach(child);
|
||||
attach.set_parent(Scene_Base::Relationship::dependency, child, parent);
|
||||
attach.set_parent(Scene_Base::Relationship::display, child, parent);
|
||||
attach.set_dependency_parent(child, parent);
|
||||
attach.set_display_parent(child, parent);
|
||||
});
|
||||
scene.render();
|
||||
scene.wait_for_render();
|
||||
@@ -169,7 +170,7 @@ TEST(render_plan_execution_test, dependent_prepare_does_not_wait_for_dependency_
|
||||
with_attach_builder(scene, [&](auto& attach) {
|
||||
attach.attach(parent);
|
||||
attach.attach(child);
|
||||
attach.set_parent(Scene_Base::Relationship::dependency, child, parent);
|
||||
attach.set_dependency_parent(child, parent);
|
||||
});
|
||||
scene.render();
|
||||
{
|
||||
@@ -195,8 +196,8 @@ TEST(render_plan_execution_test, prepare_and_paint_cache_validity_are_independen
|
||||
attach_initial(scene, renderable);
|
||||
scene.render();
|
||||
scene.wait_for_render();
|
||||
EXPECT_TRUE(renderable->prepare_cache_valid());
|
||||
EXPECT_TRUE(renderable->paint_cache_valid());
|
||||
EXPECT_TRUE(renderable->prepare_cache_valid_for_test());
|
||||
EXPECT_TRUE(renderable->paint_cache_valid_for_test());
|
||||
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;
|
||||
@@ -213,9 +214,9 @@ TEST(render_plan_execution_test, prepare_and_paint_cache_validity_are_independen
|
||||
value.kind != Render_Node_Kind::composite;
|
||||
}), 0);
|
||||
|
||||
renderable->invalidate_paint();
|
||||
EXPECT_TRUE(renderable->prepare_cache_valid());
|
||||
EXPECT_FALSE(renderable->paint_cache_valid());
|
||||
renderable->invalidate_paint_for_test();
|
||||
EXPECT_TRUE(renderable->prepare_cache_valid_for_test());
|
||||
EXPECT_FALSE(renderable->paint_cache_valid_for_test());
|
||||
scene.render();
|
||||
scene.wait_for_render();
|
||||
const auto paint_plan = scene.render_plan_snapshot();
|
||||
@@ -228,9 +229,9 @@ TEST(render_plan_execution_test, prepare_and_paint_cache_validity_are_independen
|
||||
value.kind == Render_Node_Kind::prepare;
|
||||
}), 0);
|
||||
|
||||
renderable->invalidate_prepare();
|
||||
EXPECT_FALSE(renderable->prepare_cache_valid());
|
||||
EXPECT_FALSE(renderable->paint_cache_valid());
|
||||
renderable->invalidate_prepare_for_test();
|
||||
EXPECT_FALSE(renderable->prepare_cache_valid_for_test());
|
||||
EXPECT_FALSE(renderable->paint_cache_valid_for_test());
|
||||
scene.render();
|
||||
scene.wait_for_render();
|
||||
const auto rebuilt_plan = scene.render_plan_snapshot();
|
||||
@@ -242,7 +243,7 @@ TEST(render_plan_execution_test, prepare_and_paint_cache_validity_are_independen
|
||||
}
|
||||
|
||||
TEST(render_plan_execution_test, logical_node_ids_are_stable_and_retired_ids_are_never_reused) {
|
||||
Scene_Base scene;
|
||||
Scene2D_Context<> scene;
|
||||
auto renderable = renderive_Owner<Dynamic_Renderable>::make();
|
||||
attach_initial(scene, renderable);
|
||||
const auto first = renderable->graph_snapshot();
|
||||
|
||||
Reference in New Issue
Block a user