[MacbookPro M1] Crash on 16k displacement map
ommaury opened this issue · 2 comments
Hi Thomas,
On a 14" Macbook Pro M1, I get a crash viewing a 16k map. You can find a map like this here for example:
00_displacement_micro.exr
in the following archive:
https://vgl.ict.usc.edu/Data/DigitalEmily2/Data/2.1/Emily_2_1_Textures.zip
The stack trace does highlight a metal texture size limitation (in nanogui):
-------------------------------------
Translated Report (Full Report Below)
-------------------------------------
Process: tev [41027]
Path: /Applications/tev.app/Contents/MacOS/tev
Identifier: org.tom94.tev
Version: 1.23 (64 bit) (1.23 (64 bit))
Code Type: ARM-64 (Native)
Parent Process: launchd [1]
User ID: 501
Date/Time: 2022-03-08 15:54:53.4108 -0800
OS Version: macOS 12.2.1 (21D62)
Report Version: 12
Anonymous UUID: 2F57BED6-4D6F-C2EE-CD1F-8755CA554A7E
Sleep/Wake UUID: 91726AF8-3044-4C94-9BEA-D8422E76F0F7
Time Awake Since Boot: 38000 seconds
Time Since Wake: 1719 seconds
System Integrity Protection: enabled
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Application Specific Information:
-[MTLTextureDescriptorInternal validateWithDevice:]:1325: failed assertion `Texture Descriptor Validation
MTLTextureDescriptor has width (16804) greater than the maximum allowed size of 16384.
'
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x1c464d9b8 __pthread_kill + 8
1 libsystem_pthread.dylib 0x1c4680eb0 pthread_kill + 288
2 libsystem_c.dylib 0x1c45be314 abort + 164
3 libsystem_c.dylib 0x1c45bd6d4 __assert_rtn + 212
4 Metal 0x1ccfd7d50 MTLReportFailure.cold.1 + 56
5 Metal 0x1ccfc1d04 MTLReportFailure + 476
6 Metal 0x1ccfbaa8c _MTLMessageContextEnd + 1068
7 Metal 0x1ccf0b8c0 -[MTLTextureDescriptorInternal validateWithDevice:] + 2572
8 AGXMetalG13X 0x20a1c2780 0x209cf8000 + 5023616
9 tev 0x104355548 nanogui::Texture::resize(nanogui::Array<int, 2ul> const&) + 632
10 tev 0x1043657cc nanogui::Screen::resize_callback_event(int, int) + 132
11 tev 0x10437bd6c -[GLFWWindowDelegate windowDidResize:] + 236
12 CoreFoundation 0x1c4741200 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 28
13 CoreFoundation 0x1c47e4b84 ___CFXRegistrationPost_block_invoke + 52
14 CoreFoundation 0x1c47e4af0 _CFXRegistrationPost + 456
15 CoreFoundation 0x1c470feb0 _CFXNotificationPost + 720
16 Foundation 0x1c55c5e3c -[NSNotificationCenter postNotificationName:object:userInfo:] + 96
17 AppKit 0x1c72f3f40 -[NSWindow _setFrameCommon:display:fromServer:] + 3264
18 tev 0x10437e0e4 _glfwPlatformSetWindowSize + 292
19 tev 0x104285c5c tev::ImageViewer::insertImage(std::__1::shared_ptr<tev::Image>, unsigned long, bool) + 1044
20 tev 0x104282e60 tev::ImageViewer::draw_contents() + 704
21 tev 0x1043644e4 nanogui::Screen::draw_all() + 68
22 tev 0x10435d3b8 nanogui::mainloop(float) + 512
23 tev 0x1042a39c4 tev::mainFunc(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&) + 11136
24 tev 0x1042a83a0 main + 828
25 dyld 0x1049190f4 start + 520
Hope this helps,
Olivier
Hi Olivier, this seems to be a fundamental limitation w.r.t. texture size -- not much to be done by tev / nanogui other than detecting such cases and breaking the rendering down into multiple tiled textures.
This is unlikely to happen soon (if at all), but I'm going to keep the issue open as a "TODO" bullet.
Cheers!
Thanks Thomas for the quick response, makes sense, that's what the native Preview app does it looks like (break the image into 4 tiles).