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
|
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))
|
#define CL_MEM_PTR(p) ((cl_mem)(uintptr_t)(p))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user