From dde346ca9fc46c89b42e39c9ebba4e4012db220b Mon Sep 17 00:00:00 2001 From: Jason Fielder Date: Tue, 31 Oct 2023 15:53:32 +0100 Subject: [PATCH] FIx #114286: Resolve ghosting artifact in workbench in Metal Missing GPU flush added between workbench render frames to ensure GPU command buffer does not submit all frames in one go. Authored by Apple: Michael Parkin-White Co-authored-by: Michael Parkin-White Pull Request: https://projects.blender.org/blender/blender/pulls/114328 --- source/blender/draw/engines/workbench/workbench_engine.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/blender/draw/engines/workbench/workbench_engine.cc b/source/blender/draw/engines/workbench/workbench_engine.cc index 667a381d2f5..269e2686956 100644 --- a/source/blender/draw/engines/workbench/workbench_engine.cc +++ b/source/blender/draw/engines/workbench/workbench_engine.cc @@ -781,6 +781,9 @@ static void workbench_render_to_image(void *vedata, /* Perform render step between samples to allow * flushing of freed GPUBackend resources. */ + if (GPU_backend_get_type() == GPU_BACKEND_METAL) { + GPU_flush(); + } GPU_render_step(); GPU_FINISH_DELIMITER(); } while (ved->instance->scene_state.sample + 1 < ved->instance->scene_state.samples_len);