From 35dedc11d5649352326af3701aef444b39bb6aa3 Mon Sep 17 00:00:00 2001 From: Michael Jones Date: Thu, 10 Feb 2022 10:54:18 +0000 Subject: Fix T95477: Report error instead of crashing when Metal texture size limits exceeded. Reviewed By: brecht Differential Revision: https://developer.blender.org/D14074 --- intern/cycles/device/metal/device_impl.mm | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'intern') 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] && -- cgit v1.2.3