展示优化

This commit is contained in:
2026-08-03 11:22:22 +08:00
parent 44cf49c0e2
commit 86c01e4cc5
15 changed files with 384 additions and 285 deletions
+8 -5
View File
@@ -69,8 +69,7 @@ public:
frame.pixel_height = static_cast<std::uint64_t>(size.height);
frame.viewport_version = context->viewport_version.load(std::memory_order_acquire);
frame.dirty_reason_mask = pending_dirty_reason_mask.exchange(0, std::memory_order_acq_rel);
frame.render_queue_wait_ns = submit_time > frame.render_role_enter_ns ? submit_time - frame.render_role_enter_ns : 0;
frame.render_begin_ns = submit_time;
frame.render_slot_idle_wait_ns = submit_time > frame.render_role_enter_ns ? submit_time - frame.render_role_enter_ns : 0;
auto job = std::make_shared<Frame_Render_Job>();
job->owner = shared_from_this();
job->generation = generation.load(std::memory_order_acquire);
@@ -138,7 +137,7 @@ public:
if (submitted)
return true;
frame.outcome = Frame_Outcome::Worker_Budget_Dropped;
frame.worker.rejected_task_count++;
frame.worker.rejected_topology_count++;
if (flow)
flow->discard_render_frame(std::move(job->frame_surface));
release_frame_views(job);
@@ -164,7 +163,9 @@ public:
if (!frame_job_valid(job))
return;
Frame_Lifecycle_Record& frame = *job->lifecycle;
frame.prepare_begin_ns = steady_now_ns();
std::uint64_t begin_ns = steady_now_ns();
frame.render_begin_ns = begin_ns;
frame.prepare_begin_ns = begin_ns;
job->prepared_output_count.store(0, std::memory_order_release);
}
void dispatch_prepare_subflow(const std::shared_ptr<Frame_Render_Job>& job, Render_Task_Subflow& subflow) {
@@ -231,8 +232,10 @@ public:
if (!job || !job->buffer || !job->lifecycle)
return;
Frame_Lifecycle_Record& frame = *job->lifecycle;
if (job->worker_stat)
if (job->worker_stat) {
frame.worker = *job->worker_stat;
frame.executor_queue_wait_ns = frame.worker.topology_queue_wait_total_ns;
}
bool valid_generation = job->generation == generation.load(std::memory_order_acquire);
bool valid_context = !destroying();
bool render_complete = job->buffer->render_complete.load(std::memory_order_acquire);