[Bf-blender-cvs] [35dedc11d56] blender-v3.1-release: Fix T95477: Report error instead of crashing when Metal texture size limits exceeded.

Michael Jones noreply at git.blender.org
Thu Feb 10 18:06:30 CET 2022


Commit: 35dedc11d5649352326af3701aef444b39bb6aa3
Author: Michael Jones
Date:   Thu Feb 10 10:54:18 2022 +0000
Branches: blender-v3.1-release
https://developer.blender.org/rB35dedc11d5649352326af3701aef444b39bb6aa3

Fix T95477: Report error instead of crashing when Metal texture size limits exceeded.

Reviewed By: brecht

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

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

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 564c3c98759..251ba54e477 100644
--- a/intern/cycles/device/metal/device_impl.mm
+++ b/intern/cycles/device/metal/device_impl.mm
@@ -765,6 +765,15 @@ void MetalDevice::tex_alloc_as_buffer(device_texture &mem)
 
 void MetalDevice::tex_alloc(device_texture &mem)
 {
+  /* Check that dimensions fit within maximum allowable size.
+     See https://developer.apple.com/metal/Metal-Feature-Set-Tables.pdf
+  */
+  if (mem.data_width > 16384 ||
+      mem.data_height > 16384) {
+    set_error(string_printf("Texture exceeds maximum allowed size of 16384 x 16384 (requested: %zu x %zu)", mem.data_width, mem.data_height));
+    return;
+  }
+
   MTLStorageMode storage_mode = MTLStorageModeManaged;
   if (@available(macos 10.15, *)) {
     if ([mtlDevice hasUnifiedMemory] &&



More information about the Bf-blender-cvs mailing list