)]}'
{
  "log": [
    {
      "commit": "cac5fd3e09e9dc918753d4aff624bf29a367ade3",
      "tree": "6d1db0b5ed0cf9ce616f7e8d969da81f7f606b66",
      "parents": [
        "d21b6e1fe337b35f62cf2028e9bd0637fd009a75"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Dec 01 20:08:50 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Dec 01 20:08:50 2011 -0800"
      },
      "message": "Faster text clipping\n\nChange-Id: I03a00c4261d81a416b1ad7b86ce2d432c71908b4\n"
    },
    {
      "commit": "7953745dd565167113f8cbfc461bc0521d32d870",
      "tree": "f45d34b4b7a6c19c0a639be68e6455a116a93bca",
      "parents": [
        "0bbd8d8273c1dde9e0504f67bd8eb159bef2406a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 12 13:48:51 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 12 13:48:51 2011 -0700"
      },
      "message": "Reduce the size of libhwui by 50%\n\nThis change removes unnessary symbols. All symbols are hidden by\ndefault, public APIs with exported symbols are explicitly marked\nwith ANDROID_API.\n\nChange-Id: I692fde432a86c12108de1cfd1f6504919a7d5f3f\n"
    },
    {
      "commit": "9d865512f1a39bac6bed612b24023213d5a1fb1d",
      "tree": "ab2c197947927eb61cbb54faa460b85cd0e7e155",
      "parents": [
        "e63a4f35c94f32dbc13533ddfb7334f9706be844"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 11 17:31:42 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 11 17:37:02 2011 -0700"
      },
      "message": "Remove unnecessary private API\n\nChange-Id: I2ecb367528ec0691c07153a3d163b82a6ca33fdf\n"
    },
    {
      "commit": "e3c26851dc315b730ea0fe5ef35bb1db81f6d675",
      "tree": "bc3fbae626f785fa38e40d4f5ab3737777d9a1ef",
      "parents": [
        "29d23ecfd8612ecd4a7b2140acd344934b73a558"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 25 16:36:01 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 25 16:36:01 2011 -0700"
      },
      "message": "Improve rendering performance on some GPUs\n\nThis change sets textures filtering to GL_NEAREST by default. GL_LINEAR\nfiltering is only used when textures are transformed with a scale or\na rotation. This helps save a couple of fps on some GPUs.\n\nChange-Id: I1efaa452c2c79905f00238e54d886a37203a2ac1\n"
    },
    {
      "commit": "77a811610f99e21da7f88dafef60d09f345d0506",
      "tree": "f9342ace8ae4541f75c17a3f8531d3c6090de474",
      "parents": [
        "113543c909baadb911cfda6acef056137e16f191"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 14 16:45:55 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 14 17:06:53 2011 -0700"
      },
      "message": "Add TextureView.getBitmap()\n\nThis API can be used to get a Bitmap copy of the content of a\nTextureView.\n\nChange-Id: I07522216c353720fba5cab333174f58f484eb911\n"
    },
    {
      "commit": "54be1cdf3d63095512120fa7ced5c16e462abffa",
      "tree": "01f454747cc08f12375ae1ce458b0ef07beecbef",
      "parents": [
        "40b62576ffeea06e481cae40db89455c2ddf8a63"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jun 13 19:04:27 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jun 13 19:04:27 2011 -0700"
      },
      "message": "Batch glCopyTexImage() calls to get about 15 fps back on SGX.\n\nChange-Id: I04079e070739c1e46df3e90fc388c335e2a7d2b9\n"
    },
    {
      "commit": "726aeba80ffc6778a9bc3e0ee957b8d644183505",
      "tree": "2a270831f12cfa6dd69a07e9068c76c3b737754e",
      "parents": [
        "f09ef51889f75289b041f9e9f949b7b82ed5b686"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 01 14:52:00 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 01 14:55:42 2011 -0700"
      },
      "message": "Add support to OpenGLRendere to draw BiDi text.\nBug #4350336\n\nChange-Id: I1cf31693f7ca9653fa3a41b5b91c27ef288d680f\n"
    },
    {
      "commit": "f09ef51889f75289b041f9e9f949b7b82ed5b686",
      "tree": "abb6fa101bbf18deec6edbd1d799cf7eb31a2b41",
      "parents": [
        "a4fa2cd1c007c2bd0f330f6a3ffde2949d9574c5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri May 27 11:43:46 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri May 27 11:43:46 2011 -0700"
      },
      "message": "Fix issue with drawColor(color, Mode.Clear)\n\nChange-Id: I486b24a5b609c6f8adb0276037ddb24af2b888b2\n"
    },
    {
      "commit": "9dec462c1f522533620be3c70f2fc60e69368c1a",
      "tree": "41edf6e4ef55ef8027af8c1007f85c372cb4a913",
      "parents": [
        "6ebbc077404a2ae1c82c746faa7b941901340569",
        "2ea75880142152b3a9993cb245754d73c05749a7"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Fri May 13 11:09:19 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 13 11:09:19 2011 -0700"
      },
      "message": "Merge \"Prepare OpenGLRenderer to use glyphs from TextLayoutCache\""
    },
    {
      "commit": "2ea75880142152b3a9993cb245754d73c05749a7",
      "tree": "35cc62ca30c9a4446a96ad674936dbe6652cfc6c",
      "parents": [
        "f470ced7cdb10a112a526339f92840587918aa6b"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Thu May 12 17:42:06 2011 -0700"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Fri May 13 11:07:38 2011 -0700"
      },
      "message": "Prepare OpenGLRenderer to use glyphs from TextLayoutCache\n\n- add OpenGLRenderer.drawGlyph()\n- refactor glypth logging code\n\nChange-Id: I797e6f1304d3f3f8f6ed31e7f9965d336233d2a4\n"
    },
    {
      "commit": "858aa93ddb6e69e0503382af63bb681b6728aef1",
      "tree": "e6d79eaeef1f9cd204615448da72b63970e3c256",
      "parents": [
        "e4ba346f0f1bb153ec1f9da5c0a4fc96c301efda"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu May 12 09:06:00 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu May 12 14:55:29 2011 -0700"
      },
      "message": "Antialiasing for rectangles\n\nChange-Id: I7ca6931606541ddd504bd5db7f8dc04b9cde8cd9\n"
    },
    {
      "commit": "ed30fd8e9a2d65ee5c8520de55b0089c219f390c",
      "tree": "26ba777cc019d3adcba613427a2bb2feabf9a54f",
      "parents": [
        "098b781699981a550500d2e30b4c844af63eb187"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Apr 22 16:18:45 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu May 05 07:35:40 2011 -0700"
      },
      "message": "Add ability for hierarchyviewer to output displaylist info\n\nClicking on a node in hierarchyviewer1 and hierarchyviewer2 and then\nclicking the new \"Dump DisplayList\" button will cause the display\nlist for the selected node (including its children) to be output into\nlogcat.\n\nChange-Id: Iad05f5f6cca0f8b465dccd962b501dc18fe6e053\n"
    },
    {
      "commit": "a17de9b493123f0d6e6d0b842150bf29322b7a88",
      "tree": "5a7518cfd3276a2e6ed40504f69fd3f8c3008a34",
      "parents": [
        "f2a4568afca603d3166fd86335abe095cd087393"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed May 04 18:23:12 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed May 04 18:23:12 2011 -0700"
      },
      "message": "Revert \"Add ability for hierarchyviewer to output displaylist info\"\n\nThis reverts commit b2a4b52e8d5e499d33e2765e8c47851bf0266299.\n"
    },
    {
      "commit": "b2a4b52e8d5e499d33e2765e8c47851bf0266299",
      "tree": "fccd7891e4f5ac2b3bb833f226e2c7c23a28202d",
      "parents": [
        "b969d2d9c1771a3a4c813f2c2824522659d26927"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Apr 22 16:18:45 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed May 04 17:18:27 2011 -0700"
      },
      "message": "Add ability for hierarchyviewer to output displaylist info\n\nClicking on a node in hierarchyviewer1 and hierarchyviewer2 and then\nclicking the new \"Dump DisplayList\" button will cause the display\nlist for the selected node (including its children) to be output into\nlogcat.\n\nChange-Id: Id32f62569ad1ab4d533bc62987f3a7390c1bb4e6\n"
    },
    {
      "commit": "df0a7fbdcff3c683641b7980da50a7d0eebe0876",
      "tree": "bce1f0ec1aecb5735a1dd17a7a5a87f13d7a94b0",
      "parents": [
        "8ef9eaaea8cc27145bf159e45b7d9eaa0aae6d5c",
        "8f0095cd33558e9cc8a440047908e53b68906f5f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon May 02 18:33:26 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 02 18:33:26 2011 -0700"
      },
      "message": "Merge \"Allows to render with an OpenGL context inside a TextureView.\""
    },
    {
      "commit": "8f0095cd33558e9cc8a440047908e53b68906f5f",
      "tree": "2f55d779bf102e0c134357d89c7de69d0444634a",
      "parents": [
        "3a5c227279011f850036c29e7c0bc96023298d5c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon May 02 17:24:22 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon May 02 18:32:29 2011 -0700"
      },
      "message": "Allows to render with an OpenGL context inside a TextureView.\n\nChange-Id: I59453f7fc3997f0502a1c5d325d37fed376fabc7\n"
    },
    {
      "commit": "99585adeb4167ca357a72eb866f34c1af944f4b9",
      "tree": "ba993a2167fb880c98e29e4d2bd46933e182b1cf",
      "parents": [
        "71a0dab1ca962c2827be0221a7fbcc065dc3cbb8"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon May 02 15:00:16 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon May 02 15:08:38 2011 -0700"
      },
      "message": "Line endcaps for AA lines are now antialiased.\n\nAlso fixed other minor issues with AA and line rendering.\n\nChange-Id: Icd4638d27c70e2ee0f28b5d9a2b97d8b29e8ac4d\n"
    },
    {
      "commit": "ad44445c772efe66fdf063aa8f78d7ae3233570e",
      "tree": "8097234b893dbc0dfe050a0a98e7acecce74b28b",
      "parents": [
        "efe2a0e6ac8183c98dfe969928509e3b32903b40",
        "aa6c24c21c727a196451332448d4e3b11a80be69"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Apr 28 18:47:01 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 28 18:47:01 2011 -0700"
      },
      "message": "Merge \"New widget: TextureView Bug #4343984\""
    },
    {
      "commit": "aa6c24c21c727a196451332448d4e3b11a80be69",
      "tree": "27114ab3852d31723d885f3846ee874a07247126",
      "parents": [
        "9fc27819d75e24ad63d7b383d80f5cb66a577a0d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Apr 28 18:40:04 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Apr 28 18:46:19 2011 -0700"
      },
      "message": "New widget: TextureView\nBug #4343984\n\nTextureView can be used to render media content (video, OpenGL,\nRenderScript) inside a View.\n\nThe key difference with SurfaceView is that TextureView does\nnot create a new Surface. This gives the ability to seamlessly\ntransform, animate, fade, etc. a TextureView, which was hard\nif not impossible to do with a SurfaceView.\nA TextureView also interacts perfectly with ScrollView,\nListView, etc. It allows application to embed media content\nin a much more flexible way than before.\n\nFor instance, to render the camera preview at 50% opacity,\nall you need to do is the following:\n\nmTextureView.setAlpha(0.5f);\nCamera c \u003d Camera.open();\nc.setPreviewTexture(mTextureView.getSurfaceTexture());\nc.startPreview();\n\nTextureView uses a SurfaceTexture to get the job done. More\nAPIs are required to make it easy to create OpenGL contexts\nfor a TextureView. It can currently be done with a bit of\nJNI code.\n\nChange-Id: Iaa7953097ab5beb8437bcbbfa03b2df5b7f80cd7\n"
    },
    {
      "commit": "8a5cc92a150bae38ec43732d941b38bb381fe153",
      "tree": "24bf32e7fcc20ab94e64f57e6f72bd8762d3bdf9",
      "parents": [
        "b4a56f10d875dc62a9c73008f98596c7e32fc249"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue Apr 26 07:28:09 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Apr 27 14:23:29 2011 -0700"
      },
      "message": "Fix various hw-accelerated line/point bugs\n\nAll accelerated lines are now rendered as quads. Hairlines used to\nbe rendered as GL_LINES, but these lines don\u0027t render the same as our\nnon-accelerated lines, so we\u0027re using quads for everything. Also, fixed\na bug in the way that we were offsetting quads (and not offseting points)\nto ensure that our lines/points actuall start on the same pixels as\nSkia\u0027s.\n\nChange-Id: I51b923cc08a9858444c430ba07bc8aa0c83cbe6a\n"
    },
    {
      "commit": "5b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82",
      "tree": "905d0c539f0ed9a4e6ae6538bd6ab7f74efeefb8",
      "parents": [
        "3ad604b3d8a3ae87ee3f7545677bacc8f11159c0"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Apr 13 17:58:08 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Apr 21 11:47:05 2011 -0700"
      },
      "message": "Enable anti-aliasing for hw-accelerated lines\n\nDraw anti-aliased lines with OpenGL by constructing a quad with\na border that fades out (to mimic fragment coverage).\n\nChange-Id: Ib81a3e62d663acdf1b46b401ac4aa7ee9855cc7e\n"
    },
    {
      "commit": "ed6fcb034b44d9a6ac2fc72fee6030417811f234",
      "tree": "42a469fd5b0eabb1fd3b6a34243d57c081eee764",
      "parents": [
        "67ac217a81f34ee3d35df84b38f3456843c40706"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 21 13:11:28 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 21 13:11:49 2011 -0700"
      },
      "message": "Add support for drawPoint() and drawPoints().\n\nChange-Id: I01bef50c08ec3160f8d40dc060b2cf6c2e4d7639\n"
    },
    {
      "commit": "a168d7372132d6c87835878794b6ed43d0d282fd",
      "tree": "08649fab2d90c649d9d518ca672ec453d5e742e9",
      "parents": [
        "b29cfbf768eab959b31410aafc0a99e20249e9d7"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 18 16:50:13 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 18 16:50:13 2011 -0700"
      },
      "message": "Correctly apply filters to Alpha8 bitmaps.\n\nThis change also removes unnecessary operations from display lists.\n\nChange-Id: I627f85861982731f0ee7705b48b36d9c56f22f39\n"
    },
    {
      "commit": "7b5b6abf852c039983eded25ebe43a70fef5a4ab",
      "tree": "918c9bd4b35e0790a9d01fdf88bafd90b952101e",
      "parents": [
        "c7fcc5076fb2988fba699a2167d19475fd58ed0b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 14 18:05:08 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 14 18:05:08 2011 -0700"
      },
      "message": "Fix rendering artifact in edge fades.\nBug #4092053\n\nThe problem always existed but was made visible by partial invalidation.\nWhen saving a layer, the renderer would try to postpone glClear()\noperations until the next drawing command. This however does not work\nsince the clip might have changed. The fix is rather simple and\nsimply gets rid of this \"optimization\" (that turned out to be\nusless anyway given how View issues saveLayer() calls.)\n\nThis change also fixes an issue with gradients (color stops where\nnot properly computed when using a null stops array) and optimizes\ndisplay lists rendering (quickly rejects larger portions of the\ntree to avoid executing unnecessary code.)\n\nChange-Id: I0f5b5f6e1220d41a09cc2fa84c212b0b4afd9c46\n"
    },
    {
      "commit": "cabfcc1364eb7e4de0b15b3574fba45027b45cfc",
      "tree": "f38e237ba2009dcacb5082a99928aad379a7adc0",
      "parents": [
        "9b7146db6d9c0586b98b062fbcdb3fac6cc54d19"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 07 18:06:46 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 07 18:09:03 2011 -0800"
      },
      "message": "Add support for partial invalidates in WebView\nBug #3461349\n\nThis change also fixes two bugs that prevented partial invalidates\nfrom working with other views. Both bugs were in our EGL implementation:\nthey were preventing the caller from comparing the current context/surface\nwith another context/surface. This was causing HardwareRenderer to always\nredraw the entire screen.\n\nChange-Id: I33e096b304d4a0b7e6c8f92930f71d2ece9bebf5\n"
    },
    {
      "commit": "3a3133d876caf60ebff2176ad75c3dcf0259148d",
      "tree": "dca8a743e3e8b99eb6b7aaddba3402c82132a9c5",
      "parents": [
        "849d0a37cf2ca6c6a6c2d4d4456495e32e363120"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 01 22:59:58 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 01 23:01:43 2011 -0800"
      },
      "message": "Update layers based on the dirty region.\nBug #3413433\n\nThis helps Launcher when a widget updates during a scroll, or when interacting\nwith widgets on the workspace if layers are still turned on.\n\nChange-Id: Ic7a42eb34f74f4ae988039754f815e2efd1d1e4f\n"
    },
    {
      "commit": "2b1847ea60650a9f68372abe860415f18b55081d",
      "tree": "1ec502a48a720f8167240c6563af32f235a9bffb",
      "parents": [
        "d30b36d3cdccc7854dedf5e3c020d2f4a8afa7b8"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 26 13:43:01 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 26 13:43:01 2011 -0800"
      },
      "message": "Remove unused API\n\nChange-Id: I1714fd82a64b752f0350ef4ef9179ce19e089c6a\n"
    },
    {
      "commit": "7d7b5490a0b0763e831b31bc11f17d8159b5914a",
      "tree": "7326e41a76618cba25a9757b43db779a607b9bdf",
      "parents": [
        "3dd0908a65095cb6946001ae3039ab87a47b4f33"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 24 16:33:45 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 24 18:39:56 2011 -0800"
      },
      "message": "Enable partial invalidates when rendering with OpenGL.\n\nChange-Id: Ie8be06c4776b815e8737753eb8003b4fd8936130\n"
    },
    {
      "commit": "daf98e941e140e8739458126640183b9f296a2ab",
      "tree": "e338ad021139d706004b70a38fbbe539ccfbbacf",
      "parents": [
        "57ffc00239edcfe733832771e1429fca20182207"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Jan 10 14:10:36 2011 -0800"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Jan 24 08:43:20 2011 -0800"
      },
      "message": "Use optimized display lists for all hwaccelerated rendering\n\nPreviously, display lists were used only if hardware acceleration\nwas enabled for an application (hardwareAccelerated\u003dtrue) *and* if\nsetDrawingCacheEnabled(true) was called. This change makes the framework\nuse display lists for all views in an application if hardware acceleration\nis enabled.\n\nIn addition, display list renderering has been optimized so that\nany view\u0027s recreation of its own display list (which is necessary whenever\nthe visuals of that view change) will not cause any other display list\nin its parent hierarchy to change. Instead, when there are any visual\nchanges in the hierarchy, only those views which need to have new\ndisplay list content will recreate their display lists.\n\nThis optimization works by caching display list references in each\nparent display list (so the container of some child will refer to its\nchild\u0027s display list by a reference to the child\u0027s display list). Then when\na view needs to recreate its display list, it will do so inside the same\ndisplay list object. This will cause the content to get refreshed, but not\nthe reference to that content. Then when the view hierarchy is redrawn,\nit will automatically pick up the new content from the old reference.\n\nThis optimization will not necessarily improve performance when applications\nneed to update the entire view hierarchy or redraw the entire screen, but it does\nshow significant improvements when redrawing only a portion of the screen,\nespecially when the regions that are not refreshed are complex and time-\nconsuming to redraw.\n\nChange-Id: I68d21cac6a224a05703070ec85253220cb001eb4\n"
    },
    {
      "commit": "8b2f5267f16c295f12faab810527cd6311997e34",
      "tree": "2f81ab177ebfadee474c44f3aa8e44cdc539665e",
      "parents": [
        "c1cd9ba335b293f11e1082447ef08e474710a05f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Jan 23 16:15:02 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Jan 23 16:15:02 2011 -0800"
      },
      "message": "Add support for arcs.\n\nChange-Id: I96c057ff4eb1b464b03f132da0b85333777bee4f\n"
    },
    {
      "commit": "c1cd9ba335b293f11e1082447ef08e474710a05f",
      "tree": "3f07bf1887e0cd5602c2f1e356e3efe92d7f766b",
      "parents": [
        "f6834478b379856d3e5de92ddce7de0e6ba9fa4a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Jan 23 14:18:41 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Jan 23 14:18:41 2011 -0800"
      },
      "message": "Add support for ovals and stroked rectangles.\n\nChange-Id: I1292e241386763c82e6622c8f7ed90b0f5b7bd4f\n"
    },
    {
      "commit": "5a7b466a2b4b7ced739bd5c31e022de61650545a",
      "tree": "1eef540913ce3a131019586f9187bc8e66f59caa",
      "parents": [
        "c8219299b0003793cee8049b96a3bf7530765eea"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 20 19:09:30 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 20 19:09:30 2011 -0800"
      },
      "message": "Add support for drawBitmapMesh().\n\nChange-Id: Ic77f9c534bb90dc7b9458299544bd50b8b6ae6a5\n"
    },
    {
      "commit": "01d58e43ede5ca98cbebdd166f9b0c545032c01b",
      "tree": "6d9976c551fd6ec9f104e5a849c0ad743946af6c",
      "parents": [
        "9335f5b2fde244614184f45d29cc574d1ba8cbba"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 19 21:54:02 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 19 21:55:10 2011 -0800"
      },
      "message": "Add rounded rects and circles support to OpenGLRenderer.\n\nChange-Id: I6cedf2b495d58de7c0437096809fa9e4518a1b8c\n"
    },
    {
      "commit": "42f3a4b7c35dd1ea1922356eb3611af8cde05179",
      "tree": "aac476548acfc97b0dd5785ce06008c40b98753a",
      "parents": [
        "a3311ed7a9ddd7ecb066f4731ce4bc3bd3ffd939"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 19 13:42:26 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 19 13:42:26 2011 -0800"
      },
      "message": "Make embedded hardware layers work.\nBug #3369474\n\nChange-Id: Ib6d7fb44eedda9dc2933b5e1b176f307968af91d\n"
    },
    {
      "commit": "807daf7df615b60ce6fc41355aabe3aa353cebab",
      "tree": "96eeb8bde5042241238946f787d1dbc3a416d6e6",
      "parents": [
        "d6cd572df8067c40b3e0e7e74e58cdb456b33e92"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 18 11:19:19 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 18 11:19:19 2011 -0800"
      },
      "message": "Add support for skew()\n\nChange-Id: Ia3a9a867f74fd78b61f75179e3788fdc2f0cacd0\n"
    },
    {
      "commit": "f219da5e32e85deb442468ee9a63bb28eb198557",
      "tree": "3d27f5c3a1fcce028ca12aa7dc7331f95d8ae8c0",
      "parents": [
        "a47aa87a19c733e28d9d2db1c4eb7f29d668db7b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Jan 16 12:54:25 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Jan 16 12:54:25 2011 -0800"
      },
      "message": "Don\u0027t blend transparent pixels when rendering layers.\n\nWith this change, the rendere keeps track of what regions are rendered into\nand generates a mesh that matches these regions exactly. The mesh is used\nto composite the layer on screen.\n\nChange-Id: I1f342576b9134fb29caff7fb8f4c1da179fe956d\n"
    },
    {
      "commit": "1bd1bad0b4a75e633c5edbe802bf6fb4dd765161",
      "tree": "ec6c62135677673e47741385c63ba082d1326fca",
      "parents": [
        "739e34a362518020b4aed3f2dc54be2154c41406"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jan 14 20:07:20 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jan 14 20:07:20 2011 -0800"
      },
      "message": "Preapre region tracking in layers\n\nChange-Id: Ied1fa0d36c99ef4e33cb8fde7e3106a793db3a4c\n"
    },
    {
      "commit": "ffac7fc5042296a459d0f5a450dbfe20917093dc",
      "tree": "27a86c15331cd38d7d072e1c2b7bf8829cceeb90",
      "parents": [
        "462433ae94ff33f9591d910b662e63b821549cad"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 13 17:21:49 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 13 17:22:58 2011 -0800"
      },
      "message": "Add debug logs for display lists.\n\nChange-Id: I7bae8fd96e9eccb51f29f73e4069b4d3e6bdbdd7\n"
    },
    {
      "commit": "ada830f639591b99c3e40de22b07296c7932a33f",
      "tree": "308f469469e96ce7f99d2ec5135e7d44eb858a35",
      "parents": [
        "4f6aff386045000c2c03b903c7109cb42092b7ea"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 13 12:13:20 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 13 12:13:20 2011 -0800"
      },
      "message": "Cleanup implementation of hardware layers.\n\nThe new implementation relies on OpenGLRenderer\u0027s existing layer\ncode instead of duplicating it. The new code is much cleaner, with\nsimpler and better APIs and allows tracking of drawn regions inside\nlayers. Region tracking is not yet enabled but this will be done\nin a future CL.\n\nChange-Id: Ie826121a2227de8252c77b992a61218defea5143\n"
    },
    {
      "commit": "6c319ca1275c8db892c39b48fc54864c949f9171",
      "tree": "d89e4222487db2ccd9a6b03b0d55f8361a7d1856",
      "parents": [
        "b796889671c089fb7e2fc4498aa701d3e8e552a3"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 11 14:29:25 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 11 17:53:19 2011 -0800"
      },
      "message": "Better backend for hardware layers.\n\nWith this new backend, a hardware layer is only recreated when\nits associated view is udpated. This offers fast composition\nin GL and fast update of the layer in GL as well.\n\nChange-Id: I97c43a612f5955c6bf1c192c8ca4af10fdf1d076\n"
    },
    {
      "commit": "8d0d4783a0206c5884bf0b958d181f450ba5207d",
      "tree": "ec00f07eadfcaecbdbcd705ec233601e2904ed34",
      "parents": [
        "7dddf275cd7aa3b44ebeea1e34346f0a31308649"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Dec 14 20:13:35 2010 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Dec 14 20:13:35 2010 -0800"
      },
      "message": "Cleanup OpenGLRenderer::drawLines()\n\nChange-Id: I3545a616e964335897c6e4148c431a07a2ce2a8b\n"
    },
    {
      "commit": "86568198f2c83d4ce5c4cd692eda074ba9de9ed2",
      "tree": "4f27494b5e9dba6df25e149fcce6ea13d7940b07",
      "parents": [
        "fa7952dbb86a8aff0c90418aa77dddee3802c23a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Dec 14 15:55:39 2010 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Dec 14 16:04:12 2010 -0800"
      },
      "message": "Continue cleanup refactoring in OpenGLRenderer.\n\nMethods that still need refactoring:\n    - drawLines\n    - composeLayerRegion\n\nChange-Id: If546641adf598d49c330988803667264fda50ac2\n"
    },
    {
      "commit": "5536841e5452172e7772d84ad5f4a2fc7059c9dd",
      "tree": "46b26a1b783f00a011ecbfe9651f442f512e9bd1",
      "parents": [
        "70ca14e08ae197547ac412e8a1210e1ebdfb2eb1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Dec 14 10:59:41 2010 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Dec 14 10:59:41 2010 -0800"
      },
      "message": "OpenGLRenderer would not render colors \u003c ALPHA_THRESHOLD\nBug #3282805\n\nThis bug was introduced with a previous refactoring. This also fixes\nissues with setting the alpha when drawing bitmaps.\n\nChange-Id: Id47641d26a4536c7e540041f92243bf6db9fc96d\n"
    },
    {
      "commit": "70ca14e08ae197547ac412e8a1210e1ebdfb2eb1",
      "tree": "b5d798c0ae819e6d769b826c5d090ea4f03665a0",
      "parents": [
        "b8c0de2c2726f4e8f0029710047efe0c8e6661ed"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Dec 13 18:24:33 2010 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Dec 13 18:24:33 2010 -0800"
      },
      "message": "Refactor OpenGLRenderer to simplify OpenGL drawing code.\n\nThis is the first step of the refactoring:\n- drawColorRect\n- drawTextureMesh\n\nRemaining methods to refactor:\n- setupTextureAlpha8\n- drawPath\n- setupShadow\n- drawText\n- drawLines\n- composeLayerRegion\n\nChange-Id: I0fced6a05b6b6eee10ee7cef0c3fbdaa6cefab20\n"
    },
    {
      "commit": "6620c6d413f972819fada92b574f0fa9e96d36c1",
      "tree": "0804ffb39cfbdd4490f0adce93ef8cb421f2bd83",
      "parents": [
        "02047f7e88f1d78b29d6d93dc521df279398505d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Dec 06 18:07:02 2010 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Dec 06 18:07:02 2010 -0800"
      },
      "message": "Correctly render text when coordinates are not integers.\nBug #3225632\n\nChange-Id: If09759e6e95eb2885362ab3ba088cf5aae64c7bf\n"
    },
    {
      "commit": "a5ef39a21683189e5906c9f252b997f0508e350d",
      "tree": "f87616c7a443f8e8d19d40654036653252bf65e4",
      "parents": [
        "d8591020ec5940aa9ac738593a460a8df8cd560a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Dec 03 16:48:20 2010 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Dec 03 16:48:20 2010 -0800"
      },
      "message": "Don\u0027t render degenerate triangles in 9patches.\nBug #3251983\n\nChange-Id: Ib0b38a7b8111542372f4c4c106b6321c26fe4ad4\n"
    },
    {
      "commit": "c15008e72ec00ca20a271c3006dac649fd07533b",
      "tree": "a518cebc2b12966bde88c0a3a80ee19b989d17bb",
      "parents": [
        "21c1114dad3a778992479ec8ef514e412a7b2646"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Nov 10 11:59:15 2010 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Nov 10 11:59:15 2010 -0800"
      },
      "message": "Move all debug flags in a single place.\n\nThis change also adds a new memory usage flag. When turned on, the\nfollowing is printed after every frame:\n\nD/OpenGLRenderer( 3723): Current memory usage / total memory usage (bytes):\nD/OpenGLRenderer( 3723):   TextureCache          3766680 / 20971520\nD/OpenGLRenderer( 3723):   LayerCache            3538944 /  8388608\nD/OpenGLRenderer( 3723):   GradientCache          135168 /   524288\nD/OpenGLRenderer( 3723):   PathCache               41180 /  4194304\nD/OpenGLRenderer( 3723):   TextDropShadowCache         0 /  2097152\nD/OpenGLRenderer( 3723):   FontRenderer 0         262144 /   262144\nD/OpenGLRenderer( 3723):   FontRenderer 1         262144 /   262144\nD/OpenGLRenderer( 3723):   FontRenderer 2         262144 /   262144\nD/OpenGLRenderer( 3723): Other:\nD/OpenGLRenderer( 3723):   FboCache                    2 /       12\nD/OpenGLRenderer( 3723):   PatchCache                 31 /      512\nD/OpenGLRenderer( 3723): Total memory usage:\nD/OpenGLRenderer( 3723):   8268404 bytes, 7.89 MB\n\nThis should help tracking possibe memory issues.\n\nChange-Id: I83f483ca1d2dbef904829bce368e33fe5503e8d6\n"
    },
    {
      "commit": "0fe478ea04720a57ef3919dbc23711bc7eba517f",
      "tree": "d498b2893e0890f0bb9dccf44dc392004d68e844",
      "parents": [
        "cce1d2a60bc1ef10ec6beb338ec3d4cf94486c47"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Nov 08 12:08:41 2010 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Nov 08 12:15:28 2010 -0800"
      },
      "message": "Support nested display lists.\n\nChange-Id: I3815a2832fc0f722c668ba8f51c5f177edb77c94\n"
    },
    {
      "commit": "7f78b0c3ae6222b39f6240524390de9764f21764",
      "tree": "63f1de17ded22cd96c91bb6463b80f85fe1fd93b",
      "parents": [
        "d8d7b555cb45bf55f74e89a7cf9312e400f7cd1c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Nov 04 14:36:26 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Nov 04 14:36:26 2010 -0700"
      },
      "message": "Lines would not set the scissor before drawing.\n\nLines were not drawing in Calendar because they were getting clipped\nby the previous clip rectangle. This change simply updates the scissor\nas needed. This change also reduces the number of state changes in GL.\n\nChange-Id: I41ab13dca3a33cfa6d1a44371c48852ab418b04e\n"
    },
    {
      "commit": "5b3b35296e8b2c8d3f07d32bb645d5414db41a1d",
      "tree": "bad2ebdbfeb8a3a0be1591d5a357a8280df7d1d2",
      "parents": [
        "2444ddb3d9b59ec45ba50858fcbff639e59b93b1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 27 18:57:51 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Nov 02 16:17:23 2010 -0700"
      },
      "message": "Optimize FBO drawing with regions.\nThis optimization is currently disabled until Launcher is\nmodified to take advantage of it. The optimization can be\nenabled by turning on RENDER_LAYERS_AS_REGIONS in the\nOpenGLRenderer.h file.\n\nChange-Id: I2fdf59d0f4dc690a3d7f712173ab8db3848b27b1\n"
    },
    {
      "commit": "746b7401ceb86b5f2805f8c0d3b39ac739152015",
      "tree": "757875a6d574e07572088b7c1eed80125299bdff",
      "parents": [
        "0d9275e565551eed57297627188aa39f3897a50b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 26 16:27:31 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 26 16:27:31 2010 -0700"
      },
      "message": "Remove unnecessary GL calls.\n\nThis change batches calls to glScissor() and removes extra GL\nqueries and glActiveTexture() calls.\n\nChange-Id: I1cd079d314f87cd9c088f95c8d4909c2f860f6aa\n"
    },
    {
      "commit": "8164c2d338781c3a3c4a443941070dca5d88f2a7",
      "tree": "22f218c64471d29d1cfbc9a55cb8bb530cf78714",
      "parents": [
        "c361da845a205ac35e724c0ca436744d483de7aa"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 25 18:03:28 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 25 18:03:28 2010 -0700"
      },
      "message": "Don\u0027t change textures wrap modes on every draw.\n\nChange-Id: If6d3f313778cc7f3e803a063338539c8b3e165e3\n"
    },
    {
      "commit": "5c13d89c1332fcc499379b9064b891187b75ca32",
      "tree": "439222e6d58a765a84133345ac6ef7cb13f1c04e",
      "parents": [
        "a376d030a2075909219926d622b71016418d7dcd"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Oct 08 08:37:55 2010 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Oct 21 12:02:42 2010 -0700"
      },
      "message": "Optimizing display lists by referencing pointers to resources instead of copying them\n\nChange-Id: I81ad3551d74aa1e5bb64d69e33d2eb29a6c1eb6a\n"
    },
    {
      "commit": "03750a067e818ca7fbd0f590e2ff6a8fded21e6c",
      "tree": "e41ffdc1b72f66c13284df27877703111f048170",
      "parents": [
        "65202242defad10eb33a3b3277af49eb238a3f33"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 18 14:06:08 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 18 14:49:19 2010 -0700"
      },
      "message": "Use VBOs to render most geometries.\n\nChange-Id: I4360dc4fe5693ab425450c107282b2c22db4dca7\n"
    },
    {
      "commit": "99bcdc52dcb365ed7d8cfa13540fb33fbcbbac9d",
      "tree": "6aa73d73948d851ea9b61c36e74a275c4092f5ad",
      "parents": [
        "bbf68c6ad2cc3dd338f93779d60c5821e730a263"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 13 15:17:00 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 13 17:24:41 2010 -0700"
      },
      "message": "Return identity matrix when rendering in an FBO.\n\nChange-Id: I57438e745b30c8cfe16c269f3cafcd719049d705\n"
    },
    {
      "commit": "41030da16856c8869e1e51d4a0405432fa96614e",
      "tree": "e40b599f2961989c444e5ca1bb92536eef76b7ba",
      "parents": [
        "2b67ce7213501d4377e46f67656993914eceb423"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 13 13:40:37 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 13 13:40:37 2010 -0700"
      },
      "message": "Add a getNativeMatrix() API.\n\nThis API can be used by WebView to apply the appropriate transform\non its rendering.\n\nChange-Id: I79aa39a29805f462fb08226370328815e74bdc52\n"
    },
    {
      "commit": "4bb942083a0d4db746adf95349108dd8ef842e32",
      "tree": "7707bc9551f3db4ad0561c30c73293e4a0edfbf2",
      "parents": [
        "5a3b8e698e276839e502dcf41894b56ad59695c3"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 12 15:59:26 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 12 15:59:26 2010 -0700"
      },
      "message": "Optimize 9patch rendering.\n\nThis change detects empty quads in 9patches and removes them from\nthe mesh to avoid unnecessary blending.\n\nChange-Id: I4500566fb4cb6845d64dcb59b522c0be7a0ec704\n"
    },
    {
      "commit": "6b7bd24659fb175fe1f0e97c86c18969918b496a",
      "tree": "7f72a7811783f52871bdb49c702ef1247ce9d3a2",
      "parents": [
        "e3095e0c1e2a4a4f34f741aa386eae56536ca5aa"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 06 19:49:23 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 06 19:49:23 2010 -0700"
      },
      "message": "Don\u0027t clear the framebuffer when not needed."
    },
    {
      "commit": "eb99356a0548684a501766e6a524529ab93304c8",
      "tree": "7beb40beea2f12944057cd025ca8b212d3a01855",
      "parents": [
        "7adaf3d1aa18c7e521f7154e545fe52d329763c3"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 05 18:14:38 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 05 18:14:38 2010 -0700"
      },
      "message": "Optimize saveLayer() when the clip flag is set.\n\nThis speeds up applications, especially Launcher."
    },
    {
      "commit": "b051e895ccb696604349c6c5efe7c4747e1d1ab6",
      "tree": "81fe0deb43ede32e22d0aa2350615bdc869bcc52",
      "parents": [
        "5a86c4c3857ed3924848318cb06b6a4bc40b1f10"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Sep 28 19:09:36 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 29 13:29:04 2010 -0700"
      },
      "message": "Add display lists caching.\n\nChange-Id: Iac3a248a81ed8cb076a83ef9d186b8ebba685b4c\n"
    },
    {
      "commit": "4aa90573bbf86db0d33a3a790c5dbd0d93b95cfe",
      "tree": "65cedf6266b9f40b7227334f9e50d8d86f2340bf",
      "parents": [
        "cc64c5dbfbf11f513f60a82ee590f62dfb9a1565"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Sep 26 18:40:37 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Sep 26 18:40:37 2010 -0700"
      },
      "message": "Adding display lists to the GL renderer (checkpoint.)\n\nChange-Id: Iaa49757600a53b39369dbb23f8c3feab282518e6\n"
    },
    {
      "commit": "e2d345ea67e2960b37bfdc0fc8626d1bfa747404",
      "tree": "1c6aebf69921950237754ef7b8386a9856624e25",
      "parents": [
        "9a40babc62416259d18783ce8c03c00042ec317b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 24 18:39:22 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 24 18:39:22 2010 -0700"
      },
      "message": "Add debug mode to measure performance.\n\nChange-Id: I9d4c84034dc200b99c8266165942a7cdbcb5c0c5\n"
    },
    {
      "commit": "29d8997bd43b7c4ad37fc3d6f91eaafa74913c88",
      "tree": "2bc22f92798fdb17ac519d22ca3a3f7b84d328f8",
      "parents": [
        "8c749f87d29e1a363ddf9027c3a51753c612d510"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Wed Sep 22 16:10:57 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Wed Sep 22 16:44:49 2010 -0700"
      },
      "message": "Fix OpenGL errors in various places.\n\nChange-Id: I3a4e115d8fb13b6c443e65460d92987b16f2524c"
    },
    {
      "commit": "c95c8d6bf8fda5c4e8ebd0033b789be7868e6e07",
      "tree": "3f5a4ca860841db0de4678065d6f392590749780",
      "parents": [
        "31529ff7918ce891fba9a660d0a861eb313ea554"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 17 15:31:32 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 17 15:31:32 2010 -0700"
      },
      "message": "Add support for non AA lines.\n\nChange-Id: Id5200e94815404d62760437d0d2dbb0a9276c700\n"
    },
    {
      "commit": "759ea80dca64ad652110a129e0d8bf93fea79f61",
      "tree": "910900df67d9f9fed51398de2a03f40e2abefec5",
      "parents": [
        "bf434114cbf55b216fdc76fc8d65a75e84c9dab5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 16 20:49:46 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 16 20:49:46 2010 -0700"
      },
      "message": "Add support for drawLines(), with anti-aliasing\n\nChange-Id: I16c0593c5671490909dec13a85df601e1428a1a6\n"
    },
    {
      "commit": "b025b9c8b4efefadb01937db61a1f8ee7d2452bf",
      "tree": "dabed85e1e6b4aad2363925c779b783855b02d7e",
      "parents": [
        "857d7cf80ee37fc3b1d55ecfa4c27029672f5114"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 16 14:16:48 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 16 14:16:48 2010 -0700"
      },
      "message": "Better error handling in the OpenGL renderer.\n\nAdd a glGetError() check on every frame\nDon\u0027t attempt to create textures larger than the maximum size allowed\n\nChange-Id: Iee4afae16089406dbe8bf10fc93b674f1271a0ca\n"
    },
    {
      "commit": "6820ac8b14b4558f5d8b833dde80895306a3e137",
      "tree": "b90f253c05f20ae8a36c7bdc49147d447b75e7d5",
      "parents": [
        "9322775014432ed6c87c864e98fe482f879ff233"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 15 18:11:50 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 15 18:11:50 2010 -0700"
      },
      "message": "Fix 9patch rendering.\n\nChange-Id: Ic4c18ff483cca95fbabcb10843f7714efe488adb\n"
    },
    {
      "commit": "1c740bce8a762f02b5283045a0e2de7c8fb41277",
      "tree": "ebc1358a3cdcfb69f0427769756cbc83914f6c29",
      "parents": [
        "81ab046a1127bd2ad397e6d1c6f8021b202a97ff"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Sep 13 18:00:09 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Sep 13 18:03:21 2010 -0700"
      },
      "message": "Document the implementation of saveLayer().\n\nThe implementation is simple but tricky. Leave explanations to my\nfuture self so that I don\u0027t invent a time machine to come back to\nnow and slap my self.\n\nThis change also simplifies the way the GL blending function is\nchosen when compositing a layer. It reuses existing OpenGLRenderer\nAPIs and is easier to understand.\n\nChange-Id: I1b9cf8c5d51e09836d85b8cf157a1c284aa65c59\n"
    },
    {
      "commit": "8694230ff25fa0a60e480d424843e56b718f0516",
      "tree": "4fa55299cb6a516c443ce2c2082530ec69928211",
      "parents": [
        "f607bdc167f66b3e7003acaa4736ae46d78c1492"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Sep 12 13:02:16 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Sep 12 13:02:16 2010 -0700"
      },
      "message": "Optimize calls to glCopyTexImage2D().\n\nChange-Id: I34ee87bd4472864f440916e03a2894fae24bbe4a\n"
    },
    {
      "commit": "f607bdc167f66b3e7003acaa4736ae46d78c1492",
      "tree": "b3b4fb761b25d08ba836ff822f6e72d85b5be695",
      "parents": [
        "d14f0dfd58af653a2d41424d472fe97de6af0a78"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 10 19:20:06 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Sep 12 12:24:12 2010 -0700"
      },
      "message": "Correct implementation of saveLayer().\n\nChange-Id: I5375126636913e0a84f2d6bbd0ebe40d2e4f2763\n"
    },
    {
      "commit": "a5aed0d58962a24c44728ffc46dc9e1ba2f9fda5",
      "tree": "4194d14711b2cba0e8192e5f1c0764f530bc7309",
      "parents": [
        "d90f23e24a4d1768d5a7ed0e7072e67af6330a45"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 09 14:42:43 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 09 14:42:43 2010 -0700"
      },
      "message": "Add support for advanced blend modes with the framebuffer.\n\nThis adds the ability to blend with the framebuffer using Darken,\nLighten, Add, Multiply, Overlay and Screen.\n\nChange-Id: Iae01a53797d4ad39c373cba6ff2a42293129da1a\n"
    },
    {
      "commit": "8aef54fa17f2a3753d9a8f2027629bc480088f69",
      "tree": "b4b9e8130e46e3e2271f6e9d55aa988e1f172655",
      "parents": [
        "dbecc24a4ed4e9c24fc03db19038ee45cf7a0b1d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Wed Sep 01 15:13:49 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Wed Sep 01 15:49:25 2010 -0700"
      },
      "message": "Add support for Canvas flags on save.\n\nThis is required for the rewrite of layers support.\n\nChange-Id: I5c0867dcf5aeb0392c8d0fbab05febb0eaff70d9\n"
    },
    {
      "commit": "da8532c6f48b4c10b5e2ccb9e08690341efa1616",
      "tree": "e6ce7f533b4f4bb5bb9cdf60be64138d6bbb34ea",
      "parents": [
        "7dff1a72146ba549d51649ad786a0e1cc8b6897c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 31 11:50:35 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 31 11:50:35 2010 -0700"
      },
      "message": "Add hooks for hardware accelerated WebView.\n\nChange-Id: I907cdec8a67594f87749ac46bda85f04af5a2003\n"
    },
    {
      "commit": "fb8b763f762ae21923c58d64caa729b012f40e05",
      "tree": "013792d41f32bff4dd35e6d53eebac711c513729",
      "parents": [
        "a1f1174b396cda7bdff469a2e974a737600c5eb0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 23 21:05:08 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 24 17:18:14 2010 -0700"
      },
      "message": "Use only one GL context per process, share chaches.\n\nChange-Id: Ieabaa25338d2f4b8d4fd90e7401ad6e7452eae11\n"
    },
    {
      "commit": "2542d199745cdf3ec910b8e3e4cff5851ed24e9b",
      "tree": "b0628a20db972e570e5781a957a2747dc3a3c16a",
      "parents": [
        "a8031c68c8e7ac5b1edfff2b6d03e3b46ec38a9d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 18 11:47:12 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 18 11:47:12 2010 -0700"
      },
      "message": "Layers were using an extra Snapshot causing extra clipping.\n\nBug #2919310\n\nChange-Id: I72ccd44bba7a3f3db72f581aa96198b6226e4478\n"
    },
    {
      "commit": "0a41749953f35d33f61b3119e3161a82bb5fa59e",
      "tree": "3e0827c18c19e3ad8745ce133561be8a275f0345",
      "parents": [
        "5b53f9186e7812c93bc578d18e92cb123481fcbc"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 16 20:26:20 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 16 20:26:20 2010 -0700"
      },
      "message": "Cleanup, better code reuse.\n\nChange-Id: Ib86a7309ae579cce3b7cf464782c34e70a74c616\n"
    },
    {
      "commit": "1e45aae5de003657e5d18f74d34998f5de5db5b7",
      "tree": "355320038d0de8ed9b39c0cd3d3865b7fbbae1fd",
      "parents": [
        "029a74a38b56b97cbfe02b3d8e23536cea71609d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 13 19:39:53 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 13 19:41:14 2010 -0700"
      },
      "message": "Add drop shadows.\n\nChange-Id: Ic6a72409d4785968d1fbdff229f17ee5c00b240b\n"
    },
    {
      "commit": "7fbcc0492fca03857e3c45064f4aa040af817d55",
      "tree": "a2422b4694ae589a60f2571070c53c7b918ec732",
      "parents": [
        "bc9151bcad5d1b1d14bb900fcc50ba08c06f87d4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 04 15:40:07 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 05 17:23:49 2010 -0700"
      },
      "message": "Add support for paths.\n\nRendering is implementing by rasterizing the paths into A8 textures.\nThis cna be extremely inefficient if the path changes often.\n\nChange-Id: I609343f304ae38e0d319359403ee73b9b5b3c93a\n"
    },
    {
      "commit": "db1938e0e6ef816e228c815adccebd5cb05f2aa8",
      "tree": "d40e91a873bca6750083fdb1713a12b469ebad4d",
      "parents": [
        "16f8c620abd0ea07e704b6997a66a45ad3590dea"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 02 18:50:22 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 02 18:50:56 2010 -0700"
      },
      "message": "Add support for ColorFilters.\n\nColor filters are fully supported and can be used with shaders.\n\nChange-Id: Id90ccf1c81cb462f2431f366f3f8f710d7971e04\n"
    },
    {
      "commit": "06f96e2652e4855b6520ad9dd70583677605b79a",
      "tree": "7d0e3709c8a400e264f37206eb27a286ee50d64b",
      "parents": [
        "42272759e4c3c406977187fd2b4df8739edccde8"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 30 19:18:16 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 30 19:18:16 2010 -0700"
      },
      "message": "Refactor Skia shaders handling.\n\nWith this change, Skia shaders can easily be applied to any mesh. This change also\nsupports ComposeShader. For instance, this can be used to blend a gradient and a\nbitmap togehter and paint a string of text with the result.\n\nChange-Id: I701c2f9cf7f89b2ff58005e8a1d0d80ccf4a4aea\n"
    },
    {
      "commit": "ae5575b3421c8fbe590ab046d7d5f2b36ecfd821",
      "tree": "2e4cfe7b83c81492a577428e0f8b7cb33faaa551",
      "parents": [
        "889f8d1403761d5668115ced6cbb3f767cfe966d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 29 18:48:04 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 29 18:48:04 2010 -0700"
      },
      "message": "Fix gradients rendering and destructor crashes.\n\nThis changes binds all textures to GL_TEXTURE0, this will have\nto be changed when combining shader capabilities.\n\nChange-Id: I02df4f5ba41e9b01ffa52fd7c26b41477c7ed18f\n"
    },
    {
      "commit": "889f8d1403761d5668115ced6cbb3f767cfe966d",
      "tree": "8620d3453e3811dce152630f1b17e0f5f42601c6",
      "parents": [
        "85d8daa889db113b51c5d98929245e80f7277388"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 29 14:37:42 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 29 14:37:42 2010 -0700"
      },
      "message": "Moved all the rendering code to the new shader generator.\n\nThe generator supports features that are not yet implement in the\nrenderer: color matrix, lighting, porterduff color blending and\ncomposite shaders.\n\nThis change also adds support for repeated/mirrored non-power of 2\nbitmap shaders.\n\nChange-Id: I903a11a070c0eb9cc8850a60ef305751e5b47234\n"
    },
    {
      "commit": "ac670c0433d19397d4e36ced2110475b6f54fe26",
      "tree": "10722cd4e465fc053f9536cc312c1125a694108a",
      "parents": [
        "bb2b2a996b2c0bea7e434136e20340f4f1b398ab"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 27 17:39:27 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 27 19:52:29 2010 -0700"
      },
      "message": "Generate shaders to cover all possible cases.\n\nWith this change, all the vertex and fragment shaders used by the GL\nrenderer are now generated based on a program description supplied\nby the caller. This allows the renderer to generate a large number\nof shaders without having to write all the possible combinations by\nhand. The generated shaders are stored in a program cache.\n\nChange-Id: If54d286e77ae021c724d42090da476df12a18ebb\n"
    },
    {
      "commit": "e8e62a4a032a80409114a37908b5f18ab0080848",
      "tree": "7bd5be7505e21861a02dda702e24f94d8e9b24cc",
      "parents": [
        "9e05ed2f6860a2d34c339a1755dbb5f68081c62e"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 23 18:55:21 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 23 18:55:21 2010 -0700"
      },
      "message": "Add text alignment support to drawText().\n\nThis change also integrates better support for RTL text.\n\nChange-Id: I6da8f5cf5dc28ca7cf1b22e27b0d853c919e8481\n"
    },
    {
      "commit": "51769a68a5cb34e9564740c6a854fcb93018789d",
      "tree": "ceb06dc0bd51240c4aaabdef8bfb415b3c982cdd",
      "parents": [
        "b84b7e8f2172964fb32598728cc25cada73cb148"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jul 23 00:28:00 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jul 23 00:28:00 2010 -0700"
      },
      "message": "Cleanup, added properties for the FontRenderer.\n\nChange-Id: I909c74815d3ac394438ad8071d17fef5401dbeed\n"
    },
    {
      "commit": "bd0e6aa0ff0bd8b376772c3e23513a6021bdda87",
      "tree": "c32048451001806f0be1361f970f9d1686cc1532",
      "parents": [
        "950d6a984a49eac8e688a66a79a55c83e92eb869"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 22 18:50:12 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 22 18:52:24 2010 -0700"
      },
      "message": "Add a way to query GL extensions.\n\nChange-Id: Ic27dbf72289dacf641b640a749fbd40c12cd474f\n"
    },
    {
      "commit": "694b519ac647fe998fd396fe0784cc8e179aadc4",
      "tree": "80a5e423f90aba3ab74645ac7f3b2cbfd838c757",
      "parents": [
        "0119ba5bd3335fe026927eeb65de535a7bd8c838"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 21 21:33:20 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 21 21:33:20 2010 -0700"
      },
      "message": "Add text rendering.\n\nChange-Id: Ibe5a9fa844d531b31b55e43de403a98d49f659b9\n"
    },
    {
      "commit": "a1db574036c9bc2d397b69f8200594027e1fff16",
      "tree": "ece6071cd30838075c334e6b2eda391af45c0f12",
      "parents": [
        "c0ac193b9415680f0a69e20a3f5f22d16f8053be"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 20 13:09:13 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 20 16:37:27 2010 -0700"
      },
      "message": "Add preliminary support for text rendering.\n\nChange-Id: I547eb631dbda24d13960d54b4144fb8908fd8a49\n"
    },
    {
      "commit": "c0ac193b9415680f0a69e20a3f5f22d16f8053be",
      "tree": "9a1d680ad20ba3f6ec0924c6b445290696d63b8c",
      "parents": [
        "9d339c13aaa30ddfd51d0f13f8ab22af05e40ea0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 19 18:43:02 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 19 18:44:05 2010 -0700"
      },
      "message": "Add support for linear gradients.\n\nChange-Id: Id15329da065045b3f06fdaed615f33cd57608496\n"
    },
    {
      "commit": "f9764a4f532561f6e2e985ff3b25112f1132ce44",
      "tree": "910110cc35d1d3e2a48f000734ec50f6e53ced0f",
      "parents": [
        "7fac2e18339f765320d759e8d4c090f92431959e"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jul 16 23:13:33 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jul 16 23:18:27 2010 -0700"
      },
      "message": "Add program for linear gradient.\n\nThis change adds a new DrawLinearGradientProgram class to enable the drawing\nof linear gradients. Two new vertex and fragment shaders are introduced,\nbased on DrawTextureProgram\u0027s shaders.\n\nChange-Id: I885afc076bb6cef8cd3962ae21a086fa6a03bf96\n"
    },
    {
      "commit": "7fac2e18339f765320d759e8d4c090f92431959e",
      "tree": "1761c4f41ecd783a85220efcbcacb04d784d96cf",
      "parents": [
        "1e79386ba34f0db38c1b35b22cdf122632534354"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jul 16 17:10:13 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jul 16 17:10:13 2010 -0700"
      },
      "message": "Add plumbing to support gradients in OpenGL renderer.\n\nThe LinearGradient class keeps a copy of the various parameters that\ndefine the gradient. The copies are native arrays to avoid copying\nJava arrays on every draw call. The gradient code path is implemented\nuntil OpenGLRenderer::drawRect() (see TODO.) The actual gradient\nimplementation will be added in a latter change.\n\nChange-Id: I9300d250ef5e2e9c2e097c3116ee71dfc9d752d8\n"
    },
    {
      "commit": "1e79386ba34f0db38c1b35b22cdf122632534354",
      "tree": "35c3fe20c2dc66823ac1c7970e395748d8fe52a3",
      "parents": [
        "079ba2c85b15e882629b8d188f5fbdb42f7f8eea"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jul 16 15:07:42 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jul 16 15:07:42 2010 -0700"
      },
      "message": "Optimize textures binding.\n\nThe renderer is still changing textures\u0027 wrap modes every time, this will require\na latter optimization.\n\nChange-Id: I3eb92cb8c886c4a692b7f0ca759911f9371d4d2c\n"
    },
    {
      "commit": "079ba2c85b15e882629b8d188f5fbdb42f7f8eea",
      "tree": "dcdad4233c75952bea11e4d5b945996a0f930a9a",
      "parents": [
        "ebd6f94dbdafdb14d620d2bd8e08535a309f266a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jul 16 14:12:24 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jul 16 14:12:24 2010 -0700"
      },
      "message": "Improve clip support (add intersect, union and replace.)\n\nThis change also modifies the way the clip is stored. The clip is now\nalways stored in screen-space coordinates.\n\nChange-Id: I96375784d82dfe975bc6477a159e6866e7052487\n"
    },
    {
      "commit": "d27977d1a91d5a6b3cc9fa7664ac7e835e7bd895",
      "tree": "a8290b6045c8a13ea250e2dc00bb904b993a5bdc",
      "parents": [
        "7ba6617a53424b85711313478459a0a8cda8c3da"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 14 19:18:51 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 15 14:44:42 2010 -0700"
      },
      "message": "Add support for BitmapShader.\n\nThis change also fixes an issue with the clip and layers.\n\nChange-Id: I5fd9832098d8cf7ae8eb781ff9bffe7defaea279\n"
    },
    {
      "commit": "3d58c03de0d8877b36cdb78b0ca8b5cac7f600e2",
      "tree": "81d20a1aac231574266c696b82c36a67ff6772be",
      "parents": [
        "756088482fb102f0c728151553210dca254b575f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 14 16:34:53 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 14 16:35:43 2010 -0700"
      },
      "message": "Do not apply transforms when using drawColor().\n\nThis fixes an issue in the way the clip transformations were applied.\n\nChange-Id: I91e7b5d15baf244d1280e48938282bb33609081d\n"
    },
    {
      "commit": "a979474f15b454c8e2963f239a3770e200bb227c",
      "tree": "4279e918b6c244a7ce6ef115952fc44484a80166",
      "parents": [
        "37b76cdcb47697de7460dd254b62f1ff63e4ccde"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 13 11:37:54 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 13 11:37:54 2010 -0700"
      },
      "message": "Cleanup: remove unnecessary parameters.\n\nChange-Id: I5956ef1db6be28a01369387aaeeb65a94656c48c\n"
    },
    {
      "commit": "92429d9266edf63cf632c132c5936f0e31850988",
      "tree": "f5a61c444492f687ac8195f25d7f98f613d1f160",
      "parents": [
        "c7f3ce8401f9bb25ee8818092e85365908ae986d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 12 20:27:17 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 12 20:27:17 2010 -0700"
      },
      "message": "Fix premultiplied alpha.\n\nChange-Id: I08da422c5350503e1f4f27b9890f15a813d0c6c7\n"
    },
    {
      "commit": "6926c72e25b8dec3dd4b84af0819fa1937ae7296",
      "tree": "b59a3b01ddbc9ae8c0b5f11eaa6fcf27a9f9511d",
      "parents": [
        "260e102162322958cf17dbd895cd6bd30dc87e32"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 12 20:20:03 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 12 20:20:03 2010 -0700"
      },
      "message": "Correctly support pre-multiplied alpha, optimizations, more stuff.\n\nAdd support for the following drawing functions:\n- drawBitmap(int[]...)\n- drawPaint()\n\nOptimizes shader state changes by enabling/disabling attribute arrays\nonly when needed.\n\nAdds quick rejects when drawing trivial shapes to avoid unnecessary\nOpenGL operations.\n\nChange-Id: Ic2c6c2ed1523d08a63a8c95601a1ec40b6c7fbc9\n"
    },
    {
      "commit": "260e102162322958cf17dbd895cd6bd30dc87e32",
      "tree": "e7ff653e0e68525f1f90edeb2fbccc88fb81caeb",
      "parents": [
        "d12315ae7ee06902f4b7470259ce33076b6f542c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 12 14:41:06 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 12 14:43:40 2010 -0700"
      },
      "message": "Optimize shader binding changes.\n\nThis change also cleans up the internal API a little bit by using mat4\neverywhere instead of float[16] (for the ortho matrix for instance.)\n\nChange-Id: I35924c7dc17bad17f30307118d5ed437c2ed37e0\n"
    },
    {
      "commit": "fb5e23c327cd5f8f93d1eaa7c10f34d6fd3efb6c",
      "tree": "8637af6593869b9e3f31a8b35c4388016eb690ac",
      "parents": [
        "3465d5f532b65b0e50d21f5b23bc3badc73248ba"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 09 13:52:56 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 09 13:52:56 2010 -0700"
      },
      "message": "Refactoring to move vertex computing to the Patch class.\n\nThis change is mostly cleanup to keep less code in OpenGLRenderer.\n\nChange-Id: I954375143b2943829457ab470423729b60b844f5\n"
    }
  ],
  "next": "82ba814ca0dea659be2cc6523bc0137679d961ce"
}
