闪烁问题解决

This commit is contained in:
2026-08-02 20:25:59 +08:00
parent 36d63efc7b
commit 7316f391d0
12 changed files with 381 additions and 34 deletions
@@ -84,6 +84,7 @@ Render_Frame_Surface Explicit_Frame_Flow::begin_render_frame() {
if (render_job_active.exchange(true, std::memory_order_acq_rel))
return {};
auto output = std::make_shared<Render_Output>();
output->render_complete.store(false, std::memory_order_release);
auto handle = std::make_unique<Explicit_Render_Surface_Handle>(output);
auto* output_pointer = output.get();
std::uint64_t input_version = edit_version.load(std::memory_order_acquire);
@@ -107,6 +108,17 @@ Render_Surface_Publish_Result Explicit_Frame_Flow::publish_rendered_frame(Render
render_job_active.store(false, std::memory_order_release);
return result;
}
if (!handle->output->render_complete.load(std::memory_order_acquire)
|| !handle->output->metadata
|| !handle->output->metadata->render_end_ns
|| handle->output->image.empty()) {
if (handle->output->metadata)
handle->output->metadata->outcome = Frame_Outcome::Publish_Dropped;
result.dropped_frame_record = handle->output->metadata;
supersede_update_states(handle->output->presented_update_states);
render_job_active.store(false, std::memory_order_release);
return result;
}
if (handle->output->metadata) {
handle->output->metadata->transition_12_ns = now_ns;
handle->output->metadata->ready_queue_wait_ns = now_ns > handle->output->metadata->render_end_ns ? now_ns - handle->output->metadata->render_end_ns : 0;