架构5--Vulkan

转自:https://source.android.com/devices/graphics/?hl=zh-cn

Vulkan

Android 7.0 添加了对Vulkan的支持。Vulkan 是用于高性能 3D 图形的低开销、跨平台 API。与 OpenGL ES 一样,Vulkan 提供多种用于在应用中创建高质量的实时图形的工具。Vulkan 的优势包括降低 CPU 开销以及支持SPIR-V 二进制中间语言。

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

应用开发者可以利用 Vulkan 来创建在 GPU 上执行命令的应用,大幅降低开销。此外,Vulkan 还可以更直接地映射到当前图形硬件中的功能,最大限度地降低驱动程序的出错概率,并减少开发者的测试时间(例如,排查 Vulkan 错误所需的时间更短)。

有关 Vulkan 的常规信息,请参阅Vulkan 概览或查看下文中的资源列表。

Vulkan 组件

Vulkan 支持包含以下组件:


                                                                  图 1:Vulkan 组件

Vulkan 验证层(在 Android NDK 中提供)。这是开发者在开发 Vulkan 应用期间使用的一组库。图形供应商提供的 Vulkan 运行时库和 Vulkan 驱动程序不包含使 Vulkan 运行时保持高效的运行时错误检查功能,而是使用验证库(仅在开发过程中)来查找应用在使用 Vulkan API 时出现的错误。Vulkan 验证库在开发过程中关联到应用并执行此错误检查。在找出所有 API 使用问题之后,该应用将不再需要包含这些库。

Vulkan 运行时(由 Android 提供)。这是一个原生库 ((libvulkan.so),提供称为Vulkan的新公共原生 API。大多数功能由 GPU 供应商提供的驱动程序实现;运行时会封装驱动程序、提供 API 拦截功能(针对调试和其他开发者工具)以及管理驱动程序与平台依赖项(如 BufferQueue)之间的交互。

Vulkan 驱动程序(由 SoC 提供)。将 Vulkan API 映射到特定于硬件的 GPU 命令以及与内核图形驱动程序的交互。

已修改的组件

为支持 Vulkan,Android 7.0 对以下现有图形组件进行了修改:

BufferQueue:Vulkan 运行时通过现有ANativeWindow接口与现有的 BufferQueue 组件进行交互。对ANativeWindow和 BufferQueue 进行了细微的修改(新枚举值和新方法),而架构没有任何变更。

Gralloc HAL:添加了一个新的可选接口,用于了解是否可将某种指定格式用于特定生产方/消费方组合,而无需实际分配缓冲区。

有关这些组件的详情,请参阅BufferQueue 和 gralloc(有关ANativeWindow的详情,请参阅EGLSurface 和 OpenGL ES)。

Vulkan API

Android 平台包括来自 Khronos Group 的Vulkan API 规范Android 特定实现。Android 应用必须使用Window 系统集成 (WSI) 扩展程序来输出其呈现内容。

资源

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

位于platform/frameworks/native/vulkan的Vulkan 加载程序(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 相关的新闻报道。

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 3.0 License, and code samples are licensed under theApache 2.0 License. For details, see ourSite Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 九月 6, 2017.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,633评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,464评论 19 139
  • 在我们童言无忌的孩童时代,你一定听老人家说过,卧室里的镜子不要对照着床,否则晚上睡觉的时候会被镜子勾魂!少不更事,...
    Feeling生活学阅读 7,727评论 13 13
  • 前几年的时候,看完《居里夫人》就幻想成为科学家,功成名就。 前几年的时候,看完《乔布斯传》就幻想成为企业家,独领风...
    fighting41love阅读 4,868评论 2 5
  • 今天,看了笑傲江湖8月28的那期节目。这是一个搞笑的节目,但是这一期却让我热泪盈眶,感动不已。 我的感动来源于最后...
    孤松向上阅读 3,169评论 0 0