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