错误处理
This commit is contained in:
@@ -9,7 +9,7 @@ TEST(Renderive_Core2_Frame_Pipeline, ManualLifecycleSeparatesPrepareRefreshAndRe
|
||||
Plot_Scene plot({.frame_mode = Plot_Frame_Mode::Manual});
|
||||
plot.init();
|
||||
plot.set_viewport_size({96, 54});
|
||||
ASSERT_TRUE(plot.prepare_frame());
|
||||
ASSERT_EQ(plot.prepare_frame(), Plot_Render_Error::none);
|
||||
auto snapshot = plot.frame_status();
|
||||
EXPECT_EQ(snapshot.mode, Plot_Frame_Mode::Manual);
|
||||
EXPECT_EQ(snapshot.last_event, "prepared");
|
||||
@@ -18,14 +18,14 @@ TEST(Renderive_Core2_Frame_Pipeline, ManualLifecycleSeparatesPrepareRefreshAndRe
|
||||
EXPECT_EQ(snapshot.consumed_frame_count, 0u);
|
||||
EXPECT_EQ(snapshot.pending_frame_count, 1u);
|
||||
EXPECT_EQ(snapshot.latest_sequence, 1u);
|
||||
ASSERT_TRUE(plot.refresh_manual_frame());
|
||||
ASSERT_EQ(plot.refresh_manual_frame(), Plot_Render_Error::none);
|
||||
snapshot = plot.frame_status();
|
||||
EXPECT_EQ(snapshot.last_event, "refresh_succeeded");
|
||||
EXPECT_EQ(snapshot.produced_frame_count, 1u);
|
||||
EXPECT_EQ(snapshot.consumed_frame_count, 0u);
|
||||
EXPECT_EQ(snapshot.pending_frame_count, 0u);
|
||||
EXPECT_EQ(snapshot.latest_sequence, 1u);
|
||||
ASSERT_TRUE(plot.render_prepared_frame());
|
||||
ASSERT_EQ(plot.render_prepared_frame(), Plot_Render_Error::none);
|
||||
snapshot = plot.frame_status();
|
||||
EXPECT_EQ(snapshot.last_event, "rendered");
|
||||
EXPECT_EQ(snapshot.produced_frame_count, 1u);
|
||||
@@ -39,7 +39,7 @@ TEST(Renderive_Core2_Frame_Pipeline, HighFrequencyLowLatencyLifecycleExposesKern
|
||||
plot.init();
|
||||
plot.set_viewport_size({96, 54});
|
||||
EXPECT_EQ(plot.set_max_render_fps(1'000'000'000.0), Plot_Control_Error::none);
|
||||
ASSERT_TRUE(plot.prepare_frame());
|
||||
ASSERT_EQ(plot.prepare_frame(), Plot_Render_Error::none);
|
||||
auto snapshot = plot.frame_status();
|
||||
EXPECT_EQ(snapshot.last_event, "published");
|
||||
EXPECT_EQ(snapshot.limit_state, "frequency_limited");
|
||||
@@ -48,7 +48,7 @@ TEST(Renderive_Core2_Frame_Pipeline, HighFrequencyLowLatencyLifecycleExposesKern
|
||||
EXPECT_EQ(snapshot.produced_frame_count, 1u);
|
||||
EXPECT_EQ(snapshot.consumed_frame_count, 0u);
|
||||
EXPECT_EQ(snapshot.pending_frame_count, 1u);
|
||||
ASSERT_TRUE(plot.render_prepared_frame());
|
||||
ASSERT_EQ(plot.render_prepared_frame(), Plot_Render_Error::none);
|
||||
snapshot = plot.frame_status();
|
||||
EXPECT_EQ(snapshot.last_event, "lifecycle_completed");
|
||||
EXPECT_DOUBLE_EQ(snapshot.frequency_hz, 1'000'000'000.0);
|
||||
@@ -73,8 +73,8 @@ TEST(Renderive_Core2_Frame_Pipeline, LowLatencyConsumerFeedbackFlowsThroughCore2
|
||||
plot.set_viewport_size({96, 54});
|
||||
EXPECT_EQ(plot.set_max_render_fps(100.0), Plot_Control_Error::none);
|
||||
EXPECT_EQ(plot.set_consumer_feedback({40'000'000}), Plot_Control_Error::none);
|
||||
ASSERT_TRUE(plot.prepare_frame());
|
||||
ASSERT_TRUE(plot.render_prepared_frame());
|
||||
ASSERT_EQ(plot.prepare_frame(), Plot_Render_Error::none);
|
||||
ASSERT_EQ(plot.render_prepared_frame(), Plot_Render_Error::none);
|
||||
const auto snapshot = plot.frame_status();
|
||||
EXPECT_TRUE(snapshot.frequency_limit_enabled);
|
||||
EXPECT_TRUE(snapshot.consumer_feedback_enabled);
|
||||
@@ -96,8 +96,8 @@ TEST(Renderive_Core2_Frame_Pipeline, LowLatencyLimitsCanBeClearedIndependently)
|
||||
EXPECT_EQ(plot.set_consumer_feedback({40'000'000}), Plot_Control_Error::none);
|
||||
plot.clear_consumer_feedback();
|
||||
plot.clear_max_render_fps();
|
||||
ASSERT_TRUE(plot.prepare_frame());
|
||||
ASSERT_TRUE(plot.render_prepared_frame());
|
||||
ASSERT_EQ(plot.prepare_frame(), Plot_Render_Error::none);
|
||||
ASSERT_EQ(plot.render_prepared_frame(), Plot_Render_Error::none);
|
||||
const auto snapshot = plot.frame_status();
|
||||
EXPECT_FALSE(snapshot.frequency_limit_enabled);
|
||||
EXPECT_FALSE(snapshot.consumer_feedback_enabled);
|
||||
@@ -110,15 +110,15 @@ TEST(Renderive_Core2_Frame_Pipeline, LowLatencyReplacementRetiresOldFrameWithout
|
||||
Plot_Scene plot;
|
||||
plot.init();
|
||||
plot.set_viewport_size({64, 40});
|
||||
ASSERT_TRUE(plot.prepare_frame());
|
||||
ASSERT_TRUE(plot.prepare_frame());
|
||||
ASSERT_EQ(plot.prepare_frame(), Plot_Render_Error::none);
|
||||
ASSERT_EQ(plot.prepare_frame(), Plot_Render_Error::none);
|
||||
auto snapshot = plot.frame_status();
|
||||
EXPECT_EQ(snapshot.last_event, "published");
|
||||
EXPECT_EQ(snapshot.produced_frame_count, 2u);
|
||||
EXPECT_EQ(snapshot.dropped_frame_count, 1u);
|
||||
EXPECT_EQ(snapshot.pending_frame_count, 1u);
|
||||
EXPECT_EQ(snapshot.latest_sequence, 2u);
|
||||
ASSERT_TRUE(plot.render_prepared_frame());
|
||||
ASSERT_EQ(plot.render_prepared_frame(), Plot_Render_Error::none);
|
||||
snapshot = plot.frame_status();
|
||||
EXPECT_EQ(snapshot.last_event, "lifecycle_completed");
|
||||
EXPECT_EQ(snapshot.produced_frame_count, 2u);
|
||||
@@ -131,7 +131,7 @@ TEST(Renderive_Core2_Frame_Pipeline, LowLatencyDiscardAndEmptyRenderRemainObserv
|
||||
Plot_Scene plot;
|
||||
plot.init();
|
||||
plot.set_viewport_size({64, 40});
|
||||
ASSERT_TRUE(plot.prepare_frame());
|
||||
ASSERT_EQ(plot.prepare_frame(), Plot_Render_Error::none);
|
||||
ASSERT_TRUE(plot.discard_pending_frame());
|
||||
auto snapshot = plot.frame_status();
|
||||
EXPECT_EQ(snapshot.last_event, "manually_discarded");
|
||||
@@ -140,7 +140,7 @@ TEST(Renderive_Core2_Frame_Pipeline, LowLatencyDiscardAndEmptyRenderRemainObserv
|
||||
EXPECT_EQ(snapshot.dropped_frame_count, 1u);
|
||||
EXPECT_EQ(snapshot.pending_frame_count, 0u);
|
||||
EXPECT_EQ(snapshot.latest_sequence, 1u);
|
||||
EXPECT_FALSE(plot.render_prepared_frame());
|
||||
EXPECT_NE(plot.render_prepared_frame(), Plot_Render_Error::none);
|
||||
snapshot = plot.frame_status();
|
||||
EXPECT_EQ(snapshot.last_event, "swap_failed");
|
||||
EXPECT_EQ(snapshot.failed_operation_count, 1u);
|
||||
@@ -151,7 +151,7 @@ TEST(Renderive_Core2_Frame_Pipeline, ManualDiscardAndFailedRefreshUpdateObserver
|
||||
Plot_Scene plot({.frame_mode = Plot_Frame_Mode::Manual});
|
||||
plot.init();
|
||||
plot.set_viewport_size({64, 40});
|
||||
ASSERT_TRUE(plot.prepare_frame());
|
||||
ASSERT_EQ(plot.prepare_frame(), Plot_Render_Error::none);
|
||||
ASSERT_TRUE(plot.discard_pending_frame());
|
||||
auto snapshot = plot.frame_status();
|
||||
EXPECT_EQ(snapshot.last_event, "manually_discarded");
|
||||
@@ -160,7 +160,7 @@ TEST(Renderive_Core2_Frame_Pipeline, ManualDiscardAndFailedRefreshUpdateObserver
|
||||
EXPECT_EQ(snapshot.pending_frame_count, 0u);
|
||||
EXPECT_EQ(snapshot.latest_sequence, 1u);
|
||||
const auto last_paint_duration_ns = snapshot.paint_duration_ns;
|
||||
EXPECT_FALSE(plot.refresh_manual_frame());
|
||||
EXPECT_NE(plot.refresh_manual_frame(), Plot_Render_Error::none);
|
||||
snapshot = plot.frame_status();
|
||||
EXPECT_EQ(snapshot.last_event, "refresh_failed");
|
||||
EXPECT_EQ(snapshot.failed_operation_count, 1u);
|
||||
@@ -172,16 +172,16 @@ TEST(Renderive_Core2_Frame_Pipeline, PlaybackPreservesQueueDepthAndEmptyAcquireF
|
||||
Plot_Scene plot({.frame_mode = Plot_Frame_Mode::Playback});
|
||||
plot.init();
|
||||
plot.set_viewport_size({64, 40});
|
||||
ASSERT_TRUE(plot.prepare_frame());
|
||||
ASSERT_TRUE(plot.prepare_frame());
|
||||
ASSERT_TRUE(plot.prepare_frame());
|
||||
ASSERT_EQ(plot.prepare_frame(), Plot_Render_Error::none);
|
||||
ASSERT_EQ(plot.prepare_frame(), Plot_Render_Error::none);
|
||||
ASSERT_EQ(plot.prepare_frame(), Plot_Render_Error::none);
|
||||
auto snapshot = plot.frame_status();
|
||||
EXPECT_EQ(snapshot.produced_frame_count, 3u);
|
||||
EXPECT_EQ(snapshot.pending_frame_count, 3u);
|
||||
EXPECT_EQ(snapshot.latest_sequence, 3u);
|
||||
ASSERT_TRUE(plot.render_prepared_frame());
|
||||
ASSERT_TRUE(plot.render_prepared_frame());
|
||||
ASSERT_TRUE(plot.render_prepared_frame());
|
||||
ASSERT_EQ(plot.render_prepared_frame(), Plot_Render_Error::none);
|
||||
ASSERT_EQ(plot.render_prepared_frame(), Plot_Render_Error::none);
|
||||
ASSERT_EQ(plot.render_prepared_frame(), Plot_Render_Error::none);
|
||||
snapshot = plot.frame_status();
|
||||
EXPECT_EQ(snapshot.last_event, "rendered");
|
||||
EXPECT_EQ(snapshot.consumed_frame_count, 3u);
|
||||
@@ -190,7 +190,7 @@ TEST(Renderive_Core2_Frame_Pipeline, PlaybackPreservesQueueDepthAndEmptyAcquireF
|
||||
const auto last_paint_duration_ns = snapshot.paint_duration_ns;
|
||||
const auto last_render_duration_ns = snapshot.render_duration_ns;
|
||||
const auto last_queue_wait_ns = snapshot.queue_wait_ns;
|
||||
EXPECT_FALSE(plot.render_prepared_frame());
|
||||
EXPECT_NE(plot.render_prepared_frame(), Plot_Render_Error::none);
|
||||
snapshot = plot.frame_status();
|
||||
EXPECT_EQ(snapshot.last_event, "queue_empty");
|
||||
EXPECT_EQ(snapshot.failed_operation_count, 1u);
|
||||
@@ -204,13 +204,13 @@ TEST(Renderive_Core2_Frame_Pipeline, PlaybackFullCyclePreservesPreviouslyQueuedF
|
||||
Plot_Scene plot({.frame_mode = Plot_Frame_Mode::Playback});
|
||||
plot.init();
|
||||
plot.set_viewport_size({96, 54});
|
||||
ASSERT_TRUE(plot.prepare_frame());
|
||||
ASSERT_TRUE(plot.prepare_frame());
|
||||
ASSERT_TRUE(plot.prepare_frame());
|
||||
ASSERT_EQ(plot.prepare_frame(), Plot_Render_Error::none);
|
||||
ASSERT_EQ(plot.prepare_frame(), Plot_Render_Error::none);
|
||||
ASSERT_EQ(plot.prepare_frame(), Plot_Render_Error::none);
|
||||
auto snapshot = plot.frame_status();
|
||||
ASSERT_EQ(snapshot.pending_frame_count, 3u);
|
||||
ASSERT_EQ(snapshot.produced_frame_count, 3u);
|
||||
ASSERT_TRUE(plot.render_frame(true));
|
||||
ASSERT_EQ(plot.render_frame(true), Plot_Render_Error::none);
|
||||
snapshot = plot.frame_status();
|
||||
EXPECT_EQ(snapshot.mode, Plot_Frame_Mode::Playback);
|
||||
EXPECT_EQ(snapshot.last_event, "rendered");
|
||||
@@ -228,19 +228,19 @@ TEST(Renderive_Core2_Frame_Pipeline, EveryModeHonorsActiveDirtyAndForceRenderGat
|
||||
scene.init();
|
||||
scene.set_viewport_size({80, 45});
|
||||
EXPECT_FALSE(scene.view_active());
|
||||
EXPECT_FALSE(scene.render_frame(false));
|
||||
EXPECT_NE(scene.render_frame(false), Plot_Render_Error::none);
|
||||
EXPECT_EQ(scene.frame_status().observation_count, 0u);
|
||||
scene.activate_view();
|
||||
ASSERT_TRUE(scene.render_frame(false));
|
||||
ASSERT_EQ(scene.render_frame(false), Plot_Render_Error::none);
|
||||
const auto completed = scene.frame_status();
|
||||
EXPECT_EQ(completed.mode, mode);
|
||||
EXPECT_EQ(completed.consumed_frame_count, 1u);
|
||||
EXPECT_FALSE(scene.render_frame(false));
|
||||
EXPECT_NE(scene.render_frame(false), Plot_Render_Error::none);
|
||||
EXPECT_EQ(scene.frame_status().consumed_frame_count, 1u);
|
||||
scene.deactivate_view();
|
||||
scene.set_background_color(Color{8, 16, 24, 255});
|
||||
EXPECT_FALSE(scene.render_frame(false));
|
||||
ASSERT_TRUE(scene.render_frame(true));
|
||||
EXPECT_NE(scene.render_frame(false), Plot_Render_Error::none);
|
||||
ASSERT_EQ(scene.render_frame(true), Plot_Render_Error::none);
|
||||
EXPECT_EQ(scene.frame_status().consumed_frame_count, 2u);
|
||||
};
|
||||
verify(Plot_Frame_Mode::Manual);
|
||||
@@ -261,7 +261,7 @@ TEST(Renderive_Core2_Frame_Pipeline, FrequencyConfigurationRejectsInvalidValuesA
|
||||
Plot_Scene playback({.frame_mode = Plot_Frame_Mode::Playback});
|
||||
EXPECT_EQ(manual.set_max_render_fps(60.0), Plot_Control_Error::unsupported_frame_mode);
|
||||
EXPECT_EQ(playback.set_max_render_fps(60.0), Plot_Control_Error::unsupported_frame_mode);
|
||||
EXPECT_FALSE(playback.refresh_manual_frame());
|
||||
EXPECT_NE(playback.refresh_manual_frame(), Plot_Render_Error::none);
|
||||
EXPECT_FALSE(playback.discard_pending_frame());
|
||||
}
|
||||
} // namespace
|
||||
|
||||
Reference in New Issue
Block a user