diff --git a/Android.bp b/Android.bp
index e6c7939089645ab68a001aa98e2a03ea2bb2726f..0f67757179dbb8d99795be19d7050d93d51ec0cd 100644
--- a/Android.bp
+++ b/Android.bp
@@ -65,7 +65,7 @@ filegroup {
 }
 
 filegroup {
-    name: "framework-graphics-sources",
+    name: "framework-graphics-nonupdatable-sources",
     srcs: [
         "graphics/java/**/*.java",
         "graphics/java/**/*.aidl",
@@ -223,7 +223,7 @@ filegroup {
         ":framework-blobstore-sources",
         ":framework-core-sources",
         ":framework-drm-sources",
-        ":framework-graphics-sources",
+        ":framework-graphics-nonupdatable-sources",
         ":framework-jobscheduler-sources", // jobscheduler is not a module for R
         ":framework-keystore-sources",
         ":framework-identity-sources",
@@ -282,6 +282,7 @@ filegroup {
     name: "framework-updatable-sources",
     srcs: [
         ":framework-appsearch-sources",
+        ":framework-graphics-srcs",
         ":framework-mediaprovider-sources",
         ":framework-permission-sources",
         ":framework-sdkextensions-sources",
@@ -297,6 +298,7 @@ java_library {
     name: "framework-updatable-stubs-module_libs_api",
     static_libs: [
         "framework-appsearch-stubs", // TODO: Update to module_libs_api when there is one.
+        "framework-graphics-stubs-module_libs_api",
         "framework-media-stubs-module_libs_api",
         "framework-mediaprovider-stubs-module_libs_api",
         "framework-permission-stubs-module_libs_api",
diff --git a/libs/hwui/Android.bp b/libs/hwui/Android.bp
index f7fc5229613ea85bf1be9d607032e716e1be7480..4ad130b980b632037d4b38ee52bb32df58a28db5 100644
--- a/libs/hwui/Android.bp
+++ b/libs/hwui/Android.bp
@@ -152,6 +152,107 @@ cc_defaults {
     },
 }
 
+// ------------------------
+// framework-graphics jar
+// ------------------------
+
+java_library {
+    name: "framework-graphics",
+
+    srcs: [
+        ":framework-graphics-srcs",
+    ],
+
+    permitted_packages: [
+        "android.graphics",
+    ],
+
+    sdk_version: "module_current",
+
+    // TODO: once framework-graphics is officially part of the
+    // UI-rendering module this line would no longer be
+    // needed.
+    installable: true,
+
+    // Enable detection of apis used by this module
+    plugins: ["java_api_finder",],
+}
+
+filegroup {
+    name: "framework-graphics-srcs",
+    srcs: [
+        "apex/java/**/*.java",
+    ],
+    path: "apex/java"
+}
+
+stubs_defaults {
+    name: "framework-graphics-stubs-srcs-defaults",
+    srcs: [ ":framework-graphics-srcs"],
+}
+
+droidstubs {
+    name: "framework-graphics-api-module_libs_api",
+    defaults: [
+        "framework-graphics-stubs-srcs-defaults",
+        "framework-module-api-defaults-module_libs_api",
+    ],
+}
+
+droidstubs {
+    name: "framework-graphics-stubs-srcs-module_libs_api",
+    defaults: [
+        "framework-graphics-stubs-srcs-defaults",
+        "framework-module-stubs-defaults-module_libs_api",
+    ],
+}
+
+droidstubs {
+    name: "framework-graphics-stubs-srcs-publicapi",
+    defaults: [
+        "framework-graphics-stubs-srcs-defaults",
+        "framework-module-stubs-defaults-publicapi",
+    ],
+}
+
+droidstubs {
+    name: "framework-graphics-stubs-srcs-systemapi",
+    defaults: [
+        "framework-graphics-stubs-srcs-defaults",
+        "framework-module-stubs-defaults-systemapi",
+    ],
+}
+
+java_library {
+    name: "framework-graphics-stubs-module_libs_api",
+    srcs: [":framework-graphics-stubs-srcs-module_libs_api"],
+    sdk_version: "system_current",
+    visibility: [
+        "//frameworks/base", // Framework
+        "//frameworks/base/libs/hwui", // UI-rendering module
+    ],
+}
+
+java_library {
+    name: "framework-graphics-stubs-publicapi",
+    srcs: [":framework-graphics-stubs-srcs-publicapi"],
+    sdk_version: "current",
+    visibility: [
+        "//frameworks/base", // Framework
+        "//frameworks/base/libs/hwui", // UI-rendering module
+    ],
+}
+
+java_library {
+    name: "framework-graphics-stubs-systemapi",
+    srcs: [":framework-graphics-stubs-srcs-systemapi"],
+    sdk_version: "system_current",
+    visibility: [
+        "//frameworks/base", // Framework
+        "//frameworks/base/libs/hwui", // UI-rendering module
+    ],
+}
+
 // ------------------------
 // APEX
 // ------------------------
diff --git a/graphics/java/android/graphics/ColorMatrix.java b/libs/hwui/apex/java/android/graphics/ColorMatrix.java
similarity index 100%
rename from graphics/java/android/graphics/ColorMatrix.java
rename to libs/hwui/apex/java/android/graphics/ColorMatrix.java
diff --git a/libs/hwui/api/current.txt b/libs/hwui/api/current.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c396a2032eed3b40c77fcfc4cad0ccd60799c1e2
--- /dev/null
+++ b/libs/hwui/api/current.txt
@@ -0,0 +1,23 @@
+// Signature format: 2.0
+package android.graphics {
+
+  public class ColorMatrix {
+    ctor public ColorMatrix();
+    ctor public ColorMatrix(float[]);
+    ctor public ColorMatrix(android.graphics.ColorMatrix);
+    method public final float[] getArray();
+    method public void postConcat(android.graphics.ColorMatrix);
+    method public void preConcat(android.graphics.ColorMatrix);
+    method public void reset();
+    method public void set(android.graphics.ColorMatrix);
+    method public void set(float[]);
+    method public void setConcat(android.graphics.ColorMatrix, android.graphics.ColorMatrix);
+    method public void setRGB2YUV();
+    method public void setRotate(int, float);
+    method public void setSaturation(float);
+    method public void setScale(float, float, float, float);
+    method public void setYUV2RGB();
+  }
+
+}
+
diff --git a/libs/hwui/api/module-lib-current.txt b/libs/hwui/api/module-lib-current.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d802177e249b3f97128699222e65c35e57ba7540
--- /dev/null
+++ b/libs/hwui/api/module-lib-current.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/libs/hwui/api/module-lib-removed.txt b/libs/hwui/api/module-lib-removed.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d802177e249b3f97128699222e65c35e57ba7540
--- /dev/null
+++ b/libs/hwui/api/module-lib-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/libs/hwui/api/removed.txt b/libs/hwui/api/removed.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d802177e249b3f97128699222e65c35e57ba7540
--- /dev/null
+++ b/libs/hwui/api/removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/libs/hwui/api/system-current.txt b/libs/hwui/api/system-current.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d802177e249b3f97128699222e65c35e57ba7540
--- /dev/null
+++ b/libs/hwui/api/system-current.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/libs/hwui/api/system-removed.txt b/libs/hwui/api/system-removed.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d802177e249b3f97128699222e65c35e57ba7540
--- /dev/null
+++ b/libs/hwui/api/system-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0