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.