February 22, 2017, 14:47 (GMT) |
Cycles: OpenCL split kernel refactor This does a few things at once: - Refactors host side split kernel logic into a new device agnostic class `DeviceSplitKernel`. - Removes tile splitting, a new work pool implementation takes its place and allows as many threads as will fit in memory regardless of tile size, which can give performance gains. - Refactors split state buffers into one buffer, as well as reduces the number of arguments passed to kernels. Means there's less code to deal with overall. - Moves kernel logic out of OpenCL kernel files so they can later be used by other device types. - Replaced OpenCL specific APIs with new generic versions - Tiles can now be seen updating during rendering |
February 22, 2017, 14:30 (GMT) |
Cycles: Add more atomic operations |
February 22, 2017, 14:30 (GMT) |
Cycles: Add OpenCL kernel for zeroing memory buffers Transferring memory to the device was very slow and there's really no need when only zeroing a buffer. |
February 22, 2017, 14:30 (GMT) |
Cycles: Expose passes size to device tasks This is needed so devices can know the size of a tile buffer before any tiles are acquired. |
February 22, 2017, 14:30 (GMT) |
Cycles: Allow device_memory to be used directly This is useful for when theres no host side memory attched to the buffer |
|