)]}'
{
  "log": [
    {
      "commit": "d5e8ade498b41b42874273cbfa375aed7b4d6a08",
      "tree": "bb2a44cdafde4f5a350e1531f276765f5b8bd18d",
      "parents": [
        "c50a03d78aaedd0003377e98710e7038bda330e9"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Wed Aug 13 15:48:02 2014 -0700"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Aug 29 13:40:42 2014 -0700"
      },
      "message": "Ambient shadow tessellation improvement.\n\nUsing the vertices, instead of ray casting for the triangulation.\n\nThis request a dynamic index buffer associated with vertex buffer,\nso we update the VertexBuffer to support it.\n\nThe ambient shadow could be 3x-6x times faster for circle and rect now.\n\nb/16712006\nb/14257173\n\nChange-Id: I2f22a8fe19bc59acee5c18e4a3a395acd5042a66\n"
    },
    {
      "commit": "947eabf42d835d0dfb0daa2fe6d869139c7000d6",
      "tree": "d61f3988b1fa795db04ba15235a0bc0e2cfab6bd",
      "parents": [
        "49e057d7eedb44f5397781254acab4e0ef08a9cf"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Aug 19 10:21:12 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Aug 19 14:14:38 2014 -0700"
      },
      "message": "Early reject drawText calls that will not draw\n\nbug:17114102\n\nPrevents high contrast text from drawing invisible text.\n\nAlso fixes stroked text bounds calculation.\n\nChange-Id: Iaeff51ead8b7b8ef2a1a0ca8b89598564e0d443f\n"
    },
    {
      "commit": "69e5adffb19135d51bde8e458f4907d7265f3e23",
      "tree": "022fc23512ae5adfbe3f86351305bc9f4538a68a",
      "parents": [
        "e222e359a0aab985488a711f6edb76820fe8c6df"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Aug 14 13:34:01 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Aug 15 00:59:44 2014 +0000"
      },
      "message": "Define shadow casting behavior within layers\n\nbug:15860114\n\nSavelayers and HW layers both now support shadow casting.\n\nFor save layers, the light source should always be correct, for HW\nlayers, the light source position is set when the layer is created,\nand updated when it is resized.\n\nChange-Id: Ie85567dd43c2bb0a0b08fd0bd4db41efa793ac2b\n"
    },
    {
      "commit": "14a4e35208b7e97bbfa38f36130827c86bfafc2b",
      "tree": "50f36d84815c6f133f29fcd03a9bb86c3489e0f2",
      "parents": [
        "4a8dddbf18fedb33bb2c725db489669a141e1d73"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Wed Aug 13 10:44:39 2014 -0700"
      },
      "committer": {
        "name": "Tenghui Zhu",
        "email": "ztenghui@google.com",
        "time": "Wed Aug 13 18:22:42 2014 +0000"
      },
      "message": "Bring back the shadow strength tweak\n\nbug:16712006\n\nChange-Id: Ifc0ecca139d58140b45d7d227536a53069e1d480\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": "a7c2ea20c43ab797bef5801530687e22e83def8f",
      "tree": "a5456b7d3cf8fb9f49a330bb626d490ba3de3742",
      "parents": [
        "5c8ea2c369deab75719fe7c7301846a8ef955702"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Aug 08 13:21:00 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Aug 08 20:24:34 2014 +0000"
      },
      "message": "Fix damage for layers for projection receivers\n\n Bug: 16880228\n\nChange-Id: I59ab760a21f49cc2cac0d8936b173cff292e6114\n"
    },
    {
      "commit": "74cf7e6a25c6d7b331c231b7bc2512044f9d2950",
      "tree": "18e658508fa40721ce7c9ceb4308d875c8d718f3",
      "parents": [
        "d224a9dfd2d2f1977e7a40ba3bbfb42a4165aedc"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Aug 07 14:34:46 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Aug 07 22:26:55 2014 +0000"
      },
      "message": "Cap scales used for tessellation with minimum and maximum\n\nbug:15615144\nChange-Id: I3e833864af3a7b34e444bd13db34b6c90496a8b6\n"
    },
    {
      "commit": "796475006f5d670e8383a2050f11719522437a43",
      "tree": "b7c017f959a270bf1e106b9e65f1b037fa54f584",
      "parents": [
        "d1a7fca1451bf4ab7f9b704c0bace180095c2237"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Aug 06 13:42:24 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Aug 06 21:11:31 2014 +0000"
      },
      "message": "Move bitmap transforms out of bitmap ops\n\nbug:11359533\n\nThis allows us to deduplicate a lot between the two ops, and fixes the\nshader coordinate space for the left,top argument drawBitmap to match\nsoftware.\n\nChange-Id: I53da05af9ee74c74e9e70b4ab8053190ca220b16\n"
    },
    {
      "commit": "a736cd9d3587a120e5233d627cd8bf06353be107",
      "tree": "ec1647495e7fefbb14180af98fce4671812037de",
      "parents": [
        "f660edb25a99282ce86b91804cd0145c1ef54bab"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Aug 04 13:18:38 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Aug 04 13:18:38 2014 -0700"
      },
      "message": "Remove scaling bucket hack\n\nbug:16626221\n\nFixes glyph cache pressure and double scaling artifacts.\n\nChange-Id: I06cde720db646531b45943283cb4ecb48af8ff5b\n"
    },
    {
      "commit": "af4d04cab6d48ae0d6a5e79bd30f679af87abaad",
      "tree": "b1fe9d83f5ccc32b1e0db8f002d2d3035368dfac",
      "parents": [
        "3d1856f4449f02a9a3bda06738c3eb83df96f88b"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 29 12:50:14 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jul 30 17:15:50 2014 +0000"
      },
      "message": "Use RoundRect clipping for circle reveal animation\n\nbug:16630975\n\nAlso, remove inverse clipping feature from reveal animator.\n\nChange-Id: I770a4eb48cd123b0ca0f39d16a0f3eefd1be3653\n"
    },
    {
      "commit": "62d307c2402777d5e53b4590af5f32f8c55afd81",
      "tree": "fbf89a15003e9e4e3b665bd271c41693dc992dbe",
      "parents": [
        "f4bf67012b2109ead9a4cb9c4407563fc3671255"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 29 10:35:13 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 29 17:42:22 2014 +0000"
      },
      "message": "Fix behavior of stencil clipping within clearLayerRegions\n\nbug:16376960\n\nThe draw within clearLayerRegions should never be affected by the\ncurrent stencil clip, since it\u0027s just ensuring that the content of the\nlayer is cleared, and not doing real content drawing.\n\nAlso, add optional verbose GL event logging\n\nChange-Id: I538b1bc631fc091340b76e12db6af0c219851b57\n"
    },
    {
      "commit": "15a807bb9c98455a175f42389bdc59f46c0bc195",
      "tree": "01e3bee9aa75e53cbc8f77687852679a12d8f557",
      "parents": [
        "04560442b0eab656767c337da73b1c0ecdf66f62",
        "32e4a73238621fbfcb0dbe3c2e708a9d8d9f00ee"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Jul 24 23:35:38 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 24 23:35:38 2014 +0000"
      },
      "message": "am 4afa4696: am c8f0e9b1: Fix ALL compile warnings\n\n* commit \u00274afa469652dd6baa277b57cb584c08cccaf23c50\u0027:\n  Fix ALL compile warnings\n"
    },
    {
      "commit": "19393ccd037af058184097f92fa84263ae242898",
      "tree": "1ca229968d8a349762c85f2233f0560759af44d5",
      "parents": [
        "ac535811378615c7630f30eb92a306fbad4a876f",
        "9ca85bca4d2a8c862e0c9b862f25dab1eca5eec8"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jul 24 23:32:14 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 24 23:32:14 2014 +0000"
      },
      "message": "am 394e8703: am 2d3c6c93: Connect shadow style attributes to renderer\n\n* commit \u0027394e8703222d59f0de4da82afce423ada12c346f\u0027:\n  Connect shadow style attributes to renderer\n"
    },
    {
      "commit": "1aa5d2d7068147ff781cfe911a93f01593a68c79",
      "tree": "63d8676a5a062deb3a95caee0c5a39ce19471df2",
      "parents": [
        "71d34ec5bed6fe723cf5f85c1ffb64e0d9380967"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Jul 24 13:38:28 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Jul 24 14:28:08 2014 -0700"
      },
      "message": "Fix ALL compile warnings\n\n All warnings/errors fixed for GCC \u0026 Clang\n\nChange-Id: I2ece3a136a5ae97a9acc3069537ed986238b5fd3\n"
    },
    {
      "commit": "058fc640017c90120c599d378a4cbc55668b05b7",
      "tree": "37f480e607d1f39de8cec06b205eb0e146cc9551",
      "parents": [
        "753d849b2ad14cdacfe6b194d8aa7fc27874e385"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jul 23 18:19:28 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jul 24 16:41:13 2014 +0000"
      },
      "message": "Connect shadow style attributes to renderer\n\nbug:15859361\n\nMoves lighting info out of StatefulBaseRenderer, since it\u0027s not useful\nat record time, and only used by OGLR.\n\nChange-Id: I7ab065d02d9304afad1dc4c48597a7a621366f8e\n"
    },
    {
      "commit": "2923df53825ded6fae4ce2af8bf65690db244394",
      "tree": "87fd6d5d01351c4698eb76266a5e32c1e7298d06",
      "parents": [
        "c96a1f3a6b99c37e3cf66ba9c8d7bfaccacc05d9",
        "48242d801c8719f458a615b14b31760ae590006e"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@android.com",
        "time": "Tue Jul 22 19:15:43 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 22 19:15:43 2014 +0000"
      },
      "message": "am 48242d80: am 50a2d633: Merge \"[HWUI] Fix invisible views are still shown in popup window\"\n\n* commit \u002748242d801c8719f458a615b14b31760ae590006e\u0027:\n  [HWUI] Fix invisible views are still shown in popup window\n"
    },
    {
      "commit": "50a2d6339c7a6ee121c4aa52afc4cc027913f3fc",
      "tree": "11f1f5773c015ca383d811dfc0f3867afa7bf12f",
      "parents": [
        "fc6346d461c9ed9b499643db830885241cc82838",
        "3a1bffa835f279628e50385af3c85789bc737f64"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@android.com",
        "time": "Tue Jul 22 19:07:19 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 22 16:35:00 2014 +0000"
      },
      "message": "Merge \"[HWUI] Fix invisible views are still shown in popup window\""
    },
    {
      "commit": "f3e85b5bac693780c75935f0d27acf536458702d",
      "tree": "40a5ecda728a38fdf3083c59413b077b07000d65",
      "parents": [
        "c7a845de4a9578e8093b6abcb90c6836d360d5b3",
        "33f5a59ac3e304970920dda824958870f85f76ef"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jul 17 22:38:57 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 17 18:11:21 2014 +0000"
      },
      "message": "Merge \"[HWUI]: fix residual line on FrameBuffer\" into lmp-dev"
    },
    {
      "commit": "33f5a59ac3e304970920dda824958870f85f76ef",
      "tree": "43b786780f5c967498615887d8dac8cbdc18bb38",
      "parents": [
        "889fc94ffa70633e510e812b9da86723f4eee384"
      ],
      "author": {
        "name": "henry.uh_chen",
        "email": "henry.uh_chen@htc.com",
        "time": "Wed Jul 02 19:36:56 2014 +0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jul 17 21:50:01 2014 +0000"
      },
      "message": "[HWUI]: fix residual line on FrameBuffer\n\nSymptom: If app applies animation to enlarge a bitmap, there will be an residual\n         line on the screen\n\nRoot Cause: On platform which has Tile Rendering implementation (ex. Qualcomm\n            CPU), startTiling() call will restrict the framebuffer region which\n            GPU can affect. So the expansion of clear region by 1 will not take\n            effect if startTiling region is not expanded.\n\nSolution: Expand the startTiling region by 1, too.\n\nReproduce steps: Apply animation to enlarge (and then shrink) a bitmap icon.\n\nCherry-pick of 20adb6ce4d52b15472e7e5ee953e06cc349a827c from AOSP\n\nChange-Id: I163b898b87b74d221dc4210b7fa657aa93c82c19"
    },
    {
      "commit": "98d608dba6a0b3c15fb08f1fa2c8b9d170124c7c",
      "tree": "cba2372b4abff4dae433df57662e7a7a27611ff2",
      "parents": [
        "889fc94ffa70633e510e812b9da86723f4eee384"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jul 17 12:25:11 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jul 17 12:25:11 2014 -0700"
      },
      "message": "Minor cleanups around color usage\n\nChange-Id: I56733cbe933a58d5977c032f056abb35265ee252\n"
    },
    {
      "commit": "0d5ac954a111d19270d6e618ee051a8d6419e1a5",
      "tree": "4b0f1d61de560e0fc5cb9361de57566dd6f8b434",
      "parents": [
        "5028fb035794c207698e52b276c54de109dd5022"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 15 13:01:02 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 15 13:01:02 2014 -0700"
      },
      "message": "Fix translated VertexBuffer layer damage calculation\n\nb/15986851\n\nChange-Id: Id6be412e693c5233326164723a0a96e3802d9426\n"
    },
    {
      "commit": "3a1bffa835f279628e50385af3c85789bc737f64",
      "tree": "0a3830e1ca97f74265b0f6365a6066d228d66519",
      "parents": [
        "1dc550fa7333257a130d71866be37181f8ee553b"
      ],
      "author": {
        "name": "henry.uh_chen",
        "email": "henry.uh_chen@htc.com",
        "time": "Thu Jul 03 18:01:37 2014 +0800"
      },
      "committer": {
        "name": "Chen Henry",
        "email": "henry.uh_chen@htc.com",
        "time": "Thu Jul 03 10:14:15 2014 +0000"
      },
      "message": "[HWUI] Fix invisible views are still shown in popup window\n\nSymptom: Invisible views are still shown in popup window\n\nRoot Cause: glClear isn\u0027t called if there is no draw command\n\nSolution: Even if there is no draw command, it still calls glClear\n          by startFrame().\n\nReproduce steps: App set one view in a popup window to invisible,\n                 it will be still visible.\n\nChange-Id: I36bc7b752434ad388fbb80ea63341ac778f48d35"
    },
    {
      "commit": "20adb6ce4d52b15472e7e5ee953e06cc349a827c",
      "tree": "8078a58d1ce1175995c18253a6d7f6c70bcd94b7",
      "parents": [
        "1dc550fa7333257a130d71866be37181f8ee553b"
      ],
      "author": {
        "name": "henry.uh_chen",
        "email": "henry.uh_chen@htc.com",
        "time": "Wed Jul 02 19:36:56 2014 +0800"
      },
      "committer": {
        "name": "Chen Henry",
        "email": "henry.uh_chen@htc.com",
        "time": "Thu Jul 03 09:58:31 2014 +0000"
      },
      "message": "[HWUI]: fix residual line on FrameBuffer\n\nSymptom: If app applies animation to enlarge a bitmap, there will be an residual\n         line on the screen\n\nRoot Cause: On platform which has Tile Rendering implementation (ex. Qualcomm\n            CPU), startTiling() call will restrict the framebuffer region which\n            GPU can affect. So the expansion of clear region by 1 will not take\n            effect if startTiling region is not expanded.\n\nSolution: Expand the startTiling region by 1, too.\n\nReproduce steps: Apply animation to enlarge (and then shrink) a bitmap icon.\n\nChange-Id: I7b4a59e180daa29dbe909d9e11f4093ae1d7396f"
    },
    {
      "commit": "1103b3255945d2eb2fa9c191e84e2270b343cca9",
      "tree": "3dd01f46c6a3479974410024250408950ad9859f",
      "parents": [
        "a3bf3e5c849bfb3bf0a74dcc06ef032355183c2e"
      ],
      "author": {
        "name": "Mike Reed",
        "email": "reed@google.com",
        "time": "Tue Jul 08 12:36:44 2014 -0400"
      },
      "committer": {
        "name": "Mike Reed",
        "email": "reed@google.com",
        "time": "Tue Jul 08 15:05:38 2014 -0400"
      },
      "message": "SkBitmap::Config is deprecated, use SkColorType\n\nChange-Id: Ic953741325607bf85598c097bb3ab648d4a08996\n"
    },
    {
      "commit": "59744b79ec302000802cd56d30a1bf70f0183c80",
      "tree": "0057de9a24def27ca543608cd1d5b75b1b89bd57",
      "parents": [
        "904a1045ced36e844605b9764c3cb184976ea0a9"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 01 17:56:52 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jul 07 19:14:55 2014 +0000"
      },
      "message": "Add hack for custom re-rasterization buckets\n\nbug:14083128\n\nMoves all of the font transform management into\nOpenGLRenderer::findBestFontTransform(), and now simply passes down\nfinal rasterization transforms into the FontRenderer.\n\nChange-Id: Ie02752e6af863347b142367c7d628db5f9fc2998\n"
    },
    {
      "commit": "f23b25abfb76e75f63103abc882bc91b8327a957",
      "tree": "eb541806b7840aec86abe1efc854e8b9ea831c38",
      "parents": [
        "d4e3cdde83deb7ef27ac6836158abc589ba22dba"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jun 26 15:46:20 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jun 27 17:49:52 2014 -0700"
      },
      "message": "Remove isRecording() method from renderers\n\nDisplayListRenderer is all that\u0027s accessed from java, and is entirely\nseparate from OpenGLRenderer now.\n\nChange-Id: Ie733be71520c13fdb55dfe3522bb445ae2b50ac1\n"
    },
    {
      "commit": "3b20251a355c88193c439f928a84ae69483fb488",
      "tree": "33c878ebacf17cf03d089404474fa66ca041ffb9",
      "parents": [
        "97a6c20a6a52c9429ed2c8837086f3003e5da274"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Jun 23 13:13:08 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Jun 23 15:26:49 2014 -0700"
      },
      "message": "No-fail invokeFunctor\n\n Bug: 15513308\n Bug: 15449247\n\nChange-Id: I13a29f9c8d4975cdda6dcb33b6332c2555ff0f7c\n"
    },
    {
      "commit": "a7090e0cfd7c719a6d4c03aae34f5db98754cbdd",
      "tree": "7bfae2588126476042f33b9dd01ca0b9cf368e2e",
      "parents": [
        "104ef50048a1d12f323b3e70ccc28dd509d3ea24"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jun 20 16:01:00 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 23 09:57:07 2014 -0700"
      },
      "message": "Update \u0027DisplayList\u0027 vs \u0027RenderNode\u0027 naming in several places\n\nChange-Id: I635c6627d098b661fb9b0ba1bd42fa6d7277d287\n"
    },
    {
      "commit": "3281442aa75872b8947f0b0a5203257c6849129d",
      "tree": "6484ad9c30a42eec7ac2bc83179114cb0e0df591",
      "parents": [
        "6ab7c1e7da4047e3fbfee03ef6b199418ff570de",
        "80d4902196899d1325cd9f52c06ae0174cf9bd4c"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jun 20 23:21:20 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 20 02:09:17 2014 +0000"
      },
      "message": "Merge \"Wrap ViewGroup content in save/restore to protect composited children\""
    },
    {
      "commit": "80d4902196899d1325cd9f52c06ae0174cf9bd4c",
      "tree": "659794797f8161ca9580fc17cc5c44bbbe3c304e",
      "parents": [
        "6b2df21ecacfa6826a85cabdf8d6fe0e81fe11d9"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jun 20 15:03:43 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jun 20 16:18:58 2014 -0700"
      },
      "message": "Wrap ViewGroup content in save/restore to protect composited children\n\nbug:15570351\n\nPos Z composited children are drawn before the primary restore for a\nRenderNode. This means that without an additional save/restore (which\nwraps the content) they aren\u0027t protected from transformations/clips\nthat happen within the ViewGroup\u0027s DisplayList.\n\nAlso changes RenderNode to use OpenGLRenderer tag for displaylist\ndumping consistency, and simplifies the entry points into RenderNode\ndrawing, since the distinction between tree root vs tree internal is\nno longer important.\n\nChange-Id: I2621eba0592c74d71f85a91a4ab3d0da2d7468d3\n"
    },
    {
      "commit": "6ac174b97246ed40fe780b29561603b61770fa17",
      "tree": "944bb70042d1907f3bb687f9cee862e6cbdd72b1",
      "parents": [
        "6b2df21ecacfa6826a85cabdf8d6fe0e81fe11d9"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jun 17 13:47:05 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jun 18 15:31:55 2014 -0700"
      },
      "message": "Clean up tessellation cache in prep for other tesselation types\n\nbug:15536396\n\nAlso fixes compilation warning, avoids SkPaint deep copy\n\nChange-Id: I74334f08b1d34c6789aabf968ff62db5bacbed1b\n"
    },
    {
      "commit": "1e5cf9aced40e6e14262e542d0ed0e24cda877a0",
      "tree": "1b42070defc0a41277e27ae37c92748dec18fc99",
      "parents": [
        "f1d758867aa878fb956af7c66bd2d3122adf72a0",
        "9a9d1d5ad2591f04881a401da0ad89a95eeddd00"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jun 10 17:22:31 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 10 17:22:31 2014 +0000"
      },
      "message": "am b1c76a1a: Merge \"Tessellate on worker threads\" into lmp-preview-dev\n\n* commit \u0027b1c76a1abcfb2f33e12fef37ec71d20724863b5e\u0027:\n  Tessellate on worker threads\n"
    },
    {
      "commit": "05f3d6e5111fd08df5cd9aae2c3d28399dc0e7f5",
      "tree": "14df3cad82b02a886b8e3a04fd4ec249e1d403e4",
      "parents": [
        "faecafce62ca39a7693669f7c9eabf2d71c633cf"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 02 16:27:04 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jun 10 01:53:17 2014 +0000"
      },
      "message": "Tessellate on worker threads\n\nTessellate and cache (where possible) shadow and round rect\ntessellation tasks.\n\nChange-Id: I2cfda8e11d83d51ea74af871235cf26e8f831d40"
    },
    {
      "commit": "139088228faa7f3c446af7387e017933998a5570",
      "tree": "33b24be0cb5793d47f77fe9eee5beceb772e6cd0",
      "parents": [
        "1015efb143b51a5d31f2f932528f295cfa1add1f"
      ],
      "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": "Thu May 29 16:51:23 2014 -0400"
      },
      "message": "Update HWUI matrix API\n\n1. more closely mirror Skia API by using const ref instead of ptrs\n2. store SkMatrix in the drawOp instead of the linear allocation heap\n\nChange-Id: I4b9f6f76b9f7d19325e29303d27b793679fd4823\n"
    },
    {
      "commit": "0fa2bd699ab5539c0ce6b79eb6b4b681734b8bb5",
      "tree": "da53c7be8f596961bcb1f4343278ea1d4144d8b4",
      "parents": [
        "d08f91fa679d3045436e993b6073d86d8f9b26fe"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Mon May 05 12:50:38 2014 -0400"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Fri May 23 11:50:38 2014 -0400"
      },
      "message": "DO NOT MERGE Inspect SkShader to determine hw shader.\n\ncherry-pick of Iaa7189178bda1c55f96da044d2a9fa602ba36034\n\nInstead of duplicating internal info about SkShader, inspect the\nSkShader installed on the SkPaint.\n\ncore/java/android/view/GLES20Canvas.java:\nRemove setupModifiers, nResetModifiers, and nSetupShader.\n\ncore/jni/android/graphics/Shader.cpp:\nRemove calls to create/destroy the (previously) attached SkiaShader.\n\ncore/jni/android_view_GLES20Canvas.cpp:\nRemove native code for setupShader and resetModifiers.\n\ngraphics/java/android/graphics/BitmapShader.java:\ngraphics/java/android/graphics/ComposeShader.java:\ngraphics/java/android/graphics/LinearGradient.java:\ngraphics/java/android/graphics/RadialGradient.java:\ngraphics/java/android/graphics/Shader.java:\ngraphics/java/android/graphics/SweepGradient.java:\nRemove code keeping track of native SkiaShader.\n\nlibs/hwui/Caches.h:\nInclude Extensions.h.\n\nlibs/hwui/DeferredDisplayList.cpp:\nCompare shaders on the paint, instead of on DrawModifiers.\n\nlibs/hwui/DisplayList.cpp:\nlibs/hwui/DisplayList.h:\nRemove vector of SkiaShaders.\n\nlibs/hwui/DisplayListOp.h:\nAccess the SkShader on mPaint.\nRemove SetupShaderOp and ResetShaderOp.\n\nlibs/hwui/DisplayListRenderer.cpp:\nlibs/hwui/DisplayListRenderer.h:\nRemove resetShader, setupShader, refShader, and mShaderMap.\n\nlibs/hwui/FontRenderer.cpp:\nPass SkShader to setupDrawShader and setupDrawShaderUniforms.\n\nlibs/hwui/OpenGLRenderer.cpp:\nlibs/hwui/OpenGLRenderer.h:\nAdd LayerShader, a class inheriting from SkShader, to mimic the\nbehavior of SkiaLayerShader. Unlike SkiaLayerShader, it can be set on\nthe SkPaint so it can be inspected later.\nSet a LayerShader instead of a SkiaLayerShader.\nsetupDrawShader and setupDrawShaderUniforms now inspect an SkShader\npassed in.\nInspect SkShader instead of mDrawModifiers.mShader.\nRemove resetShader and setupShader.\nsetupDrawColorUniforms now takes a boolean indicating whether there is\na shader.\nAdd an inline function for accessing the SkShader on an SkPaint.\nIn setupDrawBlending(Layer*, bool), do not check the shader (which will\nnever be set), but do check whether the color filter may change the\nalpha (newly fixed behavior).\nIn setupDrawBlending(SkPaint, ...), check the SkShader and whether the\ncolor filter affects alpha (the latter is new behavior).\n\nlibs/hwui/Renderer.h:\nRemove pure virtual functions setupShader and resetShader.\n\nlibs/hwui/ResourceCache.cpp:\nlibs/hwui/ResourceCache.h:\nRemove functions for refing/unrefing shaders.\n\nlibs/hwui/SkiaShader.cpp:\nlibs/hwui/SkiaShader.h:\nMuch of this code was redundant and has been removed.\nConvert structs into class with nothing but static functions for\ncalling describe/setupProgram.\n\nlibs/hwui/TextureCache.cpp:\nlibs/hwui/TextureCache.h:\nUse the SkPixelRef as the key to the bitmap Lru cache, since shader\ninspection will provide a different SkBitmap pointer (though it will\nhold the correct SkPixelRef with the correct generation ID).\n\ntests/CanvasCompare/src/com/android/test/hwuicompare/DisplayModifier.java:\ntests/CanvasCompare/src/com/android/test/hwuicompare/ResourceModifiers.java:\nUpdate manual test to have more shaders: radial, sweep, compose,\ninvalid compose.\n\nBUG:10650594\nChange-Id: I2e7182b3fc28268e7ca82fac6780540b6b45365c\n"
    },
    {
      "commit": "d490aa426090fc358873821b47ef27ead0c97409",
      "tree": "72bc6fe950898174e6dc005505b02fba4be185d5",
      "parents": [
        "5ec9aed64cd03545eded622cca214c83c170ab22",
        "d1ad5e62fda248c6d185cde3cb6d9f01a223066c"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri May 23 00:03:46 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 23 00:03:46 2014 +0000"
      },
      "message": "Merge \"Inspect SkShader to determine hw shader.\""
    },
    {
      "commit": "d1ad5e62fda248c6d185cde3cb6d9f01a223066c",
      "tree": "6e2dcdaaab6c38f46f36b944f9c4212c485ff3e2",
      "parents": [
        "951ecb77c5dfe69a4d19d26429286111333ab123"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Mon May 05 12:50:38 2014 -0400"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Thu May 22 14:46:59 2014 -0400"
      },
      "message": "Inspect SkShader to determine hw shader.\n\nInstead of duplicating internal info about SkShader, inspect the\nSkShader installed on the SkPaint.\n\ncore/java/android/view/GLES20Canvas.java:\nRemove setupModifiers, nResetModifiers, and nSetupShader.\n\ncore/jni/android/graphics/Shader.cpp:\nRemove calls to create/destroy the (previously) attached SkiaShader.\n\ncore/jni/android_view_GLES20Canvas.cpp:\nRemove native code for setupShader and resetModifiers.\n\ngraphics/java/android/graphics/BitmapShader.java:\ngraphics/java/android/graphics/ComposeShader.java:\ngraphics/java/android/graphics/LinearGradient.java:\ngraphics/java/android/graphics/RadialGradient.java:\ngraphics/java/android/graphics/Shader.java:\ngraphics/java/android/graphics/SweepGradient.java:\nRemove code keeping track of native SkiaShader.\n\nlibs/hwui/Caches.h:\nInclude Extensions.h.\n\nlibs/hwui/DeferredDisplayList.cpp:\nCompare shaders on the paint, instead of on DrawModifiers.\n\nlibs/hwui/DisplayList.cpp:\nlibs/hwui/DisplayList.h:\nRemove vector of SkiaShaders.\n\nlibs/hwui/DisplayListOp.h:\nAccess the SkShader on mPaint.\nRemove SetupShaderOp and ResetShaderOp.\n\nlibs/hwui/DisplayListRenderer.cpp:\nlibs/hwui/DisplayListRenderer.h:\nRemove resetShader, setupShader, refShader, and mShaderMap.\n\nlibs/hwui/FontRenderer.cpp:\nPass SkShader to setupDrawShader and setupDrawShaderUniforms.\n\nlibs/hwui/OpenGLRenderer.cpp:\nlibs/hwui/OpenGLRenderer.h:\nAdd LayerShader, a class inheriting from SkShader, to mimic the\nbehavior of SkiaLayerShader. Unlike SkiaLayerShader, it can be set on\nthe SkPaint so it can be inspected later.\nSet a LayerShader instead of a SkiaLayerShader.\nsetupDrawShader and setupDrawShaderUniforms now inspect an SkShader\npassed in.\nInspect SkShader instead of mDrawModifiers.mShader.\nRemove resetShader and setupShader.\nsetupDrawColorUniforms now takes a boolean indicating whether there is\na shader.\nAdd an inline function for accessing the SkShader on an SkPaint.\nIn setupDrawBlending(Layer*, bool), do not check the shader (which will\nnever be set), but do check whether the color filter may change the\nalpha (newly fixed behavior).\nIn setupDrawBlending(SkPaint, ...), check the SkShader and whether the\ncolor filter affects alpha (the latter is new behavior).\n\nlibs/hwui/Renderer.h:\nRemove pure virtual functions setupShader and resetShader.\n\nlibs/hwui/ResourceCache.cpp:\nlibs/hwui/ResourceCache.h:\nRemove functions for refing/unrefing shaders.\n\nlibs/hwui/SkiaShader.cpp:\nlibs/hwui/SkiaShader.h:\nMuch of this code was redundant and has been removed.\nConvert structs into class with nothing but static functions for\ncalling describe/setupProgram.\n\nlibs/hwui/TextureCache.cpp:\nlibs/hwui/TextureCache.h:\nUse the SkPixelRef as the key to the bitmap Lru cache, since shader\ninspection will provide a different SkBitmap pointer (though it will\nhold the correct SkPixelRef with the correct generation ID).\n\ntests/CanvasCompare/src/com/android/test/hwuicompare/DisplayModifier.java:\ntests/CanvasCompare/src/com/android/test/hwuicompare/ResourceModifiers.java:\nUpdate manual test to have more shaders: radial, sweep, compose,\ninvalid compose.\n\nBUG:10650594\n\nChange-Id: Iaa7189178bda1c55f96da044d2a9fa602ba36034\n"
    },
    {
      "commit": "797b95b26bbb7557678af78b9a2a61830158920f",
      "tree": "b2e895c064c511446b2709160c9d614819f871b2",
      "parents": [
        "d6a91b0bb64b17dcf4ae635f428dfd4ad310f73e"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue May 20 18:10:25 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed May 21 13:50:29 2014 -0700"
      },
      "message": "Define light position (using new lighting spec) in Java\n\nAlso updates the relative shadow strengths.\n\nChange-Id: I6cac7275d38df98aea9f0dda463cd7207102986a\n"
    },
    {
      "commit": "f2985ba3f41c4619f7b64797d07e3a008e17b20a",
      "tree": "7d1a8a9fd61a77fbc7ef31d62c1026d915c71baa",
      "parents": [
        "a4fcdad1b8b436136599bba48df82aa6480054fe",
        "924197513aa2df4c1fb2977c1727f5d2c21f2689"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon May 19 21:54:03 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 19 21:54:03 2014 +0000"
      },
      "message": "Merge \"Correct viewport initialization, bounds comparison\""
    },
    {
      "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": "924197513aa2df4c1fb2977c1727f5d2c21f2689",
      "tree": "402ec417e1b44e3f2b2c0ce6ef1efcd6d5a0f576",
      "parents": [
        "fe4c1e225d147fe9cb5d7c121b7d6d11a312844e"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu May 15 13:21:28 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu May 15 13:21:28 2014 -0700"
      },
      "message": "Correct viewport initialization, bounds comparison\n\nChange-Id: Ibd751856e3712991e149800ed179464397dad7c3\n"
    },
    {
      "commit": "a64a2bef1048db5a742843f1e3bea9e80d0defc5",
      "tree": "7c66edd8039821862469a79602220a8041d01b10",
      "parents": [
        "a7e089f28c494f3c34e77f924b273acdbcf3ddd2"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed May 14 14:17:01 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed May 14 17:27:52 2014 -0700"
      },
      "message": "Combine projection matrix, and viewport management\n\nMerge management of ortho projection matrix with the viewport size,\nsince they should always be changed together.\n\nChange-Id: Iccb8f30828f4fb7848999ac54852e7ed2d6f2eb1\n"
    },
    {
      "commit": "ddc52285ca6fd147f442a21e90e0e4702a10d304",
      "tree": "67d52cacd41be03c2166e87e88f977e970c4b044",
      "parents": [
        "7b51185362df5bf1c4844c171350197a2fd2a4c1"
      ],
      "author": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Sun May 11 16:16:17 2014 +0200"
      },
      "committer": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Sun May 11 16:16:17 2014 +0200"
      },
      "message": "Revert \"Simplify projection matrix management.\"\n\nThis reverts commit 0efaa71d5414287ed4beac0a88cf76f7e33a1e74.\n"
    },
    {
      "commit": "0c0ec26366045e515790a6acdab782965efc63b4",
      "tree": "e33da53a3d1082d9e1bc242ca7995b975a93c887",
      "parents": [
        "f992066731fb27a6d9fc8bae673c638093610292"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri May 09 16:11:14 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri May 09 16:11:14 2014 -0700"
      },
      "message": "Simplify projection matrix management.\n\nStore in and use from snapshot, and remove the kFlagOrthoDirty flag,\nas it\u0027s redundant with kFlagIsFboLayer.\n\nChange-Id: I2bd380192d50117f4ce1fd2058213669a886f406\n"
    },
    {
      "commit": "e1f788b3e216329c570929eb4526332ae0db14d1",
      "tree": "20ebf8e839e813db8085fe4412206c1861075ba4",
      "parents": [
        "809146690d03b3ec3404c37c1fb467f7b7234692",
        "e10e827ed68b0a9487cf8dd1fc545f9a09517ae9"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri May 09 18:02:53 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 09 18:02:53 2014 +0000"
      },
      "message": "Merge \"Rename matrices for consistency\""
    },
    {
      "commit": "e10e827ed68b0a9487cf8dd1fc545f9a09517ae9",
      "tree": "9efe760385a3a85206aaf8b7d558d29a30fc39fb",
      "parents": [
        "a2604b738e7298fd926482ec5d94356b37a0d807"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu May 08 14:28:26 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu May 08 14:28:26 2014 -0700"
      },
      "message": "Rename matrices for consistency\n\nThe projection matrix no longer contains viewing transformation, and\nhas thus been renamed.\n\nChange-Id: I4f85ccdac97f4cb4f987bb05c389816680f1c94f\n"
    },
    {
      "commit": "e4aa95e3627226bcb0d8cc3e42dca6e4df8f421c",
      "tree": "c55de52d9180486924bfd5ca87450fcee4858d2d",
      "parents": [
        "a2604b738e7298fd926482ec5d94356b37a0d807"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu May 08 13:57:05 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu May 08 13:57:05 2014 -0700"
      },
      "message": "Add logging utility methods\n\nChange-Id: I0f316830dcc0bbf438292a6d0fbe9f8154368500\n"
    },
    {
      "commit": "5b554f010358d8f47e31d92a42aa3edc4a71ec47",
      "tree": "3adcf06e0c8b18fe725188888031870e485e6be0",
      "parents": [
        "cf501a60b8817acdea2368eb56225ebc831b1559",
        "c29a0a4664a4b9871fadd668b632469a0db240b9"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Thu May 08 14:41:46 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 08 14:41:47 2014 +0000"
      },
      "message": "Merge \"Avoid caching shadow properties in Java \u0026 HWUI.\""
    },
    {
      "commit": "832b151465ed81c43e59891d5eebe62128b21fbb",
      "tree": "b631a4eab7c5b7b7f3d98e808e88bf0965c324cf",
      "parents": [
        "ebb9e69513b690881a5bad7bf45c6f32e0fc7062"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed May 07 14:39:44 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed May 07 14:39:44 2014 -0700"
      },
      "message": "Cleanup attachFunctor\n\n Bug: 13961296\n\nChange-Id: Id48d11bfcc234afd1fd7e4fdd409a50e7208c81d\n"
    },
    {
      "commit": "c29a0a4664a4b9871fadd668b632469a0db240b9",
      "tree": "33e324bd3698bf9c100f998389694e4baeefaa57",
      "parents": [
        "ae84e20b2a0cb77223d40f55c71011d3ae8c71c7"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Mon Mar 31 13:52:39 2014 -0400"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Wed May 07 09:36:04 2014 -0400"
      },
      "message": "Avoid caching shadow properties in Java \u0026 HWUI.\n\nbug: 10650594\nChange-Id: I6f57df002710bb0567ed7e53fc0bfe96cfd504b8\n"
    },
    {
      "commit": "64ab917e5eb3269c72c795781a512d4ee7d9d7a4",
      "tree": "0fc75966319a9df191a1687d445ce0ab8149c207",
      "parents": [
        "e5c749085e793bfa931db09cf3ce4559be255663",
        "f5be3ca5cc5b3a10747b577f60059a99862bb9a8"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu May 01 01:31:11 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 01 01:31:12 2014 +0000"
      },
      "message": "Merge \"Add more shadow control knobs\""
    },
    {
      "commit": "f5be3ca5cc5b3a10747b577f60059a99862bb9a8",
      "tree": "a35aca46d1a60b88df40e8015c6a1815acccdb61",
      "parents": [
        "7a70981fc1eead712d62d9502f6dccb963779ae8"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Apr 30 18:20:03 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Apr 30 18:20:30 2014 -0700"
      },
      "message": "Add more shadow control knobs\n\nChange-Id: I1ff500bf429029a97b681ced9df652f4ee9f1332\n"
    },
    {
      "commit": "0d575b084fe5a691c2a99163515de0dc54f66e18",
      "tree": "e07fac82ad6a2fbf805d62877865e2a84c07dee6",
      "parents": [
        "ecdc6fdb64a41dd3bd5867308cb0c8a5b941146f",
        "2e023f3827dfc0dfc1ed7c3dd54d02b4a993f0b4"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Tue Apr 29 16:21:51 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 29 16:21:51 2014 +0000"
      },
      "message": "Merge \"Make sure the theta is correctly represented and incoming polygon is CW for shadow.\""
    },
    {
      "commit": "2e023f3827dfc0dfc1ed7c3dd54d02b4a993f0b4",
      "tree": "ba319249cf92343e7d7488480a9646a235566ef9",
      "parents": [
        "7940dc57e3ffcf9c4a33375215f3a42250fa896c"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Mon Apr 28 16:43:13 2014 -0700"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Mon Apr 28 16:43:13 2014 -0700"
      },
      "message": "Make sure the theta is correctly represented and incoming polygon is CW for shadow.\n\nNow the theta \u003d 0 should be on +x axis.\nAnd cos(theta) should correctly represent x value.\nWithout this fix, the poly theta (from atan2) can be wrongly rotated 90 degrees.\n\nAlso, make sure the incoming polygon is CW for the shadow system.\nThis fix visual artifacts in recent regression for spot shadows.\n\nbug:13553955\n\nChange-Id: I9bbf54db094e7f133326da4dae4610962da849c1\n"
    },
    {
      "commit": "3f085429fd47ebd32ac2463b3eae2a5a6c17be25",
      "tree": "2930b7ee50ce98092fde97546a3d546c817038f1",
      "parents": [
        "fbb54b8363b66e0b22d519ee20d1a50e8b5340ee"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Apr 15 16:18:08 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Apr 23 16:15:11 2014 -0700"
      },
      "message": "Clip TouchFeedbackDrawable effect to receiver Outline\n\nProjected RenderNodes are now wrapped with a ClipRect or masked\nSaveLayer, so that they are clipped to the outline of the projection\nreceiver surface.\n\nChange-Id: I1d4afc1bb5d638d650bc0b1dac51a498f216773e\n"
    },
    {
      "commit": "8de65a8e05285df52a1e6f0c1d5616dd233298a7",
      "tree": "267faf9277b441030b6276ca6a3a34424bb9aee8",
      "parents": [
        "10bdb4b9e966f0a3d8e1099bf8eff4c41c31981c"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Apr 09 15:23:38 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Apr 09 15:48:00 2014 -0700"
      },
      "message": "Switch DisplayListData to a staging model\n\n Bug: 13912977\n\nChange-Id: I5b2f664e797be22a58300964f57ceb4fab60528c\n"
    },
    {
      "commit": "087bc0c14bdccf7c258dce0cdef46a69a839b427",
      "tree": "cab73aeed8e9a0bc8e74243a35c026ab0b321e08",
      "parents": [
        "ce16215d7b4d9bedfc62e172dc44ab439afef13a"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Apr 04 16:20:08 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Apr 07 14:53:08 2014 -0700"
      },
      "message": "Refcount RenderNode\n\nChange-Id: I7a86db8acc2b78ef33d987a43a119f5933d7d752\n"
    },
    {
      "commit": "c75db8266b352ef3a7a6b76654f770d7a24d547a",
      "tree": "a39e68ee43ca2c325da94532f4eff3a80940bf13",
      "parents": [
        "903d6407b0f5fcf12373daadcce90aaad44a5491",
        "750ca6dbdb259aea0ca5b77380a9303e586ef3ea"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Sat Mar 29 01:41:50 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 29 01:41:50 2014 +0000"
      },
      "message": "Merge \"Remove kStatusInvoke \u0026 kStatusDraw\""
    },
    {
      "commit": "750ca6dbdb259aea0ca5b77380a9303e586ef3ea",
      "tree": "c24155dbc56810e618ee8a837470145d77aee38d",
      "parents": [
        "0e14f2d45557527242f27ce7de9027e6ccaa45d6"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Mar 28 16:33:18 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Mar 28 16:43:15 2014 -0700"
      },
      "message": "Remove kStatusInvoke \u0026 kStatusDraw\n\n They are unused\n\nChange-Id: I44ecf1164dc6bc1b09438e733976d5a97a25f00e\n"
    },
    {
      "commit": "b265e2ca50b6ceb2fd2987ef1f7d063b1bde19ae",
      "tree": "c5dd068e025de701ebfdeacf00247368fbecb12a",
      "parents": [
        "08c96b5515f061f61e13b348f6022ce7c586e4c4"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Mar 27 15:50:09 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 28 14:43:22 2014 -0700"
      },
      "message": "Support shadows on the root RenderNode\n\nbug:13211941\n\nCleans up some of the RenderNode method naming\n\nAlso removes unnecessary clip/save/restores, clipping shadows\npredictably, as drawn by the parent, before drawing (and clipping,\netc.) the shadow casting child.\n\nChange-Id: I795115e1fb869bbbdd7be43e279b97490fecc7e0\n"
    },
    {
      "commit": "024433f89684e1f9cb7b15ade7c480c9346fbe4d",
      "tree": "981c0a0fdaa0b70be66899855806c1ce879b579e",
      "parents": [
        "1dd9c53a40b7c147767c63e10a47eb5cb6f8e197"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Mar 26 13:19:14 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Mar 27 16:01:04 2014 -0700"
      },
      "message": "Disable shadow overdraw avoidance in the inverse clip case\n\nThe caster is effectivly transparent, so skip the optimization just as\nis done for alpha \u003c 1.0\n\nChange-Id: I3d294222adf0137e20c1fb5808313d487e92e0a8\n"
    },
    {
      "commit": "8c271ca63b62061fd22cfee78fd6a574b44476fd",
      "tree": "e4b6a9d863aec687273be89373d2fc432cf29c30",
      "parents": [
        "5e44cadfd69c210c11f80cfe599718617a0e6676"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Mar 25 10:33:01 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Mar 25 16:03:48 2014 -0700"
      },
      "message": "Add private circular reveal API on View/RenderNode\n\nChange-Id: I139c8e12b354083149a665f6768f3f6931a8dd15\n"
    },
    {
      "commit": "bfb07a03777af424e99bca1dac4c903aaf44e99d",
      "tree": "a34ac04cc56a06ea54bc7010bb1169f71d9f355b",
      "parents": [
        "41c2d2cec3f46b28f535e9cd7f5b9da02280ccfe"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Mar 24 21:00:18 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Mar 24 21:00:18 2014 -0700"
      },
      "message": "Move where updateProperties is called\n\nChange-Id: I27da448996019094c44487ce28c5689d098d6535\n"
    },
    {
      "commit": "d0a0b2a3140bfb1819a116413ce9d81886697a07",
      "tree": "0040f371f29280deb83d1fd55f2db86e30d58c37",
      "parents": [
        "de02cdc1e95cea19b2ddef26d60ad1d109bd507c"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Mar 20 16:28:56 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Mar 24 15:31:34 2014 -0700"
      },
      "message": "Add stagingProperties\n\nChange-Id: Ic7de551f8843fd70a77f738e33028e25c020bb3c\n"
    },
    {
      "commit": "af6f7ed8dd4288a41d0a07a1f0f0be7d6d035b33",
      "tree": "1004e5d8a1120b83102fd82e0e9484f410c9d319",
      "parents": [
        "31dc8f701fb14e185bf1c1b35d68bd7d1a42a54a"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Tue Mar 18 17:25:49 2014 -0700"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Thu Mar 20 15:25:47 2014 -0700"
      },
      "message": "Early rejection on shadows which are outside of the clip bound.\n\nAll the computations are estimated using bounding box.\nTODO: Spot shadow could have more accurate but also more expensive methods, we need\nmore experiments to decide.\n\nChange-Id: I9c10c419576cee55daf0f9f278b0db78cb847447\n"
    },
    {
      "commit": "50ecf849cb7ccc3482517b74d2214b347927791e",
      "tree": "ae48db1ce35bf2d35b5bd126dc78fd5cca0a5d4e",
      "parents": [
        "de69575dd1bdafabda8afda8b4251b830ba0c551"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Tue Mar 11 16:52:30 2014 -0700"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Mon Mar 17 10:10:02 2014 -0700"
      },
      "message": "Create one hole inside the umbra area to avoid overdraw.\n\nbug:13439450\n\nChange-Id: I859575196bd5a3029f447883025a6ec3a1f1face\n"
    },
    {
      "commit": "361fd3d2ff302d60a49ae2d2d1cc61cb5fdb0ece",
      "tree": "d658ae309a8b5aa44e487083aba0c0886f9416a5",
      "parents": [
        "141d88916647cada1c90448d5739a927fa508724",
        "e18264b079481a244b30e3f71012c53bbd861f92"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Mar 12 21:03:03 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 12 21:03:03 2014 +0000"
      },
      "message": "Merge \"Rename DisplayList-\u003eRenderNode\""
    },
    {
      "commit": "e18264b079481a244b30e3f71012c53bbd861f92",
      "tree": "0127f3fc60aa351108ee8abd8ee180a5b193b03e",
      "parents": [
        "5b568aa04a91786962af1ab372b5a62481eea8cc"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Mar 12 13:56:30 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Mar 12 13:56:30 2014 -0700"
      },
      "message": "Rename DisplayList-\u003eRenderNode\n\nChange-Id: Id42e23c9a1a6eb6eaeafef707ced7fa6887b03d0\n"
    },
    {
      "commit": "b98f2116f5896acb4b221015b22624a3c5d5a7fe",
      "tree": "4bf1d02992d5fd3d0b333eb5e042d7337a572667",
      "parents": [
        "d84133af441caed8102b2da79cdb6f50673b80cb"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Mar 11 17:42:29 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Mar 12 11:19:42 2014 -0700"
      },
      "message": "Force shadow casters above the Z\u003d0 plane\n\nChange-Id: Ifee75414829d4bfb3c7aa6219f1f9bcfd50ff0c6\n"
    },
    {
      "commit": "b79a3e301a8d89b9e1b1f6f3d7fd6aa56610a6f0",
      "tree": "6b92898b802b665b62127766baa87e8261569062",
      "parents": [
        "e361ad7ab15fcf4919a56a6293689d968ee8dcff"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Mar 11 12:20:17 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Mar 12 09:44:41 2014 -0700"
      },
      "message": "Fix orthographic shadows projection, simplify shadow reordering\n\nSeparate matrix passed to shadow system into two parts, one for\ntransforming the polygon XY points (using the actual draw matrix) and\na separate one which respects correct 4x4 3d rotations and\ntranslations for determining Z values.\n\nChange-Id: I7e30a84774a8709df6b2241e8f51fc5583648fe8\n"
    },
    {
      "commit": "e361ad7ab15fcf4919a56a6293689d968ee8dcff",
      "tree": "19107b2e2deff5044db0580ab6701c2857d6a8e8",
      "parents": [
        "b26264948c01b097fe5bc12d5b486a759693ceb7"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Mar 11 10:48:43 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Mar 11 15:41:40 2014 -0700"
      },
      "message": "Remove experimental perspective projection\n\nChange-Id: Iad688c8395ccd4673cc129973802b5f01dfb45ba\n"
    },
    {
      "commit": "67862524056ee2e73a94395139bb8bd0ec1ef38a",
      "tree": "20273dae825bf5256ca8703038f7357825d090c2",
      "parents": [
        "9f6a372ca08c657447ef4b8dc6c80a89202247f8"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 28 12:26:34 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 28 12:26:34 2014 -0800"
      },
      "message": "Fix use of Skia deprecated methods\n\nChange-Id: Ib89c20fc94bcce29b7490d6f55c73492735befda\n"
    },
    {
      "commit": "da3f525759d4b875fd6a498cbe22f7bc9e53aa83",
      "tree": "9bee37b2bbc11f876f76a8e2398d3ebe2d4e877f",
      "parents": [
        "98bab263500b258025c9c6ca64f8aaff7dc914f4",
        "9757ac0b9d62f6aea5e47cfb375f445c78bb7897"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Feb 27 22:20:31 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 27 22:20:31 2014 +0000"
      },
      "message": "Merge \"Fix TextureView texture filtering.\""
    },
    {
      "commit": "9757ac0b9d62f6aea5e47cfb375f445c78bb7897",
      "tree": "d17c80970154798e66dbf914974926b15fa33f61",
      "parents": [
        "5eb4adcbda0ff22e48716d3cf9356a9a720475b5"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Feb 25 18:50:17 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Feb 25 18:50:17 2014 -0800"
      },
      "message": "Fix TextureView texture filtering.\n\nbug:11748993\n\nTextureView should always be drawn with linear filtering if drawing a\nbuffer sized differently from the layer.\n\nThis fixes a bug where TextureViews that were sized differently from\ntheir contents wouldn\u0027t be drawn with texture filtering, causing\nvisible scaling artifacts.\n\nChange-Id: I8a5d27452fe7269ec53896992f37cff51e3ce15a\n"
    },
    {
      "commit": "8198c3a8f525c07e2b848852f6ad3e351e3b5461",
      "tree": "342d10b2f40fd3db65e41cb98b7ee29412b34683",
      "parents": [
        "a1f1a3c573acd91024fda0ceb3b921c73b186963",
        "63d41abb40b3ce40d8b9bccb1cf186e8158a3687"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Tue Feb 25 23:20:06 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 25 23:20:06 2014 +0000"
      },
      "message": "Merge \"Use pre-computed index to draw the shadow.\""
    },
    {
      "commit": "63d41abb40b3ce40d8b9bccb1cf186e8158a3687",
      "tree": "53ef1d5d691afa904e390e211f6adde28fb5f4ae",
      "parents": [
        "ef94c6f88fbb1deb095b1494378befcdb9722839"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Feb 14 13:13:41 2014 -0800"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Tue Feb 25 14:18:25 2014 -0800"
      },
      "message": "Use pre-computed index to draw the shadow.\n\nAlso draw the umbra part as triangle fans instead of zig zag fashion.\n\nb/12840179\n\nChange-Id: Iaa5d15e77351acdd71f076bd8f9bb2d4d2b92faf\n"
    },
    {
      "commit": "919e95cc23d3567345719f2466e089682608638e",
      "tree": "b3ebd4482516c19781462af5c4fd330ce26afa16",
      "parents": [
        "550267f72b6217f797e7f93bb312ecbe6541ff49"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 21 17:13:45 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 21 17:15:12 2014 -0800"
      },
      "message": "Modulate shadow alpha by caster alpha\n\nChange-Id: Ibc4b3958feb3b5dba91d30af470d76555a6209c8\n"
    },
    {
      "commit": "674554fc36932ca50b15bba41ac6f650254d4e72",
      "tree": "ec0fc936ce4fdbd15d8bf6e15348676194855b8a",
      "parents": [
        "96f0369b25811319398a268071eb147fe14a09e3"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Wed Feb 19 16:47:32 2014 +0000"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Thu Feb 20 16:20:33 2014 -0500"
      },
      "message": "Reapply \"Refactor setting an SkPaint onto a hwui Layer.\"\n\nThis reverts commit 90d0c75e94a32fb7d993fae69762820aabc2fcbb.\n\nChange-Id: Ie807761231edf7c848b019931dccbf466208c0be\n"
    },
    {
      "commit": "ef94c6f88fbb1deb095b1494378befcdb9722839",
      "tree": "d0917ce76760da1e439a94ee3ddabb10af2026dc",
      "parents": [
        "b9122c672e76923018198ab0eda07fa6a2145dbc"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Thu Feb 13 17:09:45 2014 -0800"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Thu Feb 13 17:09:45 2014 -0800"
      },
      "message": "Separate spot and ambient shadow strength setting\n\nChange-Id: I4530e618b09a7f44b5382f8a40646c0ebf5f214c\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": "d44fbe55a9f434cb5bb0e34c143ba1445141990d",
      "tree": "782e860830dd48fb9b7e667d64a038a45045b936",
      "parents": [
        "8eea3ea5591e59f55cbb4f6b2b7e9363a285ced3"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Wed Feb 05 16:47:00 2014 -0500"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Fri Feb 07 13:33:29 2014 -0500"
      },
      "message": "Keep the SkPaint used when creating a layer.\n\nThis will allow us to inspect the paint for thing other than\ncolor and xfermode, such as SkColorFilters and SkShaders.\n\nbug: 10650594\nChange-Id: I2c3ddd07a3966e1e77af34136307e2b59b2898c1\n"
    },
    {
      "commit": "a2fe7affd3d077ac163da90996cb2e5e0ca3b8d1",
      "tree": "42c447fe36d1eac576243ec2442e5b52dcbcc4c3",
      "parents": [
        "f3560a133e3ec19c698a8c9d6cfc7d17fd95adc5"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jan 28 17:25:06 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jan 30 16:04:16 2014 -0800"
      },
      "message": "Add initial hidden outline APIs\n\nBackground drawable outline usage and drawable outline calculation\nstill to come.\n\nChange-Id: I8c7539f1638f86e1f8eb11f4fe49f705f61d58ba\n"
    },
    {
      "commit": "5e1814e2ebf5614f8f4f7edd063e1a79bd929844",
      "tree": "38049d5e13a13fcec11ce969a8215733b58406c9",
      "parents": [
        "ab5e089585e01fd14ad7854391c10e6d8ae07144",
        "3783e70b557fe58f51d551242a42e7232e991c10"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jan 28 23:18:05 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 28 23:18:05 2014 +0000"
      },
      "message": "Merge \"Remove logging of DisplayList staleness\""
    },
    {
      "commit": "3783e70b557fe58f51d551242a42e7232e991c10",
      "tree": "71a91426fa2cef638fc2ad83566f8456d105d51f",
      "parents": [
        "2d434c8bdf5f980956854ea022db9588e66f445e"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jan 27 14:26:14 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jan 27 14:29:37 2014 -0800"
      },
      "message": "Remove logging of DisplayList staleness\n\nChange-Id: Ie6b3af3065d4d10ec0bc9b419223d3458d297ea8\n"
    },
    {
      "commit": "15a07a21eb33e8ca1c7444944fe0541a53380c0c",
      "tree": "fa5dd5158982a1ef11d105ac463fb34b07087147",
      "parents": [
        "bb615a6ffbc8a051007163916f1ed085d10b5327"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Sun Jan 26 13:43:53 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Sun Jan 26 13:43:53 2014 -0800"
      },
      "message": "Use path outlines to define shadow shapes\n\nFixes the simplifying assumption that shadow casters were always\nrectangular.\n\nJava side APIs + plumbing to pass down correct shapes still need to be added.\n\nChange-Id: Ic4fee90af15679951a44bb5cc6ae454b98c4c194\n"
    },
    {
      "commit": "bb615a6ffbc8a051007163916f1ed085d10b5327",
      "tree": "2ba39cf5b57deb8f00ba478de8f904918a51d0de",
      "parents": [
        "8435cf0d8b9e24715d5b310ed569fda918dcaa46"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jan 24 13:22:35 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jan 24 15:01:40 2014 -0800"
      },
      "message": "Clear root level reorder lists to prevent accessing stale DisplayLists\n\nbug:12581401\n\nAdds temporary logging which should log/crash earlier on incorrectly\nreordering hierarchies.\n\nChange-Id: Iee00940718c3cc868161e754aff93cd3b2747094\n"
    },
    {
      "commit": "cc3c25622c731d14a6f01bce684330eccba7db5a",
      "tree": "6e35c1358b88c77410f066f309590a0e87bc023b",
      "parents": [
        "3a3bdd042d8bd056d31a1b37332e91c1307060a0"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Jan 17 10:34:10 2014 -0800"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Jan 17 13:42:09 2014 -0800"
      },
      "message": "Property support for light positioning.\n\nTune up the light size to make it look better.\n\nChange-Id: I139a05f3dd53dacbe55759b91188f0e1cc2c7f80\n"
    },
    {
      "commit": "3197cded4e265bc99dc82d695bbb7163fe134ed4",
      "tree": "1e466d046d1b38af09318b4de59dd33f6a1c08eb",
      "parents": [
        "c46809e9979204aa9a131d8933da23d298411441"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jan 16 14:03:39 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jan 16 14:03:39 2014 -0800"
      },
      "message": "Map shadow light position globally\n\nChange-Id: Ic3201cecdf5d2a1dd628e7e40aee912ef516d3b2\n"
    },
    {
      "commit": "7b4516e7ea552ad08d6e7277d311ef11bd8f12e8",
      "tree": "a97549bff020af39946aabd5a5c27c1151a90539",
      "parents": [
        "0ffd9ca5798d6c55d2a02f453dd181899639dce2"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Tue Jan 07 10:42:55 2014 -0800"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Jan 10 17:18:53 2014 -0800"
      },
      "message": "Calculate and show the shadow from a spot light.\n\nChange-Id: Ia558852e8cde5d33866b22875eb501e4c6858819\n"
    },
    {
      "commit": "d218a92c0afb8c0d98135b20b52ac87236e1c935",
      "tree": "3eef804e9948ca463e720ac636db46b2637fdabb",
      "parents": [
        "8523706236b0b2536ed4359d92ec6ccdca060d78"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jan 02 17:13:34 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jan 03 13:55:08 2014 -0800"
      },
      "message": "Use const where possible for drawing parameters\n\nThey should never be modified by a Renderer, only read and copied.\n\nChange-Id: I9d8d55dca19115ee9dfeb2bb3f092ba2fb327cd4\n"
    },
    {
      "commit": "564acf7c9bff822f608cda0d5df0a64a9f9aaefd",
      "tree": "93a3203fc99098dedd4df5660c96d6800c97ae93",
      "parents": [
        "e459367a3a49cbe94dfe38c50369431614dddc9c"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jan 02 16:46:18 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jan 02 16:52:32 2014 -0800"
      },
      "message": "Fix Clang warnings/errors\n\nFix several build warnings (struct !\u003d class, int !\u003d size_t) and errors\n(variable leng non-POD arrays).\n\nChange-Id: I70b4e784365514303d8954bfcb1f39d7c22c1321\n"
    },
    {
      "commit": "d6b65f67717025b1162f86f04e2caa5723566cac",
      "tree": "4905e0300916badc0fadf76018bf4d53fbe56669",
      "parents": [
        "14e513058ed4168c94e015638d16f5f87fd8063a"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jan 01 14:45:21 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jan 02 12:57:41 2014 -0800"
      },
      "message": "Use const access to snapshot from OpenGLRenderer\n\nAdditionally, move clipping methods to StatefulBaseRenderer\n\nChange-Id: Iff232bf16fc1ad3b7d89493da6d8915db7bc5e4f\n"
    },
    {
      "commit": "14e513058ed4168c94e015638d16f5f87fd8063a",
      "tree": "1e66d02d2986e211d9e003ea2a3d09b9920f0dec",
      "parents": [
        "539394ec3aee7b5868c14e5e692684c8a875a3d4"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Dec 30 15:32:54 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jan 01 13:59:13 2014 -0800"
      },
      "message": "Move Snapshot management to intermediate StatefulBaseRenderer class\n\nThe eventual goal is for the StatefulBaseRenderer to serve as the\ncommon base class between the DisplayListRenderer and OpenGLRenderer.\n\nThis will separate DisplayList recording, Snapshot stack management,\nand the GL in OpenGLRenderer.\n\nAdditionally, avoid sp\u003c\u003e parameters, and use const parameters in\nseveral places, with the intent of greatly reducing the surface area\nwhere renderer subclasses can modify snapshot stack.\n\nNext steps:\n-move bulk of clipping logic into StatefulBaseRenderer\n-disable direct snapshot access\n\nChange-Id: Ibc3c6747134ec7daf8ea535866239fa73b874390\n"
    },
    {
      "commit": "b458942bb6e6cf13c68341dda35ef5cee060f5ae",
      "tree": "7421a2e45b1260472640b715150b84b317e09570",
      "parents": [
        "6debfb90eea84959ab51a6c3585549dd48e277f3"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Dec 26 15:13:13 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Dec 27 14:40:06 2013 -0800"
      },
      "message": "Create abstract base class for OpenGLRenderer\n\nThis will eventually serve as a base class to allow\nDisplayListRenderer to split off from OpenGLRenderer, and could\neventually support other rendering approaches, such as an\nSkCanvas/SkPicture.\n\nThis will also be the main source of (implementation-independent)\ndocumentation of the canvas/renderer methods.\n\nChange-Id: I52047f338f5cf86a3b0b3002af7154bff5c3c227\n"
    },
    {
      "commit": "ba9b613437c34873fa95800a25fc51720638267c",
      "tree": "c47ac384de0306a48956ad6efaa3c5c5e51553c0",
      "parents": [
        "d83adf00ae6cb073fa0e4fbb837c2b87d824ec4f"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Sun Dec 15 17:10:19 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Dec 16 14:57:00 2013 -0800"
      },
      "message": "Create private properties on GLCanvas for experimentation with 3d\n\nChange-Id: I17772f61efce727cb4c1111f4d97f58c741786b8\n"
    },
    {
      "commit": "55bfb4e728fe1db619af5d2c287f4abe711b3343",
      "tree": "3b9c9eb0902fdb0f8991259a04c342f89f65bcaa",
      "parents": [
        "d08eadd287991ec18eafe620b24e2b1bf0ce1f2d"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Tue Dec 03 10:38:55 2013 -0800"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Dec 13 17:25:47 2013 -0800"
      },
      "message": "Calculate and show Ambient shadow.\n\nBasically we compute the shadow as a strip of triangles, whose alpha value\nis the strength of the shadow.\nWe use the normal to extend the geometry.\nAnd we use static function and try to avoid new/malloc in the computation.\n\nChange-Id: I382286f1cad351bd5ff983f76f446c075819dcaf\n"
    },
    {
      "commit": "18809c063b89d9b235401d080b952885a4ef9628",
      "tree": "7a73454d7d3007b5d08032bfff6515b435947fb2",
      "parents": [
        "f8bc964289df5ea53672df401c6d51dd47c02e53",
        "f57776b2d195f0937906eb88b777bb55ccc36967"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Dec 13 21:55:49 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 13 21:55:50 2013 +0000"
      },
      "message": "Merge \"3d view system!\""
    },
    {
      "commit": "f57776b2d195f0937906eb88b777bb55ccc36967",
      "tree": "f2c160bb0860a6f3d0f883cdf0c520892a1bde24",
      "parents": [
        "c3c4d36df01631883a79163da841ca222497c9d3"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Oct 25 18:30:17 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Dec 12 10:18:23 2013 -0800"
      },
      "message": "3d view system!\n\nTrue 3d transformations are now supported by DisplayLists and the\nrenderer, initially with the translationZ property on view.\n\nRenderer operations used directly by DisplayList (formerly,\nclip/save/restore/saveLayer) are now more simply managed by allocating\nthem temporarily on the handler\u0027s allocator, which exists for a single\nframe. This is much simpler than continuing to expand the pool of\npre-allocated DisplayListOps now that more operations are called\ndirectly by DisplayList, especially with z ordered drawing.\n\nStill TODO:\n-APIs for camera positioning, shadows\n-Make Z apis public, and expose through XML\n-Make invalidation / input 3d aware\n\nChange-Id: I95fe6fa03f9b6ddd34a7e0c6ec8dd9fe47c6c6eb\n"
    },
    {
      "commit": "630491973269da1b260e69d6a3f9490b97705037",
      "tree": "3219a8c0c46d5465320afd8cf5f5ac795f7047d4",
      "parents": [
        "1290d8e64fabc0b32487e2dfb599e5f288ecfd94"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Dec 10 15:22:01 2013 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Dec 10 15:22:01 2013 -0800"
      },
      "message": "Unbreak display list debug dumping\n\nChange-Id: I1c6a79f047b29fa60907f6e128cb843a45b88bff\n"
    }
  ],
  "next": "4b9a19a8f865970e0079f431c8c2c2a8e4333ae9"
}
