问题标签 [moltenvk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
261 浏览

macos - 我的 mac 报告了 4 个 Vulkan 队列系列,但参考资料说它有 1 个

我的家用电脑是 2012 年末的 Mac Mini,它配备了第三代英特尔 IvyBridge 处理器(出于某种原因只有 Apple 知道的移动型号)。

LunarG SDK 中的“vulkaninfo.app”报告了集成 GPU 上的 4 个队列族,但公开信息显示它应该只有 1 个。发生了什么?

0 投票
1 回答
462 浏览

macos - Vulkan macOS 实例无法加载

我正在按照vulkan 教程在 macOS 上创建一个实例。我略有分歧,因为我使用的是 Clion 和 CMake,而不是 XCode。当我尝试运行程序时,我无法创建 Vulkan 实例并且进程退出并出现错误。

我已经检查过,我的 GLFW 库(3.3,安装了自制--HEAD标志)支持 Vulkan。

我的代码:

我的 CMakeLists.txt 文件:

在我的 CLion 设置中,我定义了以下环境变量:

  • DYLD_LIBRARY_PATH
  • VK_LAYER_PATH
  • VK_ICD_FILENAMES
  • VULKAN_SDK

除了VULKAN_SDK被要求获得vulkaninfo

任何人都可以提供一些启示和帮助吗?

0 投票
1 回答
778 浏览

xcode - Xcode 无法加载 libvulkan.1.dylib

我正在通过 MoltenVK 包装器在 OS X 上为 Vulkan 设置开发环境。我使用 Xcode IDE。

  1. 我从 lunarG 网站下载了 VulkanSDK。
  2. 配置了包含。

  3. 添加(复制)libvulkan.1.1.121.dyliblibvulkan.1.dylib项目中,然后将它们添加到Build Phases -> Link Binary With Libraries of the target。

示例代码是:

我没有收到链接器错误。

当我启动应用程序时,我不断收到:

dyld:库未加载:@rpath/libvulkan.1.dylib 引用自:/Users/xxxxx/Library/Developer/Xcode/DerivedData/VulkanApp-aybsxkpxiqbshfebkfpcwaoiuige/Build/Products/Debug/VulkanApp 原因:找不到图像

然后 Xcode 向我展示了以下反汇编:

在此处输入图像描述

我的硬件设置是:

MacBook Pro。macOS 10.14.6

两个 GPU:

  1. Radeon Pro 555
  2. 英特尔核芯显卡 630
0 投票
0 回答
603 浏览

macos - vulkan 管道布局兼容性

如果使用相同的推送常量范围创建两个管道布局,则它们被定义为“与推送常量兼容”。两个管道布局被定义为“与集合 N 兼容”,如果它们是用定义相同的描述符集合布局创建的,用于集合 0 到 N,并且如果它们是用相同的推送常量范围创建的。

vkCmdBindDescriptorSets 使编号为 [firstSet..firstSet+descriptorSetCount-1] 的集合使用存储在 pDescriptorSets[0..descriptorSetCount-1] 中的绑定用于后续渲染命令(根据 pipelineBindPoint 计算或图形)。以前通过这些集合应用的任何绑定都不再有效。

假设有两个流水线布局,第一个流水线布局包含一个集合#0,第二个流水线布局包含两个集合#0 #1。第一个集合0和第二个集合0是相同的描述符集布局。它们也有相同的推送常量范围,因此为上面的分布,两个流水线布局的set#0都兼容吗?</p>

之后,在绘制时调用 vkCmdBindDescriptorSets 进行绑定。

在该验证层之后:VkPipeline 0x42 使用 set #0 但该 set 未绑定。

为什么会出现错误?我哪里弄错了?

0 投票
2 回答
868 浏览

c++ - VK_ERROR_INCOMPATIBLE_DRIVER 与 Mac OS 和 Vulkan MoltenVK

我正在尝试在我的 mac OS 上使用 Vulkan API(使用我的 Intel HD Graphics 5000 1536 Mo)。但是当我创建一个实例时VkCreateInstance(...)

结果 VkCreateInstance(...)是 VK_ERROR_INCOMPATIBLE_DRIVER。

这是我初始化 VkInstance 的代码:

所以我的问题是 vulkan API 在我的带有 MoltenVK 的 Mac OS 上可用吗?如果是,我该怎么做才能使我的应用程序正常工作?

0 投票
1 回答
316 浏览

c++ - Vulkan --- vkAcquireNextImageKHR 在使用某些队列族时抛出 std::out_of_range

TL;博士

vkAcquireNextImageKHRstd::out_of_range使用某些队列族时抛出。这是预期的行为吗?如何调试?

详细说明

我使用的 Vulkan 程序基于vulkan-tutorial.com。我发现我VkPhysicalDevice有三个队列系列,每个都带有VK_QUEUE_GRAPHICS_BIT并提供支持:

这些稍后在创建逻辑设备、交换链(队列系列都具有当前功能)和命令池时使用。后来程序调用

但使用除此之外的任何其他方法0都会导致此 API 调用抛出未捕获的std::out_of_range(输出为 的输出lldb): 但是使用以下的当前和图形队列索引的任意组合会导致此 API 调用抛出未捕获的std::out_of_range: (1, 1), (1, 2), (2, 1), (2, 2)

lldb输出如下:

使用甚至不引用队列的索引时也会导致相同的错误,例如123. 我正在使用该VK_LAYER_KHRONOS_validation层,它没有任何抱怨。

问题

(1) 这是将错误的队列族索引传递给 Vk 的预期行为吗?

(2) 是否有能够捕获此错误并使其更详细的验证层?

(3) 为什么队列族的这些选择会导致这个错误?

细节

(1, 1)在逻辑设备创建期间对图形使用队列族索引并呈现队列族,而0对其他所有事物使用索引已经导致vkAcquireNextImage引发错误。当然,VK_LAYER_KHRONOS_validation在创建命令池时会引发以下警告:

我在 macOS Catalina 10.15.1 上使用 MoltenVK(来自 Vulkan SDK,版本 1.1.126.0)。

解决方法

  • 使用 SDK 1.1.121.1 版本可防止发生抛出。

  • 在可能需要的任何其他设备队列旁边创建具有索引的设备队列系列0可以防止发生抛出。

GitHub 上的问题

这现在已在 GitHub [此处]上作为问题提出。

0 投票
1 回答
215 浏览

macos - 在 MoltenVK 中启用实例扩展

我想使用 MoltenVK 1.0.38 中支持的扩展,目前在初始化 Vulkan 实例时会打印 47 个。有趣的是,当我打电话时vkEnumerateInstanceExtensionProperties,我只得到了其中的 9 个:

我特别感兴趣VK_EXT_hdr_metadata,但那个没有出现在这个列表中。以下是 MoltenVK 表示支持但我不可用的受支持扩展的完整列表:

0 投票
1 回答
310 浏览

c++ - Qt-5.14.0:QML 下的 Vulkan 导致 std::system_error:: 互斥锁失败

QML 示例下的Vulkan最多运行几秒钟,然后崩溃并出现以下错误:

虽然动画在操作过程中看起来正确,但 QML 标签显示不正确:

伏尔甘松鼠

我正在使用 MoltenVK 1.1.130 (LunarG Vulkan SDK) 和 Qt 5.14.0 运行 macOS Catalina。我也尝试过 MoltenVK 1.2.131,结果相同。使用启用的 MoltenVK 时,每帧MVK_LOG_LEVEL_INFO打印两次以下消息:

问题

有谁知道这可能是什么原因?这是一个错误吗?有人成功运行这个例子吗?

尽管 Qt 的 Vulkan 集成已损坏,但 MVK 错误消息看起来像是:不仅每帧vkCreateMacOSSurfaceMVK调用两次,而且似乎从渲染线程(不是 GUI 线程/主线程)调用。

细节

为了将 Qt 与 Vulkan 一起使用,您必须从源代码编译 Qt 并提供 Vulkan 头文件。我用来编译 Qt 的配置调用是:

我的环境变量是根据 LunarG 文档设置的:

(Qt 需要QT_VULKAN_LIBdlopen。)

lldb 回溯:

0 投票
2 回答
363 浏览

glfw - Vulkan、glfw 和 macOS:vkCreateInstance 返回 VK_ERROR_INITIALIZATION_FAILED

我正在阅读 Vulkan 教程并坚持创建一个 我在 MacBook Pro 15 (2019) 上使用 macOS 10.15.6 (19G2021) 的实例,所有环境变量如 VK_ICD_FILENAMES 和 VK_LAYER_PATH 均按照教程正确设置。

glfwVulkanSupported() 返回 True glfwGetRequiredInstanceExtensions(&glfwExtensionCount) 返回 NULL

这是我的 main.cpp:

0 投票
1 回答
225 浏览

macos - MacOS - 当 VkPhysicalDeviceFeatures wideLines = VK_TURE 并且也不支持 vkCmdSetLineWidth API 时,Vulkan 在运行时 vkCreateDevice() 失败

我是 Vulkan 的新手,最近开始学习 .

我面临问题,在运行时vkCreateDevice()失败,VkPhysicalDeviceFeatures何时启用

VkPhysicalDeviceFeatures 功能 {}; features.wideLines = VK_TRUE; 错误 - [mvk-error] VK_ERROR_FEATURE_NOT_PRESENT: vkCmdSetLineWidth(): 当前设备不支持宽线

当 features.wideLines = VK_FALSE; vkCreateDevice() 创建成功,但我无法使用 - vkCmdSetLineWidth (command_buffer, line_width) 修改 LineWidth;这给了我

error- [mvk-error] VK_ERROR_FEATURE_NOT_PRESENT: vkCmdSetLineWidth(): 当前设备不支持宽线。

这是一些细节-

MacOS - 10.14 (Mojave) 显卡 - 显卡 - 英特尔 UHD 显卡 630 1536 MB LunarG Vulkan 实例版本:1.2.154 注意 - 当 features.wideLines = 时,Windows 上相同版本的“LunarG Vulkan 实例版本:1.2.154”工作正常VK_TRUE; 并且能够使用 vkCmdSetLineWidth (command_buffer, line_width);此处提到的 VulkanInfo 的一些细节与 WideLines 功能相关 -

VkPhysicalDevice特点:

我在 Vulkan 文档/谷歌上进行了一些搜索,但找不到任何报告类似问题的人。任何帮助,将不胜感激。