前后端全部提交

This commit is contained in:
2026-08-21 01:30:17 +08:00
parent 70dedbe0ec
commit 26a89335b4
70 changed files with 752 additions and 284 deletions
+7 -3
View File
@@ -1,5 +1,6 @@
#include <render_3D/Render_3D.hpp>
#include <gtest/gtest.h>
#include <atomic>
#include <chrono>
#include <thread>
namespace aethera::render_3d {
@@ -55,12 +56,15 @@ TEST(Render_3D_Scene, Paint_Submits_Without_Waiting_For_Gpu) {
auto scene_result = typename Scene_Object::Builder(visual.get()).build();
ASSERT_TRUE(scene_result.has_value());
auto scene = std::move(scene_result).value();
std::atomic_bool frame_ready{};
std::shared_ptr<const Pixel_Frame> frame;
scene->set_frame_callback([&](std::shared_ptr<const Pixel_Frame> value) { frame = std::move(value); frame_ready.store(true, std::memory_order_release); });
const auto started = std::chrono::steady_clock::now();
EXPECT_EQ(scene->request_frame(), Render_Scene_3D::Request_Frame_Result::queued);
scene->render();
const auto submit_duration = std::chrono::steady_clock::now() - started;
EXPECT_LT(submit_duration, std::chrono::seconds(1));
for (std::size_t attempt = 0; attempt != 500 && !scene->latest_frame(); ++attempt) std::this_thread::sleep_for(std::chrono::milliseconds(10));
EXPECT_NE(scene->latest_frame(), nullptr);
for (std::size_t attempt = 0; attempt != 500 && !frame_ready.load(std::memory_order_acquire); ++attempt) std::this_thread::sleep_for(std::chrono::milliseconds(10));
EXPECT_NE(frame, nullptr);
}
catch (const std::exception& error) {
GTEST_SKIP() << "Vulkan/Datoviz unavailable: " << error.what();