[Bf-blender-cvs] [6a18497] cycles_split_kernel: Cycles: Add a bit more error checking for split kernel

Mai Lavelle noreply at git.blender.org
Tue Dec 13 09:56:17 CET 2016


Commit: 6a1849752e01eaae80dcf3772b0e54486cfaf705
Author: Mai Lavelle
Date:   Thu Dec 8 23:03:45 2016 -0500
Branches: cycles_split_kernel
https://developer.blender.org/rB6a1849752e01eaae80dcf3772b0e54486cfaf705

Cycles: Add a bit more error checking for split kernel

This helps catch some memory issues and avoids some crashes, but still
need to figure out a way to handle this better.

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

M	intern/cycles/device/device_split_kernel.cpp

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

diff --git a/intern/cycles/device/device_split_kernel.cpp b/intern/cycles/device/device_split_kernel.cpp
index 872e21c..170ffc4 100644
--- a/intern/cycles/device/device_split_kernel.cpp
+++ b/intern/cycles/device/device_split_kernel.cpp
@@ -79,6 +79,10 @@ bool DeviceSplitKernel::path_trace(DeviceTask *task,
                                    RenderTile& tile,
                                    device_memory& kernel_data)
 {
+	if(device->have_error()) {
+		return false;
+	}
+
 	/* TODO(mai): should be easy enough to remove these variables from tile */
 	/* Buffer and rng_state offset calc. */
 	size_t offset_index = tile.offset + (tile.x + tile.y * tile.stride);
@@ -207,6 +211,10 @@ bool DeviceSplitKernel::path_trace(DeviceTask *task,
 		device->mem_alloc(split_data, MEM_READ_WRITE);
 	}
 
+	if(device->have_error()) {
+		return false;
+	}
+
 	if(!device->enqueue_split_kernel_data_init(KernelDimensions(global_size, local_size),
 	                                           tile,
 	                                           num_global_elements,
@@ -224,6 +232,9 @@ bool DeviceSplitKernel::path_trace(DeviceTask *task,
 	}
 
 #define ENQUEUE_SPLIT_KERNEL(name, global_size, local_size) \
+		if(device->have_error()) { \
+			return false; \
+		} \
 		if(!kernel_##name->enqueue(KernelDimensions(global_size, local_size), kgbuffer, kernel_data)) { \
 			return false; \
 		}




More information about the Bf-blender-cvs mailing list