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:
authorJeroen Bakker <j.bakker@atmind.nl>2019-03-13 14:31:48 +0300
committerJeroen Bakker <j.bakker@atmind.nl>2019-03-15 18:18:21 +0300
commit2f6257fd7fe305e3b226a8b505eb614bbeaf762a (patch)
treefba47f34d5bc5f10d50be92e5dd8b14fa9ecc9a9 /intern/cycles/kernel
parent62377431114411c50ededadf98fda284ec4061c5 (diff)
Cycles/OpenCL: Compile Kernels During Scene Update
The main goals of this change is faster starting when using foreground rendering. This patch will build kernels in parallel to the update process of the scene. When these optimized kernels are not available (yet) an AO kernel will be used. These AO kernels are fast to compile (3-7 seconds) and can be reused by all scenes. When the final kernels become available we will switch to these kernels. In background mode the AO kernels will not be used. Some kernels are being used during Scene update (displace, background light). When these kernels are being used the process can halt until these become available. Reviewed By: brecht, #cycles Maniphest Tasks: T61752 Differential Revision: https://developer.blender.org/D4428
Diffstat (limited to 'intern/cycles/kernel')
-rw-r--r--intern/cycles/kernel/kernel_types.h90
1 files changed, 50 insertions, 40 deletions
diff --git a/intern/cycles/kernel/kernel_types.h b/intern/cycles/kernel/kernel_types.h
index caa0057d997..281d9a25047 100644
--- a/intern/cycles/kernel/kernel_types.h
+++ b/intern/cycles/kernel/kernel_types.h
@@ -121,52 +121,62 @@ CCL_NAMESPACE_BEGIN
#ifdef __KERNEL_OPENCL__
-/* keep __KERNEL_ADV_SHADING__ in sync with opencl_kernel_use_advanced_shading! */
+# if defined(__KERNEL_OPENCL_AMD__) || defined(__KERNEL_OPENCL_INTEL_CPU__)
+# define __CL_USE_NATIVE__
+# endif
-# ifdef __KERNEL_OPENCL_NVIDIA__
-# define __KERNEL_SHADING__
-# define __KERNEL_ADV_SHADING__
-# define __SUBSURFACE__
-# define __PRINCIPLED__
-# define __VOLUME__
-# define __VOLUME_SCATTER__
-# define __SHADOW_RECORD_ALL__
-# define __CMJ__
-# define __BRANCHED_PATH__
-# endif /* __KERNEL_OPENCL_NVIDIA__ */
+/* Preview kernel is used as a small kernel when the optimized kernel is still being compiled. */
+# ifdef __KERNEL_OPENCL_PREVIEW__
+# define __AO__
+# define __PASSES__
+# define __HAIR__
+# else
+
+/* keep __KERNEL_ADV_SHADING__ in sync with opencl_kernel_use_advanced_shading! */
-# ifdef __KERNEL_OPENCL_APPLE__
-# define __KERNEL_SHADING__
-# define __KERNEL_ADV_SHADING__
-# define __PRINCIPLED__
-# define __CMJ__
+# ifdef __KERNEL_OPENCL_NVIDIA__
+# define __KERNEL_SHADING__
+# define __KERNEL_ADV_SHADING__
+# define __SUBSURFACE__
+# define __PRINCIPLED__
+# define __VOLUME__
+# define __VOLUME_SCATTER__
+# define __SHADOW_RECORD_ALL__
+# define __CMJ__
+# define __BRANCHED_PATH__
+# endif /* __KERNEL_OPENCL_NVIDIA__ */
+
+# ifdef __KERNEL_OPENCL_APPLE__
+# define __KERNEL_SHADING__
+# define __KERNEL_ADV_SHADING__
+# define __PRINCIPLED__
+# define __CMJ__
/* TODO(sergey): Currently experimental section is ignored here,
* this is because megakernel in device_opencl does not support
* custom cflags depending on the scene features.
*/
-# endif /* __KERNEL_OPENCL_APPLE__ */
-
-# ifdef __KERNEL_OPENCL_AMD__
-# define __CL_USE_NATIVE__
-# define __KERNEL_SHADING__
-# define __KERNEL_ADV_SHADING__
-# define __SUBSURFACE__
-# define __PRINCIPLED__
-# define __VOLUME__
-# define __VOLUME_SCATTER__
-# define __SHADOW_RECORD_ALL__
-# define __CMJ__
-# define __BRANCHED_PATH__
-# endif /* __KERNEL_OPENCL_AMD__ */
-
-# ifdef __KERNEL_OPENCL_INTEL_CPU__
-# define __CL_USE_NATIVE__
-# define __KERNEL_SHADING__
-# define __KERNEL_ADV_SHADING__
-# define __PRINCIPLED__
-# define __CMJ__
-# endif /* __KERNEL_OPENCL_INTEL_CPU__ */
-
+# endif /* __KERNEL_OPENCL_APPLE__ */
+
+# ifdef __KERNEL_OPENCL_AMD__
+# define __KERNEL_SHADING__
+# define __KERNEL_ADV_SHADING__
+# define __SUBSURFACE__
+# define __PRINCIPLED__
+# define __VOLUME__
+# define __VOLUME_SCATTER__
+# define __SHADOW_RECORD_ALL__
+# define __CMJ__
+# define __BRANCHED_PATH__
+# endif /* __KERNEL_OPENCL_AMD__ */
+
+# ifdef __KERNEL_OPENCL_INTEL_CPU__
+# define __KERNEL_SHADING__
+# define __KERNEL_ADV_SHADING__
+# define __PRINCIPLED__
+# define __CMJ__
+# endif /* __KERNEL_OPENCL_INTEL_CPU__ */
+
+# endif /* KERNEL_OPENCL_PREVIEW__ */
#endif /* __KERNEL_OPENCL__ */
/* Kernel features */