)]}'
{
  "log": [
    {
      "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"
    }
  ]
}
