[Bf-blender-cvs] [15fd758bd63] master: Fix T51950: Abnormally long Cycles OpenCL GPU render times with certain panoramic camera settings

Lukas Stockner noreply at git.blender.org
Mon Jul 3 18:28:10 CEST 2017


Commit: 15fd758bd632fb37879b4c8cc3ff29f4305eae7e
Author: Lukas Stockner
Date:   Mon Jul 3 18:22:35 2017 +0200
Branches: master
https://developer.blender.org/rB15fd758bd632fb37879b4c8cc3ff29f4305eae7e

Fix T51950: Abnormally long Cycles OpenCL GPU render times with certain panoramic camera settings

The problem here was that when a "invalid" path is generated by the panoramic camera, it was tagged
as RAY_TO_REGENERATE with the intention of generating a new path in kernel_buffer_update.

However, since that state was not handled in kernel_queue_enqueue, kernel_buffer_update did not
process the path which resulted in an infinite loop.

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

M	intern/cycles/kernel/split/kernel_queue_enqueue.h

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

diff --git a/intern/cycles/kernel/split/kernel_queue_enqueue.h b/intern/cycles/kernel/split/kernel_queue_enqueue.h
index e2e841f36d3..66ce2dfb6f1 100644
--- a/intern/cycles/kernel/split/kernel_queue_enqueue.h
+++ b/intern/cycles/kernel/split/kernel_queue_enqueue.h
@@ -51,7 +51,8 @@ ccl_device void kernel_queue_enqueue(KernelGlobals *kg,
 	int queue_number = -1;
 
 	if(IS_STATE(kernel_split_state.ray_state, ray_index, RAY_HIT_BACKGROUND) ||
-	   IS_STATE(kernel_split_state.ray_state, ray_index, RAY_UPDATE_BUFFER)) {
+	   IS_STATE(kernel_split_state.ray_state, ray_index, RAY_UPDATE_BUFFER) ||
+	   IS_STATE(kernel_split_state.ray_state, ray_index, RAY_TO_REGENERATE)) {
 		queue_number = QUEUE_HITBG_BUFF_UPDATE_TOREGEN_RAYS;
 	}
 	else if(IS_STATE(kernel_split_state.ray_state, ray_index, RAY_ACTIVE) ||




More information about the Bf-blender-cvs mailing list