Cycles: Workaround for driver hangs
Simple workaround for some issues we've been having with AMD drivers hanging and rendering systems unresponsive. Unfortunately this makes things a bit slower, but its better than having to do hard reboots. Will be removed when drivers have been fixed. Define CYCLES_DISABLE_DRIVER_WORKAROUNDS to disable for testing purposes.
This commit is contained in:
parent
230c00d872
commit
365a4239c5
@ -26,6 +26,27 @@
|
||||
|
||||
CCL_NAMESPACE_BEGIN
|
||||
|
||||
/* Define CYCLES_DISABLE_DRIVER_WORKAROUNDS to disable workaounds for testing */
|
||||
#ifndef CYCLES_DISABLE_DRIVER_WORKAROUNDS
|
||||
/* 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) \
|
||||
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) \
|
||||
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) \
|
||||
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))
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user