Skip to content

Extension functions/structs/constants that were promoted to core should not be accessed through their extension name #541

Description

@IntegratedQuantum

I'm using glad to generate my Vulkan 1.3 headers and loader, and glad does not include the old extension names for any function data structures and constants of extensions promoted to core. This caused many compiler errors like this:

vk_mem_alloc.h:1052:5: error: unknown type name 'PFN_vkGetBufferMemoryRequirements2KHR'

To mitigate this I'd suggest to #define replacements if they are available in core.
e.g.

#if VMA_VULKAN_VERSION >= 1001000
#define PFN_vkGetBufferMemoryRequirements2KHR PFN_vkGetBufferMemoryRequirements2
#define PFN_vkGetImageMemoryRequirements2KHR PFN_vkGetImageMemoryRequirements2
#endif
For anyone else having this problem, here is a full list of replacement I had to do to make it compile for my project
#define PFN_vkGetBufferMemoryRequirements2KHR PFN_vkGetBufferMemoryRequirements2
#define PFN_vkGetImageMemoryRequirements2KHR PFN_vkGetImageMemoryRequirements2
#define PFN_vkBindBufferMemory2KHR PFN_vkBindBufferMemory2
#define PFN_vkBindImageMemory2KHR PFN_vkBindImageMemory2
#define PFN_vkGetPhysicalDeviceMemoryProperties2KHR PFN_vkGetPhysicalDeviceMemoryProperties2
#define PFN_vkGetDeviceBufferMemoryRequirementsKHR PFN_vkGetDeviceBufferMemoryRequirements
#define PFN_vkGetDeviceImageMemoryRequirementsKHR PFN_vkGetDeviceImageMemoryRequirements
#define PFN_vkGetPhysicalDeviceProperties2KHR PFN_vkGetPhysicalDeviceProperties2
#define VkMemoryAllocateFlagsInfoKHR VkMemoryAllocateFlagsInfo
#define VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO
#define VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT
#define VkPhysicalDeviceProperties2KHR VkPhysicalDeviceProperties2
#define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2
#define VkPhysicalDeviceMemoryProperties2KHR VkPhysicalDeviceMemoryProperties2
#define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2
#define VkMemoryDedicatedAllocateInfoKHR VkMemoryDedicatedAllocateInfo
#define VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO
#define VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT
#define VkBufferMemoryRequirementsInfo2KHR VkBufferMemoryRequirementsInfo2
#define VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2
#define VkMemoryDedicatedRequirementsKHR VkMemoryDedicatedRequirements
#define VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS
#define VkMemoryRequirements2KHR VkMemoryRequirements2
#define VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2
#define VkImageMemoryRequirementsInfo2KHR VkImageMemoryRequirementsInfo2
#define VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2
#define VkBindBufferMemoryInfoKHR VkBindBufferMemoryInfo
#define VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO
#define VkBindImageMemoryInfoKHR VkBindImageMemoryInfo
#define VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO
#define VkDeviceBufferMemoryRequirementsKHR VkDeviceBufferMemoryRequirements
#define VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS
#define VkDeviceImageMemoryRequirementsKHR VkDeviceImageMemoryRequirements
#define VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions