Khronos团队准备下一代OpenGL (GLnext)已经有一段时间了,但是在2015年的GDC上,他们准备正式发布API的细节,并给它一个新名字:Vulkan。
与AMD的Mantle和微软的DirectX 12一样,Vulkan是一个低级的3D图形API,允许它通过“更接近金属”来从设备硬件中获取更多信息。除了开销更少之外,Vulkan还让开发人员能够控制通常留给驱动程序的任务,比如线程管理、内存管理和错误检查。
Vulkan中的许多变化都是为了提高CPU端的效率,从而允许每帧调用更多的draw调用,并(至少在某些情况下)提高帧速率。这也是DirectX 12和Mantle的情况,但是与这些api不同的是,Vulkan是GPU供应商和操作系统无关的,允许它在包括移动设备在内的任何平台上运行。是的,这确实意味着Vulkan正在取代OpenGL ES,即OpenGL的移动变体。
Vulkan还改变了着色器程序的编译方式,引入了一种新的中间语言,称为spirv,现在开发人员必须编译着色器程序。这消除了显示驱动程序中对完整着色程序编译器的需要,从而简化了它们以获得更好的性能。
spl - v也是Khronos的OpenCL 2.1的中间语言,今天与Vulkan一起发布了OpenCL 2.1。这意味着spirv现在是用于计算和图形着色器的语言,这意味着驱动程序只需要支持一种着色器语言。以前的OpenCL版本使用SPIR,这与OpenGL使用的语言不同。
OpenCL 2.1还支持在c++的一个特殊子集中编写计算应用程序。Nvidia已经在CUDA中支持c++代码,但这是c++首次用于跨平台计算应用程序。
Vulkan将从今天开始提供预览版,Khronos预计将在今年晚些时候发布最终版,并提供配套的驱动程序。从今天开始,OpenCL 2.1也可以作为一个临时规范使用,但是没有说明它将在什么时候定稿。