diff options
-rw-r--r-- | intern/cycles/blender/blender_gpu_display.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
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 ¶ms) /* 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 ¶ms) 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); } |