)]}'
{
  "log": [
    {
      "commit": "ff7ae2dccd3b8ba015963126d8a655b417d3fcd3",
      "tree": "eeca06b57efb30de5242c49214ab6ac95f96a5c9",
      "parents": [
        "75827d4a3155c190f455329a67c84ac8fbb9bda0",
        "1ed30c907ffbb71d1bc448ee57c66b0d16f600ef"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Apr 03 20:31:49 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 03 20:31:49 2013 +0000"
      },
      "message": "Merge \"Correct save/restore match up\" into jb-mr2-dev"
    },
    {
      "commit": "e0b39fc18c10224c4e66f70aa472d8497b1b4621",
      "tree": "115a90b801dfb390bcfc146739d37a17e2aec529",
      "parents": [
        "bc9da0f4b5584d52b966b445deb2c4f9d87dd070",
        "e7c69c6fe3eac1fb01126ede550e5dc32979804a"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Apr 03 19:43:46 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 03 19:43:47 2013 +0000"
      },
      "message": "Merge \"Account for hairlines in quick rejection logic\" into jb-mr2-dev"
    },
    {
      "commit": "1ed30c907ffbb71d1bc448ee57c66b0d16f600ef",
      "tree": "1e52d895c0a755cd2e9521ea06bb5acbf1661b05",
      "parents": [
        "0102443c4f52f2e15fd731c452f0c4745312d448"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Apr 03 12:37:35 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Apr 03 12:37:35 2013 -0700"
      },
      "message": "Correct save/restore match up\n\nbug:8480642\n\nWith the additional save/restore around the operations in flush, the\nstored restore batches weren\u0027t matching up to the correct saves.\n\nChange-Id: I2f48f19009bd97289b6973283f43dc8d3e35affd\n"
    },
    {
      "commit": "e7c69c6fe3eac1fb01126ede550e5dc32979804a",
      "tree": "4d471a579f89582c6b67b3016aaf8c0b9cf971e4",
      "parents": [
        "0102443c4f52f2e15fd731c452f0c4745312d448"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Apr 03 09:55:48 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Apr 03 09:55:48 2013 -0700"
      },
      "message": "Account for hairlines in quick rejection logic\n\nbug:8531373\nChange-Id: I35444014f23fc61da687694fccc0d13bce718793\n"
    },
    {
      "commit": "16ecda5317c40fc3da284952d9b3add34d6763ae",
      "tree": "1b1a5c9a2bd631a4e0878d7c6de6759e8e8e5909",
      "parents": [
        "0102443c4f52f2e15fd731c452f0c4745312d448"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 29 10:59:59 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Apr 01 17:21:35 2013 -0700"
      },
      "message": "Update view\u0027s alpha and layer docs\n\nbug:8501661\n\nMakes the performance issues and interaction with layer type/paint\nmore clear.\n\nAdditionally, corrects change from 47ab7d6612e2b5b8b66fb261dafef7c91264e173\nto still allow displayList alpha to override layer paint\n\nChange-Id: Ic94d75865700820489370461cd8ac9f9077a8d90\n"
    },
    {
      "commit": "02b49b70ede0b9eb760ff334823aee1d9520ed85",
      "tree": "3d55433752c547beb594edec21d56ce1b3080889",
      "parents": [
        "964a6a7e209b0db262c827721ae5fde3f98ca763"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 29 12:37:16 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 29 12:37:16 2013 -0700"
      },
      "message": "Prevent crash when a single layer is enqueued several times for updates\nBug #8504687\n\nChange-Id: I9b01bbc4e3f37af23dfe5e68d3d03ad3d238b94a\n"
    },
    {
      "commit": "5399a5648fb6756a7e7429b07a5a36493ff00395",
      "tree": "be3ba96d7939692cba8d79e72eee570549f6c249",
      "parents": [
        "dac3fd9d90daffb4f6b08c788184ff38523348ba",
        "696dcf84a382fcc5ef7041e0bbf3af20b0ecb99f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Mar 28 23:42:41 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 28 23:42:41 2013 +0000"
      },
      "message": "Merge \"Update layers to clear them Bug #8489505\" into jb-mr2-dev"
    },
    {
      "commit": "94eaab4a5ddd6db4bcbc8a1e65a4d8e60d1d1274",
      "tree": "76f55bd1ca1fcc4f307918e13faff9c471625017",
      "parents": [
        "5c3bd37ab7b18bd5c3ea4bfcb86cc0a30c10d534",
        "3ae30483777708ff3a4f59a4fa75c6a76213cc30"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 28 14:29:21 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 28 14:29:21 2013 -0700"
      },
      "message": "am 3ae30483: am a19647d3: Merge \"Correct executable bit for source files [Take 2]\"\n\n* commit \u00273ae30483777708ff3a4f59a4fa75c6a76213cc30\u0027:\n  Correct executable bit for source files [Take 2]\n"
    },
    {
      "commit": "dc1975ea717cdafb914fd00ea781fd314e1ac478",
      "tree": "f3881637dba6cc80e959f5e2c0cb64ea14a4e7de",
      "parents": [
        "e494a81f9b2727edd1c537f34bf0ea83b2fb0097",
        "7273daace9303f4662444111c40bb83d3ead4a92"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Mar 28 20:46:47 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 28 20:46:47 2013 +0000"
      },
      "message": "Merge \"Fix issues related to saveLayer/restore deferral\" into jb-mr2-dev"
    },
    {
      "commit": "696dcf84a382fcc5ef7041e0bbf3af20b0ecb99f",
      "tree": "82deda082ad2fd191e8e9991cecba1e3365004b6",
      "parents": [
        "ce4a7dfc516ee61301e9af91fad17ca1320efaab"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Mar 28 13:06:58 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Mar 28 13:06:58 2013 -0700"
      },
      "message": "Update layers to clear them\nBug #8489505\n\nA layer should be updated even with an empty deferred display list. It is\npossible for a layer to request an update just to execute a clear which\nwill be handled by LayerRenderer::prepareDirty().\n\nChange-Id: Iffb98bd71d6caa8d4a701df98197676f9423c0c2\n"
    },
    {
      "commit": "58f7689ac634afa616d2b754b68d65f9a2e83814",
      "tree": "0436306c1a30bbcf7a318ca1f3da75902bde0c01",
      "parents": [
        "ce449d9ee521052bb6c24885a3599a19841eae5d",
        "ce4a7dfc516ee61301e9af91fad17ca1320efaab"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Mar 28 18:50:53 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 28 18:50:53 2013 +0000"
      },
      "message": "Merge \"Don\u0027t crash when making a layer larger than supported dimensions Bug #8437401\" into jb-mr2-dev"
    },
    {
      "commit": "7273daace9303f4662444111c40bb83d3ead4a92",
      "tree": "c1bb85a291fef72c89254888dea021bd3b847b1f",
      "parents": [
        "8ff0201ad0354b6c43aebac6075298ee847c42ef"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Mar 28 11:25:24 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Mar 28 11:33:13 2013 -0700"
      },
      "message": "Fix issues related to saveLayer/restore deferral\n\nbug:8464795\n\nChanges drawModifiers and alpha to be restored for all operations,\nsince saveLayer/restore use these values, not just draw operations\n\nAlso forces a renderer state restoration before a deferred restore op\nis played back, in case it is associated with a saveLayer that\ndoesn\u0027t have the save_clip flag set\n\nChange-Id: I9da5d44fefbfffdee164c98f4f139843dacf85df\n"
    },
    {
      "commit": "ce4a7dfc516ee61301e9af91fad17ca1320efaab",
      "tree": "3e0cfe4e2be851d15a5e240c4983ea5ecff1513b",
      "parents": [
        "4500a8d5d7fbec9dba5e693212da160849e401ff"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Mar 28 11:32:33 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Mar 28 11:32:33 2013 -0700"
      },
      "message": "Don\u0027t crash when making a layer larger than supported dimensions\nBug #8437401\n\nA misplaced ref count decrement was causing a crash when attempting to\nresize a layer to dimensions larger than the max texture size supported\nby the GPU.\n\nThis change fixes the crash and clarifies the warnings to make it more\nobvious what\u0027s happening.\n\nChange-Id: I632dc1b90aaa2605969e10523491a81c4922d3dc\n"
    },
    {
      "commit": "9cd645121584bc167b3fab61b1ed89ddc4631365",
      "tree": "364cd6fecc6be3ea5192ce9cdfaa1f2fe9b4cc97",
      "parents": [
        "2e73f5b8b7c941e68fec2d763d9455a8d6190e25",
        "408eb12631376cbdc96803e918decf6ea804d346"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Mar 27 19:47:59 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 27 19:47:59 2013 +0000"
      },
      "message": "Merge \"Set ignore flag during deferred savelayer\" into jb-mr2-dev"
    },
    {
      "commit": "408eb12631376cbdc96803e918decf6ea804d346",
      "tree": "b64da0f0826f2ae516062a59f22321ee6dcb5fe3",
      "parents": [
        "05191053545065c9c71afae173d3ab42a2d947fa"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Mar 26 18:55:15 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Mar 27 10:38:36 2013 -0700"
      },
      "message": "Set ignore flag during deferred savelayer\n\nbug:8471552\n\nAdditionally, add ignore check for draw functor\n\nIn deferred mode, if we don\u0027t set ignore, a 0 alpha displayList won\u0027t\nbe quickRejected, and not only would its contents be needlessly\ndeferred, but upon playback any functors would be drawn, ignoring the\nstate of the snapshot.\n\nChange-Id: Ib1edb3252080f674254086edee6f965f0efcce78\n"
    },
    {
      "commit": "3e4a3ea2ff03a6a1f1f7a2bebac9a86fe6555754",
      "tree": "b46b983ad05f3d7b5389f569dd39ca63506a51ac",
      "parents": [
        "519ba7b10c4e0da3586aeeaa9696349f28313898"
      ],
      "author": {
        "name": "Chirayu Desai",
        "email": "cdesai@cyanogenmod.org",
        "time": "Wed Mar 27 16:52:35 2013 +0530"
      },
      "committer": {
        "name": "Chirayu Desai",
        "email": "cdesai@cyanogenmod.org",
        "time": "Wed Mar 27 16:52:35 2013 +0530"
      },
      "message": "Correct executable bit for source files [Take 2]\n\nChange Ieb51bafb46c895a21d2e83696f5a901ba752b2c5 left out some\nfiles, this fixes them.\n\nChange-Id: Ia949a8581668836ea0251602e048f09c852f5169\n"
    },
    {
      "commit": "4500a8d5d7fbec9dba5e693212da160849e401ff",
      "tree": "1022f0099762a9ef2058da7240a2809659527846",
      "parents": [
        "96885eb480c5e0526fe2f77d30f6e551f3f3ceab"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 26 17:29:51 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 26 17:29:51 2013 -0700"
      },
      "message": "Path precaching creates duplicate cache entries\nBug #8478275\n\nChange-Id: Ib541ea051e42e01cc0d277790e9c09de38ef72ee\n"
    },
    {
      "commit": "96885eb480c5e0526fe2f77d30f6e551f3f3ceab",
      "tree": "17bee5ff04c63bf1415696b02374c60e584a0542",
      "parents": [
        "7c566bf3e4a10d74588b3e92ea3f6af310930f37"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 26 15:05:58 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 26 15:25:07 2013 -0700"
      },
      "message": "Avoid multiple font cache texture uploads\nBug #8378964\n\nThis change defers drawing into layers until after the renderer for FBO0\nis ready to draw. At that point, all the precaching is done which means\nall glyphs can be uploaded at once in the font caches.\n\nChange-Id: Ie1f7a7ff30f76f06fb3dbc72c7d05e66207d1ecb\n"
    },
    {
      "commit": "a4e16c58c9e3c983251e0475125a2a6f5bec2dbf",
      "tree": "b5c98f99fdc8a80188bf1bcf0fb959484a118735",
      "parents": [
        "1edaff0709bc3558a6736eac7fccbe8350f2d158"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 22 10:00:48 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 22 11:54:51 2013 -0700"
      },
      "message": "Restore final canvas state after deferred flush\n\nbug:8450062\n\n- Fixes overdraw indication with DeferredDisplayList\n- Fixes drawHardwareLayer called after flush\n\nAdditionally changes drawLayer to pass its paint to native via setLayerPaint\n\nWrap flush in save/restore so that reordering doesn\u0027t affect final\ntransform\n\nChange-Id: I08befa42c28500da6387699eefd4be28aedf9f4c\n"
    },
    {
      "commit": "741f6bb81063cd12c9cd5e0a6822a41561ef93b2",
      "tree": "63e77473340b297cf3ea56b4f73f88f179c67efa",
      "parents": [
        "dc0299fb2373faddd547d433ffa049fb40d64fac",
        "5f803623559aab395a29d575c37c4e39c23a4b4e"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Mar 21 22:08:12 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 21 22:08:13 2013 +0000"
      },
      "message": "Merge \"Isolate tiling clip state from snapshot\" into jb-mr2-dev"
    },
    {
      "commit": "5f803623559aab395a29d575c37c4e39c23a4b4e",
      "tree": "4735e8c0e03aa5222202af815dec86e404c18ad7",
      "parents": [
        "71b0017759b825f8bddcdda7425afc802e8918c9"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Mar 21 14:39:04 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Mar 21 14:39:04 2013 -0700"
      },
      "message": "Isolate tiling clip state from snapshot\n\nbug:8409891\n\nSnapshots frequently have their clip overwritten due to applying\ndeferred state - now, store tiling clip information in a separate\nrect, outside of the snapshot so it isn\u0027t overwritten.\n\nChange-Id: I21ca4c45dcd802eae99e8de86f11525196777ccb\n"
    },
    {
      "commit": "c5cbee7d78513527e89450e6369a30a04b2d5e7a",
      "tree": "a3709dd93124509c4490b889622b277d11fbef30",
      "parents": [
        "9eac52698b18d089e73c7ec2bf73a64a39504733"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 20 19:15:02 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 20 19:16:53 2013 -0700"
      },
      "message": "Stop worker threads on memory trim \u0026 fix bad pointer access\n\nChange-Id: I6fe7e31aeb6dd41fa65ab952caed97bc2da510d7\n"
    },
    {
      "commit": "9eac52698b18d089e73c7ec2bf73a64a39504733",
      "tree": "5c3668fc72aefd1685d6d7bd5e82547290cce281",
      "parents": [
        "7564c716bbee6a4825ae747797068d0e7c370c0d",
        "257ae3502cfad43df681b1783528d645bdabc63f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Mar 21 01:54:42 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 21 01:54:42 2013 +0000"
      },
      "message": "Merge \"Optimize text GL setup\" into jb-mr2-dev"
    },
    {
      "commit": "7564c716bbee6a4825ae747797068d0e7c370c0d",
      "tree": "aaba7442c9d22efcc6988dec251c63baae8907a8",
      "parents": [
        "426da33976036e902ea608f369d028a77afb4381",
        "e83569ca76308bfe945efcfef5a12c64b8fb8849"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Mar 21 01:17:29 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 21 01:17:29 2013 +0000"
      },
      "message": "Merge \"Use snapshot alpha in all layer drawing\" into jb-mr2-dev"
    },
    {
      "commit": "e83569ca76308bfe945efcfef5a12c64b8fb8849",
      "tree": "84df4515004ed6715daf870885950d586d5c8962",
      "parents": [
        "afd10322f598abfda973ad78117dd297e09de212"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Mar 20 16:57:09 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Mar 20 17:24:36 2013 -0700"
      },
      "message": "Use snapshot alpha in all layer drawing\n\nChange-Id: Icc093390da2fc36b2b6693d0e5e4357b2f730bf9\n"
    },
    {
      "commit": "257ae3502cfad43df681b1783528d645bdabc63f",
      "tree": "e257e21ddf04c544b0dbb6467d2d10a7c659ac1d",
      "parents": [
        "10c4d99f04a399c78529d0ae66c1785b26a125c3"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 20 16:31:12 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 20 16:35:05 2013 -0700"
      },
      "message": "Optimize text GL setup\n\nOnly performs the GL setup steps when at least one glyph is drawn.\nThis change also skips various draw operations when the specified\npaint draws with alpha \u003d 0.\n\nChange-Id: I9eda148b0503acffc552ee19196f5d52e958a1a2\n"
    },
    {
      "commit": "d90144db52c7297879b950cbbc85137ed123ab5b",
      "tree": "7c2bc1e65081419297a59f1b3fdfc2e4ca1a1c55",
      "parents": [
        "afd10322f598abfda973ad78117dd297e09de212"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Mar 19 15:03:48 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Mar 20 16:32:53 2013 -0700"
      },
      "message": "Update snapshot upon saveLayer deferral\n\nbug:8409891\n\nIn order to defer fbo-targetting saveLayer operations, it\u0027s necessary\nto update the snapshot at defer time so that deferred display state\n(namely, clip and transform) are fbo relative.\n\nRe-enables deferring, as the issues with saveLayer are fixed.\n\nChange-Id: I74b0779bc732675c747208f0757c3ea85f6dfbed\n"
    },
    {
      "commit": "4494599e5a4931426d5649e1d1c4f9db83824ae8",
      "tree": "987a2176952a5e871b80d2f9ab0468be9fb24d7d",
      "parents": [
        "fd81f91052d54c0354834fcd4f423025f2d8c93e",
        "a08f95cfeca7217f9c533b03663bf0dceedd259a"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Mar 20 22:22:44 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 20 22:22:44 2013 +0000"
      },
      "message": "Merge \"Use snapshot alpha for layers\" into jb-mr2-dev"
    },
    {
      "commit": "ec3928bf0993e13fb82c65ac26a4d70f5bc6c5e4",
      "tree": "9dc08b2a14fcec17bd4e7f684f144af8b199eff1",
      "parents": [
        "4427db27b312b46cc34a83a893e522a6468ee396",
        "661a87ec28a49458f1faf533783abf2ab9927cab"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 20 02:29:46 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 20 02:29:47 2013 +0000"
      },
      "message": "Merge \"Reduce number of glDraw calls when drawing text\" into jb-mr2-dev"
    },
    {
      "commit": "661a87ec28a49458f1faf533783abf2ab9927cab",
      "tree": "3a38408b317cfd4ee437ee27714262acc5490ad8",
      "parents": [
        "115096f50a560e64a7f95d37686d4861042c7aeb"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 19 15:24:36 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 19 17:24:13 2013 -0700"
      },
      "message": "Reduce number of glDraw calls when drawing text\n\nThis change moves the mesh buffer from FontRenderer to CacheTexture\nto help reduce the number of texture binds and glDraw calls when\ndrawing text that spans across multiple textures.\n\nChange-Id: I7de574d88313ca3672879ca878c253ff5f131fc1\n"
    },
    {
      "commit": "df9d2ba9b0b92608ea633bf04ffbef8d7ba3dd28",
      "tree": "13008d79fb703e175876db68ba31977cbb9362cc",
      "parents": [
        "2d18e52b00da92ca415b9da0aaac920a5e733f8b",
        "115096f50a560e64a7f95d37686d4861042c7aeb"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 19 18:56:19 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 19 18:56:19 2013 +0000"
      },
      "message": "Merge \"Minimize texture binds when drawing text\" into jb-mr2-dev"
    },
    {
      "commit": "115096f50a560e64a7f95d37686d4861042c7aeb",
      "tree": "95f72f39e1f1275bf9c51dbda3c04774dc48d3fa",
      "parents": [
        "bbb4e03ad4e86e79c9b51cbb18c563a5a79cf837"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 19 11:32:41 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 19 11:32:41 2013 -0700"
      },
      "message": "Minimize texture binds when drawing text\n\nWhen several CacheTextures are used to draw text, sort the\ndraw batches by texture ID to minimize state changes in the\ndriver.\n\nThis change also tweaks the font cache size and renames\na property that was too long to be set using setprop.\n\nChange-Id: I0a36dfffe58c9e75dd7384592d3343c192d042b1\n"
    },
    {
      "commit": "603ce559f290f369ef1a0d0744f1697b36e9c10e",
      "tree": "cad6d34ca3932cbc500989d22f7f08854f4c893b",
      "parents": [
        "16b7dc9c1ca4336b29afbd2f56f580014863add0",
        "d4289922ce772ed8e170a27d1c9521672b315698"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 19 02:31:34 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 19 02:31:35 2013 +0000"
      },
      "message": "Merge \"Apply ComposeShader\u0027s local matrix to children\" into jb-mr2-dev"
    },
    {
      "commit": "d4289922ce772ed8e170a27d1c9521672b315698",
      "tree": "211cddaef3df27355b6aa0029a39116c39b61c7e",
      "parents": [
        "c46d07a29e94807e768f8b162ce9f77a88ba6f46"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 18 19:30:48 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 18 19:30:48 2013 -0700"
      },
      "message": "Apply ComposeShader\u0027s local matrix to children\n\nChange-Id: Idf9b8e7d7b30f8fcd8ba1fd4bfe8991e9ca148e2\n"
    },
    {
      "commit": "16b7dc9c1ca4336b29afbd2f56f580014863add0",
      "tree": "45345d90604526ff3c35c319bd4bcd9fd2aa459c",
      "parents": [
        "a35d380bac61804551d4927df9595980373d2eff",
        "c46d07a29e94807e768f8b162ce9f77a88ba6f46"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 19 02:04:29 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 19 02:04:29 2013 +0000"
      },
      "message": "Merge \"Merge all shapes/paths caches to PathCache\" into jb-mr2-dev"
    },
    {
      "commit": "c46d07a29e94807e768f8b162ce9f77a88ba6f46",
      "tree": "9b6aec5f5dc1d73b6cd9d583d5c5c78285480070",
      "parents": [
        "338b18844434379de54050ff582d36ff6da3ba11"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 15 19:06:39 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 18 18:32:17 2013 -0700"
      },
      "message": "Merge all shapes/paths caches to PathCache\n\nThis change will greatly simplify the multi-threading of all\nshape types.\n\nThis change also uses PathTessellator to render convex paths.\n\nChange-Id: I4e65bc95c9d24ecae2183b72204de5c2dfb6ada4\n"
    },
    {
      "commit": "cada41aeb1e4cd87a94df2dfb4dd645309fe66ba",
      "tree": "85dd1a2069b6d88ba6dcec759d8be5e2bf0ac7ab",
      "parents": [
        "338b18844434379de54050ff582d36ff6da3ba11"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Mar 18 17:00:18 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Mar 18 17:00:18 2013 -0700"
      },
      "message": "Work around saveLayer clipping/transform deferring issues\n\nbug:8409891\n\nDisables deferring\n\nChange-Id: I93498a4a45a5bfe01143faa154926c6a138db8f9\n"
    },
    {
      "commit": "d0afeac6dfc0856eeb72e6176ad6335e81871d24",
      "tree": "b850971ba9f3e12093fa550284b56f49e91df6ad",
      "parents": [
        "2e6ce4f737dcdeb748f467836dd12490c0cdfd22"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 15 18:43:11 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 15 18:48:41 2013 -0700"
      },
      "message": "Reset draw modifiers after flushing\n\nbug:8401910\n\nThis avoids leaving the renderer in a state with stale pointers (to,\ne.g., shaders or color filters)\n\nChange-Id: Idf8b63657041352e70e34e91ea416fe4385d4bc2\n"
    },
    {
      "commit": "a08f95cfeca7217f9c533b03663bf0dceedd259a",
      "tree": "76be3f20c535d3f93d82624daa3a66d23765bdce",
      "parents": [
        "ff78583d8a73ca35ce65b5d2592570ff6fb9901b"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 15 17:24:33 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 15 17:29:27 2013 -0700"
      },
      "message": "Use snapshot alpha for layers\n\nRemoves mMultipliedAlpha, using the snapshot alpha for all\nnon-overlapping display list alpha control.\n\nAdditionally, fixes opacity issues where children of\nhasOverlappingRendering\u003dfalse displaylists (both hw layer sublists and\nother sublists with hasOverlappingRendering\u003dfalse)\n\nChange-Id: I6adc16da855835f9f518f8967628e5d0135c789b\n"
    },
    {
      "commit": "f40b8a939fef0a19b40188f007a3364311d6dabf",
      "tree": "027797050b58bcb2d1bac153f980282a38ae49a0",
      "parents": [
        "30527267d12d4338820d4ec2526c6bf81c7f7785",
        "ff78583d8a73ca35ce65b5d2592570ff6fb9901b"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 15 22:54:15 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 15 22:54:16 2013 +0000"
      },
      "message": "Merge \"Fully deferred displaylist replay\" into jb-mr2-dev"
    },
    {
      "commit": "ff78583d8a73ca35ce65b5d2592570ff6fb9901b",
      "tree": "24e7da9e7434d4884130a33f9b312a77654df733",
      "parents": [
        "9105ce744ecd237d4c74f4ee3a5b204c72e10c96"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 08 13:12:16 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 15 14:48:18 2013 -0700"
      },
      "message": "Fully deferred displaylist replay\n\nbug:8037003\n\nA recursive drawDisplayList call is now entirely deferred before\nplaying back to the screen and issuing GL commands. This way, the\nentire stream can be inspected, optimized, and batch work (such as\nuploading textures) before issuing commands.\n\nAdditionally, this fixes an issue where operations draw could move\nacross restores corresponding to saveLayer(alpha). Those and other\nsimilar cases (such as complex clipping, requiring the stencil) are\nnow treated as batching barriers, with the operations that change\nrenderer state in a way that\u0027s difficult to defer are just re-issued\nat flush time.\n\nChange-Id: Ie7348166662a5ad89fb9b1e87558334fb826b01e\n"
    },
    {
      "commit": "bd3055f95e67a55648fd84a125e939293115171b",
      "tree": "c22ae6a64fda750461de8a0defaf85d1a999ba07",
      "parents": [
        "0f809f3b794174f044366bf421f8d0c72d9afc14"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 13 16:14:47 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 13 16:14:47 2013 -0700"
      },
      "message": "Less aggressive glyphs precaching\n\nThe renderer used to pre-cache glyphs at record time. This then changed\nto pre-caching at the beginning of every frame. This unfortunately entails\na lot of duplicate work on every frame, which amounts to 0.5 to 1ms in\nsome stock applications.\n\nThis change is somewhere in the middle: pre-caching happens the first\ntime a DrawTextOp is deferred or every time the screen-space transform\nis different from the last pre-caching operation.\n\nChange-Id: Id6d9e2599d90a5b75010b0f0a28746befbf3c205\n"
    },
    {
      "commit": "0f809f3b794174f044366bf421f8d0c72d9afc14",
      "tree": "d4ca14f787cf7c511f5236637b5e3edb29d4c49f",
      "parents": [
        "d6c87ccde6722c7dedd05a18f30d8634893e10ee"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 13 14:31:46 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 13 14:32:45 2013 -0700"
      },
      "message": "Prevent infinite loop when trimming the path cache\n\nChange-Id: I04b5fa498336068f997c68d8613b35a99f67adbe\n"
    },
    {
      "commit": "5dc7fa709646799a5207a5d217f70aa02bf4a3aa",
      "tree": "3ebf45fa51bd0373f77aa451868df2d6ae1a8a87",
      "parents": [
        "8818d84a3540de6e53e5d82e2112292102574118"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 11 20:48:31 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 12 15:06:42 2013 -0700"
      },
      "message": "Add TaskManager API\n\nThis API can be used to run arbitrary tasks on a pool of worker\nthreads. The number of threads is calculated based on the number\nof CPU cores available.\n\nThe API is made of 3 classes:\n\nTaskManager\n      Creates and manages the worker threads.\n\nTask\n      Describes the work to be done and the type of the output.\n      A task contains a future used to wait for the worker thread\n      to be done computing the result of the task.\n\nTaskProcessor\n      The processor dispatches tasks to the TaskManager and is\n      responsible for performing the computation required by\n      each task. A processor will only be asked to process tasks\n      sent to the manager through the processor.\n\nA typical use case:\n\nclass MyTask: Task\u003cMyType\u003e\n\nclass MyProcessor: TaskProcessor\u003cMyType\u003e\n\nTaskManager m \u003d new TaskManager();\nMyProcessor p \u003d new MyProcessor(m);\nMyTask t \u003d new MyTask();\np.add(t);\n\n// Waits until the result is available\nMyType result \u003d t-\u003egetResult();\n\nChange-Id: I1fe845ba4c49bb0e1b0627ab147f9a861c8e0749\n"
    },
    {
      "commit": "2a2ead93a96b1e57098b5b6c14ec88906927d0cd",
      "tree": "78f99fde59752382105e4c529ba7187c26f587de",
      "parents": [
        "b13eb3e789dd1b26a38848e8aa27827e38fd9e9c",
        "ca89e2a68703bd428e8b66547d033a6ed35b3595"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 12 01:43:20 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 12 01:43:20 2013 +0000"
      },
      "message": "Merge \"Precache paths from a worker thread\" into jb-mr2-dev"
    },
    {
      "commit": "ca89e2a68703bd428e8b66547d033a6ed35b3595",
      "tree": "5661de81848f7d26559531a1ea650ed7fea2decd",
      "parents": [
        "6e2004089305cf2cd958b52b234459a49a4e5c83"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 08 17:44:20 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 11 17:05:28 2013 -0700"
      },
      "message": "Precache paths from a worker thread\n\nChange-Id: I3e7b53d67e0e03e403beaf55c39350ead7f1e309\n"
    },
    {
      "commit": "294b512ecaa98a6a8ef12285ad14e7a4091b5d57",
      "tree": "d89983eed02f4cc3fc48fb50cd0d779ff345752b",
      "parents": [
        "2042cc403a6eba2de1c5220e8402b045bdf24192"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Feb 19 14:08:59 2013 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Mar 08 15:08:10 2013 -0800"
      },
      "message": "DO NOT MERGE - Full backup/restore now handles OBBs sensibly\n\nOBB backup/ restore is no longer handled within the target app\nprocess.  This is done to avoid having to require that OBB-using\napps have full read/write permission for external storage.\n\nThe new OBB backup service is a new component running in the\nsame app as the already-existing shared storage backup agent.\nThe backup infrastructure delegates backup/restore of apps\u0027\nOBB contents to this component (because the system process\nmay not itself read/write external storage).\n\nFrom the command line, OBB backup is enabled by using new\n-obb / -noobb flags with adb backup.  The default is noobb.\n\nFinally, a couple of nit fixes:\n\n- buffer-size mismatch between the writer and reader of chunked\n  file data has been corrected; now the reading side won\u0027t be\n  issuing an extra pipe read per chunk.\n\n- bu now explicitly closes the transport socket fd after\n  adopting it. This was benign but triggered a logged\n  warning about leaked fds.\n\n(Cherrypicked)\n\nChange-Id: I471f6348abcccb7bf1e1710b7beda9f23de53e14\n"
    },
    {
      "commit": "6e2004089305cf2cd958b52b234459a49a4e5c83",
      "tree": "e5cd875ac22fc80f9f0098a1c910251d672d50a9",
      "parents": [
        "b09f1471262c3e629daacbc319bcefc2d621a484"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 08 11:28:22 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 08 11:28:22 2013 -0800"
      },
      "message": "Move blur code from FontRenderer to utils/Blur.cpp\n\nChange-Id: I2cebbfbcb722ed4b37e54ffbf8b53bb92ad0c964\n"
    },
    {
      "commit": "b09f1471262c3e629daacbc319bcefc2d621a484",
      "tree": "230927395ec54cd3af22e317d6c946d2dc376258",
      "parents": [
        "8afce816df7e8f668761f7ed443f54238958c49f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Mar 07 17:01:05 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Mar 07 17:03:25 2013 -0800"
      },
      "message": "Don\u0027t apply scale to glyphs when a perspective is set.\nBug #8337925\n\nMagazines uses very large scale factors that blow up font cache \u0026 CPU.\n\nChange-Id: I1c0ed430ed91b86cc6c6f59f7e8bdcc89a464e46\n"
    },
    {
      "commit": "8afce816df7e8f668761f7ed443f54238958c49f",
      "tree": "2b4d8c151e756b6f136c202160eaf46a610a72c3",
      "parents": [
        "0ffc81c1ada65b4ef4febaacf044e9fa62309b87"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 06 19:09:59 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 06 19:09:59 2013 -0800"
      },
      "message": "Round scale factors to rasterize text\n\nHarder, better, faster, stronger.\n\nChange-Id: Iee4125de98c4e61603f56bb7f06002cc86458214\n"
    },
    {
      "commit": "624234f69b2a4781d24f3e4c6ae6450729e38397",
      "tree": "d6ae0bfd751e0e59329cb678c1d9f1cec447ee3e",
      "parents": [
        "0b58a3deab66c30a8d35072e55aac6279dd367cc"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 05 16:43:31 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 05 18:12:35 2013 -0800"
      },
      "message": "Take only the scale params into account to rasterize text\n\nThis change extracts the scale parameters of the current transform\nto pass then to the font renderer. Rotation and perspective are\napplied to the generated mesh inside the vertex shader. This limits\nthe number of glyphs we have to create in the font cache and thus\nreduces memory churn.\n\nChange-Id: Ic5b3bae2b2b0e0250a8ee723b071a1709725c749\n"
    },
    {
      "commit": "0b58a3deab66c30a8d35072e55aac6279dd367cc",
      "tree": "2c72a32f0e9b51e2aab1b819a6adfd9a5cc46178",
      "parents": [
        "3b753829ae858d424fe109f714745379a6daf455"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 05 12:16:27 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 05 12:16:27 2013 -0800"
      },
      "message": "Make glyph copies a little more cache friendly\n\nChange-Id: Ie21b7079cc5d3ea67a03597c57842636e4afe143\n"
    },
    {
      "commit": "3b753829ae858d424fe109f714745379a6daf455",
      "tree": "2b4c370574319ff1cfbd5014be3748d17e362b4a",
      "parents": [
        "e78b8003a5870c0e80ed92c4df442871fb9d0b61"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 05 10:27:35 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 05 10:27:35 2013 -0800"
      },
      "message": "Fix colored rects clipping and code cleanup\n\nThe drawColorRects() method was clipping individual rectangles\nusing the wrong parameters left, top, right and bottom instead\nof l, r, t and b. It also checked for count \u003d\u003d 0 after the loop\nwhen it should have checked for vertexCount \u003d\u003d 0. The quickReject\nis now not part of the loop since it\u0027s a bit overkill to perform\nso many matrix multiplications. What we really care about is the\nfinal quickReject performed on the max bounds of the entire set\nof rectangles.\n\nThis change also replaces all instances of mSnapshot-\u003etransform\nby currentTransform() to make the code slightly more readable.\n\nChange-Id: I6485280414499716852f7dbfba186774eb6763d4\n"
    },
    {
      "commit": "19d4dd8599cb870923ab349d2ab96cacffd9c6f5",
      "tree": "86b0575167b2c27642a1e7a7296be2de2877474a",
      "parents": [
        "cdac497289fd2c39a352f6167dae3f77cc608cb8"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 04 11:14:26 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 04 13:48:43 2013 -0800"
      },
      "message": "Take text scale/skew into account only when rendering into a layer\n\n3D rotations can undo scale/skew transforms; since FreeType only accepts\n2x2 matrices we can end up generating very large glyphs that are drawn\nat a 1:1 scale on screen. For instance, if the current transform has a\nscale of 2000 set on both X and Y axis and a perspective Z factor set to\nZ, the actual scale factor on screen ends up being 1. We would however\ngenerate glyphs with a scale factor of 2000 causing the font renderer\nto blow up.\n\nChange-Id: Ia5c3618d36644e817825cb9c89e2f53aece2074e\n"
    },
    {
      "commit": "151b71cb5259eabf9bdcdc9248ba5100ad4c5bcf",
      "tree": "b2fb6e54b49d5f6c739b996a5c78f0d3c7374ca4",
      "parents": [
        "28459117a797bbf09ac589af4c8083a98fdbfb90",
        "874f5c6e4ac655b4f118074c90d51e6a44abe50c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sat Mar 02 02:08:17 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 02 02:08:18 2013 +0000"
      },
      "message": "Merge \"Fix math issue when transforming text in perspective\" into jb-mr2-dev"
    },
    {
      "commit": "874f5c6e4ac655b4f118074c90d51e6a44abe50c",
      "tree": "3b7ac8426834bbe35a25a2c835d685188e8c0691",
      "parents": [
        "0f6675332c04c74909425d1d328f02b32c0ff40e"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 01 18:07:35 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 01 18:07:35 2013 -0800"
      },
      "message": "Fix math issue when transforming text in perspective\n\nChange-Id: Iad6b4e477c11bd1ef5f0ceab2fabcd440030154d\n"
    },
    {
      "commit": "28459117a797bbf09ac589af4c8083a98fdbfb90",
      "tree": "7f7ac6407914e94599f5290c3052b90d9cf6895a",
      "parents": [
        "76f065d2e9d6354a59bb233b969c8417aff7223b",
        "0f6675332c04c74909425d1d328f02b32c0ff40e"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sat Mar 02 00:13:17 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 02 00:13:17 2013 +0000"
      },
      "message": "Merge \"Precache glyphs at final raster size\" into jb-mr2-dev"
    },
    {
      "commit": "0f6675332c04c74909425d1d328f02b32c0ff40e",
      "tree": "53a912c204ba470a0d6cd2c5701a1aef614cc7eb",
      "parents": [
        "8b5aa4846939975adacd6ea1d2a57a2493ac0216"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 01 14:31:04 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 01 16:04:53 2013 -0800"
      },
      "message": "Precache glyphs at final raster size\n\nThe deferred display lists model now allows us to precache glyphs\nat their exact size on screen.\n\nThis change also removes debug markers when the renderer defers\nand reorders display lists. It also adds a flush event marker.\n\nChange-Id: I66ec5216dc12b93ecfdad52a7146b1cfb31fbeb4\n"
    },
    {
      "commit": "1da8a6a36df0389dd4c213a8f9698874c484c839",
      "tree": "617355ae8e988240ff421634b4d50ffee0dff43b",
      "parents": [
        "624de6854f42feb9d2761db857c6f36a47fabb25",
        "096b8d96d539429de5e67b2821ef3f9ee0300842"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 01 19:42:38 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 01 19:42:38 2013 +0000"
      },
      "message": "Merge \"Add shader program selection shortcut\" into jb-mr2-dev"
    },
    {
      "commit": "096b8d96d539429de5e67b2821ef3f9ee0300842",
      "tree": "c3e603e03eea99c186dda4f9563c8ec6afececb7",
      "parents": [
        "29466f85c06b7b58b2d058dcf293298fecdeb704"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 01 11:08:11 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 01 11:11:31 2013 -0800"
      },
      "message": "Add shader program selection shortcut\n\nAdd a key manipulation that makes black text/paths use the standard\nsimple bitmap/patch shader, since they are the same. Previously we\u0027d\ncreate a separate shader for each because the keys differed, even\nthough the shaders were functionally equivalent.\n\nAlso fixes some issues around setting DEBUG_PROGRAM\n\nChange-Id: I0c77c684d58da03501ee9ab8239c7d4a70fd6b5c\n"
    },
    {
      "commit": "1361dff5eb54b9b02b4d1a2d3e2ed3afd216d79d",
      "tree": "18e0d63acf1641fa6eb4b0a204278b33fae5bf7c",
      "parents": [
        "f999879ce01117ea8ca292403a7104b0e7d46bdc",
        "a4adcf0239039eb8f005be252409901c41b28839"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 01 00:05:51 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 01 00:05:51 2013 +0000"
      },
      "message": "Merge \"Support 3D rotations when drawing text\" into jb-mr2-dev"
    },
    {
      "commit": "a4adcf0239039eb8f005be252409901c41b28839",
      "tree": "bb339ae27217db42e4ef0de743b07ca138ef335a",
      "parents": [
        "aaa46155ec80f02b37ec858408d7dabbf9bc289a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 28 12:15:35 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 28 16:04:48 2013 -0800"
      },
      "message": "Support 3D rotations when drawing text\n\nIf a perspective transform is set on the Canvas, drawText() should\nnot attempt to rasterize glyphs in screen space. This change uses\nthe old behavior instead (i.e. rasterize the glyphs at the native\nfont size and apply the transform on the resulting mesh.)\n\nThis change also adds an optimization: empty glyphs (spaces) do\nnot generate vertices anymore. This saves a lot of vertices in text\nheavy applications such as Gmail.\n\nChange-Id: Ib531384163f5165b5785501612a7b1474f3ff599\n"
    },
    {
      "commit": "d6960a49b40703e8af55c1fb628a2e0c5d2b40cf",
      "tree": "c9fc45717e8c6f7b58075aa2c54e7010a10c0a8c",
      "parents": [
        "29466f85c06b7b58b2d058dcf293298fecdeb704"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Feb 28 11:25:39 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Feb 28 11:25:39 2013 -0800"
      },
      "message": "Account for text alignment in Op bounds calculation\n\nbug:8243821\n\nPreviously this wasn\u0027t done for deferred clipping + reordering, so\nnon-left-aligned text would be clipped at defer time, when it wouldn\u0027t\nhave been at draw time (in OpenGLRenderer::quickReject())\n\nChange-Id: Ic96949c2dca4378f284606b37d9411ed42f8d203\n"
    },
    {
      "commit": "19886f8b5109218191908d2ce5faf0293f85cf31",
      "tree": "21b9cf9c389d7c942dd0154aa35f28453edf226d",
      "parents": [
        "66dfcd465c02d78cb4ff22e7b509ee42d4309286",
        "c74f45a334f0e3725c23cdd270cbcb0efac4ea75"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 28 01:05:33 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 28 01:05:34 2013 +0000"
      },
      "message": "Merge \"Properly scale text\" into jb-mr2-dev"
    },
    {
      "commit": "c74f45a334f0e3725c23cdd270cbcb0efac4ea75",
      "tree": "1b198e8b6b7d6d4a69237116a580236836744294",
      "parents": [
        "d80806b305ce337283c24f14522cc58fea090b8c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 26 19:10:14 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 27 15:49:57 2013 -0800"
      },
      "message": "Properly scale text\n\nThis change does not apply to drawPosText() and drawTextOnPath() yet.\n\nPrior to this change, glyphs were always rasterized based on the\nfont size specified in the paint. All transforms were then applied\non the resulting texture. This creates rather ugly results when\ntext is scaled and/or rotated.\n\nWith this change, the font renderer will apply the current transform\nmatrix to the glyph before they are rasterized. This generates much\nbetter looking results.\n\nChange-Id: I0141b6ff18db35e1213e7a3ab9db1ecaf03d7a9c\n"
    },
    {
      "commit": "d041e476f3c959f5b373b64a329aa427d057375e",
      "tree": "5f7f48f3c9840cf061146de063cd894ccba486e3",
      "parents": [
        "d80806b305ce337283c24f14522cc58fea090b8c",
        "19a390bff348cd379caba1265faec77fcff29200"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 27 23:48:16 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 27 23:49:37 2013 +0000"
      },
      "message": "Merge \"Correct sub-hairline tessellation threshold\" into jb-mr2-dev"
    },
    {
      "commit": "d80806b305ce337283c24f14522cc58fea090b8c",
      "tree": "701d3e4ea59f356c20b273c3061b6206782206b9",
      "parents": [
        "122f4051b5c4d61044ba377b4b5fa10133ab7b37",
        "6c5b9be7450903762f676522c32d65f7545730df"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 27 23:47:54 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 27 23:47:55 2013 +0000"
      },
      "message": "Merge \"Fix T-junctions in layers\u0027 generated meshes\" into jb-mr2-dev"
    },
    {
      "commit": "19a390bff348cd379caba1265faec77fcff29200",
      "tree": "5b07f005526656b38e39f9c3b277985bb020fae5",
      "parents": [
        "be1a8cda3e8113d1fd3a6e56d8bc6c4f2d350423"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 27 15:43:26 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 27 15:43:26 2013 -0800"
      },
      "message": "Correct sub-hairline tessellation threshold\n\nChange-Id: Id868d41a36db5b4daa762d84b6329f9c31916bce\n"
    },
    {
      "commit": "a6456d0d7ea2a65474b8a3db5dbf001880c40a71",
      "tree": "9e456a81714eaf92a8be5f6cd7b75a831e91c663",
      "parents": [
        "13e3891b20133d131ba61fa86bcd8b6ee1e50199",
        "768bffc9b814f6a1f7d9ff59d91285895c23bbe9"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 27 22:16:22 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 27 22:16:22 2013 +0000"
      },
      "message": "Merge \"Draw text drop shadows even when the text color is transparent\" into jb-mr2-dev"
    },
    {
      "commit": "6c5b9be7450903762f676522c32d65f7545730df",
      "tree": "4f0930eca0d1481506628100dbc3def1bdf24c45",
      "parents": [
        "be1a8cda3e8113d1fd3a6e56d8bc6c4f2d350423"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 27 14:03:19 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 27 14:03:19 2013 -0800"
      },
      "message": "Fix T-junctions in layers\u0027 generated meshes\n\nbug:4128442\n\nCurrently we fix T-junctions for hardware layers, and for\nCanvas.saveLayer if the transform isn\u0027t rectAsRect. Ideally, hardware\nlayers should lazily re-generate T-junction free geometry if the\ntransform becomes non-rectAsRect\n\nDepends on frameworks/native change:\nhttps://googleplex-android-review.googlesource.com/#/c/277668/\nwhich adds Region::createTJunctionFreeRegion()\n\nChange-Id: Ice75b4a1a4459ff835059ea81d70f7d1563fd96d\n"
    },
    {
      "commit": "768bffc9b814f6a1f7d9ff59d91285895c23bbe9",
      "tree": "49da21e344249af8273fe418e13fe03235eb9c76",
      "parents": [
        "c0e55bd3cfe1d7be2276e4f528fee2231763a5c1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 27 13:50:45 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 27 13:52:26 2013 -0800"
      },
      "message": "Draw text drop shadows even when the text color is transparent\n\nThis matches Skia\u0027s behavior.\n\nChange-Id: Ibf0a52611f5801cfa68169f66ab0ec06f256600f\n"
    },
    {
      "commit": "758724fd09a1599f2c55130f81953cfa6c17c300",
      "tree": "ca84f352115851317bf012534a69d748def6092e",
      "parents": [
        "c0e55bd3cfe1d7be2276e4f528fee2231763a5c1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 27 11:53:12 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 27 11:53:12 2013 -0800"
      },
      "message": "Don\u0027t increment the paint\u0027s generation ID when drawing bitmaps\n\nWhen the renderer draws a bitmap as part of a display list with an\nalpha \u003c 1.0f, the paint is temporarily modified to alter the opacity\nof the bitmap. This has the side effect of increasing the paint\u0027s\ngeneration ID counter which can break paint caching.\n\nChange-Id: I5055d059ad1639829fa50af3d946e296c4dab877\n"
    },
    {
      "commit": "08bca88b272f0006e1581e9c28bc6312490f634e",
      "tree": "53448de4296be4b220e5213563a19b4668512143",
      "parents": [
        "3ff0bfdd144bba3b023eda8c49b25fb0d0de8653"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Feb 25 16:21:30 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Feb 25 16:21:30 2013 -0800"
      },
      "message": "Rename debug property and expose it in HardwareRenderer\n\nChange-Id: If46a9bc14a50f6c9a202d901881b36bbac32cba3\n"
    },
    {
      "commit": "3ff0bfdd144bba3b023eda8c49b25fb0d0de8653",
      "tree": "cfc94ccf18fb1bfaaefb1241c700900a32276acf",
      "parents": [
        "01d159d88a51c44d7e282e07b834535e5b0e8bd1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Feb 25 14:15:37 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Feb 25 15:01:58 2013 -0800"
      },
      "message": "Add new property to debug non-rectangular clip operations\n\nThis change adds a new property called \"debug.hwui.show_stencil_clip\"\nthat accepts the following values:\n\n- \"highlight\", colorizes in green any drawing command that\u0027s tested\n  against a non-rectangular clip region\n- \"region\", shows the non-rectangular clip region in blue every time\n  it is used\n- \"hide\", default value, nothing is shown\n\nChange-Id: I83c8602310edc4aaeb8b905371cdd185b17d32b5\n"
    },
    {
      "commit": "fb6806570911851fb8cbaaf5bdf275a89f3c3ef4",
      "tree": "984f0580e2c6a527635b8100a5391c82288bb2b8",
      "parents": [
        "dd8697c095272f19ddad214834a490b00f11a477",
        "ba868c3e2297bd75cd3f8bb1f9eaa286855a1919"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Sat Feb 23 00:42:02 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 23 00:42:53 2013 +0000"
      },
      "message": "Merge \"Add deferredList null check\""
    },
    {
      "commit": "ba868c3e2297bd75cd3f8bb1f9eaa286855a1919",
      "tree": "037204a9dfffc84f2c1ca70876fac1977170f83c",
      "parents": [
        "786525e8ea49c32b54eda5c260e125f5f2cf80e7"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 22 16:28:27 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 22 16:28:27 2013 -0800"
      },
      "message": "Add deferredList null check\n\nNeeded for non-deferred mode (debug.hwui.disable_draw_defer \u003d true)\n\nChange-Id: I278cbe200aa6ce06fa92dc45c63ceda6e85a0cbe\n"
    },
    {
      "commit": "dd8697c095272f19ddad214834a490b00f11a477",
      "tree": "95c51da6955eca5a40fd692103fba7bee8711219",
      "parents": [
        "786525e8ea49c32b54eda5c260e125f5f2cf80e7"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 22 10:41:36 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 22 16:16:16 2013 -0800"
      },
      "message": "Avoid double blur\n\nbug:8204062\n\nAvoids incorrectly blurring with RenderScript after a C++ blur\n\nAdditionally, avoids draw/blurring if the input text has empty bounds\n\nChange-Id: Ibbaf74800fff7a6e4cda3aa24286b90e7aef589d\n"
    },
    {
      "commit": "505d1d64eda6e47caabf8701cb39ec9b176b3238",
      "tree": "99fa418bf15f26afdcfddc1ae1936e4de809ddfa",
      "parents": [
        "ec39a94ac299e57c800a82814651c713f3a5f5c7",
        "7031ff68bb998dbbd7caf3b2fd75eef747a86725"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Feb 22 21:45:56 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 22 21:45:57 2013 +0000"
      },
      "message": "Merge \"Prettify display lists logging\""
    },
    {
      "commit": "7031ff68bb998dbbd7caf3b2fd75eef747a86725",
      "tree": "0a2ae84a624a03136f5b5d82fa8885c207d650e7",
      "parents": [
        "e72409fe779f620382c5bd0b82f4a32ac91d9fe4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Feb 22 11:48:16 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Feb 22 11:51:15 2013 -0800"
      },
      "message": "Prettify display lists logging\n\nThis change makes it a lot easier to see the tree structure.\n\nChange-Id: I4969abd1eb010f1d529671f8d86dc4c930be24f6\n"
    },
    {
      "commit": "94b97b38b749d50c8693a044dd2688328cca863e",
      "tree": "6fedcbbe4e60867fb6776bc89ab90abace1f3e8f",
      "parents": [
        "4e89d1a9b25b4bca47bd8c7cb22b72ed4bbbfd1e",
        "eab51de4de88219256260fe26e2018a6234ef83b"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Feb 21 19:31:17 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 21 19:31:17 2013 -0800"
      },
      "message": "am eab51de4: Merge \"Fix clipping and stencil layer issues\"\n\n* commit \u0027eab51de4de88219256260fe26e2018a6234ef83b\u0027:\n  Fix clipping and stencil layer issues\n"
    },
    {
      "commit": "eab51de4de88219256260fe26e2018a6234ef83b",
      "tree": "5e6b5f0abd5b525ccb41fc245994b1989071b188",
      "parents": [
        "893df066bbd156b05171e68204a407a212c507e9",
        "b98a016c6769b9e80d392df22fe77a2fca048d9f"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 22 03:28:06 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 22 03:28:06 2013 +0000"
      },
      "message": "Merge \"Fix clipping and stencil layer issues\""
    },
    {
      "commit": "4e89d1a9b25b4bca47bd8c7cb22b72ed4bbbfd1e",
      "tree": "f3058df2bfbffa8b9898bfb4fb975f7bddcd0a4b",
      "parents": [
        "fe98be7533767b1941dc6bae4d9a9640089978fd",
        "893df066bbd156b05171e68204a407a212c507e9"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Feb 21 16:28:14 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 21 16:28:14 2013 -0800"
      },
      "message": "am 893df066: am 8dda0956: am 49999acb: Merge \"StreamingZipInflater: fix mmap\\\u0027d end of read\"\n\n* commit \u0027893df066bbd156b05171e68204a407a212c507e9\u0027:\n  StreamingZipInflater: fix mmap\u0027d end of read\n"
    },
    {
      "commit": "893df066bbd156b05171e68204a407a212c507e9",
      "tree": "cc5cd5b6bfce812e0003a477bf55ea150aa92d85",
      "parents": [
        "65b0052a7473b73a18aef73460c9ebec77a2c2a0",
        "8dda0956b6565a958989af44e885b94dc9bfc9bd"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Feb 21 16:24:41 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 21 16:24:41 2013 -0800"
      },
      "message": "am 8dda0956: am 49999acb: Merge \"StreamingZipInflater: fix mmap\\\u0027d end of read\"\n\n* commit \u00278dda0956b6565a958989af44e885b94dc9bfc9bd\u0027:\n  StreamingZipInflater: fix mmap\u0027d end of read\n"
    },
    {
      "commit": "b98a016c6769b9e80d392df22fe77a2fca048d9f",
      "tree": "6a4adcd9e871baab9aae6f2f0ad80670ad4f66bd",
      "parents": [
        "2b3a47b9ce0f422323395286937944a2afa51ed6"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Feb 21 11:30:22 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Feb 21 16:12:00 2013 -0800"
      },
      "message": "Fix clipping and stencil layer issues\n\nbug:8235699\n\nEnsure rectangle clipping operations disable deferring when necessary\n(i.e., when the op might create a non-rect region), including in\nDisplayList::setViewProperties\n\nAdditionally, makes clipping with a kUnion always use a region, for\nconsistency with software rendering\n\nChange-Id: I6730f1a80250bcf3f91cd4afde646d470a12dbc2\n"
    },
    {
      "commit": "08d160a366932aec170a115a1edb3bb5ac4e3a4e",
      "tree": "01cf849d4c08344f8d08ba9d92efea80ca0d54c3",
      "parents": [
        "3c394a3bec3c0467d7e9f5c8ceda0501e2e61f04",
        "7a60c43d874bd047ea4b93b94c9b8771ea5739cc"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Wed Feb 20 14:39:35 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Feb 20 14:39:35 2013 -0800"
      },
      "message": "am 7a60c43d: Merge \"Use free for memory chunks allocated through memalign.\"\n\n* commit \u00277a60c43d874bd047ea4b93b94c9b8771ea5739cc\u0027:\n  Use free for memory chunks allocated through memalign.\n"
    },
    {
      "commit": "7a60c43d874bd047ea4b93b94c9b8771ea5739cc",
      "tree": "584beb1d903ea697e7268bd94aa71407065782aa",
      "parents": [
        "780294be50b57d94455c709044e36098c829f72a",
        "15641a6181cdaac2aadf07585de66483b4b7ae6b"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Wed Feb 20 22:34:57 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 20 22:34:58 2013 +0000"
      },
      "message": "Merge \"Use free for memory chunks allocated through memalign.\""
    },
    {
      "commit": "15641a6181cdaac2aadf07585de66483b4b7ae6b",
      "tree": "9921ccaec2a24f89e49fee585cbb3c082657642b",
      "parents": [
        "404f87e54057bd09b9a504066d7d573db1e11eb3"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Wed Feb 20 13:20:03 2013 -0800"
      },
      "committer": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Wed Feb 20 13:20:03 2013 -0800"
      },
      "message": "Use free for memory chunks allocated through memalign.\n\nBUG: 8234423\nChange-Id: Ic4100a780908c94540722cc4af5f73f4940431b4\n"
    },
    {
      "commit": "c4ca87f0f4034d4b987084d2b62ed7e5e0430557",
      "tree": "72ae034904f9554d1ed6228944e7711959fc21d7",
      "parents": [
        "09bd2113e3a6bb2c63f01b62a09ae3c23d3c0454",
        "8a47d8eaec26d0937aee94a057f561f246748339"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 20 10:42:40 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Feb 20 10:42:40 2013 -0800"
      },
      "message": "am 8a47d8ea: Merge \"Clean up clipping and deferral logic\"\n\n* commit \u00278a47d8eaec26d0937aee94a057f561f246748339\u0027:\n  Clean up clipping and deferral logic\n"
    },
    {
      "commit": "8a47d8eaec26d0937aee94a057f561f246748339",
      "tree": "3a0e20c21c0086e97d4024e2f2af269bc7f0e859",
      "parents": [
        "14bd8359a84c9b3f634d1fd816ddf5750d6539a9",
        "5d11676414b3606792e23c269cf75b44faa1a2af"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 20 18:40:03 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 20 18:40:03 2013 +0000"
      },
      "message": "Merge \"Clean up clipping and deferral logic\""
    },
    {
      "commit": "5d11676414b3606792e23c269cf75b44faa1a2af",
      "tree": "4cc1e7f6dd978c9575f19aa8e4137837fc042fd7",
      "parents": [
        "ad82f20d2382396f5ac75fdf6f7db5c4da1c4c23"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Feb 19 17:49:31 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Feb 19 18:56:10 2013 -0800"
      },
      "message": "Clean up clipping and deferral logic\n\nbug:8037003\n\n-Merges replay methods\n-Bounds checking for DrawBitmapMesh, DrawRects and DrawDisplayList\n-Use clip as bounds for otherwise unbounded draw operations\n\nClip-as-bounds is correct for drawColor and functor, but other draw\noperations (pos text, text on path, and layers) still need true bounds\ncalculation\n\nChange-Id: I5d5149d2c624f01e3fe46628bf156e835e69b9d5\n"
    },
    {
      "commit": "846f5f238fd96a14197022baad86eab8882fe3bc",
      "tree": "a8859b3a21c5746f53e9531dffdb13783a8ea08d",
      "parents": [
        "27c530076068607e61ef6a3fcc1c5f05aa7104aa",
        "e91efabaf2c51d017bf4c5bc4e06491c3511f4e5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 19 12:36:28 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 19 12:36:28 2013 -0800"
      },
      "message": "am e91efaba: Merge \"Expose display list APIs\"\n\n* commit \u0027e91efabaf2c51d017bf4c5bc4e06491c3511f4e5\u0027:\n  Expose display list APIs\n"
    },
    {
      "commit": "52036b19a5f82bc4d75cfcbff99c65df8d25a99b",
      "tree": "138a50b1b6ddc1075af93c4dab85d459aef1d6d3",
      "parents": [
        "736ef1e9dedbdd0c24e27f170034f2f869fd083f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 14 18:03:37 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 19 12:30:02 2013 -0800"
      },
      "message": "Expose display list APIs\n\nThe exposed APIs are slightly simpler than the full APIs used internally.\nOnly APIs useful to applications are exposed.\n\nChange-Id: Ie03014628d40ad5ef63dedbc52ce3def84429d54\n"
    },
    {
      "commit": "620cff4006ee0b507f00ef8a242ecff4e60ba4e9",
      "tree": "30c29f1ee548bb5da57a0a68b95f3c25beaa8eb6",
      "parents": [
        "57a8b612fa6b31a18f9e00a7bdf7dfbd261f793c",
        "ad82f20d2382396f5ac75fdf6f7db5c4da1c4c23"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Feb 19 09:56:33 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 19 09:56:33 2013 -0800"
      },
      "message": "am ad82f20d: Merge \"DisplayList draw operation reordering\"\n\n* commit \u0027ad82f20d2382396f5ac75fdf6f7db5c4da1c4c23\u0027:\n  DisplayList draw operation reordering\n"
    },
    {
      "commit": "ad82f20d2382396f5ac75fdf6f7db5c4da1c4c23",
      "tree": "4e0e71fc60163b3e1956269efaf75276a3b55b64",
      "parents": [
        "5acb33af357b56fffb055997718b1e4aa97f53fc",
        "c3566d06421c8acc0aafb18f7e307e5725ce87e1"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Feb 19 17:53:49 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 19 17:53:50 2013 +0000"
      },
      "message": "Merge \"DisplayList draw operation reordering\""
    },
    {
      "commit": "eea34dab432586788008d2afd00f5a3c19aaed7f",
      "tree": "72ab01151befd8d7b8771b0024d68d2e1aeb3c04",
      "parents": [
        "ece85f3b049141164586df286c9afda388bb8a3b",
        "ac838a3ab9d85112576cf2c943930441f62c51d2"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 15 19:41:32 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Feb 15 19:41:32 2013 -0800"
      },
      "message": "am ac838a3a: Merge \"Correct PatchCache comparison logic\"\n\n* commit \u0027ac838a3ab9d85112576cf2c943930441f62c51d2\u0027:\n  Correct PatchCache comparison logic\n"
    },
    {
      "commit": "ac838a3ab9d85112576cf2c943930441f62c51d2",
      "tree": "e29d3d53cd3cf681e99accbf7a1251ff473cd67e",
      "parents": [
        "840b5069707c6f39ec06231dacbcbe8159d581c1",
        "9935abceea10df337969f08cce05b7c02bb1eb19"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Sat Feb 16 03:36:28 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 16 03:36:37 2013 +0000"
      },
      "message": "Merge \"Correct PatchCache comparison logic\""
    },
    {
      "commit": "9935abceea10df337969f08cce05b7c02bb1eb19",
      "tree": "718183b5c47ea48485b173a729145bf54bd2f971",
      "parents": [
        "8d1a6af408d798dec46a8b1230b7327551fb8051"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 15 19:33:43 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 15 19:33:43 2013 -0800"
      },
      "message": "Correct PatchCache comparison logic\n\nChange-Id: I3d0832505b5380bfa362863b39e09dd10f792582\n"
    },
    {
      "commit": "225e8943de3994834f18b0b255e8addf812cb86a",
      "tree": "400dcb2df0c790e6d82a9ff018cf2dc8efe76e7b",
      "parents": [
        "4078559a1f2afcdf1e158a93c8952acb4c938ac6",
        "857089eb1efcc7d86f373edf8cb30911a95f6bac"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 15 18:11:13 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Feb 15 18:11:13 2013 -0800"
      },
      "message": "am 857089eb: Merge \"Adjust offset for non-AA line drawing\"\n\n* commit \u0027857089eb1efcc7d86f373edf8cb30911a95f6bac\u0027:\n  Adjust offset for non-AA line drawing\n"
    },
    {
      "commit": "857089eb1efcc7d86f373edf8cb30911a95f6bac",
      "tree": "90a9ab2dbcf349ce2a1f31950de738ab5f047384",
      "parents": [
        "8d1a6af408d798dec46a8b1230b7327551fb8051",
        "62a42c13a6e86255a0118688a60c9248030c95a9"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Sat Feb 16 02:09:07 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 16 02:09:22 2013 +0000"
      },
      "message": "Merge \"Adjust offset for non-AA line drawing\""
    },
    {
      "commit": "62a42c13a6e86255a0118688a60c9248030c95a9",
      "tree": "3f7e12c3f6c7dcc4ae571a792fda5d9780afa429",
      "parents": [
        "101ae3bb3909827303121e5e11ed16b7efe36538"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 15 11:58:14 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 15 14:53:12 2013 -0800"
      },
      "message": "Adjust offset for non-AA line drawing\n\nbug:8114304\n\nThe original .375 was chosen to make GL_LINES align with Skia drawing.\nThe new value of .065 is chosen to be as small as possible to make\ntriangle-based lines align with Skia, while keeping lines drawn on\ninteger coordinates unambiguous as to which column/row they draw on.\n\nAlso adds more lines in CanvasCompare test to highlight the difference\n\nChange-Id: If578684f2db320682219c3caa625cf79bc62d88f\n"
    }
  ],
  "next": "df93fdb6c0d00bcbf548c4f1fa16be8bc3b15334"
}
