Georg Lehmann (@DadSchoorse) commented about dlls/winevulkan/vulkan.c:
} }
- if (phys_dev->external_memory_align) + if (phys_dev->map_placed_align) + { + VkPhysicalDeviceMapMemoryPlacedFeaturesEXT *features; + const char **new_extensions; + + new_extensions = conversion_context_alloc(ctx, (dst->enabledExtensionCount + 2) * + sizeof(*dst->ppEnabledExtensionNames)); + memcpy(new_extensions, src->ppEnabledExtensionNames, + dst->enabledExtensionCount * sizeof(*dst->ppEnabledExtensionNames)); + new_extensions[dst->enabledExtensionCount++] = "VK_EXT_map_memory_placed"; + new_extensions[dst->enabledExtensionCount++] = "VK_KHR_map_memory2";
You have to check if the application already enabled the extension first, duplicates are not allowed in the array. The external memory path has the same bug. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/5128#note_62172