Cycles OSL minor optimizations: recycle shading context, don't do memory
[blender.git] / intern / cycles / kernel / kernel_types.h
index e3a766e56b10bc7203c1a91804201ea52c23841a..a0673f55681c1be7ea943befc2abc04928b7d07e 100644 (file)
@@ -379,6 +379,18 @@ typedef struct ShaderClosure {
 #endif
 } ShaderClosure;
 
 #endif
 } ShaderClosure;
 
+/* Shader Context
+ *
+ * For OSL we recycle a fixed number of contexts for speed */
+
+typedef enum ShaderContext {
+       SHADER_CONTEXT_MAIN = 0,
+       SHADER_CONTEXT_INDIRECT = 1,
+       SHADER_CONTEXT_EMISSION = 2,
+       SHADER_CONTEXT_SHADOW = 3,
+       SHADER_CONTEXT_NUM = 4
+} ShaderContext;
+
 /* Shader Data
  *
  * Main shader state at a point on the surface or in a volume. All coordinates
 /* Shader Data
  *
  * Main shader state at a point on the surface or in a volume. All coordinates
@@ -466,11 +478,6 @@ typedef struct ShaderData {
        /* Closure data, with a single sampled closure for low memory usage */
        ShaderClosure closure;
 #endif
        /* Closure data, with a single sampled closure for low memory usage */
        ShaderClosure closure;
 #endif
-
-#ifdef __OSL__
-       /* OSL context */
-       void *osl_ctx;
-#endif
 } ShaderData;
 
 /* Constrant Kernel Data
 } ShaderData;
 
 /* Constrant Kernel Data