Skip to content

[BUG] vulkan.hpp accidentally included in sources/third_party/vulkan, very broken #1974

@sstarosz

Description

@sstarosz

Description

I updated the NDK version of my project from version 25.2.9519653 to 26.1.10909125, after which my Vulkan project stopped compiling due to errors in with repeated definitions in the vulkan.hpp header shipped with NDK

(26.1.10909125\sources\third_party\vulkan\src\include\vulkan\)

Version 26.1.10909125 has a lot of repeated definitions in the vulkan.hpp and vulkan_enums.hpp headers. At least from these files come most of the compilation errors, I don't know if other files in the vulkan folder are not also affected.

Compilation output
C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan.hpp:1161:10: error: class member cannot be redeclared void link( void * dstBase, void const * srcBase, VkBaseOutStructure * dst, VkBaseInStructure const * src ) ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan.hpp:1149:10: note: previous definition is here void link( void * dstBase, void const * srcBase, VkBaseOutStructure * dst, VkBaseInStructure const * src ) ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan.hpp:1342:9: error: redefinition of 'DispatchLoaderBase' class DispatchLoaderBase ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan.hpp:1318:9: note: previous definition is here class DispatchLoaderBase ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan.hpp:5881:7: error: class member cannot be redeclared vkSetDeviceMemoryPriorityEXT( VkDevice device, VkDeviceMemory memory, float priority ) const VULKAN_HPP_NOEXCEPT ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan.hpp:5552:10: note: previous definition is here void vkSetDeviceMemoryPriorityEXT( VkDevice device, VkDeviceMemory memory, float priority ) const VULKAN_HPP_NOEXCEPT ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan.hpp:5888:10: error: class member cannot be redeclared void vkGetDeviceBufferMemoryRequirementsKHR( VkDevice device, ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan.hpp:5559:10: note: previous definition is here void vkGetDeviceBufferMemoryRequirementsKHR( VkDevice device, ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan.hpp:5895:10: error: class member cannot be redeclared void vkGetDeviceImageMemoryRequirementsKHR( VkDevice device, ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan.hpp:5566:10: note: previous definition is here void vkGetDeviceImageMemoryRequirementsKHR( VkDevice device, ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan.hpp:5902:10: error: class member cannot be redeclared void vkGetDeviceImageSparseMemoryRequirementsKHR( ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan.hpp:5573:10: note: previous definition is here void vkGetDeviceImageSparseMemoryRequirementsKHR( VkDevice device, ^ In file included from C:/Users/Sebastian/AndroidStudioProjects/AndroidVulkanDemo/Renderer/Source/StRenderer/Renderer.cpp:1: In file included from C:/Users/Sebastian/AndroidStudioProjects/AndroidVulkanDemo/Renderer/Include/StRenderer/Renderer.hpp:8: In file included from C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan.hpp:6176: C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:1841:14: error: redefinition of 'MemoryMapFlagBits' enum class MemoryMapFlagBits : VkMemoryMapFlags ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:1828:14: note: previous definition is here enum class MemoryMapFlagBits : VkMemoryMapFlags ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:1941:14: error: redefinition of 'SemaphoreCreateFlagBits' enum class SemaphoreCreateFlagBits : VkSemaphoreCreateFlags ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:1928:14: note: previous definition is here enum class SemaphoreCreateFlagBits : VkSemaphoreCreateFlags ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:2061:14: error: enumeration redeclared with different underlying type 'int' (was 'VkQueryPoolCreateFlags' (aka 'unsigned int')) enum class QueryPoolCreateFlagBits ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:2048:14: note: previous declaration is here enum class QueryPoolCreateFlagBits : VkQueryPoolCreateFlags ^ ~~~~~~~~~~~~~~~~~~~~~~ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:2171:14: error: redefinition of 'BufferViewCreateFlagBits' enum class BufferViewCreateFlagBits : VkBufferViewCreateFlags ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:2158:14: note: previous definition is here enum class BufferViewCreateFlagBits : VkBufferViewCreateFlags ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:2772:14: error: redefinition of 'PipelineDynamicStateCreateFlagBits' enum class PipelineDynamicStateCreateFlagBits : VkPipelineDynamicStateCreateFlags ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:2681:14: note: previous definition is here enum class PipelineDynamicStateCreateFlagBits : VkPipelineDynamicStateCreateFlags ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:2781:14: error: redefinition of 'PipelineInputAssemblyStateCreateFlagBits' enum class PipelineInputAssemblyStateCreateFlagBits : VkPipelineInputAssemblyStateCreateFlags ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:2694:14: note: previous definition is here enum class PipelineInputAssemblyStateCreateFlagBits : VkPipelineInputAssemblyStateCreateFlags ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:2799:14: error: redefinition of 'PipelineMultisampleStateCreateFlagBits' enum class PipelineMultisampleStateCreateFlagBits : VkPipelineMultisampleStateCreateFlags ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:2707:14: note: previous definition is here enum class PipelineMultisampleStateCreateFlagBits : VkPipelineMultisampleStateCreateFlags ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:2808:14: error: redefinition of 'PipelineRasterizationStateCreateFlagBits' enum class PipelineRasterizationStateCreateFlagBits : VkPipelineRasterizationStateCreateFlags ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:2720:14: note: previous definition is here enum class PipelineRasterizationStateCreateFlagBits : VkPipelineRasterizationStateCreateFlags ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:2817:14: error: redefinition of 'PipelineTessellationStateCreateFlagBits' enum class PipelineTessellationStateCreateFlagBits : VkPipelineTessellationStateCreateFlags ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:2733:14: note: previous definition is here enum class PipelineTessellationStateCreateFlagBits : VkPipelineTessellationStateCreateFlags ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:2826:14: error: redefinition of 'PipelineVertexInputStateCreateFlagBits' enum class PipelineVertexInputStateCreateFlagBits : VkPipelineVertexInputStateCreateFlags ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:2746:14: note: previous definition is here enum class PipelineVertexInputStateCreateFlagBits : VkPipelineVertexInputStateCreateFlags ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:2835:14: error: redefinition of 'PipelineViewportStateCreateFlagBits' enum class PipelineViewportStateCreateFlagBits : VkPipelineViewportStateCreateFlags ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:2759:14: note: previous definition is here enum class PipelineViewportStateCreateFlagBits : VkPipelineViewportStateCreateFlags ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:2978:14: error: redefinition of 'DescriptorPoolResetFlagBits' enum class DescriptorPoolResetFlagBits : VkDescriptorPoolResetFlags ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:2965:14: note: previous definition is here enum class DescriptorPoolResetFlagBits : VkDescriptorPoolResetFlags ^ C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:3354:14: error: redefinition of 'CommandPoolTrimFlagBits' enum class CommandPoolTrimFlagBits : VkCommandPoolTrimFlags ^ he command: "C:\Program Files\CMake\bin\cmake.EXE" --build C:/Users/Sebastian/AndroidStudioProjects/AndroidVulkanDemo/out/build/Android-armeabi-v7a-Debug --config Debug --target StRenderer exited with code: 1 C:/Users/Sebastian/AppData/Local/Android/Sdk/ndk/26.1.10909125/sources/third_party/vulkan/src/include/vulkan/vulkan_enums.hpp:3340:14: note: previous definition is here enum class CommandPoolTrimFlagBits : VkCommandPoolTrimFlags ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. 

Some errors look like typical merge mistakes, because the function code itself is the same, only the formatting is different:

Vulkan.hpp:
image

image

Vulkan_enums.hpp:
image

Affected versions

r26

Canary version

No response

Host OS

Windows

Host OS version

19045.3693

Affected ABIs

armeabi-v7a, arm64-v8a, x86, x86_64

Build system

CMake

Other build system

No response

minSdkVersion

24

Device API level

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions