diff options
Diffstat (limited to 'intern/cycles/device')
-rw-r--r-- | intern/cycles/device/device_cuda.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/intern/cycles/device/device_cuda.cpp b/intern/cycles/device/device_cuda.cpp index 4ab3cb9da75..14e3ddc8c7b 100644 --- a/intern/cycles/device/device_cuda.cpp +++ b/intern/cycles/device/device_cuda.cpp @@ -1567,6 +1567,8 @@ public: 0, 0, args, 0)); unmap_pixels((rgba_byte)? rgba_byte: rgba_half); + + cuda_assert(cuCtxSynchronize()); } void shader(DeviceTask& task) @@ -1928,10 +1930,12 @@ public: /* Load texture info. */ load_texture_info(); + /* Synchronize all memory copies before executing task. */ + cuda_assert(cuCtxSynchronize()); + if(task.type == DeviceTask::FILM_CONVERT) { /* must be done in main thread due to opengl access */ film_convert(task, task.buffer, task.rgba_byte, task.rgba_half); - cuda_assert(cuCtxSynchronize()); } else { task_pool.push(new CUDADeviceTask(this, task)); |