Commit: 8bde154c71f2e8282148584a67ca72ea3e4d2f6d Author: Mai Lavelle Date: Wed Feb 22 04:24:59 2017 -0500 Branches: cycles_split_kernel https://developer.blender.org/rB8bde154c71f2e8282148584a67ca72ea3e4d2f6d
Revert "Cycles: Faster version of driver workaround for OpenCL" Was getting infrequent hangs, unfortunately we have to take the performance hit of clFinish for now. This reverts commit 122743e7f23f8df908bcd10322d39f951ebc83e2. =================================================================== M intern/cycles/device/opencl/opencl.h =================================================================== diff --git a/intern/cycles/device/opencl/opencl.h b/intern/cycles/device/opencl/opencl.h index 3f3fa50195..14e1db7a7a 100644 --- a/intern/cycles/device/opencl/opencl.h +++ b/intern/cycles/device/opencl/opencl.h @@ -28,28 +28,24 @@ CCL_NAMESPACE_BEGIN /* Define CYCLES_DISABLE_DRIVER_WORKAROUNDS to disable workaounds for testing */ #ifndef CYCLES_DISABLE_DRIVER_WORKAROUNDS -/* Work around AMD driver hangs by setting an event callback which seems to make commands - * finish completely for some reason. This is faster than doing clFinish after every call. - */ -static cl_event driver_workaround_event; -static void driver_workaround_event_callback_handler(cl_event event, cl_int, void*) { - clReleaseEvent(event); -} - +/* Work around AMD driver hangs by ensuring each command is finished before doing anything else. */ # undef clEnqueueNDRangeKernel # define clEnqueueNDRangeKernel(a, b, c, d, e, f, g, h, i) \ - CLEW_GET_FUN(__clewEnqueueNDRangeKernel)(a, b, c, d, e, f, g, h, &driver_workaround_event); \ - clSetEventCallback(driver_workaround_event, CL_SUBMITTED, driver_workaround_event_callback_handler, NULL); + clFinish(a); \ + CLEW_GET_FUN(__clewEnqueueNDRangeKernel)(a, b, c, d, e, f, g, h, i); \ + clFinish(a); # undef clEnqueueWriteBuffer # define clEnqueueWriteBuffer(a, b, c, d, e, f, g, h, i) \ - CLEW_GET_FUN(__clewEnqueueWriteBuffer)(a, b, c, d, e, f, g, h, &driver_workaround_event); \ - clSetEventCallback(driver_workaround_event, CL_SUBMITTED, driver_workaround_event_callback_handler, NULL); + clFinish(a); \ + CLEW_GET_FUN(__clewEnqueueWriteBuffer)(a, b, c, d, e, f, g, h, i); \ + clFinish(a); # undef clEnqueueReadBuffer # define clEnqueueReadBuffer(a, b, c, d, e, f, g, h, i) \ - CLEW_GET_FUN(__clewEnqueueReadBuffer)(a, b, c, d, e, f, g, h, &driver_workaround_event); \ - clSetEventCallback(driver_workaround_event, CL_SUBMITTED, driver_workaround_event_callback_handler, NULL); + clFinish(a); \ + CLEW_GET_FUN(__clewEnqueueReadBuffer)(a, b, c, d, e, f, g, h, i); \ + clFinish(a); #endif /* CYCLES_DISABLE_DRIVER_WORKAROUNDS */ #define CL_MEM_PTR(p) ((cl_mem)(uintptr_t)(p)) _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs