Vulkan 行话中的“表示引擎”究竟是什么?

use*_*r89 4 definition vulkan

根据这个 Khronos 演示,“演示引擎”是:

平台的合成器或显示引擎

根据规格

表示引擎是平台合成器或显示引擎的抽象。

呈现引擎相对于应用程序和/或逻辑设备可以是同步的或异步的。

一些实现可能使用设备的图形队列或专用演示硬件来执行演示。

这两个来源都表明,在大多数情况下,表示引擎是平台的软件实体(“抽象”)(它本身就是一个软件层:OS+窗口系统)。

谷歌搜索“窗口合成器显示引擎”为我提供了这个维基百科结果,这似乎是相关的:https : //en.wikipedia.org/wiki/Compositing_window_manager

那基本上是关于“演示引擎”的文章吗?例如,对于 Windows,演示引擎将是桌面 Windows 管理器,对于 GNU/Linux 系统,它可以是 Compiz,等等?还是“演示引擎”是合成管理器和其他一些东西的组合?

krO*_*oze 6

Vulkan 中的展示引擎是一个外部组件,用于管理和接受您在 Vulkan(假设)中制作的渲染图像,以便向用户展示。

从另一个 POV,它就是界面给你的任何东西。这就是vkAcquireNextImageKHRvkQueuePresentKHR等等,在的情况下VK_KHR_swapchain扩展。可以进行其他扩展,因为出现了基本不同操作的演示引擎(例如VK_KHR_display_swapchain)。

VK_KHR_swapchain, requires VK_KHR_surface, 专门用于VK_KHR_win32_surface,VK_KHR_xlib_surface等。所以你可以打赌这些是驱动程序在底层进行对话的 API。即它与 Win32 API(又名 Windows API)对话,可能与 GDI 组件对话(但也可能与 DXGI 交换链对话)。在 linuxes + 上VK_KHR_xlib_surface,它会与 X 服务器通信。依此类推……这不可避免地最终会落入窗口管理器(例如 DWM 或 Compiz)的手中。