Commit: fc604a0be3a9ad1bf7f646dd70d4f106c7df2a75
Author: Michael Jones
Date:   Tue Sep 27 14:34:37 2022 +0100
Branches: master
https://developer.blender.org/rBfc604a0be3a9ad1bf7f646dd70d4f106c7df2a75

Cycles: Disable binary archives on macOS < 13.0

An bug with binary archives was fixed in macOS 13.0 which stops some spurious 
kernel recompilations. In older macOS versions, falling back on the system 
shader cache will prevent recompilations in most instances (this is the same 
behaviour as in Blender 3.1.x and 3.2.x).

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D16082

===================================================================

M       intern/cycles/device/metal/kernel.mm

===================================================================

diff --git a/intern/cycles/device/metal/kernel.mm 
b/intern/cycles/device/metal/kernel.mm
index 385cb412b06..172c456f0c0 100644
--- a/intern/cycles/device/metal/kernel.mm
+++ b/intern/cycles/device/metal/kernel.mm
@@ -308,26 +308,29 @@ MetalKernelPipeline 
*ShaderCache::get_best_pipeline(DeviceKernel kernel, const M
 
 bool MetalKernelPipeline::should_use_binary_archive() const
 {
-  if (auto str = getenv("CYCLES_METAL_DISABLE_BINARY_ARCHIVES")) {
-    if (atoi(str) != 0) {
-      /* Don't archive if we have opted out by env var. */
-      return false;
+  /* Issues with binary archives in older macOS versions. */
+  if (@available(macOS 13.0, *)) {
+    if (auto str = getenv("CYCLES_METAL_DISABLE_BINARY_ARCHIVES")) {
+      if (atoi(str) != 0) {
+        /* Don't archive if we have opted out by env var. */
+        return false;
+      }
     }
-  }
 
-  if (pso_type == PSO_GENERIC) {
-    /* Archive the generic kernels. */
-    return true;
-  }
+    if (pso_type == PSO_GENERIC) {
+      /* Archive the generic kernels. */
+      return true;
+    }
 
-  if (device_kernel >= DEVICE_KERNEL_INTEGRATOR_SHADE_BACKGROUND &&
-      device_kernel <= DEVICE_KERNEL_INTEGRATOR_SHADE_SHADOW) {
-    /* Archive all shade kernels - they take a long time to compile. */
-    return true;
-  }
+    if (device_kernel >= DEVICE_KERNEL_INTEGRATOR_SHADE_BACKGROUND &&
+        device_kernel <= DEVICE_KERNEL_INTEGRATOR_SHADE_SHADOW) {
+      /* Archive all shade kernels - they take a long time to compile. */
+      return true;
+    }
 
-  /* The remaining kernels are all fast to compile. They may get cached by the 
system shader cache,
-   * but will be quick to regenerate if not. */
+    /* The remaining kernels are all fast to compile. They may get cached by 
the system shader cache,
+     * but will be quick to regenerate if not. */
+  }
   return false;
 }

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to