diff options
author | Michael Jones <michael_p_jones@apple.com> | 2022-09-27 16:34:37 +0300 |
---|---|---|
committer | Michael Jones <michael_p_jones@apple.com> | 2022-09-27 18:58:21 +0300 |
commit | fc604a0be3a9ad1bf7f646dd70d4f106c7df2a75 (patch) | |
tree | 0ec1ad7cd05c6f5be18185c7cbb4db6ba9b33ae1 /intern | |
parent | b0d70a9c80402e8b7af173a76e9a8b6050598825 (diff) |
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
Diffstat (limited to 'intern')
-rw-r--r-- | intern/cycles/device/metal/kernel.mm | 35 |
1 files changed, 19 insertions, 16 deletions
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; } |