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 <brecht@blender.org>2020-03-24 03:27:38 +0300
committerBrecht Van Lommel <brecht@blender.org>2020-03-24 18:49:46 +0300
commit2bec6f1f06dff400d3b5abd08064ef05312a29bf (patch)
treefa29587da36fa7b9bb549d7779f7728d79fa42db /intern/cycles/kernel/svm/svm.h
parentf8a4fb43fba508958c4f0eb350e87149d464ac55 (diff)
Cycles: work around OpenCL performance regression after AOVs and vector rotate
We appear to be hitting some limit where adding any amount of code causes a significant performance regression, no matter what it does. To work around that a new node level was added. Ref T71479
Diffstat (limited to 'intern/cycles/kernel/svm/svm.h')
-rw-r--r--intern/cycles/kernel/svm/svm.h35
1 files changed, 19 insertions, 16 deletions
diff --git a/intern/cycles/kernel/svm/svm.h b/intern/cycles/kernel/svm/svm.h
index 2ce4456250f..0b2cbad4ff8 100644
--- a/intern/cycles/kernel/svm/svm.h
+++ b/intern/cycles/kernel/svm/svm.h
@@ -459,17 +459,6 @@ ccl_device_noinline void svm_eval_nodes(KernelGlobals *kg,
case NODE_IES:
svm_node_ies(kg, sd, stack, node, &offset);
break;
- case NODE_AOV_START:
- if (!svm_node_aov_check(state, buffer)) {
- return;
- }
- break;
- case NODE_AOV_COLOR:
- svm_node_aov_color(kg, sd, stack, node, buffer);
- break;
- case NODE_AOV_VALUE:
- svm_node_aov_value(kg, sd, stack, node, buffer);
- break;
#endif /* NODES_GROUP(NODE_GROUP_LEVEL_2) */
#if NODES_GROUP(NODE_GROUP_LEVEL_3)
@@ -522,11 +511,6 @@ ccl_device_noinline void svm_eval_nodes(KernelGlobals *kg,
case NODE_CLAMP:
svm_node_clamp(kg, sd, stack, node.y, node.z, node.w, &offset);
break;
-# if NODES_FEATURE(NODE_FEATURE_VOLUME)
- case NODE_TEX_VOXEL:
- svm_node_tex_voxel(kg, sd, stack, node, &offset);
- break;
-# endif /* NODES_FEATURE(NODE_FEATURE_VOLUME) */
# ifdef __SHADER_RAYTRACE__
case NODE_BEVEL:
svm_node_bevel(kg, sd, state, stack, node);
@@ -536,6 +520,25 @@ ccl_device_noinline void svm_eval_nodes(KernelGlobals *kg,
break;
# endif /* __SHADER_RAYTRACE__ */
#endif /* NODES_GROUP(NODE_GROUP_LEVEL_3) */
+
+#if NODES_GROUP(NODE_GROUP_LEVEL_4)
+# if NODES_FEATURE(NODE_FEATURE_VOLUME)
+ case NODE_TEX_VOXEL:
+ svm_node_tex_voxel(kg, sd, stack, node, &offset);
+ break;
+# endif /* NODES_FEATURE(NODE_FEATURE_VOLUME) */
+ case NODE_AOV_START:
+ if (!svm_node_aov_check(state, buffer)) {
+ return;
+ }
+ break;
+ case NODE_AOV_COLOR:
+ svm_node_aov_color(kg, sd, stack, node, buffer);
+ break;
+ case NODE_AOV_VALUE:
+ svm_node_aov_value(kg, sd, stack, node, buffer);
+ break;
+#endif /* NODES_GROUP(NODE_GROUP_LEVEL_4) */
case NODE_END:
return;
default: