[Bf-blender-cvs] [ae0f944a579] master: Fix Cycles viewport flickering

Sergey Sharybin noreply at git.blender.org
Thu Sep 30 11:46:07 CEST 2021


Commit: ae0f944a579c98af0095258d83665d1d5b3423da
Author: Sergey Sharybin
Date:   Thu Sep 30 11:44:53 2021 +0200
Branches: master
https://developer.blender.org/rBae0f944a579c98af0095258d83665d1d5b3423da

Fix Cycles viewport flickering

Caused by a lack of synchronization between update process which sets
clear flag and the draw code checking the flag outside of a lock.

===================================================================

M	intern/cycles/blender/blender_gpu_display.cpp

===================================================================

diff --git a/intern/cycles/blender/blender_gpu_display.cpp b/intern/cycles/blender/blender_gpu_display.cpp
index 456ca676cce..5a4567deac3 100644
--- a/intern/cycles/blender/blender_gpu_display.cpp
+++ b/intern/cycles/blender/blender_gpu_display.cpp
@@ -485,12 +485,6 @@ void BlenderGPUDisplay::do_draw(const GPUDisplayParams &params)
   /* See do_update_begin() for why no locking is required here. */
   const bool transparent = true;  // TODO(sergey): Derive this from Film.
 
-  if (texture_.need_clear) {
-    /* Texture is requested to be cleared and was not yet cleared.
-     * Do early return which should be equivalent of drawing all-zero texture. */
-    return;
-  }
-
   if (!gl_draw_resources_ensure()) {
     return;
   }
@@ -499,6 +493,16 @@ void BlenderGPUDisplay::do_draw(const GPUDisplayParams &params)
     gl_context_mutex_.lock();
   }
 
+  if (texture_.need_clear) {
+    /* Texture is requested to be cleared and was not yet cleared.
+     *
+     * Do early return which should be equivalent of drawing all-zero texture.
+     * Watchout for the lock though so that the clear happening during update is properly
+     * synchronized here. */
+    gl_context_mutex_.unlock();
+    return;
+  }
+
   if (gl_upload_sync_) {
     glWaitSync((GLsync)gl_upload_sync_, 0, GL_TIMEOUT_IGNORED);
   }



More information about the Bf-blender-cvs mailing list