From aed62466ff5bb38ae39010888bc4859afbe1cf94 Mon Sep 17 00:00:00 2001 From: Mike Schuchardt Date: Fri, 26 Jul 2019 07:56:30 -0700 Subject: cube: Workaround macOS cube issue 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. --- cube/cube.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'cube/cube.c') diff --git a/cube/cube.c b/cube/cube.c index 18344e46..41d980ce 100644 --- a/cube/cube.c +++ b/cube/cube.c @@ -3688,6 +3688,12 @@ static void demo_init(struct demo *demo, int argc, char **argv) { 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) { -- cgit v1.2.3