Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2017-11-01 23:02:28 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2017-11-05 22:48:33 +0300
commit8a72be7697f8fbfc8cb6cc9f3df049104e41d4a6 (patch)
treec8997adcc23053eb6b4cfb7f499581644b23f61e /intern/cycles/kernel/kernel_types.h
parentc571be4e05788b8d3447a0bfe59942ebb4464750 (diff)
Cycles: reduce closure memory usage for emission/shadow shader data.
With a Titan Xp, reduces path trace local memory from 1092MB to 840MB. Benchmark performance was within 1% with both RX 480 and Titan Xp. Original patch was implemented by Sergey. Differential Revision: https://developer.blender.org/D2249
Diffstat (limited to 'intern/cycles/kernel/kernel_types.h')
-rw-r--r--intern/cycles/kernel/kernel_types.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/intern/cycles/kernel/kernel_types.h b/intern/cycles/kernel/kernel_types.h
index cac3ef226f9..6d177816a98 100644
--- a/intern/cycles/kernel/kernel_types.h
+++ b/intern/cycles/kernel/kernel_types.h
@@ -984,7 +984,7 @@ typedef ccl_addr_space struct ShaderData {
/* Closure data, we store a fixed array of closures */
int num_closure;
- int num_closure_extra;
+ int num_closure_left;
float randb_closure;
float3 svm_closure_weight;
@@ -997,6 +997,11 @@ typedef ccl_addr_space struct ShaderData {
struct ShaderClosure closure[MAX_CLOSURE];
} ShaderData;
+typedef ccl_addr_space struct ShaderDataTinyStorage {
+ char pad[sizeof(ShaderData) - sizeof(ShaderClosure) * MAX_CLOSURE];
+} ShaderDataTinyStorage;
+#define AS_SHADER_DATA(shader_data_tiny_storage) ((ShaderData*)shader_data_tiny_storage)
+
/* Path State */
#ifdef __VOLUME__