Results 1 to 2 of 2

Thread: Missing vulkan symbols from standard linux vulkan library?

  1. #1
    Junior Member Newbie
    Join Date
    Oct 2018

    Missing vulkan symbols from standard linux vulkan library?

    Some of the symbols declared in the vulkan headers (/usr/include/vulkan/*) are not defined in the vulkan library ( (I'm on Ubuntu 18.04 using the standard vulkan packages, libvulkan1 and libvulkan-dev)

    For example:

    vkCreateInstance is declared in the vulkan headers, and defined in the vulkan library
    vkCmdBeginConditionalRenderingEXT is declared in the vulkan headers, but is not defined in the vulkan library.

    Why is that?

    Code :
    $ cat > 
    #include <vulkan/vulkan.h>
    int main() {
        { constexpr auto x = vkCmdBeginConditionalRenderingEXT; (void)x; }
    $ g++ -lvulkan
    /tmp/cczuSwiY.o: In function `main': undefined reference to `vkCmdBeginConditionalRenderingEXT'
    collect2: error: ld returned 1 exit status

    The full list of such missing commands is: vkCmdBeginConditionalRenderingEXT, vkCmdBeginDebugUtilsLabelEXT, vkCmdBeginRenderPass2KHR, vkCmdDebugMarkerBeginEXT, vkCmdDebugMarkerEndEXT, vkCmdDebugMarkerInsertEXT, vkCmdDrawIndexedIndirectCountAMD, vkCmdDrawIndexedIndirectCountKHR, vkCmdDrawIndirectCountAMD, vkCmdDrawIndirectCountKHR, vkCmdEndConditionalRenderingEXT, vkCmdEndDebugUtilsLabelEXT, vkCmdEndRenderPass2KHR, vkCmdInsertDebugUtilsLabelEXT, vkCmdNextSubpass2KHR, vkCmdProcessCommandsNVX, vkCmdPushDescriptorSetKHR, vkCmdPushDescriptorSetWithTemplateKHR, vkCmdReserveSpaceForCommandsNVX, vkCmdSetCheckpointNV, vkCmdSetDiscardRectangleEXT, vkCmdSetSampleLocationsEXT, vkCmdSetViewportWScalingNV, vkCmdWriteBufferMarkerAMD, vkCreateDebugReportCallbackEXT, vkCreateDebugUtilsMessengerEXT, vkCreateIndirectCommandsLayoutNVX, vkCreateObjectTableNVX, vkCreateRenderPass2KHR, vkCreateValidationCacheEXT, vkDebugMarkerSetObjectNameEXT, vkDebugMarkerSetObjectTagEXT, vkDebugReportMessageEXT, vkDestroyDebugReportCallbackEXT, vkDestroyDebugUtilsMessengerEXT, vkDestroyIndirectCommandsLayoutNVX, vkDestroyObjectTableNVX, vkDestroyValidationCacheEXT, vkDisplayPowerControlEXT, vkGetFenceFdKHR, vkGetMemoryFdKHR, vkGetMemoryFdPropertiesKHR, vkGetMemoryHostPointerPropertiesEXT, vkGetPastPresentationTimingGOOGLE, vkGetPhysicalDeviceExternalImageFormatPropertiesNV , vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, vkGetPhysicalDeviceMultisamplePropertiesEXT, vkGetPhysicalDeviceSurfaceCapabilities2EXT, vkGetPhysicalDeviceSurfaceCapabilities2KHR, vkGetPhysicalDeviceSurfaceFormats2KHR, vkGetQueueCheckpointDataNV, vkGetRefreshCycleDurationGOOGLE, vkGetSemaphoreFdKHR, vkGetShaderInfoAMD, vkGetSwapchainCounterEXT, vkGetSwapchainStatusKHR, vkGetValidationCacheDataEXT, vkImportFenceFdKHR, vkImportSemaphoreFdKHR, vkMergeValidationCachesEXT, vkQueueBeginDebugUtilsLabelEXT, vkQueueEndDebugUtilsLabelEXT, vkQueueInsertDebugUtilsLabelEXT, vkRegisterDeviceEventEXT, vkRegisterDisplayEventEXT, vkRegisterObjectsNVX, vkReleaseDisplayEXT, vkSetDebugUtilsObjectNameEXT, vkSetDebugUtilsObjectTagEXT, vkSetHdrMetadataEXT, vkSubmitDebugUtilsMessageEXT, vkUnregisterObjectsNVX.

  2. #2
    Junior Member Newbie
    Join Date
    Oct 2018
    My guess is because vkCreateInstance() is a core function that is always present. The other one is a conditional extension, and should really be obtained by dynamically asking for the pointer at run time. If the extension is not active there will never be a valid pointer for that function. Ideally, you should be dynamically asking the instance or device for all of their function pointer. A good driver will reduce the CUP calling overhead.

Similar Threads

  1. Replies: 5
    Last Post: 10-05-2018, 01:44 PM
  2. Replies: 4
    Last Post: 12-12-2016, 05:26 AM
  3. Vulkan utility library
    By Alfonse Reinheart in forum Vulkan
    Replies: 4
    Last Post: 08-25-2016, 04:20 AM
  4. Replies: 0
    Last Post: 05-23-2016, 02:59 AM
  5. Replies: 2
    Last Post: 05-04-2016, 10:35 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
Proudly hosted by Digital Ocean