Starting March 27, 2025, we recommend using android-latest-release
instead of aosp-main
to build and contribute to AOSP. For more information, see Changes to AOSP.
Vulkan
Stay organized with collections
Save and categorize content based on your preferences.
Android supports
Vulkan, a
low-overhead, cross-platform API for high-performance 3D graphics. Like
OpenGL ES (GLES),
Vulkan provides tools for creating high-quality, real-time graphics
in apps. Advantages of using Vulkan include reductions in CPU overhead and
support for the SPIR-V
Binary Intermediate language.
System on chip vendors (SoCs) such as GPU independent hardware vendors (IHVs)
can write Vulkan drivers for Android. OEMs need to integrate these
drivers for specific devices. For details on how a Vulkan driver interacts with
the system, how GPU-specific tools should be installed, and Android-specific
requirements, see Implementing
Vulkan.
Application developers use Vulkan to create apps that
execute commands on the GPU with significantly reduced overhead. Vulkan also
provides a more direct mapping to the capabilities found in current graphics
hardware compared to EGL and GLES,
minimizing opportunities for driver bugs and reducing developer testing time.
For general information on Vulkan, refer to the
Vulkan
Overview or see the list of Resources.
Vulkan components
Vulkan support includes the following components.

Figure 1. Vulkan components
Component name |
Provider |
Description |
Vulkan Validation Layers |
Android (in the NDK) |
Libraries used during the development of Vulkan apps to find errors in
an app's use of the Vulkan API. After API usage errors are found, these
libraries should be removed. |
Vulkan Runtime |
Android |
A native library, libvulkan.so , that provides a native
Vulkan API.
Most of Vulkan Runtime's functionality is implemented by a driver
provided by the GPU vendor. Vulkan Runtime wraps the driver, provides API
interception capabilities (for debugging and other developer tools), and
manages the interaction between the driver and the platform
dependencies. |
Vulkan Driver |
SoC |
Maps the Vulkan API onto hardware-specific GPU commands and interactions
with the kernel graphics driver. |
Modified components
BufferQueue and Gralloc support Vulkan:
- BufferQueue. Additional enum values and methods in
BufferQueue and the
ANativeWindow
interface enable Vulkan
Runtime to connect to BufferQueue through ANativeWindow
.
- Gralloc. An optional interface lets Gralloc
discover whether a given format can be used for a particular
producer/consumer combination without allocating a buffer.
For details on these components, see
BufferQueue and
gralloc. For details on ANativeWindow
, see
EGLSurfaces and OpenGL
ES).
Resources
Use the following resources to learn more about Vulkan:
-
Vulkan Loader (
libvulkan.so
) at
platform/frameworks/native/vulkan
. Contains Android's Vulkan
loader, as well as some Vulkan-related tools useful to platform developers.
- Implementing Vulkan.
Intended for GPU IHVs writing Vulkan drivers for
Android and OEMs integrating those drivers for specific devices. It describes
how a Vulkan driver interacts with the system, how GPU-specific tools should be
installed, and Android-specific implementation requirements.
- Vulkan Graphics API Guide. Includes information on getting
started with using Vulkan in Android apps, Android's Vulkan design guidelines
platform, using Vulkan's shader compilers, and using validation
layers to help ensure stability in apps using Vulkan.
- Vulkan News. Covers
events, patches, tutorials, and more Vulkan-related news articles.
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-06-18 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-06-18 UTC."],[],[],null,["# Vulkan\n\nAndroid supports\n[Vulkan](https://www.khronos.org/vulkan/), a\nlow-overhead, cross-platform API for high-performance 3D graphics. Like\n[OpenGL ES (GLES)](https://www.khronos.org/opengles/),\nVulkan provides tools for creating high-quality, real-time graphics\nin apps. Advantages of using Vulkan include reductions in CPU overhead and\nsupport for the [SPIR-V\nBinary Intermediate](https://www.khronos.org/spir) language.\n\nSystem on chip vendors (SoCs) such as GPU independent hardware vendors (IHVs)\ncan write Vulkan drivers for Android. OEMs need to integrate these\ndrivers for specific devices. For details on how a Vulkan driver interacts with\nthe system, how GPU-specific tools should be installed, and Android-specific\nrequirements, see [Implementing\nVulkan.](/docs/core/graphics/implement-vulkan)\n\nApplication developers use Vulkan to create apps that\nexecute commands on the GPU with significantly reduced overhead. Vulkan also\nprovides a more direct mapping to the capabilities found in current graphics\nhardware compared to [EGL](https://www.khronos.org/egl) and GLES,\nminimizing opportunities for driver bugs and reducing developer testing time.\n\nFor general information on Vulkan, refer to the\n[Vulkan\nOverview](http://khr.io/vulkanlaunchoverview) or see the list of [Resources](#resources).\n\nVulkan components\n-----------------\n\nVulkan support includes the following components.\n\n**Figure 1.** Vulkan components\n\n| Component name | Provider | Description |\n|--------------------------|----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Vulkan Validation Layers | Android (in the NDK) | Libraries used during the development of Vulkan apps to find errors in an app's use of the Vulkan API. After API usage errors are found, these libraries should be removed. |\n| Vulkan Runtime | Android | A native library, `libvulkan.so`, that provides a native Vulkan API. Most of Vulkan Runtime's functionality is implemented by a driver provided by the GPU vendor. Vulkan Runtime wraps the driver, provides API interception capabilities (for debugging and other developer tools), and manages the interaction between the driver and the platform dependencies. |\n| Vulkan Driver | SoC | Maps the Vulkan API onto hardware-specific GPU commands and interactions with the kernel graphics driver. |\n\nModified components\n-------------------\n\nBufferQueue and Gralloc support Vulkan:\n\n- **BufferQueue.** Additional enum values and methods in BufferQueue and the `ANativeWindow` interface enable Vulkan Runtime to connect to BufferQueue through `ANativeWindow`.\n- **Gralloc.** An optional interface lets Gralloc discover whether a given format can be used for a particular producer/consumer combination without allocating a buffer.\n\nFor details on these components, see\n[BufferQueue and\ngralloc](/docs/core/graphics/arch-bq-gralloc). For details on `ANativeWindow`, see\n[EGLSurfaces and OpenGL\nES](/docs/core/graphics/arch-egl-opengl)).\n\nResources\n---------\n\nUse the following resources to learn more about Vulkan:\n\n- [Vulkan Loader](https://android.googlesource.com/platform/frameworks/native/+/android16-release/vulkan/#) (`libvulkan.so`) at `platform/frameworks/native/vulkan`. Contains Android's Vulkan loader, as well as some Vulkan-related tools useful to platform developers.\n- [Implementing Vulkan](/docs/core/graphics/implement-vulkan). Intended for GPU IHVs writing Vulkan drivers for Android and OEMs integrating those drivers for specific devices. It describes how a Vulkan driver interacts with the system, how GPU-specific tools should be installed, and Android-specific implementation requirements.\n- [Vulkan Graphics API Guide](https://developer.android.com/ndk/guides/graphics/index.html). Includes information on getting started with using Vulkan in Android apps, Android's Vulkan design guidelines platform, using Vulkan's shader compilers, and using validation layers to help ensure stability in apps using Vulkan.\n- [Vulkan News](https://www.khronos.org/#slider_vulkan). Covers events, patches, tutorials, and more Vulkan-related news articles."]]