Latest version of MoltenVK behaves in an apparently non-conformant way
by not allowing some linear images to be mapped to memory with
VK_MEMORY_PROPERTY_HOST_COHERENT_BIT. This change sidesteps the issue
by forcing the use of staging buffer for loading textures.
memset(demo, 0, sizeof(*demo));
demo->presentMode = VK_PRESENT_MODE_FIFO_KHR;
demo->frameCount = INT32_MAX;
+
+#if defined(VK_USE_PLATFORM_MACOS_MVK)
+ // MoltenVK may not allow host coherent mapping to linear tiled images
+ // Force the use of a staging buffer to be safe
+ demo->use_staging_buffer = true;
+#endif
for (int i = 1; i < argc; i++) {
if (strcmp(argv[i], "--use_staging") == 0) {
presentMode = vk::PresentModeKHR::eFifo;
frameCount = UINT32_MAX;
use_xlib = false;
+
+#if defined(VK_USE_PLATFORM_MACOS_MVK)
+ // MoltenVK may not allow host coherent mapping to linear tiled images
+ // Force the use of a staging buffer to be safe
+ use_staging_buffer = true;
+#endif
for (int i = 1; i < argc; i++) {
if (strcmp(argv[i], "--use_staging") == 0) {