Stay organized with collections Save and categorize content based on your preferences.


Leverage graphics facilities across multiple Android platform releases
Latest Update Stable Release Release Candidate Beta Release Alpha Release
March 22, 2023 - - - 1.0.0-alpha03

Declaring dependencies

To add a dependency on Graphics, you must add the Google Maven repository to your project. Read Google's Maven repository for more information.

Add the dependencies for the artifacts you need in the build.gradle file for your app or module:


dependencies {
    implementation ""


dependencies {

For more information about dependencies, see Add build dependencies.


Your feedback helps make Jetpack better. Let us know if you discover new issues or have ideas for improving this library. Please take a look at the existing issues in this library before you create a new one. You can add your vote to an existing issue by clicking the star button.

Create a new issue

See the Issue Tracker documentation for more information.

There are no release notes for this artifact.

Graphics Path Version 1.0

Version 1.0.0-alpha01

March 22, 2023 is released. Version 1.0.0-alpha01 contains these commits.

New Features

  • This new library allows querying of Path data via the new PathIterator API. Using this API, callers can iterate through all segments of a Path object to determine the operation and data for those segments.
  • The library uses similar APIs introduced in Android 14 preview, but this AndroidX version of the API also works on versions back to API 21.

Graphics Core Version 1.0

Version 1.0.0-alpha03

March 22, 2023 is released. Version 1.0.0-alpha03 contains these commits.

API Changes

  • Updated GLFrontBufferedRenderer callback implementation to provide BufferInfo object that contains buffer width/height along with a frame buffer identifier that can be used to re-target the original destination after rendering to an intermediate scratch buffer. (I7fe20)
  • Consolidated SyncFence creation to static factory method on SyncFenceCompat.
  • Removed public compatibility method for eglDupNativeFenceFDANDROID in favor of SyncFenceCompat factory method for SyncFence creation. This is to ensure all API surfaces receive the correct SyncFence implementation regardless of API level. (I849bb)
  • Added documentation for FrameBufferRenderer and SyncStrategy.
    • Moved FrameBufferRenderer + FrameBuffer + FrameBufferPool to package
    • Moved SyncStrategy to package
    • Updated RenderCallback#onDraw docs
    • Updated documentation of RenderCallback#obtainFrameBuffer that implementor of API is responsible for calling FrameBuffer.close
    • Updated onDrawComplete to indicate consumers are responsible for dispatching contents to display
    • Moved SyncFence compatibility interfaces/classes to androidx.hardware package to mirror the framework
    • Renamed SyncFence API to SyncFenceV19 and made private to consolidate usages to SyncFenceCompat which leverages the framework's SyncFence API wherever possible. (I5149c)
  • Added GLFrontBufferedRenderer#cancel and GLFrontBufferedRenderer#execute methods. The former is useful in palm rejection scenarios where rendering to the front buffer should be cancelled and hide the front buffer. The latter is useful in scenarios to manipulate objects on the GL thread without having to schedule a render. (If0b7f)
  • Add API to render directly to the double buffered layer. This assists with re-rendering a scene after resume as well as giving an opportunity to consumers to selectively determine when to leverage front buffered rendering dynamically based on the desired scene to render. (Ied56c)
  • Added new API to SurfaceControlCompat.Builder to support configuring the parent SurfaceControl from another SurfaceControl instance in addition to the existing mechanism from a SurfaceView. (I1d1b6)
  • More return type nullability of deprecated-hidden functions (Ibf7b0)
  • Added EGL_ANDROID_get_native_client_buffer extension constant to query whether the Android device supports importing of HardwareBuffer instances into EGLClientBuffer objects that can be consumed as an EGLImage instance. (Iad767)
  • Adding @JvmDefaultWithCompatibility annotation (I8f206)

Version 1.0.0-alpha02

November 9, 2022 is released. Version 1.0.0-alpha02 contains these commits.

API Changes

  • Fixed missing RequiresApi annotation for addTransactionCommitListener which was introduced in Android S (I0a035)
  • Updated onDraw<Front/Double> Buffer callbacks to provide a transform matrix that consumers can pass to their vertex shaders in addition to the current buffer width/height. Consumers are responsible for using these parameters to properly pre-rotate their OpenGL rendering code. (I82f9e)

Bug Fixes

  • Improved graphics latency by pre-rotating buffers before issuing SurfaceControl transactions.
  • Fixed issue where error logs would show error 300d (EGL_BAD_SURFACE).
  • Fixed issue where GLFrontBufferedRenderer would be invalid after the corresponding Activity it was used within was resumed.
  • Increased support for emulators and ChromeOS devices.
  • Fixed issue where the front buffered layer maybe hidden prematurely.

Version 1.0.0-alpha01

October 24, 2022 is released. Version 1.0.0-alpha01 contains these commits.

New Features

  • Initial release of the graphics core AndroidX library. This includes APIs to support low latency use cases such as stylus input. This also introduces some helper APIs for OpenGL usage.

API Changes

  • Introduces GLFrontBufferedRenderer to assist in front and multi-buffered rendering to achieve both low latency and high quality rendering output.
  • Introduces GLRenderer API to assist in OpenGL rendering for various Surface providers such as SurfaceView, TextureView and others.