[Bf-blender-cvs] [222b96e5c7d] master: Cycles: Detect out of memory before buffer allocation in OpenCL devices

Mai Lavelle noreply at git.blender.org
Thu Jul 6 02:35:43 CEST 2017


Commit: 222b96e5c7def0d9f29c96ddf30413c5d4fb3223
Author: Mai Lavelle
Date:   Wed Jul 5 19:44:18 2017 -0400
Branches: master
https://developer.blender.org/rB222b96e5c7def0d9f29c96ddf30413c5d4fb3223

Cycles: Detect out of memory before buffer allocation in OpenCL devices

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

M	intern/cycles/device/opencl/opencl_base.cpp

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

diff --git a/intern/cycles/device/opencl/opencl_base.cpp b/intern/cycles/device/opencl/opencl_base.cpp
index 223a5901197..cf2ef45205e 100644
--- a/intern/cycles/device/opencl/opencl_base.cpp
+++ b/intern/cycles/device/opencl/opencl_base.cpp
@@ -276,6 +276,20 @@ void OpenCLDeviceBase::mem_alloc(const char *name, device_memory& mem, MemoryTyp
 
 	size_t size = mem.memory_size();
 
+	/* check there is enough memory available for the allocation */
+	cl_ulong max_alloc_size = 0;
+	clGetDeviceInfo(cdDevice, CL_DEVICE_MAX_MEM_ALLOC_SIZE, sizeof(cl_ulong), &max_alloc_size, NULL);
+
+	if(size > max_alloc_size) {
+		string error = "Scene too complex to fit in available memory.";
+		if(name != NULL) {
+			error += string_printf(" (allocating buffer %s failed.)", name);
+		}
+		set_error(error);
+
+		return;
+	}
+
 	cl_mem_flags mem_flag;
 	void *mem_ptr = NULL;




More information about the Bf-blender-cvs mailing list