【问题标题】:Missing vulkan symbols from standard linux vulkan library?标准 linux vulkan 库中缺少 vulkan 符号?
【发布时间】:2018-11-24 23:47:18
【问题描述】:

在 vulkan 标头 (/usr/include/vulkan/*) 中声明的某些符号未在 vulkan 库 (libvulkan.so.1.1.82) 中定义。 (我在 Ubuntu 18.04 上使用标准的 vulkan 包,libvulkan1libvulkan-dev

例如:

  • vkCreateInstance 在 vulkan 头文件中声明,并在 vulkan 库中定义
  • vkCmdBeginConditionalRenderingEXT 在 vulkan 标头中声明,但在 vulkan 库中定义。

为什么会这样?

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

这样缺失的命令的完整列表是: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,vkDestr oyDebugReportCallbackEXT,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、vkRegisterObj ectsNVX、vkReleaseDisplayEXT、vkSetDebugUtilsObjectNameEXT、vkSetDebugUtilsObjectTagEXT、vkSetHdrMetadataEXT、vkSubmitDebugUtilsMessageEXT、vkUnregisterObjectsNVX。

【问题讨论】:

标签: linux vulkan


【解决方案1】:

LoaderAndLayerInterface.md:

Windows、Linux、Android 和 MacOS 上的加载程序库将导出所有核心 Vulkan 和所有适当的窗口系统接口 (WSI) 扩展。

这意味着它可能\不导出非核心非“适当”-WSI 命令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 2018-12-04
    相关资源
    最近更新 更多