Blender Git Loki

Blender Git "cycles_split_kernel" branch commits.

Page: 5 / 5

October 26, 2016, 14:40 (GMT)
Cycles: Add CPU split kernels

This adds all split kernels for CPU devices besides the `data_init` kernel
which still needs to be written for CPU. While the kernels build and load
properly they don't do anything yet.
October 25, 2016, 15:36 (GMT)
Cycles: Replace OpenCL atomic functions with own versions
October 25, 2016, 15:36 (GMT)
Cycles: Replace OpenCL work item functions with own versions
October 25, 2016, 13:09 (GMT)
Cycles: Rearrange split kernel code to move all logic out of OpenCL kernel files

We need all logic in a place that can be used when building for other devices
besides OpenCL. This leaves things a little messy at the moment, code
deduplication and general clean up can happen later.
October 25, 2016, 12:49 (GMT)
Cycles: Add code to register kernel functions

Makes it easy to retrieve kernel functions for different architectures without
needing large ifdef chains everywhere.
October 25, 2016, 09:12 (GMT)
Cycles: Add missing check for split kernel build error
October 25, 2016, 08:56 (GMT)
Merge branch 'master' into cycles_split_kernel
October 24, 2016, 10:34 (GMT)
Cycles: Fix a few memory leaks in CPU split kernel
October 21, 2016, 16:15 (GMT)
Cycles: Begin implementing host side of CPU split kernel

Doesn't do anything yet, just getting things started.
October 21, 2016, 14:15 (GMT)
Cycles: Add debug flags to control usage of split kernel for CPU devices
October 21, 2016, 13:25 (GMT)
Cycles: Remove tile splitting logic for split kernel

This is a huge reduction in code that was very hard to work with. It will be
much easier to go forward now that it is gone.

Unfortunate downside to not having tile splitting anymore is if the tile size
is set too large the user could get an out of memory error. We will have to
fix this at some point, but for now getting the kernel to run on CPU is
more important.

Also at this point the host side of the split kernel is almost entirely
independent of the underlying device, so work on CPU implementation can
finally start.
October 20, 2016, 15:22 (GMT)
Cycles: Begin moving split kernel logic into own class

The new class `DeviceSplitKernel` will handle all logic for enqueueing of
kernels and memory memory management for the split kernel. Devices that
support the split kernel will create an instance of this class and call
its methods to run the split kernel.

There's still some work to do yet to make this device independent and to
deal with tile splitting.
October 18, 2016, 16:13 (GMT)
Cycles: Implement enqueue_split_kernel_data_init for OpenCL devices

The `enqueue_split_kernel_data_init()` function will allow each device type to
set up the various data buffers how ever they need to without concerning the
rest of the split kernel logic.
October 18, 2016, 14:59 (GMT)
Cycles: Add SplitKernelFunction with OpenCL implementation

SplitKernelFunction can represent a split kernel function for any device its
been implemented for. Currently this is only for OpenCL to simplify the
enqueueing of the split kernels and move another step closer to a split
kernel that can run on any device.
October 18, 2016, 10:20 (GMT)
Cycles: Replace use of cl_mem with device_memory in split kernel device

Working towards using only device agnostic types and methods in the host.
October 17, 2016, 12:51 (GMT)
Merge branch 'master' into cycles_split_kernel
October 17, 2016, 12:23 (GMT)
Cycles: Refactor so all split kernels have same signature

This is to set things up for supporting the split kernel on cpu and other
devices. By having the same signature for each kernel we can deduplicate
a lot of code without needing any trickery. The only kernel that doesn't
share this signature is the `data_init` kernel, which might end up being
different for each device type.
October 14, 2016, 13:48 (GMT)
Cycles: Simplify shared buffer and argument passing in split kernel

Adds a single buffer for storing and passing around data shared between kernels.
The idea is to have there be less code so things are easier to work with and
later deduplicate.

Benefits:
- reduces the number of buffers that need to be allocated and kept track of by
using a single buffer for data shared between kernels
- simplify passing of arguments to kernels by using a pointer in kernel
globals to point to shared data
- simplify calculation of shared data size

Things may need renaming / reorganizing but this is just to get things started.
October 10, 2016, 12:39 (GMT)
Cycles: Add comments to endif directives

`kernel_path.h` and `kernel_path_branched.h` have a lot of conditional code and it was kind of hard to read, things should be
better now.
Tehnyt: Miika HämäläinenViimeksi päivitetty: 07.11.2014 14:18MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021