)]}'
{
  "log": [
    {
      "commit": "11718bc17bcfc56dfb9f4362eebf640b025c4415",
      "tree": "438e0ddfe1040cbbd9fc6e20ce49b49008b59614",
      "parents": [
        "0e35962e6d5a1ca534040f3da3fd04ad505499f9"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Sep 22 11:50:13 2015 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Sep 22 11:58:32 2015 -0700"
      },
      "message": "Remove shader based gamma approach\n\nAlso fixes some INIT_LOGD logs\n\nChange-Id: I212a71a1e7b366aea41f7c3c8cc169d509d6e4a2\n"
    },
    {
      "commit": "71c10ee8be20be968b19a88f771077933f7cc155",
      "tree": "8ac555739ab17383aa881e313c561f778ff357b8",
      "parents": [
        "d7ba5795bed76d2b56be2ac2f1d548b90df162d7",
        "b9ce116dac378b4cf4490f265dcbd5704a1dd43c"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Aug 21 23:08:39 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 21 23:08:39 2015 +0000"
      },
      "message": "Merge \"Switch several enums to enum classes\""
    },
    {
      "commit": "b9ce116dac378b4cf4490f265dcbd5704a1dd43c",
      "tree": "359fda22ac4f3c659c1afe2542a8266b9278318b",
      "parents": [
        "e4a6f925621e9360238869ae28f7df1b4c2d97de"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Aug 20 15:14:06 2015 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Aug 21 23:05:44 2015 +0000"
      },
      "message": "Switch several enums to enum classes\n\nChange-Id: I00ecd0b61657196b51704f70ca31a9d1c1ac254e\n"
    },
    {
      "commit": "8bd68c6b7d4d6d3137edf1cbdc0e0de266c5b9ee",
      "tree": "4ad0b3e87d83209b8c3968c07db2267a88e684a0",
      "parents": [
        "e264f9a51ef2158df345c3c4b19dd6098e959141"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Aug 19 15:29:05 2015 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Aug 19 15:29:45 2015 -0700"
      },
      "message": "Define GLSL version\n\nbug:21923805\n\nChange-Id: Ie44fb9cf38ef5f19df957e4a639d9c7d47da391e\n"
    },
    {
      "commit": "5a4690bf26932c0d6940e4af8516d920e09ae81a",
      "tree": "ab5782e75455e9752708d9400ffa15e022609f51",
      "parents": [
        "3aed7affdfb499018656edb78563368b9cbfce3c"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 14 12:13:03 2015 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 14 13:25:38 2015 -0700"
      },
      "message": "Clean up unncessary defines\n\nLOG_TAG and TRACE_TAG are already defined in the makefile\n\nChange-Id: I9e53e3dacbe018441edd74cb7c8c90846defee74\n"
    },
    {
      "commit": "ecf091e171012831cddea59f1f64a46e87ee8c4f",
      "tree": "80faa269881a6cc562b999dc4d7fedbbf2d0b4a9",
      "parents": [
        "b929d65800fcc91c04d385fe9ec23a924868883b"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Tue Feb 17 13:26:10 2015 -0800"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Thu Apr 09 09:57:27 2015 -0700"
      },
      "message": "Update the shadow fall off function from cosine to gaussian.\n\nAlso tune the parameters to match a better look designed by UX team.\nFor ambient part, the acos transformed alpha is not needed any more.\n\nb/19370798\n\nChange-Id: I20d2615d1be502eb900942ed756aecd1660dee48\n"
    },
    {
      "commit": "c0bf700441e1b53f1693d7445dc6f9876f5c9b4f",
      "tree": "3c5e3c8d822bec972071064d7804e467f324983f",
      "parents": [
        "1592f98973ffffe828d34d90ddb944947d510eba"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Fri Mar 06 13:48:27 2015 -0500"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Fri Mar 06 13:51:04 2015 -0500"
      },
      "message": "SkPorterDuff Multiply mode maps to SkXfermode modulate.\n\nbug:19627342\nChange-Id: I97f26ca1bc8abe2768f4a12cc70fb0fa5d905098\n"
    },
    {
      "commit": "1c1c3fe9ebde8f911da65d49bdb91af583453dc6",
      "tree": "0274326822924171fb9ba26f4515e61bfc733c58",
      "parents": [
        "be331a3809b9cf921c6ad65e1d671b24e97dded9"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 06 09:40:35 2015 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 06 10:05:15 2015 -0800"
      },
      "message": "Avoid invalid shader creation for certain blend modes\n\nbug:19627342\n\nChange-Id: I41e3c1ce8e6fa52f046ec492d19de7cab92b9ec5\n"
    },
    {
      "commit": "117bdbcfa3e8306dad21e7e01fa71b00cdfa7265",
      "tree": "aa54e4a5538818cd946bbd6e7eb771b83d0cfebd",
      "parents": [
        "34725687748cc2b4ace2bdb49becfdcd569e9a5d"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Feb 05 10:12:38 2015 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 06 13:42:25 2015 -0800"
      },
      "message": "Glop ColorFilter \u0026 VertexBuffer support, initial enable\n\nEnables Glop rendering for supported Rects and VertexBuffers\nAlso removes unused Query object\n\nChange-Id: Ibe227bc362685a153159f75077664f0947764e06\n"
    },
    {
      "commit": "d41c4d8c732095ae99c955b6b82f7306633004b1",
      "tree": "dbb2e26c6c5a80c7ccf43e5cd5fb1554cc603555",
      "parents": [
        "8dfaa4904205772cdceee63ef3989bcdedf1a914"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jan 05 15:51:13 2015 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jan 05 16:49:13 2015 -0800"
      },
      "message": "Add overrides and switch to nullptr keyword for all files\n\nAdds remaining missing overrides and nullptr usages, missed due to\nan extreme failure in tool usage.\n\nChange-Id: I56abd72975a3999ad13330003c348db40f59aebf\n"
    },
    {
      "commit": "51d6a3db97bdd5315f1a17a4b447d10a92217b98",
      "tree": "80803f8d2a5507e2d29bd58c7243a23fca343454",
      "parents": [
        "e84a208317e0ed388fcdad1e6743c7849acb51b0"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Dec 22 17:16:56 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Dec 23 16:53:56 2014 -0800"
      },
      "message": "Cleanup various clang warnings, use unique_ptrs in several places\n\nChange-Id: I347904b25e51fcc7de14b1e72f1acd0f6ba26f3f\n"
    },
    {
      "commit": "64bb413a664001c95c8439cf097dc3033f4ed733",
      "tree": "d4562f7bb5656865d32e5d684b5a41542ecfaf58",
      "parents": [
        "8a902d9f24e83c87b054adb5836b4a5b8a257be9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Nov 22 00:35:09 2014 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Nov 22 00:35:09 2014 +0000"
      },
      "message": "Revert \"resolved conflicts for merge of 220c3f4f to master\"\n\nReverted as hwui doesn\u0027t agree.\n\nThis reverts commit 8a902d9f24e83c87b054adb5836b4a5b8a257be9.\n\nChange-Id: I109e7b02bee2921e2155ded6df36f52e6f574b5a\n"
    },
    {
      "commit": "2ab8298dc37851aab4623ba3f98d71055d653a73",
      "tree": "e31d76f1c16ec8e980983392b09287515bcec2f1",
      "parents": [
        "4c9041cf837cda13c749b148661d18c3fab0fbd6",
        "99377df12ee696e01cd9071132f122801a9862ce"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 21 14:19:06 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 21 14:19:06 2014 -0800"
      },
      "message": "resolved conflicts for merge of 99377df1 to lmp-mr1-dev-plus-aosp\n\nChange-Id: I3a98f55832ac447b1ed0dd129c7a93d088025943\n"
    },
    {
      "commit": "42ddc18d108f789705ad4eb697ce9599ad322507",
      "tree": "53ed2c03a53112f6bfd515a6d03b02dfed0cc9e9",
      "parents": [
        "f926d71b8ef2790da067550144860705c1a61fe5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 21 09:49:08 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 21 10:39:21 2014 -0800"
      },
      "message": "Frameworks/base: Unused parameters in hwui\n\nRemove Clang cutout for unused parameters. Fix warnings.\n\nRemove Clang cutout for deprecated Skia function usage. Has been\nfixed in the L push.\n\nChange-Id: I7ea073ff67127cc1e14e798b655e2c50615fe8e7\n"
    },
    {
      "commit": "23d307c8d88f4a3849163b9e5b7cd11d0d4f372c",
      "tree": "6142a542f5f25f2719b8950f6d06765605fb8bf1",
      "parents": [
        "670a82cbb1b62e69fa7ef7387eed545a76c96f76"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Oct 27 12:38:48 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Oct 27 12:43:25 2014 -0700"
      },
      "message": "Cleanup debug options\n\nBug: 18138852\nBug: 18065434\nChange-Id: Ibb07b73b147c2a8b287fe8aee3f6624582f21b00\n"
    },
    {
      "commit": "73821c8d2bd453de6bf3f516e1f1cdb9a132f4a7",
      "tree": "f77d9133dcf359aa2a1933d3894f8bce6a593c60",
      "parents": [
        "c1e1550bf489b5fafff70154232c24bc5026b7df"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Sep 16 17:32:13 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Sep 17 10:00:34 2014 -0700"
      },
      "message": "Handle premultiplication correctly for ColorMatrixColorFilters\n\nbug:17405627\n\nPreviously, the input content to the color matrix computation was left\npremultiplied. Since the color matrix could reduce the alpha channel,\nthe alpha was re-multiplied, but this was incomplete, and incorrect.\n\nInstead, apply the color matrix in unpremultiplied space.\n\nChange-Id: I87b8e03d2e228e6ded81f7bbfea952605d7a095c\n"
    },
    {
      "commit": "e23b8dd58fba275802d48fccb43170845aac0382",
      "tree": "9a72ffb27ce22a44ef60b8583815f3c31bf732c5",
      "parents": [
        "3884715c450e4ff519da73389abe36415028a0dc",
        "79c9f9168919b0fbb26f8ecd5704875dbc6a539b"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Thu Sep 04 15:01:26 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 04 15:01:28 2014 +0000"
      },
      "message": "Merge \"Remove invalid premul step from HWUI\u0027s matrix color filter.\" into lmp-dev"
    },
    {
      "commit": "68a73e8700c3bb30395e4ebf1b6e5a9b81699a5a",
      "tree": "6700e45e62fe2b08481b18b82047a47a53957439",
      "parents": [
        "01abcaa295fc4eec7442a575d160b0ce2c250127"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Aug 29 17:06:27 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Aug 29 17:06:27 2014 -0700"
      },
      "message": "Fix precision issues for roundrect clipping\n\nbug:16984008\nChange-Id: I941232d569293717f6bcd249d9e01f72a7409d2e\n"
    },
    {
      "commit": "79c9f9168919b0fbb26f8ecd5704875dbc6a539b",
      "tree": "4cdc23263a2b5c73ef3087343ab29c4c5806f602",
      "parents": [
        "95d9ad0f79c900db9bca1745100f14d0ec9cc133"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Mon Aug 18 15:54:13 2014 -0400"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Mon Aug 18 15:54:13 2014 -0400"
      },
      "message": "Remove invalid premul step from HWUI\u0027s matrix color filter.\n\nbug: 16186699\nChange-Id: Ia0b828e76ce4831ee9e3b4f54c697e6017f1604d\n"
    },
    {
      "commit": "91a8c7c62913c2597e3bf5a6d59d2ed5fc7ba4e0",
      "tree": "22f6e0e41bccc3df2b4b053a5decddabe5382c95",
      "parents": [
        "ddc122ee5015f9ca0cc124a53c175aadf85f50ad"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Aug 12 14:31:35 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Aug 12 16:00:09 2014 -0700"
      },
      "message": "Switch to cos interpolation of shadow alpha\n\nbug:16852257\n\nUpdates default shadow opacities to compensate.\n\nAlso, update variable/constant naming related to vertex alpha.\n\nChange-Id: I9055b4ac3c9ac305ca9d515f21b52d6aa6dc9c5c\n"
    },
    {
      "commit": "bf75945e7a1ae7c1000682716643c942c1e19ba6",
      "tree": "5be8c8acfb85bb0a6077691e2c0255232cace2ae",
      "parents": [
        "c28aceb11e736382bc7ee749483ea5f23299ad78"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Aug 11 16:00:44 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Aug 12 12:44:59 2014 -0700"
      },
      "message": "Rework shadow interpolation\n\nbug:16852257\n\nUse pow(alpha, 1.5) to avoid harsh edges on shadow alpha ramps.\n\nAlso adjusts shadow constants to compensate.\n\nChange-Id: I5869956d7d292db2a8e496bc320084b6d64c3fb7\n"
    },
    {
      "commit": "f99f320dc79e290a89d668243b6d77c3442b36ab",
      "tree": "2f9899eb8e6f7f966c58fac1cb95fb2680944c47",
      "parents": [
        "3962aa5d401a433badb757b3c3a3bb4e2b6acb3b"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Aug 05 15:31:52 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Aug 05 22:39:31 2014 +0000"
      },
      "message": "Fix large radius RR clipping issue on certain devices\n\nbug:16804363\n\nSince dist can be in the 1000s of pixels, and length() may square it\nin its current precision, scale the value down significantly first,\nsince final precision isn\u0027t very important.\n\nChange-Id: Id20f7a49d6171355c8e242442c2b5083f746dca3\n"
    },
    {
      "commit": "deeda3d337aed1eee218b89a7aba5992ced371f0",
      "tree": "15e13e84727baebce58b735e34ef5d198fd84389",
      "parents": [
        "fe4c1e225d147fe9cb5d7c121b7d6d11a312844e"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon May 05 19:09:33 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu May 15 16:36:12 2014 -0700"
      },
      "message": "Round rect outline clipping\n\nChange-Id: Iee9cf4f719f6f1917507b69189ad114fa365917b\n"
    },
    {
      "commit": "76d3a1b8d035d27bc80b0f2fc480a903bd001514",
      "tree": "a6346bbf593d565d89990f0bddecd2a5df92de9d",
      "parents": [
        "8852ab4357ffb653bafb36f3b9272866834f7a72"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Tue Dec 10 12:28:58 2013 -0500"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Fri Feb 07 17:06:14 2014 -0500"
      },
      "message": "Removing SkiaColorFilter and inspecting the native object directly.\n\nbug: 10650594\nChange-Id: I4fcf66d008765afa0e35d011f58bc792183cb74f\n"
    },
    {
      "commit": "6d29c8d5218cac0fb35f3b7c253f2bdebd44f15a",
      "tree": "e7b76c068ff3e8485fdc164118914ee3b53a2368",
      "parents": [
        "0ace0aa7d643b5b9952d32827575f041ba563c58"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed May 08 18:35:44 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue May 14 14:12:55 2013 -0700"
      },
      "message": "Add tessellation path for points\n\nbug:4351353\nbug:8185479\n\nPoint tessellation is similar to line special case, except that we\nonly tessellate one point (as a circle or rect) and duplicate it\nacross other instances.\n\nAdditionally:\n\nFixes square caps for AA\u003dfalse lines\n\nCleanup in CanvasCompare, disabling interpolation on zoomed-in\ncomparison view\n\nChange-Id: I0756fcc4b20f77878fed0d8057297c80e82ed9dc\n"
    },
    {
      "commit": "78dd96d5af20f489f0e8b288617d57774ec284f7",
      "tree": "742b702647ae37e196021707fa45cbb8568353e1",
      "parents": [
        "927bc7d72048ac90e3b95845699efb479b5589b4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri May 03 14:24:16 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri May 03 17:08:20 2013 -0700"
      },
      "message": "Add an on-screen overdraw counter\n\nThe counter can be enabled by setting the system property called\ndebug.hwui.overdraw to the string \"count\". If the string is set\nto \"show\", overdraw will be highlighted on screen instead of\nprinting out a simple counter.\n\nChange-Id: I9a9c970d54bffab43138bbb7682f6c04bc2c40bd\n"
    },
    {
      "commit": "032d47af737d803e841ab79f38ac9068a46c9aeb",
      "tree": "c3428ff4c80f1274cd4a1ada4567ab1ed940c1b5",
      "parents": [
        "50b9eb1c7375a87525d44a036337a8ba18eba55b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Apr 08 19:45:40 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Apr 09 10:12:47 2013 -0700"
      },
      "message": "Change the dither texture\u0027s swizzling\n\nThis is a more elegant way to sample from a float alpha texture.\nInstead of sampling from the red channel in the fragment shader\nwe can set the alpha channel swizzle to redirect it to the\nred channel. This lets us sample from the alpha channel in the\nfragment shader and get the correct value.\n\nChange-Id: I95bbf7a82964e1bf42c0fee1b782b6bdbbcef618\n"
    },
    {
      "commit": "b48800428906ae455c2b63acacd44e390e1fee49",
      "tree": "bc0de8c6f51eb5c9cac2d5fe1d5a41fede6d727a",
      "parents": [
        "80fdc9624e6d53a78031bf99d34e7c01d53ad66e"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Apr 05 11:17:55 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Apr 05 14:17:17 2013 -0700"
      },
      "message": "Use float textures to render gradients when possible\n\nFloat textures offer better precision for dithering.\n\nIn addition this change removes two uniforms from gradient shaders.\nThese uniforms were used to dither gradients but their value is\na build time constant. Instead we hardcode the value directly in\nthe shader source at compile time.\n\nChange-Id: I05e9fd3eef93771843bbd91b453274452dfaefee\n"
    },
    {
      "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": "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": "ff316ec7a76e52572a2e89b691e6b3bba0cafba3",
      "tree": "8418a45b809c9382a0fc3d9d9bb6db6a537dd4cc",
      "parents": [
        "2b44eb75c42e4caa94f0b002f0ea9e134fe7b543"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 13 18:39:43 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 13 18:39:43 2013 -0800"
      },
      "message": "Implement support for drawBitmapMesh\u0027s colors array\n\nChange-Id: I3d901f6267c2918771ac30ff55c8d80c3ab5b725\n"
    },
    {
      "commit": "65cd612face362d054a85d0f7e5881c59cd523be",
      "tree": "8d71fb22d3a6dd515456a44b0d1010c906abb774",
      "parents": [
        "c93c6aa5553203f05df871804517885fcc071cfd"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Dec 10 17:56:27 2012 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 06 15:35:12 2013 -0800"
      },
      "message": "Add cap tessellation support\n\nbug:7117155\nbug:8114304\n\nCurrently used for lines (with and without AA) and arcs with useCenter\u003dfalse\n\nAlso removes 0.375, 0.375 offset for AA lines\n\nChange-Id: Ic8ace418739344db1e2814edf65253fe7448b0b0\n"
    },
    {
      "commit": "39284b763a09688468ed3799ebd2ebb76ea5dfd5",
      "tree": "b67c139bf0552ff066a4eafb9e29deae62924075",
      "parents": [
        "bd43152bda835c5a9a619a5869344a6a3af11917"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 26 16:39:40 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 26 16:39:40 2012 -0700"
      },
      "message": "Make gradients beautiful again\nBug #7239634\n\nThis change passes two matrices to the vertex shader instead of one.\nWe used to compute the final MVP matrix on the CPU to minimize the\nnumber of operations in the vertex shaders. Shader compilers are\nhowever smart enough to perform this optimization for us. Since we\nneed the MV matrix to properly compute gradients dithering, this\nchange splits the MVP matrix into two. This has the advantage of\nremoving one matrix multiplication per drawing operation on the\nCPU.\nThe SGX 540 shader compiler produces the same number of instructions\nin both cases. There is no penalty hit with having two matrices\ninstead of one. We also send so few vertices per frame that it\ndoes not matter very much.\n\nChange-Id: I17d47ac4772615418e0e1885b97493d31435a936\n"
    },
    {
      "commit": "e83221c547cf2038752e5378e72e49a62cfd9954",
      "tree": "04530c1c08620b4c2c5b8209dc6bf7ba713d3f50",
      "parents": [
        "f8538594fe6ba6db3310da042597840601d78cda"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Sep 24 16:01:35 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Sep 25 09:33:22 2012 -0700"
      },
      "message": "Fix alpha channel computation with ColorMatrixColorFilter\nBug #7222476\n\nThere were two issues:\n- Blending was ignored with color filters\n- The addition vector of a color filter was treated as integer values\n  instead of float values\n\nChange-Id: Id94065704a30ee8aaaa5724a9f3a3cff7c50ced7\n"
    },
    {
      "commit": "dbb261455b1b8d2fdf4f0f8ad84ddb09dda1ed9b",
      "tree": "f74e8e767b300120664a2421de1ff581fe61fe55",
      "parents": [
        "172cb769641c828d7ad20669a5f7c9533248382f",
        "a1d12dd619c86c9ac121a3095ff5e5633c11e876"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Sep 21 17:12:00 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 21 17:12:48 2012 -0700"
      },
      "message": "Merge \"Optimize shaders for dithered gradients\" into jb-mr1-dev"
    },
    {
      "commit": "a1d12dd619c86c9ac121a3095ff5e5633c11e876",
      "tree": "3e53e0a133aeaf86ec84b13a952c6aa6be3dbee7",
      "parents": [
        "537d47f510ce49acee09516ed5dde680d910ff94"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Sep 21 14:50:14 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Sep 21 16:20:57 2012 -0700"
      },
      "message": "Optimize shaders for dithered gradients\n\nIt\u0027s faster to compute a dither calculation in the vertex shader and use\na varying (letting the GPU interpolate the fragment values) than to perform\nthat calculation in the fragment shader as part of a texture lookup.\n\nIssue #7207600 Prime mr1 shader performance issues\nIssue #7158326 Bad framerates on MR1 (Mako, Manta, Prime)\n\nChange-Id: I15789582a6e9e2d8b9dd22aa5b0f72f0ba1cce7f\n"
    },
    {
      "commit": "710f46d9d6a5bf9ea1c1833384caf61e1934124f",
      "tree": "5dbc56cf9b6bb957f9cbdaaff7283d44897b265d",
      "parents": [
        "5ca88a103c2841b64bfa01b4848aec4b8aa64687"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Sep 17 17:25:49 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Sep 20 13:08:20 2012 -0700"
      },
      "message": "Polygonal rendering of simple fill shapes\n\nbug:4419017\n\nChange-Id: If0428e1732139786cba15f54b285d880e4a56b89\n"
    },
    {
      "commit": "0990ffbc4d407e174423a4a04b5902ed83f71db5",
      "tree": "1296fbc452975cfb910733c9fe7f865fd474dd7b",
      "parents": [
        "218e2f199b9ba568a815d64269ea0784e2d32935"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Sep 17 17:43:45 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue Sep 18 14:10:10 2012 -0700"
      },
      "message": "Fix GL shader bugs\n\nFixing errors in emitted shader code that caused GL errors\nat runtime\n\nChange-Id: I267a84398a81329a6688b292505f8779bd750ad1\n"
    },
    {
      "commit": "1c5c206953d673f8424908c77c974c06d5b99a9c",
      "tree": "f1c5cb72f293dd78635454a1eada7a54f8224d48",
      "parents": [
        "9f5f80e7a64d9388e3e73763b5c73dcddaa729fc"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Sep 17 17:09:21 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Sep 17 17:09:21 2012 -0700"
      },
      "message": "Fix bad shader code\n\nShader code missing \"\u003d\" in a couple of cases.\n\nChange-Id: Iff8a99a0ccb2903c30e2bdb2f698ef9b2e03d5d1\n"
    },
    {
      "commit": "a938f569ce206c1ed68d736181016b5b708c0084",
      "tree": "5a607bc80af329334757c13e978f7c9b978122a8",
      "parents": [
        "494ac35c27a0960f57b00bf8457f1956ecf149a2"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 13 20:31:08 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 14 10:50:51 2012 -0700"
      },
      "message": "Fix modulation and gamma correction issues\n\nModulation is normally enabled in a shader when drawing with an alpha\nmask (A8 texture.) Modulation is used to do one of two things:\n\n- Colorize the primitive (to draw text in red for instance)\n- Apply extra translucency (50% translucent circle filled with a bitmap)\n\nThe current implementation has four issues:\n\n1. Unnecessary work is performed by assigning the modulation color\n   to vec4 fragColor early in the shader\n2. The modulation color\u0027s alpha is applied twice when the primitive\n   is drawn with an SkShader\n3. The decision to modulate is wrong and triggers when any of the\n   RGB channels is \u003c 1.0. Only the alpha channel needs to be taken\n   into account to make the decision\n4. Gamma correction is not applied properly\n\nThis change addresses all four issues above.\n\nChange-Id: I73fcc74efc4b094bf2d1b835f10ffaa2ea4b9eb9\n"
    },
    {
      "commit": "9f44a13a125980fee92cdc76376063129f0eebc9",
      "tree": "f1eaeeda57bea37623366e1c16ffd61a632126fc",
      "parents": [
        "4899d6f7cc45268a4f8d734639fb3f03d39d9d4a"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Sep 13 18:34:55 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Sep 13 18:34:55 2012 -0700"
      },
      "message": "Multiply alpha for AA as late as possible\n\nShould be done after all color computation\n\nChange-Id: Iaadd565f7d2263f111f6841a00e7c341025833d3\n"
    },
    {
      "commit": "6ebdc114e0d72137394f02bc8ffe9d7a782a65c4",
      "tree": "4900dd3246e54b2dcaa869b519e181542467ae82",
      "parents": [
        "176d105d2f71198966b566d36d4e856a797695c7"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Aug 31 18:24:33 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Sep 05 16:45:03 2012 -0700"
      },
      "message": "Varying-based AA rect drawing\n\nInstead of calculating opacity from relative position in the shader, use a\nshader varying to do this computation for us.\n\nbug:5045101\n\nAlso adds a test to HwAccelerationTest to show incorrect antialiasing in\nscaled drawAARect / boundarySize calculation.\n\nChange-Id: Icdc41acb01dc10ce354834f8389a5aed2f439162\n"
    },
    {
      "commit": "a798b95a9ef328720febec72d01462cd97e3d4c7",
      "tree": "39c500bbbac11cb34f8c81a934b6573baef8a5fd",
      "parents": [
        "65e08d25faced6059b873c9b175b683ee305dc8b"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Aug 27 17:03:13 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Aug 29 11:14:52 2012 -0700"
      },
      "message": "Use smoothstep to eliminate branches in AA shader\n\nChange-Id: If4ecb1a9446f29b2f8444f5cee551f863c1993e8\n"
    },
    {
      "commit": "320d46bf844b84351cb80c5d4a4768d86447ac81",
      "tree": "fee65370216aee9df6116a46ebae0edfd8de1272",
      "parents": [
        "c89b14bba0f6cc2c91629080617f7ed215f697f3"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 08 16:05:42 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 08 16:05:42 2012 -0700"
      },
      "message": "Reduce gradients textures size whenever possible\n\nChange-Id: Ifd58625ee62edac3b5d20b77553cb98b6fa2b46e\n"
    },
    {
      "commit": "211efea7376371ee755edd2ad03e83ef6eea464e",
      "tree": "b79530b9f807f24571ce0e9ca143747e8c418725",
      "parents": [
        "42e1e0d482d774cf18a55773e434f02edb9e4462"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 31 21:16:07 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 01 19:18:35 2012 -0700"
      },
      "message": "Add dithering to gradients\n\nChange-Id: Ic1208855bde3a254eca2fd7cef43e0f1318ce419\n"
    },
    {
      "commit": "42e1e0d482d774cf18a55773e434f02edb9e4462",
      "tree": "33ac1bca20382f2e8ccbf176c89b3476f2ae5c9b",
      "parents": [
        "8ab8fbbf46d8779f53301e7f706f97608eed7117"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 30 14:47:51 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 31 18:55:16 2012 -0700"
      },
      "message": "Improve gradients\n\nAvoid using textures for common gradients (two stops from 0.0 to 1.0)\n\nChange-Id: Iff55d21b126c8cfc4cfb701669f2339c8f6b131a\n"
    },
    {
      "commit": "63553478130f78d44c8fbeaebc610e19925544a5",
      "tree": "b73f59284d74901222a6b11095f9bd0dd0c2d370",
      "parents": [
        "8e025de5fb3ab1c099541e3a387123170bf9d1a9"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 18 20:04:14 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 18 20:04:14 2012 -0700"
      },
      "message": "Remove vendor specific precision qualifier\n\nChange-Id: I0a56ca7a5a399ec94993d3cea0c4aff6c0f86e39\n"
    },
    {
      "commit": "8e025de5fb3ab1c099541e3a387123170bf9d1a9",
      "tree": "f3d2ec5c2856535302a886108c878b207ace8bfd",
      "parents": [
        "04299385c681140239b0dc31d9780d087d2b4d7c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 18 17:44:07 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 18 19:12:11 2012 -0700"
      },
      "message": "Note to self\n\nChange-Id: Ic5699bdbf880ad68748c827bb5b4976b12d4d413\n"
    },
    {
      "commit": "4121063313ac0d6f69f6253cac821d0c1c122086",
      "tree": "b076706786610f6c87c275355b8853289cbfd0f7",
      "parents": [
        "157bd5749f40b0330fccf3ef159d922742103ef2"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 16 17:04:24 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 16 17:04:24 2012 -0700"
      },
      "message": "Add shader-based text gamma correction\n\nTo enable it, the system property ro.hwui.text_gamma_shader must be\nset to true. For testing, DEBUG_FONT_RENDERER_FORCE_SHADER_GAMMA\ncan be set to 1 in libhwui/Debug.h.\n\nChange-Id: If345c6b71b67ecf1ef2e8847b71f30f3ef251a27\n"
    },
    {
      "commit": "f3a910b423db7ad79cf61518bdd9278c048ad0d8",
      "tree": "a0ae14d597ee14202ec6ca60cedfb446ff470379",
      "parents": [
        "d71dd367af604571c7d00ca473184a1b9240eca2"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Dec 12 20:35:21 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Dec 12 20:35:21 2011 -0800"
      },
      "message": "Optimize state changes\n\nChange-Id: Iae59bc8dfd6427d0967472462cc1994987092827\n"
    },
    {
      "commit": "a60c3889718f4513a6c9d8b80f655db5d6346905",
      "tree": "e0a43ec5fbc9031aa839ccb5be2064cfd85181fc",
      "parents": [
        "e5ea4403ce58982522554b7ff23f41e6551923c1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 01 15:28:16 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 01 15:28:16 2011 -0700"
      },
      "message": "Use high precision iterators on specific GPUs\nBug #5098359\n\nChange-Id: I52ee8c7b4c9e8d4c7bedb684eaf7bef6c44c74b9\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": "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": "740bf2bb2e900d3db2292b5909b4b4c6e90320e6",
      "tree": "9c6759f83ab467d849ef8072e262fe7ac55b8c71",
      "parents": [
        "3a03eeedafb3e3335b56bdb9c0a2f02104d32299"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Apr 26 15:33:10 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Apr 26 15:33:10 2011 -0700"
      },
      "message": "Apply shaders/filters to text drop shadows.\nBug #4318323\n\nThis change also fixes the fact that shaders were not modulated\nby the paint\u0027s color when drawing paths.\n\nChange-Id: Id88804143aea06c895d4cbcdbe106d660230aa5a\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": "80bbfb19eefe3cb9be8833b136381cece069e24d",
      "tree": "106b3498d16a34b9255b700ce9b57b6e820d1f42",
      "parents": [
        "56215274f25d0040af00bf69b0df990894c0b4b0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 23 16:56:28 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 23 16:56:28 2011 -0700"
      },
      "message": "Fix shaders generation on IMG GPUs.\n\nChange-Id: Id15df2663e41e31f04c8d86b958312341da8101d\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": "67f27952c1bcb2230beef9b5ca0bf42edad436a9",
      "tree": "9cfec6c807b64d51fba041e2f6dd50c6abe3577e",
      "parents": [
        "dbf78bdb7a9aed3b8393c247128a7e8c760343b5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Dec 07 20:09:23 2010 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Dec 07 20:12:50 2010 -0800"
      },
      "message": "Correctly release the OpenGL Canvas on EGL error.\n\nChange-Id: Ib31fd8445f7ce5f7aa7e0205de0e7db80d024fc2\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": "4afdf666fdb034834c48445570ed9d6f4133fc71",
      "tree": "a957f9f7fc930ac5e7eed44b8849ecee9794c6ab",
      "parents": [
        "1b422d8cd8ed83b79e977a3afb99969cea4a6700"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Wed Oct 13 21:31:28 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Wed Oct 13 21:31:28 2010 -0700"
      },
      "message": "Color filters were ignored by the program cache fast path.\n\nChange-Id: I08f2f02d356234a674be778d088e0558fd49c849\n"
    },
    {
      "commit": "9db91243c5ace4421091557b76a0b1cbd2312fec",
      "tree": "7fc21b5c4942c98e092fe376525fd3194700be84",
      "parents": [
        "a3496a9e6011e73deadd33bd0edd9229512e23d3"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 12 13:13:09 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 12 13:13:09 2010 -0700"
      },
      "message": "Simplify black texture fragment shader.\n\nChange-Id: If2d43f92f4c98ec128692761a670b0f31207a3c0\n"
    },
    {
      "commit": "707b2f78ccaa09965d7e030fda3a883ce9b75ea8",
      "tree": "0503326cbed34fe219dc32508456b5ce9bd03340",
      "parents": [
        "7537f856f9076a84db04d8de447f6527b67166fd"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 11 16:34:59 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 11 16:34:59 2010 -0700"
      },
      "message": "Optimize GLSL shaders.\n\nChange-Id: I9a5e01bced63d8da0c61330a543a2b805388a59d\n"
    },
    {
      "commit": "7537f856f9076a84db04d8de447f6527b67166fd",
      "tree": "87788a3ee601b5db44945f8916c395cbb93980d2",
      "parents": [
        "101e2ae00c478e13f34c81db05a9a921ad637571"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 11 14:38:28 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 11 14:38:28 2010 -0700"
      },
      "message": "Improve performance of linear gradients.\n\nChange-Id: If1caee31fc045dea13a4c5c10f25f2ffd325c4f8\n"
    },
    {
      "commit": "14830948d02f768c41b97b7a8d15e1b3cab78267",
      "tree": "349cf9a5e1120ca3bc92807efb3db10ff11a8468",
      "parents": [
        "6b7bd24659fb175fe1f0e97c86c18969918b496a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Oct 07 15:07:45 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Oct 07 15:07:45 2010 -0700"
      },
      "message": "Add 3D transforms support to all gradients.\n\nChange-Id: I61409edd00dab3a11684a3f5e4f7df0afc734758\n"
    },
    {
      "commit": "e3095e0c1e2a4a4f34f741aa386eae56536ca5aa",
      "tree": "6d2d7c5929bf73af2b0eeb07e757944db921c2de",
      "parents": [
        "572eab6f17a78a9483bbf4b3646aa5a6038ea210"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 06 16:57:29 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 06 16:57:29 2010 -0700"
      },
      "message": "Apply 3D transformations to gradient shaders.\n\nThis fixes only linear gradients. Sweep and radial gradients, as well as\nbitmap shaders, will be fixed in a future commit.\n\nChange-Id: I4eee4ff62e9bbf3b9339fc111a780167449ecfef\n"
    },
    {
      "commit": "ddb80bebb0776e6d852aab6e8bba5d5591847a55",
      "tree": "460e39e115bf75648a3b4dbc9788c911751bd848",
      "parents": [
        "ee916f14cbd1fe1422c063ce2ef7b185e2bc5c6f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Sep 20 19:04:33 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Sep 21 16:48:50 2010 -0700"
      },
      "message": "Add support for circular gradients to the GL renderer.\n\nThis change also adds full support for local transformation matrices on\nsweep and radial gradients.\n\nChange-Id: Id8773bc0766575190e3f3d51984fc5e57b266c3f\n"
    },
    {
      "commit": "ee916f14cbd1fe1422c063ce2ef7b185e2bc5c6f",
      "tree": "4fd53bcd273d42fa1aebb064b18563aa293467b1",
      "parents": [
        "b5ab4173e0927e4668a45298c9900cd8007584e1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Sep 20 17:53:08 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Sep 20 17:54:17 2010 -0700"
      },
      "message": "Add support for SweepGradient in the GL renderer.\n\nChange-Id: I7aa397ed4e34655ead9ba1f5b4ce087665e0f022\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": "48daa54d31fc59ec969dcff65eb3cbb0ce879a8d",
      "tree": "f4ad358f86c6c66b457129ca2aa863be01a47a20",
      "parents": [
        "a674ab74e359ac73b4c4dd6b1a3a771836ac7e40"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 10 19:21:34 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 10 21:42:40 2010 -0700"
      },
      "message": "Add extra blending modes.\n\nThis change adds the following blending modes for shaders and color filters:\nAdd\nMultiply\nScreen\nOverlay\nDarken\nLighten\n\nChange-Id: Iff22f5ce6041b43c71b1857d73013f5010ab3413\n"
    },
    {
      "commit": "61c8c9c5b2006d18e9310b6521c65b36ffe75ce4",
      "tree": "f2a792387a3177a2e7a25290ec48bd79c62ef3e6",
      "parents": [
        "8cc82c6f4802937309dce6cba310e31358cdf6bf"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 09 20:48:09 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 10 12:22:01 2010 -0700"
      },
      "message": "Fix tons of bugs and add new text rendering support.\n\nChange-Id: I326c66b10784006f6df2f12d38e120cef94cd0d7\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": "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"
    }
  ]
}
