Destroying / recreating the rendering surface a second or a third time would have a high chance of crashing the application. Unfortunately, the real problems do seem to be residing inside MoltenVK. Switching the options of 'Start Fullscreen' and 'Render to Main Window' back-and-forth is also supported. In fact, the emulators now handles at least three ways of entering / exiting the full screen mode: through the built-in toolbar button or the menu option (settings - fullscreen), through a keybind (option+return), and through macOS interfaces (green button on the top-left corner of the window, 'view - enter full screen' in the menu), all interacts with each other. My code also responds better to the application entering / exiting the full screen mode outside of the code's control, such as the user clicking the full screen button on the title bar or the 'view - enter full screen' option from the system menu. In this version, the rendering surface is no longer destroyed and re-created during a single game session, thus preventing the crash initiated by MoltenVK mid-game. In case anyone is interested, I have created a patched version to demonstrate how this issue could potentially be mitigated, albeit only partially.