【问题标题】:Create Functional Linux GUI Using Vulkan Without X11 [closed]使用没有 X11 的 Vulkan 创建功能性 Linux GUI [关闭]
【发布时间】:2018-01-10 09:23:48
【问题描述】:

我想创建自己的用户界面,可以在基本的 Linux 发行版上运行。 GUI 将使用 Vulkan 呈现,我希望在没有 X11 的情况下获得用户输入。 GUI 将在操作系统加载后立即呈现并成为主要上下文。

问题

  • 这样做有什么影响?
  • 如何获取用户输入?
  • 如何配置我的 GUI 应用程序以正确加载?
  • Vulkan 不适合这种场景吗?

【问题讨论】:

标签: linux user-interface x11 vulkan


【解决方案1】:

你不能,因为这不是 Vulkan 的工作方式。

在 Linux 上,Vulkan 是 OpenGL 的替代品,而不是 X11。 (同样,在 Windows 上,它替代 DirectX 或 OpenGL,而不是 Desktop Window Manager。)

【讨论】:

  • 我并不想真正替代 Vulkan 和 X11。如果愿意的话,宁愿制作“我自己的 X11”。我不想扩展 X11(像很多发行版那样),而是想创建自己的渲染环境。不依赖于 X 的东西。我想使用 Vulkan API 来进行所述渲染。也许我需要删除 X 之间的相关性,因为它使我的问题变得混乱。
  • 不幸的是,这并没有改变答案。 Linux 上可用的 Vulkan 驱动程序适用于 X11。没有它就无法使用它们。
  • 有趣。我找到了这个项目:link,它确实使用了无头渲染 (OpenGL)。我也一直在浏览 Reddit,人们一直在说你可以用 Vulkan 做同样的事情?
  • 这很有趣——看起来他们正在直接使用 DRM(直接渲染管理器,而不是数字版权管理)模块。不过,我不会指望同样的技巧为 Vulkan 工作......
  • 确实如此:project。注意:这个项目除了 DRM 之外还支持 X 和 Wayland。
【解决方案2】:

这样做有什么影响?

Vulkan 在设计上是无头的。至少您可以在其中渲染一些内容,然后将其复制到原始字节中(即使用vkMapMemory)。在 VK_KHR_external_* 扩展的帮助下,您甚至可以更有效地执行类似的操作(以 0 复制方式)。

Vulkan 只是一个渲染 API。它不是一个窗口系统。它不是 X11(或Wayland、或Mir 或其他)的竞争对手。做这样的事情意味着使用 Wayland 之类的替代方案(如果您的牛肉专门使用 X11)或实施您自己的。

我如何获得用户输入?

也超出了 Vulkan 的范围。同样,可能意味着重新实现 X11 之类的东西。

如何配置我的 GUI 应用程序以正确加载?

如果您指的是现有应用程序,则必须修改现有基础架构才能接受和使用除了无处不在的 X11 之外的新窗口管理器。

如果您的意思是新应用程序,那么那是您打算创建的窗口管理器 API 特有的,不是吗?

Vulkan 不适合这种场景吗?

在这种情况下可能很好(可能比 OpenGL 更是如此)。但这也可能是这个想法最简单的方面。困难的部分是 Vulkan 没有做的所有事情以及重新实现该轮子所需的年份。

【讨论】:

  • 我应该在哪里寻找有关使用 DRM 渲染 Vulkan 的信息?我无法通过谷歌找到合适的学习材料。我设法找到了一些使用它的项目,但没有任何东西可以解释它是如何工作的。
  • @Scetra kernel docs,我猜。 AIS Vulkan 部分相对简单,阅读Vulkan spec(and the relevant extensions) 就足够了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-29
  • 2011-02-09
  • 2010-09-05
  • 1970-01-01
  • 2010-09-05
  • 1970-01-01
相关资源
最近更新 更多