勉强完成延迟很高

This commit is contained in:
2026-08-23 23:11:40 +08:00
parent 3938e72bb7
commit 933ff2ec08
43 changed files with 4294 additions and 1168 deletions
+7
View File
@@ -19,10 +19,17 @@ struct Render_Frame::Private {
std::array<std::atomic_uint64_t, measurement_count> measurements{}; /* 每种原始耗时首次记录值的加一编码。 */
};
Render_Frame::Render_Frame(Frame_Identity identity) : d(std::make_unique<Private>()) {
begin(identity);
}
void Render_Frame::begin(Frame_Identity identity) noexcept {
d->identity = identity;
d->created_at = std::chrono::steady_clock::now();
const auto system_now = std::chrono::system_clock::now().time_since_epoch();
d->created_time_unix_ns = static_cast<std::uint64_t>(std::chrono::duration_cast<std::chrono::nanoseconds>(system_now).count());
for (auto& marker : d->markers)
marker.store(0, std::memory_order_relaxed);
for (auto& measurement : d->measurements)
measurement.store(0, std::memory_order_relaxed);
d->markers[static_cast<std::size_t>(Frame_Trace_Marker::created)].store(encode_present_value(0), std::memory_order_relaxed);
}
Render_Frame::~Render_Frame() = default;
+4 -6
View File
@@ -26,11 +26,7 @@ enum class Frame_Trace_Marker : std::uint8_t {
scene_render_finished,
callback_started,
callback_finished,
video_encode_queued,
video_encode_started,
video_encode_finished,
stream_publish_started,
stream_publish_finished,
frame_ready,
count
};
enum class Frame_Trace_Measurement : std::uint8_t {
@@ -44,7 +40,6 @@ enum class Frame_Trace_Measurement : std::uint8_t {
gpu_copy_ns,
gpu_total_ns,
readback_ns,
stream_publish_tail_ns,
count
};
struct Frame_Identity {
@@ -69,6 +64,9 @@ public:
void record(Frame_Trace_Measurement measurement, std::uint64_t value_ns) noexcept;
[[nodiscard]] std::vector<Frame_Trace_Point> trace_points() const;
[[nodiscard]] std::vector<Frame_Trace_Value> trace_values() const;
protected:
/* 物理帧槽再次承载新逻辑帧时,重建其唯一身份和诊断时间原点。 */
void begin(Frame_Identity identity) noexcept;
private:
struct Private;
std::unique_ptr<Private> d; /* 帧身份、时钟原点与原子诊断槽位的唯一所有权。 */