diff options
author | Mai Lavelle <mai.lavelle@gmail.com> | 2017-03-04 14:29:01 +0300 |
---|---|---|
committer | Mai Lavelle <mai.lavelle@gmail.com> | 2017-03-08 09:31:30 +0300 |
commit | 306034790fb75ca2c182d55132287cc0ed4b9c2f (patch) | |
tree | 272a582174d84ebcb25c0bf3a4922d29b6c0b96f /intern/cycles/device/device_split_kernel.h | |
parent | 997e345bd25bf28a8a5d67d5ffcb5b70ff52ecdd (diff) |
Cycles: Calculate size of split state buffer kernel side
By calculating the size of the state buffer in the kernel rather than the host
less code is needed and the size actually reflects the requested features.
Will also be a little faster in some cases because of larger global work size.
Diffstat (limited to 'intern/cycles/device/device_split_kernel.h')
-rw-r--r-- | intern/cycles/device/device_split_kernel.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/intern/cycles/device/device_split_kernel.h b/intern/cycles/device/device_split_kernel.h index 1c6a2709cf2..cc3e1aa26ae 100644 --- a/intern/cycles/device/device_split_kernel.h +++ b/intern/cycles/device/device_split_kernel.h @@ -100,7 +100,8 @@ public: device_memory& kgbuffer, device_memory& kernel_data); - size_t max_elements_for_max_buffer_size(size_t max_buffer_size, size_t passes_size); + virtual size_t state_buffer_size(device_memory& kg, device_memory& data, size_t num_threads) = 0; + size_t max_elements_for_max_buffer_size(device_memory& kg, device_memory& data, size_t max_buffer_size); virtual bool enqueue_split_kernel_data_init(const KernelDimensions& dim, RenderTile& rtile, @@ -115,7 +116,7 @@ public: virtual SplitKernelFunction* get_split_kernel_function(string kernel_name, const DeviceRequestedFeatures&) = 0; virtual int2 split_kernel_local_size() = 0; - virtual int2 split_kernel_global_size(DeviceTask *task) = 0; + virtual int2 split_kernel_global_size(device_memory& kg, device_memory& data, DeviceTask *task) = 0; }; CCL_NAMESPACE_END |