vkEnumerateInstanceExtensionProperties : pLayerName 参数的含义是啥?
Posted
技术标签:
【中文标题】vkEnumerateInstanceExtensionProperties : pLayerName 参数的含义是啥?【英文标题】:vkEnumerateInstanceExtensionProperties : What is the meaning of the pLayerName parameter?vkEnumerateInstanceExtensionProperties : pLayerName 参数的含义是什么? 【发布时间】:2021-07-27 00:44:36 【问题描述】:我想知道运行我的软件的 PC 是否具有特定的 GPU 扩展。为此我使用了这个函数vkEnumerateInstanceExtensionProperties,但是第一个参数我看不懂。
如果我用 NULL 为 pLayerName 参数调用此函数,则 pPropertyCount 设置为 12。
但根据OpenGL Extensions Viewer,我的 GPU 上有超过 12 个可用的扩展。 OpenGL Extensions Viewer 按前缀(GL_KHR、GL_EXT、GL_NV、GL_ARB...)对扩展进行排序,这是“层”吗?
【问题讨论】:
【参考方案1】:没有“GPU 扩展”之类的东西。扩展只是一种机制,它允许 API 的实现比 API 通常公开更多的功能。对 GPU 而言,通过扩展公开的功能只是功能,与 GPU 提供的任何其他通过 API 直接公开的功能没有什么不同。
扩展总是与某些 API 相关。这就是为什么它们被称为“扩展”;它们“扩展”了 API 的功能。 OpenGL 和 Vulkan 是独立的 API;因此,它们提供了不同的可能扩展。其中一些在其他 API 中具有等效版本,但在大多数情况下,扩展集是完全不同的。
OpenGL 扩展查看器将告诉您什么关于可通过 Vulkan API 访问的任何内容。
Vulkan 层不是扩展。层通常由既不是您的应用程序也不是 Vulkan 实现本身的代码提供。层位于两者之间,它们的存在主要是为了允许某些程序跟踪从应用程序到实现的 API 调用和逻辑。
【讨论】:
那么,如果我想检查我的用户 GPU 上可用的 Vulkan api 是否具有 GL_EXT_shader_atomic_float 等,这是不可能的?我找到了VK_EXT_shader_atomic_float,我应该检查一下吗?以上是关于vkEnumerateInstanceExtensionProperties : pLayerName 参数的含义是啥?的主要内容,如果未能解决你的问题,请参考以下文章