[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