Vulkan

Android 支持 Vulkan,这是一套适用于高性能 3D 图形的低开销、跨平台 API。与 OpenGL ES (GLES) 一样,Vulkan 提供用于在应用中创建高品质实时图形的工具。使用 Vulkan 的优势包括降低 CPU 开销以及支持 SPIR-V 二进制中间语言。

系统芯片 (SoC) 供应商(例如 GPU 独立硬件供应商 (IHV))可以编写适用于 Android 的 Vulkan 驱动程序。原始设备制造商 (OEM) 只需为特定设备集成这些驱动程序即可。如需详细了解 Vulkan 驱动程序如何与系统进行交互、应如何安装特定于 GPU 的工具以及特定于 Android 的要求,请参阅实现 Vulkan

应用开发者可以使用 Vulkan 来打造在 GPU 上执行命令的应用,大幅降低开销。与 EGL 和 GLES 相比,Vulkan 还可以更直接地映射到当前图形硬件中的功能,最大限度地降低驱动程序的出错概率,并减少开发者的测试时间。

如需了解 Vulkan 的常规信息,请参阅 Vulkan 概览或查看资源列表。

Vulkan 组件

对 Vulkan 的支持包含以下组件。

Vulkan 组件

图 1. Vulkan 组件

组件名称 提供者 说明
Vulkan 验证层 Android(在 NDK 中) 在 Vulkan 应用开发期间使用的库,用于查找应用在 Vulkan API 的使用方面的错误。在找出此类错误后,应移除这些库。
Vulkan 运行时 Android 原生库 (libvulkan.so) 提供原生 Vulkan API。

Vulkan 运行时的大部分功能由 GPU 供应商提供的驱动程序实现。Vulkan 运行时会封装驱动程序、提供 API 拦截功能(针对调试和其他开发者工具)以及管理驱动程序与平台依赖项之间的交互。
Vulkan 驱动程序 SoC 将 Vulkan API 映射到特定于硬件的 GPU 命令以及与内核图形驱动程序的交互。

有修改的组件

BufferQueue 和 Gralloc 支持 Vulkan:

  • BufferQueue。 BufferQueue 中的额外枚举值和方法以及 ANativeWindow 接口可让 Vulkan 运行时通过 ANativeWindow 连接到 BufferQueue。
  • Gralloc。 可选接口。通过它,Gralloc 可以了解是否能够将某种指定格式用于特定生产方/消费方组合,而无需分配缓冲区。

如需详细了解这些组件,请参阅 BufferQueue 和 gralloc。如需详细了解 ANativeWindow,请参阅 EGLSurfaces 和 OpenGL ES

资源

通过以下资源详细了解 Vulkan:

  • 位于 platform/frameworks/native/vulkanVulkan 加载程序 (libvulkan.so)。其中包含 Android 的 Vulkan 加载程序,以及一些对平台开发者十分有用的 Vulkan 相关工具。
  • 实现 Vulkan。旨在帮助 GPU IHV 编写适用于 Android 的 Vulkan 驱动程序,以及指导原始设备制造商 (OEM) 为特定设备集成这些驱动程序。该指南介绍了 Vulkan 驱动程序如何与系统进行交互、应该如何安装特定于 GPU 的工具以及特定于 Android 的实现要求。
  • Vulkan Graphics API 指南。介绍了如何开始在 Android 应用中使用 Vulkan、Android 平台上的 Vulkan 设计指南、如何使用 Vulkan 的着色程序编译器以及如何使用验证层来帮助确保使用 Vulkan 的应用的稳定性。
  • Vulkan 新闻:包含事件、补丁程序、教程以及更多与 Vulkan 相关的新闻报道。