| <html devsite><head> |
| <title>Vulkan</title> |
| <meta name="project_path" value="/_project.yaml"/> |
| <meta name="book_path" value="/_book.yaml"/> |
| </head> |
| <body> |
| <!-- |
| Copyright 2017 The Android Open Source Project |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <p>Android 7.0 添加了对 <a href="https://www.khronos.org/vulkan/">Vulkan</a> 的支持。Vulkan 是用于高性能 3D 图形的低开销、跨平台 API。与 OpenGL ES 一样,Vulkan 提供多种用于在应用中创建高质量的实时图形的工具。Vulkan 的优势包括降低 CPU 开销以及支持 <a href="https://www.khronos.org/spir">SPIR-V 二进制中间</a>语言。 |
| </p> |
| |
| <p>系统芯片 (SoC) 供应商(如 GPU 独立硬件供应商 (IHV))可以编写适用于 Android 的 Vulkan 驱动程序;原始设备制造商 (OEM) 只需为特定设备集成这些驱动程序即可。要详细了解 Vulkan 驱动程序如何与系统进行交互、应如何安装特定于 GPU 的工具以及特定于 Android 的要求,请参阅<a href="/devices/graphics/implement-vulkan.html">实现 Vulkan</a>。</p> |
| |
| <p>应用开发者可以利用 Vulkan 来创建在 GPU 上执行命令的应用,大幅降低开销。此外,Vulkan 还可以更直接地映射到当前图形硬件中的功能,最大限度地降低驱动程序的出错概率,并减少开发者的测试时间(例如,排查 Vulkan 错误所需的时间更短)。</p> |
| |
| <p>有关 Vulkan 的常规信息,请参阅 <a href="http://khr.io/vulkanlaunchoverview">Vulkan 概览</a>或查看下文中的<a href="#resources">资源</a>列表。</p> |
| |
| <h2 id="vulkan_components">Vulkan 组件</h2> |
| <p>Vulkan 支持包含以下组件:</p> |
| <p><img src="/devices/graphics/images/ape_graphics_vulkan.png"/></p> |
| <p class="img-caption"><strong>图 1.</strong> Vulkan 组件</p> |
| |
| <ul> |
| <li><strong>Vulkan 验证层</strong><em></em>(在 Android NDK 中提供)。这是开发者在开发 Vulkan 应用期间使用的一组库。图形供应商提供的 Vulkan 运行时库和 Vulkan 驱动程序不包含使 Vulkan 运行时保持高效的运行时错误检查功能,而是使用验证库(仅在开发过程中)来查找应用在使用 Vulkan API 时出现的错误。Vulkan 验证库在开发过程中关联到应用并执行此错误检查。在找出所有 API 使用问题之后,该应用将不再需要包含这些库。</li> |
| <li><strong>Vulkan 运行时</strong><em></em>(由 Android 提供)。这是一个原生库 (<code>(libvulkan.so</code>),提供称为 <a href="https://www.khronos.org/vulkan">Vulkan</a> 的新公共原生 API。大多数功能由 GPU 供应商提供的驱动程序实现;运行时会封装驱动程序、提供 API 拦截功能(针对调试和其他开发者工具)以及管理驱动程序与平台依赖项(如 BufferQueue)之间的交互。</li> |
| <li><strong>Vulkan 驱动程序</strong><em></em>(由 SoC 提供)。将 Vulkan API 映射到特定于硬件的 GPU 命令以及与内核图形驱动程序的交互。</li> |
| </ul> |
| |
| <h2 id="modified_components">已修改的组件</h2> |
| <p>为支持 Vulkan,Android 7.0 对以下现有图形组件进行了修改:</p> |
| |
| <ul> |
| <li><strong>BufferQueue</strong>:Vulkan 运行时通过现有 <code>ANativeWindow</code> 接口与现有的 BufferQueue 组件进行交互。对 <code>ANativeWindow</code> 和 BufferQueue 进行了细微的修改(新枚举值和新方法),而架构没有任何变更。</li> |
| <li><strong>Gralloc HAL</strong>:添加了一个新的可选接口,用于了解是否可将某种指定格式用于特定生产方/消费方组合,而无需实际分配缓冲区。</li> |
| </ul> |
| |
| <p>要详细了解这些组件,请参阅 <a href="/devices/graphics/arch-bq-gralloc.html">BufferQueue 和 gralloc</a>(要详细了解 <code>ANativeWindow</code>,请参阅 <a href="/devices/graphics/arch-egl-opengl.html">EGLSurface 和 OpenGLES</a>)。 |
| |
| </p><h2 id="apis">Vulkan API</h2> |
| <p>Android 平台包括来自 Khronos Group 的 <a href="https://www.khronos.org/vulkan/">Vulkan API 规范</a>的 <a href="https://developer.android.com/ndk/guides/graphics/index.html">Android 专属实现</a>。Android 应用必须使用 <a href="/devices/graphics/implement-vulkan.html#wsi">Window 系统集成 (WSI) 扩展程序</a>来输出其呈现内容。</p> |
| |
| <h2 id="resources">资源</h2> |
| <p>通过以下资源详细了解 Vulkan:</p> |
| <ul> |
| |
| <li> |
| 位于 <code>platform/frameworks/native/vulkan</code> 的 <a href="https://android.googlesource.com/platform/frameworks/native/+/master/vulkan/#">Vulkan 加载程序 </a>(libvulkan.so)。包含 Android 的 Vulkan 加载程序,以及一些对平台开发者十分有用的 Vulkan 相关工具。</li> |
| |
| <li><a href="https://android.googlesource.com/platform/frameworks/native/+/master/vulkan/doc/implementors_guide/implementors_guide.html">Vulkan 实现人员指南</a>:旨在帮助 GPU IHV 编写适用于 Android 的 Vulkan 驱动程序,以及指导原始设备制造商 (OEM) 为特定设备集成这些驱动程序。该指南介绍了 Vulkan 驱动程序如何与系统进行交互、应如何安装特定于 GPU 的工具,以及特定于 Android 的要求。</li> |
| |
| <li><a href="https://developer.android.com/ndk/guides/graphics/index.html">Vulkan Graphics API 指南</a>:介绍了如何开始在 Android 应用中使用 Vulkan、Android 平台上的 Vulkan 设计指南详情、如何使用 Vulkan 的着色程序编译器,以及如何使用验证层来帮助确保使用 Vulkan 的应用的稳定性。</li> |
| |
| <li><a href="https://www.khronos.org/#slider_vulkan">Vulkan 新闻</a>:包含事件、补丁程序、教程以及更多与 Vulkan 相关的新闻报道。</li> |
| </ul> |
| |
| </body></html> |