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:
authorMichael Jones <michael_p_jones@apple.com>2022-09-27 16:34:37 +0300
committerMichael Jones <michael_p_jones@apple.com>2022-09-27 18:58:21 +0300
commitfc604a0be3a9ad1bf7f646dd70d4f106c7df2a75 (patch)
tree0ec1ad7cd05c6f5be18185c7cbb4db6ba9b33ae1 /intern/cycles/device/metal/kernel.mm
parentb0d70a9c80402e8b7af173a76e9a8b6050598825 (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/cycles/device/metal/kernel.mm')
-rw-r--r--intern/cycles/device/metal/kernel.mm35
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;
}