[Bf-blender-cvs] [3d12dd59ce1] blender-v3.1-release: Cycles: Workaround for failing "bake" unit tests in Metal

Michael Jones noreply at git.blender.org
Thu Feb 10 18:05:15 CET 2022


Commit: 3d12dd59ce1714e4e3e34d8d8f73de218050b2fb
Author: Michael Jones
Date:   Thu Feb 10 10:57:28 2022 +0000
Branches: blender-v3.1-release
https://developer.blender.org/rB3d12dd59ce1714e4e3e34d8d8f73de218050b2fb

Cycles: Workaround for failing "bake" unit tests in Metal

Allocate "RenderBuffers" with MTLResourceStorageModeShared.

Reviewed By: brecht

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

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

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

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

diff --git a/intern/cycles/device/metal/device_impl.mm b/intern/cycles/device/metal/device_impl.mm
index 17acb2c94e4..564c3c98759 100644
--- a/intern/cycles/device/metal/device_impl.mm
+++ b/intern/cycles/device/metal/device_impl.mm
@@ -455,8 +455,14 @@ MetalDevice::MetalMem *MetalDevice::generic_alloc(device_memory &mem)
   mem.device_pointer = 0;
 
   id<MTLBuffer> metal_buffer = nil;
+  MTLResourceOptions options = default_storage_mode;
+
+  /* Workaround for "bake" unit tests which fail if RenderBuffers is allocated with MTLResourceStorageModeShared. */
+  if (strstr(mem.name, "RenderBuffers")) {
+    options = MTLResourceStorageModeManaged;
+  }
+
   if (size > 0) {
-    MTLResourceOptions options = default_storage_mode;
     if (mem.type == MEM_DEVICE_ONLY) {
       options = MTLResourceStorageModePrivate;
     }
@@ -490,7 +496,7 @@ MetalDevice::MetalMem *MetalDevice::generic_alloc(device_memory &mem)
   mmem->mtlBuffer = metal_buffer;
   mmem->offset = 0;
   mmem->size = size;
-  if (mem.type != MEM_DEVICE_ONLY) {
+  if (options != MTLResourceStorageModePrivate) {
     mmem->hostPtr = [metal_buffer contents];
   }
   else {



More information about the Bf-blender-cvs mailing list