Vulkan

Android 支持 Vulkan,这是一种低开销、跨平台的 API,适用于高性能 3D 图形。与 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
components

图 1. Vulkan 组件

组件名称 提供商 说明
Vulkan 验证层 Android(在 NDK 中) 在 Vulkan 应用开发期间使用的库,用于查找应用对 Vulkan API 的使用错误。在找到 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 的信息

  • Vulkan 加载程序 (libvulkan.so),位于 platform/frameworks/native/vulkan。包含 Android 的 Vulkan 加载程序,以及一些对平台开发者有用的 Vulkan 相关工具。
  • 实现 Vulkan。旨在为 GPU IHV 编写 Android 的 Vulkan 驱动程序以及 OEM 为特定设备集成这些驱动程序。它介绍了 Vulkan 驱动程序如何与系统交互、应如何安装特定于 GPU 的工具以及 Android 特有的实现要求。
  • Vulkan 图形 API 指南。包括关于开始在 Android 应用中使用 Vulkan、Android 的 Vulkan 设计指南平台、使用 Vulkan 的着色器编译器以及使用验证层以帮助确保使用 Vulkan 的应用稳定性的信息。
  • Vulkan 新闻。涵盖事件、补丁、教程和更多 Vulkan 相关的新闻文章。