使用EGL进行Vulkan适配

4

目前关于 Vulkan 这个新的图形 API 有很多关注 - https://www.khronos.org/vulkan

我的问题是关于现有 EGL 接口将如何适应 Vulkan API,由于 Vulkan 的无状态特点,是否需要用基于 Vulkan 的替代方案来替换 EGL?

直到现在,从 EGL 可访问的三个 API(OpenGL、OpenGL ES 和 OpenVG)可以使用线程上下文,那 Vulkan 呢?


1
我的钱投在一个与窗口系统交互的扩展上。这就是Mantle的规定方式。 - ratchet freak
@ratchetfreak:具体来说,这可能需要两个扩展。一个在EGL方面,另一个在Vulkan方面(WsiEGL有人用过吗?)。 - datenwolf
多线程上下文已被设置为Vulkan草案的关键点。 - j-p
可能会遵循以下两种方式之一: a)添加了一个新的EGL API,可以将绘制和读取表面绑定到上下文(EGLContext)。 b)或者适用的Vulkan方法将上下文(EGLContext指针)作为它们参数之一。 - SriLakshmi
2个回答

7

EGL是明确线程安全的。

这意味着通过Vulkan的扩展,您可以将EGLSurface绑定为管道中的渲染目标或将其用作缓冲区交换的参数。此EGLSurface将通过正常方式创建,创建EGLDisplay的eglQueryString(display,EGL_CLIENT_APIS)必须包括“Vulkan”。

然而,上下文位有点棘手。我预计会使用虚拟的(零状态)上下文来标记线程正在使用Vulkan进行渲染。

EGL甚至不会涉及其中。您需要使用加载器从头开始获取实例。并且有一组扩展将从操作系统获取窗口句柄,并提供具有多个vkImage的vkSwapchain,您可以将其渲染并发送到监视器。


4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接