Vulkan 术语中的 "presentation engine" 到底是什么?

What exactly is the "presentation engine" in Vulkan jargon?

根据 this Khronos presentation,“演示引擎”是:

The platform’s compositor or display engine

根据 specs:

The presentation engine is an abstraction for the platform’s compositor or display engine.

The presentation engine may be synchronous or asynchronous with respect to the application and/or logical device.

Some implementations may use the device’s graphics queue or dedicated presentation hardware to perform presentation.

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

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

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

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

从另一个视角看,界面给你什么就是什么。在 VK_KHR_swapchain 扩展名的情况下,即 vkAcquireNextImageKHRvkQueuePresentKHR 等。可以进行其他扩展,因为出现了以根本不同方式运行的表示引擎(例如 VK_KHR_display_swapchain)。

VK_KHR_swapchain,需要 VK_KHR_surface,专门用于 VK_KHR_win32_surfaceVK_KHR_xlib_surface 等。所以你可以打赌这些是 API driver 与下方对话。 IE。它与 Win32 API(又名 Windows API)对话,可能与 GDI 组件(但可能与 DXGI 交换链)对话。在 linuxes + VK_KHR_xlib_surface 上,它会与 X 服务器通信。等等...这不可避免地会落入 DWM 或 Compiz 等窗口管理器的手中。