)]}'
{
  "log": [
    {
      "commit": "a08f95cfeca7217f9c533b03663bf0dceedd259a",
      "tree": "76be3f20c535d3f93d82624daa3a66d23765bdce",
      "parents": [
        "ff78583d8a73ca35ce65b5d2592570ff6fb9901b"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 15 17:24:33 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 15 17:29:27 2013 -0700"
      },
      "message": "Use snapshot alpha for layers\n\nRemoves mMultipliedAlpha, using the snapshot alpha for all\nnon-overlapping display list alpha control.\n\nAdditionally, fixes opacity issues where children of\nhasOverlappingRendering\u003dfalse displaylists (both hw layer sublists and\nother sublists with hasOverlappingRendering\u003dfalse)\n\nChange-Id: I6adc16da855835f9f518f8967628e5d0135c789b\n"
    },
    {
      "commit": "ff78583d8a73ca35ce65b5d2592570ff6fb9901b",
      "tree": "24e7da9e7434d4884130a33f9b312a77654df733",
      "parents": [
        "9105ce744ecd237d4c74f4ee3a5b204c72e10c96"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 08 13:12:16 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 15 14:48:18 2013 -0700"
      },
      "message": "Fully deferred displaylist replay\n\nbug:8037003\n\nA recursive drawDisplayList call is now entirely deferred before\nplaying back to the screen and issuing GL commands. This way, the\nentire stream can be inspected, optimized, and batch work (such as\nuploading textures) before issuing commands.\n\nAdditionally, this fixes an issue where operations draw could move\nacross restores corresponding to saveLayer(alpha). Those and other\nsimilar cases (such as complex clipping, requiring the stencil) are\nnow treated as batching barriers, with the operations that change\nrenderer state in a way that\u0027s difficult to defer are just re-issued\nat flush time.\n\nChange-Id: Ie7348166662a5ad89fb9b1e87558334fb826b01e\n"
    },
    {
      "commit": "ca89e2a68703bd428e8b66547d033a6ed35b3595",
      "tree": "5661de81848f7d26559531a1ea650ed7fea2decd",
      "parents": [
        "6e2004089305cf2cd958b52b234459a49a4e5c83"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 08 17:44:20 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 11 17:05:28 2013 -0700"
      },
      "message": "Precache paths from a worker thread\n\nChange-Id: I3e7b53d67e0e03e403beaf55c39350ead7f1e309\n"
    },
    {
      "commit": "b09f1471262c3e629daacbc319bcefc2d621a484",
      "tree": "230927395ec54cd3af22e317d6c946d2dc376258",
      "parents": [
        "8afce816df7e8f668761f7ed443f54238958c49f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Mar 07 17:01:05 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Mar 07 17:03:25 2013 -0800"
      },
      "message": "Don\u0027t apply scale to glyphs when a perspective is set.\nBug #8337925\n\nMagazines uses very large scale factors that blow up font cache \u0026 CPU.\n\nChange-Id: I1c0ed430ed91b86cc6c6f59f7e8bdcc89a464e46\n"
    },
    {
      "commit": "624234f69b2a4781d24f3e4c6ae6450729e38397",
      "tree": "d6ae0bfd751e0e59329cb678c1d9f1cec447ee3e",
      "parents": [
        "0b58a3deab66c30a8d35072e55aac6279dd367cc"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 05 16:43:31 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 05 18:12:35 2013 -0800"
      },
      "message": "Take only the scale params into account to rasterize text\n\nThis change extracts the scale parameters of the current transform\nto pass then to the font renderer. Rotation and perspective are\napplied to the generated mesh inside the vertex shader. This limits\nthe number of glyphs we have to create in the font cache and thus\nreduces memory churn.\n\nChange-Id: Ic5b3bae2b2b0e0250a8ee723b071a1709725c749\n"
    },
    {
      "commit": "3b753829ae858d424fe109f714745379a6daf455",
      "tree": "2b4c370574319ff1cfbd5014be3748d17e362b4a",
      "parents": [
        "e78b8003a5870c0e80ed92c4df442871fb9d0b61"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 05 10:27:35 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 05 10:27:35 2013 -0800"
      },
      "message": "Fix colored rects clipping and code cleanup\n\nThe drawColorRects() method was clipping individual rectangles\nusing the wrong parameters left, top, right and bottom instead\nof l, r, t and b. It also checked for count \u003d\u003d 0 after the loop\nwhen it should have checked for vertexCount \u003d\u003d 0. The quickReject\nis now not part of the loop since it\u0027s a bit overkill to perform\nso many matrix multiplications. What we really care about is the\nfinal quickReject performed on the max bounds of the entire set\nof rectangles.\n\nThis change also replaces all instances of mSnapshot-\u003etransform\nby currentTransform() to make the code slightly more readable.\n\nChange-Id: I6485280414499716852f7dbfba186774eb6763d4\n"
    },
    {
      "commit": "19d4dd8599cb870923ab349d2ab96cacffd9c6f5",
      "tree": "86b0575167b2c27642a1e7a7296be2de2877474a",
      "parents": [
        "cdac497289fd2c39a352f6167dae3f77cc608cb8"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 04 11:14:26 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 04 13:48:43 2013 -0800"
      },
      "message": "Take text scale/skew into account only when rendering into a layer\n\n3D rotations can undo scale/skew transforms; since FreeType only accepts\n2x2 matrices we can end up generating very large glyphs that are drawn\nat a 1:1 scale on screen. For instance, if the current transform has a\nscale of 2000 set on both X and Y axis and a perspective Z factor set to\nZ, the actual scale factor on screen ends up being 1. We would however\ngenerate glyphs with a scale factor of 2000 causing the font renderer\nto blow up.\n\nChange-Id: Ia5c3618d36644e817825cb9c89e2f53aece2074e\n"
    },
    {
      "commit": "0f6675332c04c74909425d1d328f02b32c0ff40e",
      "tree": "53a912c204ba470a0d6cd2c5701a1aef614cc7eb",
      "parents": [
        "8b5aa4846939975adacd6ea1d2a57a2493ac0216"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 01 14:31:04 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 01 16:04:53 2013 -0800"
      },
      "message": "Precache glyphs at final raster size\n\nThe deferred display lists model now allows us to precache glyphs\nat their exact size on screen.\n\nThis change also removes debug markers when the renderer defers\nand reorders display lists. It also adds a flush event marker.\n\nChange-Id: I66ec5216dc12b93ecfdad52a7146b1cfb31fbeb4\n"
    },
    {
      "commit": "a4adcf0239039eb8f005be252409901c41b28839",
      "tree": "bb339ae27217db42e4ef0de743b07ca138ef335a",
      "parents": [
        "aaa46155ec80f02b37ec858408d7dabbf9bc289a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 28 12:15:35 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 28 16:04:48 2013 -0800"
      },
      "message": "Support 3D rotations when drawing text\n\nIf a perspective transform is set on the Canvas, drawText() should\nnot attempt to rasterize glyphs in screen space. This change uses\nthe old behavior instead (i.e. rasterize the glyphs at the native\nfont size and apply the transform on the resulting mesh.)\n\nThis change also adds an optimization: empty glyphs (spaces) do\nnot generate vertices anymore. This saves a lot of vertices in text\nheavy applications such as Gmail.\n\nChange-Id: Ib531384163f5165b5785501612a7b1474f3ff599\n"
    },
    {
      "commit": "c74f45a334f0e3725c23cdd270cbcb0efac4ea75",
      "tree": "1b198e8b6b7d6d4a69237116a580236836744294",
      "parents": [
        "d80806b305ce337283c24f14522cc58fea090b8c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 26 19:10:14 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 27 15:49:57 2013 -0800"
      },
      "message": "Properly scale text\n\nThis change does not apply to drawPosText() and drawTextOnPath() yet.\n\nPrior to this change, glyphs were always rasterized based on the\nfont size specified in the paint. All transforms were then applied\non the resulting texture. This creates rather ugly results when\ntext is scaled and/or rotated.\n\nWith this change, the font renderer will apply the current transform\nmatrix to the glyph before they are rasterized. This generates much\nbetter looking results.\n\nChange-Id: I0141b6ff18db35e1213e7a3ab9db1ecaf03d7a9c\n"
    },
    {
      "commit": "d80806b305ce337283c24f14522cc58fea090b8c",
      "tree": "701d3e4ea59f356c20b273c3061b6206782206b9",
      "parents": [
        "122f4051b5c4d61044ba377b4b5fa10133ab7b37",
        "6c5b9be7450903762f676522c32d65f7545730df"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 27 23:47:54 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 27 23:47:55 2013 +0000"
      },
      "message": "Merge \"Fix T-junctions in layers\u0027 generated meshes\" into jb-mr2-dev"
    },
    {
      "commit": "a6456d0d7ea2a65474b8a3db5dbf001880c40a71",
      "tree": "9e456a81714eaf92a8be5f6cd7b75a831e91c663",
      "parents": [
        "13e3891b20133d131ba61fa86bcd8b6ee1e50199",
        "768bffc9b814f6a1f7d9ff59d91285895c23bbe9"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 27 22:16:22 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 27 22:16:22 2013 +0000"
      },
      "message": "Merge \"Draw text drop shadows even when the text color is transparent\" into jb-mr2-dev"
    },
    {
      "commit": "6c5b9be7450903762f676522c32d65f7545730df",
      "tree": "4f0930eca0d1481506628100dbc3def1bdf24c45",
      "parents": [
        "be1a8cda3e8113d1fd3a6e56d8bc6c4f2d350423"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 27 14:03:19 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 27 14:03:19 2013 -0800"
      },
      "message": "Fix T-junctions in layers\u0027 generated meshes\n\nbug:4128442\n\nCurrently we fix T-junctions for hardware layers, and for\nCanvas.saveLayer if the transform isn\u0027t rectAsRect. Ideally, hardware\nlayers should lazily re-generate T-junction free geometry if the\ntransform becomes non-rectAsRect\n\nDepends on frameworks/native change:\nhttps://googleplex-android-review.googlesource.com/#/c/277668/\nwhich adds Region::createTJunctionFreeRegion()\n\nChange-Id: Ice75b4a1a4459ff835059ea81d70f7d1563fd96d\n"
    },
    {
      "commit": "768bffc9b814f6a1f7d9ff59d91285895c23bbe9",
      "tree": "49da21e344249af8273fe418e13fe03235eb9c76",
      "parents": [
        "c0e55bd3cfe1d7be2276e4f528fee2231763a5c1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 27 13:50:45 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 27 13:52:26 2013 -0800"
      },
      "message": "Draw text drop shadows even when the text color is transparent\n\nThis matches Skia\u0027s behavior.\n\nChange-Id: Ibf0a52611f5801cfa68169f66ab0ec06f256600f\n"
    },
    {
      "commit": "758724fd09a1599f2c55130f81953cfa6c17c300",
      "tree": "ca84f352115851317bf012534a69d748def6092e",
      "parents": [
        "c0e55bd3cfe1d7be2276e4f528fee2231763a5c1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 27 11:53:12 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 27 11:53:12 2013 -0800"
      },
      "message": "Don\u0027t increment the paint\u0027s generation ID when drawing bitmaps\n\nWhen the renderer draws a bitmap as part of a display list with an\nalpha \u003c 1.0f, the paint is temporarily modified to alter the opacity\nof the bitmap. This has the side effect of increasing the paint\u0027s\ngeneration ID counter which can break paint caching.\n\nChange-Id: I5055d059ad1639829fa50af3d946e296c4dab877\n"
    },
    {
      "commit": "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": "505d1d64eda6e47caabf8701cb39ec9b176b3238",
      "tree": "99fa418bf15f26afdcfddc1ae1936e4de809ddfa",
      "parents": [
        "ec39a94ac299e57c800a82814651c713f3a5f5c7",
        "7031ff68bb998dbbd7caf3b2fd75eef747a86725"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Feb 22 21:45:56 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 22 21:45:57 2013 +0000"
      },
      "message": "Merge \"Prettify display lists logging\""
    },
    {
      "commit": "7031ff68bb998dbbd7caf3b2fd75eef747a86725",
      "tree": "0a2ae84a624a03136f5b5d82fa8885c207d650e7",
      "parents": [
        "e72409fe779f620382c5bd0b82f4a32ac91d9fe4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Feb 22 11:48:16 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Feb 22 11:51:15 2013 -0800"
      },
      "message": "Prettify display lists logging\n\nThis change makes it a lot easier to see the tree structure.\n\nChange-Id: I4969abd1eb010f1d529671f8d86dc4c930be24f6\n"
    },
    {
      "commit": "94b97b38b749d50c8693a044dd2688328cca863e",
      "tree": "6fedcbbe4e60867fb6776bc89ab90abace1f3e8f",
      "parents": [
        "4e89d1a9b25b4bca47bd8c7cb22b72ed4bbbfd1e",
        "eab51de4de88219256260fe26e2018a6234ef83b"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Feb 21 19:31:17 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 21 19:31:17 2013 -0800"
      },
      "message": "am eab51de4: Merge \"Fix clipping and stencil layer issues\"\n\n* commit \u0027eab51de4de88219256260fe26e2018a6234ef83b\u0027:\n  Fix clipping and stencil layer issues\n"
    },
    {
      "commit": "b98a016c6769b9e80d392df22fe77a2fca048d9f",
      "tree": "6a4adcd9e871baab9aae6f2f0ad80670ad4f66bd",
      "parents": [
        "2b3a47b9ce0f422323395286937944a2afa51ed6"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Feb 21 11:30:22 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Feb 21 16:12:00 2013 -0800"
      },
      "message": "Fix clipping and stencil layer issues\n\nbug:8235699\n\nEnsure rectangle clipping operations disable deferring when necessary\n(i.e., when the op might create a non-rect region), including in\nDisplayList::setViewProperties\n\nAdditionally, makes clipping with a kUnion always use a region, for\nconsistency with software rendering\n\nChange-Id: I6730f1a80250bcf3f91cd4afde646d470a12dbc2\n"
    },
    {
      "commit": "c4ca87f0f4034d4b987084d2b62ed7e5e0430557",
      "tree": "72ae034904f9554d1ed6228944e7711959fc21d7",
      "parents": [
        "09bd2113e3a6bb2c63f01b62a09ae3c23d3c0454",
        "8a47d8eaec26d0937aee94a057f561f246748339"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 20 10:42:40 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Feb 20 10:42:40 2013 -0800"
      },
      "message": "am 8a47d8ea: Merge \"Clean up clipping and deferral logic\"\n\n* commit \u00278a47d8eaec26d0937aee94a057f561f246748339\u0027:\n  Clean up clipping and deferral logic\n"
    },
    {
      "commit": "8a47d8eaec26d0937aee94a057f561f246748339",
      "tree": "3a0e20c21c0086e97d4024e2f2af269bc7f0e859",
      "parents": [
        "14bd8359a84c9b3f634d1fd816ddf5750d6539a9",
        "5d11676414b3606792e23c269cf75b44faa1a2af"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 20 18:40:03 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 20 18:40:03 2013 +0000"
      },
      "message": "Merge \"Clean up clipping and deferral logic\""
    },
    {
      "commit": "5d11676414b3606792e23c269cf75b44faa1a2af",
      "tree": "4cc1e7f6dd978c9575f19aa8e4137837fc042fd7",
      "parents": [
        "ad82f20d2382396f5ac75fdf6f7db5c4da1c4c23"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Feb 19 17:49:31 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Feb 19 18:56:10 2013 -0800"
      },
      "message": "Clean up clipping and deferral logic\n\nbug:8037003\n\n-Merges replay methods\n-Bounds checking for DrawBitmapMesh, DrawRects and DrawDisplayList\n-Use clip as bounds for otherwise unbounded draw operations\n\nClip-as-bounds is correct for drawColor and functor, but other draw\noperations (pos text, text on path, and layers) still need true bounds\ncalculation\n\nChange-Id: I5d5149d2c624f01e3fe46628bf156e835e69b9d5\n"
    },
    {
      "commit": "846f5f238fd96a14197022baad86eab8882fe3bc",
      "tree": "a8859b3a21c5746f53e9531dffdb13783a8ea08d",
      "parents": [
        "27c530076068607e61ef6a3fcc1c5f05aa7104aa",
        "e91efabaf2c51d017bf4c5bc4e06491c3511f4e5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 19 12:36:28 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 19 12:36:28 2013 -0800"
      },
      "message": "am e91efaba: Merge \"Expose display list APIs\"\n\n* commit \u0027e91efabaf2c51d017bf4c5bc4e06491c3511f4e5\u0027:\n  Expose display list APIs\n"
    },
    {
      "commit": "52036b19a5f82bc4d75cfcbff99c65df8d25a99b",
      "tree": "138a50b1b6ddc1075af93c4dab85d459aef1d6d3",
      "parents": [
        "736ef1e9dedbdd0c24e27f170034f2f869fd083f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 14 18:03:37 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 19 12:30:02 2013 -0800"
      },
      "message": "Expose display list APIs\n\nThe exposed APIs are slightly simpler than the full APIs used internally.\nOnly APIs useful to applications are exposed.\n\nChange-Id: Ie03014628d40ad5ef63dedbc52ce3def84429d54\n"
    },
    {
      "commit": "620cff4006ee0b507f00ef8a242ecff4e60ba4e9",
      "tree": "30c29f1ee548bb5da57a0a68b95f3c25beaa8eb6",
      "parents": [
        "57a8b612fa6b31a18f9e00a7bdf7dfbd261f793c",
        "ad82f20d2382396f5ac75fdf6f7db5c4da1c4c23"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Feb 19 09:56:33 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 19 09:56:33 2013 -0800"
      },
      "message": "am ad82f20d: Merge \"DisplayList draw operation reordering\"\n\n* commit \u0027ad82f20d2382396f5ac75fdf6f7db5c4da1c4c23\u0027:\n  DisplayList draw operation reordering\n"
    },
    {
      "commit": "c3566d06421c8acc0aafb18f7e307e5725ce87e1",
      "tree": "3807ef3c1825ce9154bf3bc84fe24f34b331702a",
      "parents": [
        "101ae3bb3909827303121e5e11ed16b7efe36538"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Feb 04 16:16:33 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 15 13:30:09 2013 -0800"
      },
      "message": "DisplayList draw operation reordering\n\nbug:8037003\n\nThe reordering enables similar operations to draw together, minimizing the\nOpenGL state change operations that go inbetween draws. Eventually, multiple\ncomplete canvas draw operations will be merged (into a single glDrawArrays call,\nfor example)\n\nReorders DisplayList draw operations when:\n\n-They can move backwards in the command stream to be after similar\noperations without violating draw ordering\n\n-The OpenGLRenderer is in a simple, replayable state (no complex clip,\nor filter/shadow etc)\n\nAlso adds two system properties to control the deferral/reordering:\n    \"debug.hwui.disable_draw_defer\"\n    \"debug.hwui.disable_draw_reorder\"\nwhich can be set to \"true\" to control the display list manipulation\n\nChange-Id: I5e89f3cb0ea2d2afd3e15c64d7f32b8406777a32\n"
    },
    {
      "commit": "feb6954da185901dfb558a8ec85f4908ca86a4eb",
      "tree": "c7d1fe973b2f696a0b90dea3fa1bd4c90df41a1a",
      "parents": [
        "187cd3e161e3167ff455bd0766c0600c8fd243a4",
        "10c0aa246d9b2633c6cb4e5b714abb0031a4f4cd"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 14 10:54:21 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 14 10:54:21 2013 -0800"
      },
      "message": "am 10c0aa24: Merge \"Implement support for drawBitmapMesh\\\u0027s colors array\"\n\n# Via Android (Google) Code Review (1) and Romain Guy (1)\n* commit \u002710c0aa246d9b2633c6cb4e5b714abb0031a4f4cd\u0027:\n  Implement support for drawBitmapMesh\u0027s colors array\n"
    },
    {
      "commit": "10c0aa246d9b2633c6cb4e5b714abb0031a4f4cd",
      "tree": "bb02e6bfd8b240833ba4611f138565e58aeee2bd",
      "parents": [
        "45dc56f3cc6cf890d2f8a28021f46ad1e9028f5e",
        "ff316ec7a76e52572a2e89b691e6b3bba0cafba3"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 14 18:49:34 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 14 18:51:28 2013 +0000"
      },
      "message": "Merge \"Implement support for drawBitmapMesh\u0027s colors array\""
    },
    {
      "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": "c932760f667cf56ca7a1aeffde505745dc3632e1",
      "tree": "280d86bf8205c51a2b6b59da6c617e220677e790",
      "parents": [
        "eb26fbe427192bc87bb3dbb7882dbf87f760fab2",
        "7c1a49f5f5ed6613d736464bf5001b777e89ced2"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 13 23:14:26 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 13 23:14:58 2013 +0000"
      },
      "message": "Merge \"Revert \"Merge remote-tracking branch \u0027goog/master-chromium\u0027 into \u0027goog/master\u0027\" DO NOT MERGE\""
    },
    {
      "commit": "8d4aeb7111afac0c3c7e56d4ad5d92f9cfce2ffd",
      "tree": "d526296ca8e54842b15b60adaad484ee29feccf2",
      "parents": [
        "d1a84242a7ba807310d8f8d389796c7163cb97a0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 12 16:08:55 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 13 11:27:05 2013 -0800"
      },
      "message": "Add a render buffer cache to reuse stencil buffers\nBug #7146141\n\nThis new cache is used in a similar way to LayerCache. It helps\nreuse already allocated stencil buffers and thus avoid churning\nmemory on every frame.\n\nChange-Id: I19551d72da52c40039e65904563600e492c8b193\n"
    },
    {
      "commit": "7c1a49f5f5ed6613d736464bf5001b777e89ced2",
      "tree": "c6726264bde03f4c5957876921d4b15a835b2c71",
      "parents": [
        "d04892d207d50378356feef181ac4e4eff9652d7"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 13 10:25:12 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 13 10:50:20 2013 -0800"
      },
      "message": "Revert \"Merge remote-tracking branch \u0027goog/master-chromium\u0027 into \u0027goog/master\u0027\" DO NOT MERGE\n\nThis reverts commit 6c0307dd0aefe9a08794b155fc03ee60ebd14f25, reversing\nchanges made to a2cd828b749c444d55c2c41c7dbb85088ff94b9f.\n\nConflicts:\n\tpackages/SystemUI/res/values-sv/strings.xml\n\nChange-Id: Ia178efe8b14751583d47b2826bfe3d3d5463dd2e\n"
    },
    {
      "commit": "e67307c816f3fdae2bfba8e9a4410dc015645e91",
      "tree": "a97695ed6c6e087364fba51b3a848d4aedebdb41",
      "parents": [
        "f16c7a97548cedccea291ffebc4388a7f15c9aa1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Feb 11 18:01:20 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Feb 11 18:04:23 2013 -0800"
      },
      "message": "Prevent crash when setting up a stencil-based clip\nBug #8177690\n\nClear the layers before we setup the stencil to avoid dereferencing\nthe recently deleted rects.\n\nChange-Id: I5dce5f965672f276f9490636d85b6018d3ab9422\n"
    },
    {
      "commit": "d71ff91dcd79f6beea4bbe768ab3bcbb1a6d7c39",
      "tree": "e9a9233171a5edfaf03f2a81f468a7133f54b462",
      "parents": [
        "d68c0964765b48934f528600ba5fe51b45cb8ae1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Feb 08 13:46:40 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Feb 08 13:46:40 2013 -0800"
      },
      "message": "Apply the clip rect/region to drawLines()\n\nWithout the check to quickReject, drawConvexPath would never\nsetup the clip properly.\n\nChange-Id: I23e5b25de3383c9e9b86eea4ee7a9552f8d9efb4\n"
    },
    {
      "commit": "da8d8b9699fe8e9557389465007e333d3f03dcc1",
      "tree": "a06894789c3d0a66fccdda3030d344a0b072fed6",
      "parents": [
        "2c45e913734a64460c6dcf5b831a32a0af5ba5c1",
        "3bbacf27c0be1bae4e4483577fc89ae3113abe5d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 07 20:11:56 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 07 20:11:56 2013 +0000"
      },
      "message": "Merge \"Add a RenderBuffer object to store stencil buffers. Bug #7146141\""
    },
    {
      "commit": "3bbacf27c0be1bae4e4483577fc89ae3113abe5d",
      "tree": "102ffa5362c1782af27f2f0abad3e9f481479e79",
      "parents": [
        "c2a972131f1870042eb63847d4b24fbe718d8e3f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 06 16:51:04 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 07 12:11:22 2013 -0800"
      },
      "message": "Add a RenderBuffer object to store stencil buffers.\nBug #7146141\n\nThis change is needed to add a render buffer cache to avoid\ncreating and destroying stencil buffers on every frame.\n\nThis change also allows the renderer to use a 1 bit or 4 bit\nstencil buffer whenever possible.\n\nFinally this change fixes a bug introduced by a previous CL\nwhich causes the stencil buffer to not be updated in certain\nconditions. The fix relies on a new optional parameter in\ndrawColorRects() that can be used to avoid performing a\nquickReject on rectangles generated by the clip region.\n\nChange-Id: I2f55a8e807009887b276a83cde9f53fd5c01199f\n"
    },
    {
      "commit": "1ba0289d18f16e190a3bc7cf9226d061016dc355",
      "tree": "cc4b448cd10a5b23724741774e63e737c4e433ac",
      "parents": [
        "1095d9ac5df839408b9a549cc638c2909d98dfac",
        "65cd612face362d054a85d0f7e5881c59cd523be"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Feb 07 00:14:05 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 07 00:14:38 2013 +0000"
      },
      "message": "Merge \"Add cap tessellation support\""
    },
    {
      "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": "f5db9b8ed42cace00d4e84b4a7e2e63a7c654b35",
      "tree": "ba1e2ba36db9f22cd827b63dc603dec372e101e8",
      "parents": [
        "63af7a113b9f47d9865a4c64488dd73a40711b7a",
        "d81ec456bb097a712bcbc093c5a1e0075434158e"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Tue Feb 05 18:17:19 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 05 18:17:56 2013 +0000"
      },
      "message": "Merge \"Changes needed to roll Skia to r7527.\" into master-chromium"
    },
    {
      "commit": "a362c69d6cdf448107e5a539f77df73937141870",
      "tree": "4124105aced46c2c6c4aa52a3770d4af0d83662f",
      "parents": [
        "ef35927abcd089652f87a985dd6dde7afde58b92"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Feb 04 13:50:16 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Feb 04 13:50:16 2013 -0800"
      },
      "message": "Set the scissor from OpenGLRenderer::drawColorRects\nBug #8131254\n\nThis method is used as an optimization for paths containing only\nnon-overlapping rectangles. The implementation was correctly\nrejecting rectangles invidually but not the bounds of the array\nof rectangles. If quickReject() is not called, setupDraw() won\u0027t\nbe able to properly set the scissor.\n\nChange-Id: I50aa11a4bd8b525b267d36a3039fe7a6fba50518\n"
    },
    {
      "commit": "d81ec456bb097a712bcbc093c5a1e0075434158e",
      "tree": "f77646a3bd547946d647cb44999daa397a54cddf",
      "parents": [
        "d0351a67f17d93038c17955381c5eff3d0679268"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Mon Feb 04 15:42:26 2013 -0500"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Mon Feb 04 15:42:26 2013 -0500"
      },
      "message": "Changes needed to roll Skia to r7527.\n\nChange-Id: I84aef3f8a733c869fade06021816646001532758\n"
    },
    {
      "commit": "ef35927abcd089652f87a985dd6dde7afde58b92",
      "tree": "481c87d0cc4df4ba5e315e990cd190d9b489da93",
      "parents": [
        "b7475e7b0b0ababe8c5f3fbfde565c97960c633c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 31 19:07:29 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 31 19:07:29 2013 -0800"
      },
      "message": "Tag HardwareRenderers with a name to help debugging\n\nThe name of the renderer is the same as the window it belongs to.\n\nChange-Id: Ie9adc0a1978afa026923ea41f5540eda6ba65a92\n"
    },
    {
      "commit": "f735c8e5cb59d6e1d1aa152fed7a6480a08d1c2a",
      "tree": "aeec78a2213d2fac2f3d052cf61b67ffb762fd7d",
      "parents": [
        "f158198ccc3a1f53bfebaa6b8f4426e80e1867ea"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 31 17:45:55 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 31 17:45:55 2013 -0800"
      },
      "message": "Fix tiling on QCOM GPU\n\nRename Caches::startTiling parameter from opaque to discard to\nmake it clearer what its role is. Tweak calls to startTiling\nto preserve the buffer when needed and discard it when possible.\n\nChange-Id: If7f8ff19003f79f36885a0a7207cc61901f637d2\n"
    },
    {
      "commit": "f158198ccc3a1f53bfebaa6b8f4426e80e1867ea",
      "tree": "b76bc1af0d130f77ac7eadb07f445e657f77d268",
      "parents": [
        "f48a2d30c5d5f7c167310ff9ca1cd2310121be7c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 31 17:20:30 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 31 17:20:30 2013 -0800"
      },
      "message": "Discard the correct buffer when the bound FBO is not 0\n\nglDiscardFramebufferEXT uses different constants depending on whether\nthe default FBO is bound or not. The code was choosing the proper value\nfor the color buffer but not for the stencil buffer.\n\nChange-Id: I55cfcbdf663582119cb1a6289317016440d9e361\n"
    },
    {
      "commit": "c93c6aa5553203f05df871804517885fcc071cfd",
      "tree": "2a644d36d55c700b85cf1bce209c7110703fe5e3",
      "parents": [
        "cae3d9f0ab2756e3659efc7a08830d2d7b43a05e",
        "2af4635e4a9e448a65ff541252f8f94bc6ac48e0"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jan 30 18:42:42 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 30 18:42:56 2013 +0000"
      },
      "message": "Merge \"Object-based DisplayList recording\""
    },
    {
      "commit": "c3fedafc5f50100219449125a000e3138f6fb987",
      "tree": "830bacf80a5b9e4194de2d221199dc86efe75555",
      "parents": [
        "8c47e856b067057b5fcbb6eccfc79d1da4cff8f1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 29 17:26:25 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 29 17:46:17 2013 -0800"
      },
      "message": "Fix graphical corruption on QCOM GPU\nBug #7146141\n\nThe GL_QCOM_tiled_rendering extension requires careful use of\nstart/endTiling when attaching a renderbuffer dynamically.\n\nChange-Id: I20036683ed3909ffaf40cc3d57a25257e35b6fa2\n"
    },
    {
      "commit": "2af4635e4a9e448a65ff541252f8f94bc6ac48e0",
      "tree": "2ea27d507f81660cdbb8e2cdf48cce875c1b8cdd",
      "parents": [
        "878749fef09c7cb5894f77d9b032f876f9476e47"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Nov 26 18:30:17 2012 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jan 22 13:47:03 2013 -0800"
      },
      "message": "Object-based DisplayList recording\n\nbug:8037003\n\nChanges the DisplayList from using stream read/write commands to use an array of\nobjects manually allocated on a linear buffer.\n\nDepends on frameworks/native change https://googleplex-android-review.googlesource.com/#/c/257695/ which adds LinearAllocator\n\nAlso changes drawRects to use float count instead of rect count, to be more like drawLines/drawPoints\n\nChange-Id: Ia2e4a11acd8f0a757042a05cbc9e7563cb73ee47\n"
    },
    {
      "commit": "2055abaa0a590c35e27e1ae2e7d7cfccdfb98b59",
      "tree": "1e302d08b6aa3714048a4d8435aa44f155c998c9",
      "parents": [
        "f25febf01453733e8bdd1ac241ecd9d3bcbef475"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jan 18 16:42:51 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jan 18 16:42:51 2013 -0800"
      },
      "message": "Allow layers with a stencil buffer to be resized on the fly\nBug #7146141\n\nThis change moves the resizeLayer() from LayerCache (where it should\nnever have been anyway) to Layer. This makes a little more sense.\n\nChange-Id: I8b2f9c19c558e738405a58b9e71ec5799fc6be88\n"
    },
    {
      "commit": "8ce00301a023eecaeb8891ce906f67b513ebb42a",
      "tree": "3b14c80a49cbec537aad39aa4bb266cac41102f7",
      "parents": [
        "0f8d155363c361199a9d9aa5dcdbc4088990f893"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 15 18:51:42 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 17 15:39:31 2013 -0800"
      },
      "message": "Implement clipRect with a transform, clipRegion \u0026 clipPath\nBug #7146141\n\nWhen non-rectangular clipping occurs in a layer the render buffer\nused as the stencil buffer is not cached. If this happens on a\nView\u0027s hardware layer the render buffer will live for as long\nas the layer is bound to the view. When a stencil buffer is\nrequired because of a call to Canvas.saveLayer() it will be allocated\non every frame. A future change will address this problem.\n\nIf \"show GPU overdraw\" is enabled, non-rectangular clips are not\nsupported anymore and we fall back to rectangular clips instead.\nThis is a limitation imposed by OpenGL ES that cannot be worked\naround at this time.\n\nThis change also improves the Matrix4 implementation to easily\ndetect when a rect remains a rect after transform.\n\nChange-Id: I0e69fb901792d38bc0c4ca1bf9fdb02d7db415b9\n"
    },
    {
      "commit": "735738c4ddf3229caa5f6e634bf591953ac29944",
      "tree": "4e972e943ffefc5bc268629ed45e8a5783ffe7c5",
      "parents": [
        "57b59e025bc10056daf42cd741b626843ff344f5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Dec 03 12:34:51 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 14 14:27:54 2013 -0800"
      },
      "message": "Preliminary Support for region clipping\n\nRegion clipping, using Canvas.clipPath or Canvas.clipRegion, requires\na stencil buffer to be always present. In addition, extra wiring is\nrequired in JNI and display lists.\n\nThis change only adds the necessary JNI/C++ APIs and some extra\nplumbing to start the real work on properly supporting region\nclipping.\n\nA new debug define called DEBUG_CLIP_REGIONS can be used to draw\nthe current clip region. It is off by default, as is region\nclipping.\n\nThe default implementation of clipPath() and clipRegion(), now\nin native, mimics the previous Dalvik implementation to prevent\nregressions.\n\nChange-Id: I7903e7cfd7412b9b9b622566d4dbfce7bdcec00c\n"
    },
    {
      "commit": "e3a9b24b5e3f9b2058486814a6d27729e51ad466",
      "tree": "17830a6fd61c286854cebb07638d3c2dea6277cd",
      "parents": [
        "5b4628aeeaa0462cd99256d28b636c06b1845930"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 08 11:15:30 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 08 15:21:42 2013 -0800"
      },
      "message": "Add plumbing for better text scaling\n\nFonts are now described by a transform matrix. This lead to switching\nfrom a vector to a hashmap. This change therefore adds new comparators\nand hash computations to Font.\n\nChange-Id: I2daffa7d6287c18554c606b8bfa06640d28b4530\n"
    },
    {
      "commit": "9acd1b4fa897f3a007dd23dc1f0471b151fa03ad",
      "tree": "4d27cd6bd64e25dede0a2db629a0cdef30cebb15",
      "parents": [
        "6c3c8a3c9a9176aaa68f1061a2e18a6b2fba0f74",
        "672433d90fab7383cd28beac9d4485b566a90940"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jan 04 19:23:42 2013 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 04 19:24:10 2013 -0800"
      },
      "message": "Merge \"Add visual profiling feature\""
    },
    {
      "commit": "672433d90fab7383cd28beac9d4485b566a90940",
      "tree": "8e5088ba91b9a33aeffccd3b2c6f03b0c8e2b144",
      "parents": [
        "5913148104f0b233d861fab2873befc865bf57c0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jan 04 19:05:13 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jan 04 19:21:54 2013 -0800"
      },
      "message": "Add visual profiling feature\n\nWhen profiling is enabled with debug.hwui.profile set to true,\nsetting debug.hwui.profile_visualizer to true will display the\nprofiling data directly on screen.\n\nChange-Id: I3d5fe3f0347090815087b1cbfce66b8e76d9347b\n"
    },
    {
      "commit": "886b275e529e44a59c54b933453d9bc902973178",
      "tree": "33ed0717b43683ba9f8a825c7012739a2146e943",
      "parents": [
        "5913148104f0b233d861fab2873befc865bf57c0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jan 04 12:26:18 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jan 04 15:15:16 2013 -0800"
      },
      "message": "Properly support ALPHA_8 bitmaps in all drawBitmap() methods\n\nChange-Id: I869993c59e0a0d76f369c09acbae711753908f48\n"
    },
    {
      "commit": "dcfc836b457a87881da409e1acf251515f121446",
      "tree": "686ad8eef577ad0233f4b8bab40dad76a779bb8b",
      "parents": [
        "e0c93e085ff79b0adedfb7c316c395b9e06581f9"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 03 13:08:57 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 03 13:08:57 2013 -0800"
      },
      "message": "Remove C++11 related warning\n\nChange-Id: I250ff7bd0ea49908e11b14c995d77312cd09a8b4\n"
    },
    {
      "commit": "5bb3c730f5ebd2a0db1b02a8981c6fdbea6c1a2e",
      "tree": "b049bafac199be2d7e5cd4e86e4d8b03c1416616",
      "parents": [
        "db69db1510e77052f702a997894af5ca4b87e9e0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Nov 29 17:52:58 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Nov 30 16:29:33 2012 -0800"
      },
      "message": "Apply dev. settings at runtime\nBug #7434649\n\nChange-Id: I16f00eaa8a5eefd9f9849e196cf2cb1659215390\n"
    },
    {
      "commit": "d15321bbf57ff7a4615076fefcee5e196c4fc796",
      "tree": "db1880599db3ea7f2faf16daba38f30d788510b1",
      "parents": [
        "f0afad008bf78576ff364bcd8bc93b7aa8090b34"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Nov 28 14:45:04 2012 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Nov 28 14:45:04 2012 -0800"
      },
      "message": "Use the same interrupt/resume logic for all functor calls\n\nbug:7093396\n\nThe functor was able to change the renderer\u0027s blend mode without it\nbeing restored in process mode. This single path of updating gl caches\nreduces likelihood of this occurring in the future.\n\nChange-Id: Ie367532f9c683299f02bc4f635d7cb31f96db39f\n"
    },
    {
      "commit": "7fae5216d24ebe67e22777ab933689dbcbc001b9",
      "tree": "cafed3ae6a4d8bfad73b81ecc2325ce906e4537d",
      "parents": [
        "dbcec903c858b65c78620e2b06238e42ff4d12da"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Nov 01 11:27:03 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Nov 01 11:27:03 2012 -0700"
      },
      "message": "Avoid tesselation path when useCenter is set\n\nbug:7458300\n\nThe tesselation path doesn\u0027t handle sharp joins.\n\nChange-Id: I28bf03f3b72fc584a205daa40934dda17031098f\n"
    },
    {
      "commit": "41308e2936c768103d0e9c82500e97938d6797f1",
      "tree": "b31868af7c192446f213156bd10ae57211d44712",
      "parents": [
        "74437532fe2a3e9ebd15c61327fd3f2b68c299b3"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 22 20:02:43 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 22 20:02:43 2012 -0700"
      },
      "message": "Properly draw the window background on window resize\nBug #7385090\n\nThis change gets rid of two silly asumptions:\n- That a layer needs to be cleared with opaque black (it shouldn\u0027t,\nit\u0027s already cleared to transparent and the view will cover it up\nwith its own background)\n- The the clip should be dirty at the beginning of a frame only\nwhen the render target is opaque\n\nChange-Id: I415b6d3cab196057fb0281419a53fef601a44e28\n"
    },
    {
      "commit": "7c25aab491707f7324f9941b8cfa9bd2b4b97e76",
      "tree": "2e670c818c33bf2ead5342dad73b48e000d2e94c",
      "parents": [
        "b2e2f2470693e78baed20617f989d9a166864ed4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Oct 18 15:05:02 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Oct 18 15:05:02 2012 -0700"
      },
      "message": "Defer layer rendering to avoid stalls\nBug #7326824\n\nWhen a layer is taken out of the cache and initialized it gets cleared\nto prepare it for future rendering. This triggers the following sequence\nof operations:\n\nglBindFramebuffer(layer.fbo)\nattach texture storage to FBO\nglClear()\nglBindFramebuffer(defaultFbo)\n\nThe clear forces a resolve on tilers which stalls the CPU for a little\nwhile, thus producing jank during animations. This change moves the\nclear to the next frame when we know we will have to execute a resolve\nanyway.\n\nChange-Id: Ic1939c25df20ed65a4c48dc81ee549b2cd8b6ec3\n"
    },
    {
      "commit": "b2e2f2470693e78baed20617f989d9a166864ed4",
      "tree": "c6987b167eba200f405c170e0ddf7e6881aeca3c",
      "parents": [
        "9c474738a29f77359a461035855d6e9b3935ade1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 17 18:18:35 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 17 18:18:35 2012 -0700"
      },
      "message": "Take into account the texture layer\u0027s transform for clipping\nBug #7370212\n\nChange-Id: Ibdc3161306f54a1cfe66e08458f05ee01a13b1df\n"
    },
    {
      "commit": "1b85122bd22c4528679ae8bd67077dfc2fdf1847",
      "tree": "4664b577e4dfdd34b63e6004961c8c7d2f3e1e0b",
      "parents": [
        "e13ae648504661ca158d15aa415568e351b380c4",
        "713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 16 19:05:48 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 16 19:05:49 2012 -0700"
      },
      "message": "Merge \"Add API to enable mipmaps on Bitmap Bug #7353771\" into jb-mr1-dev"
    },
    {
      "commit": "713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5",
      "tree": "d2cb42c7e05fff03274f9acdbdee80d848a86da2",
      "parents": [
        "d43b22da291fd08017fac627561091a633c85807"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 16 18:44:09 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 16 18:44:09 2012 -0700"
      },
      "message": "Add API to enable mipmaps on Bitmap\nBug #7353771\n\nThis API can be used when scaling large images down to a small size\nto get nicer looking results.\n\nChange-Id: If09087eed36077eee5355f6047a3ca67747d7d9e\n"
    },
    {
      "commit": "a92bb4dc9605c86b8773c929412af2dc242b1fa8",
      "tree": "bf77badb865a50d59f6d9ecf40426ab6e0a72bbb",
      "parents": [
        "4682cf02b42f75876f14f512e874c3e798b09c9c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 16 11:08:44 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 16 11:09:26 2012 -0700"
      },
      "message": "Support clipping in Canvas.drawBitmapMesh()\nBug #7354162\n\nChange-Id: Ifd1d0b365e8a4d88e0ff0629c9ee13f27e1a7331\n"
    },
    {
      "commit": "780c12875ce0c0d3fd072484d4b8b3c327cc4f31",
      "tree": "fbe1cf1e671c4a2725f710f969bc1d690876c981",
      "parents": [
        "a30d969401a8533a5a341664421ba9b1e150bac3"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Oct 04 14:10:49 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Oct 15 13:49:58 2012 -0700"
      },
      "message": "HW Acceleration support for stroked arcs with BUTT caps\n\nbug:4419017\n\nChange-Id: I7371bfb36cef460da861a47d4d945218c6d0c3d0\n"
    },
    {
      "commit": "b30cb10a0c75c2295e89b1b30d91a73f38ee09fb",
      "tree": "b0d09497b77b7efcb553e9a2b665fb2c43652bde",
      "parents": [
        "18c2b6e730f6d639421e45328f4fb2514683efe5"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Oct 05 19:11:37 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Oct 05 19:14:02 2012 -0700"
      },
      "message": "Use offset in line drawing\n\nPartial revert of cb4d6009\n\nbug:7299070\nChange-Id: I1db7b035e3015e0f6d15c95aef71ea74dbeca13e\n"
    },
    {
      "commit": "cf8675ee176a375f873792684d38a47f78348dff",
      "tree": "a50655caeb5717f2e53cc613b66e62ae4dee2ec3",
      "parents": [
        "0944d625448209185452eb4e800daec49de51986"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 02 12:32:25 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 02 13:33:10 2012 -0700"
      },
      "message": "Draw stroked rectangle as meshes instead of textures\nBug #7233734\n\nStroked rectangles were rendered using software generated textures\nwhich would lead to slightly misaligned results. Instead, let\u0027s use\nthe new convex path rendering code that will do the right thing\n(and save a lot of bandwidth.)\n\nChange-Id: Ib95ff581e56c1ecead97e4919298e6fd146ca167\n"
    },
    {
      "commit": "bf09ffb4e0dc820aeae56a3e576aed33cab218da",
      "tree": "23eabf3a77837da300aeab0f442f58868faa3e65",
      "parents": [
        "bfbf6e1232013a999f4776f7fdf7cf6fb577f89b"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Oct 01 13:50:37 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Oct 01 13:50:37 2012 -0700"
      },
      "message": "Quick reject empty paths\n\nbug:7260035\n\nAdding a circle of radius 0 to a path is a no-op in skia, so detect\nthis case both in the PathRenderer, and in quickReject().\n\nChange-Id: I7a172db49a5d5351b4734b39d4e4ca6379658096\n"
    },
    {
      "commit": "a3dc55f83ab583e0a66b893c71b849afa046770a",
      "tree": "bce89bc2bccaa9e4e9eb334b5c3185e360c02dc0",
      "parents": [
        "3cd961292e877cc5fac146290421e9e67aa553a2"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 28 13:55:44 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 28 13:55:44 2012 -0700"
      },
      "message": "Fix a couple of rendering issues\nBug #7253839\n\n1. Make sure we don\u0027t make GL calls while recording display lists\n\n2. Disable an early and trivial clip optimization in font renderer\n   when a perspective transformation is used on the Canvas\n\nChange-Id: I3f1052164239329346854f72d0a0d401fbfecf06\n"
    },
    {
      "commit": "a852ff3a4b637e8101c2f54e110467586fe604cf",
      "tree": "0c940ea5314930c6fdbe15bfc1f4cc17c61d1b78",
      "parents": [
        "93aa70c6dfec91909404c9ade9b4a94574814092",
        "6ed9e43879039ce0cbead08d304edbce79a88ced"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 27 18:45:42 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 27 18:45:42 2012 -0700"
      },
      "message": "Merge changes I9873540e,I4f6c38e3 into jb-mr1-dev\n\n* changes:\n  Skia\u0027s ColorMatrix vector is in the 0..255 range not 0..1 Bug #7248980\n  Don\u0027t use the QCOM_tiled_rendering extension with functors Bug #7247880\n"
    },
    {
      "commit": "54c1a64d5441a964890b44280e4457e11f4f924a",
      "tree": "31e8837991a90927dfa925246df31b8e6ee36a18",
      "parents": [
        "d9730390c6bbac09107866462b9bf45d0b5706cf"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 27 17:55:46 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 27 17:57:24 2012 -0700"
      },
      "message": "Don\u0027t use the QCOM_tiled_rendering extension with functors\nBug #7247880\n\nChange-Id: I4f6c38e37b953c58e6107097c613891a49dac766\n"
    },
    {
      "commit": "cb4d6009576cf08195dc23f341a3f4939c0878bb",
      "tree": "234201781d7baaba35fc3baab178007ab03ea2df",
      "parents": [
        "fd3398c8bf25d8ec7ce813ebda431d67d734f268"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Sep 25 12:00:29 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Sep 26 14:38:11 2012 -0700"
      },
      "message": "Add stroke support to polygonal shape rendering\n\nbug:4419017\nbug:7230005\n\n- Adds support for stroke/strokeAndFill for shapes without joins\n- Fixes path-polygonization threshold calculation\n- Fixes rendering offset (now only used for points)\n- Several formatting fixes\n\nChange-Id: If72473dc881e45752e2ec212d0dcd1e3f97979ea\n"
    },
    {
      "commit": "e529ece37f664f8947a1d4a1e27d679f6f286388",
      "tree": "e085f6513391293f8d0b1c08d9241adc3e48c1e0",
      "parents": [
        "72a374705d32cf715443aa203f75c159e1bc9bd5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 26 11:23:17 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 26 11:23:17 2012 -0700"
      },
      "message": "Applies a layer\u0027s color filter even when the layer is a quad\nBug #7238059\n\nChange-Id: Ib4736a419bc1a9a67a01d090516ed049fe3aebca\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": "87e2f757be9b24d369bab354e37c276e851b1fc7",
      "tree": "dd8a123cd63666a7f767cb0c38afcc9726d007db",
      "parents": [
        "97dc9172b0e58979c63de0dedbab656399a62281"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Sep 24 11:37:12 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Sep 24 11:47:52 2012 -0700"
      },
      "message": "Add a property to disable libhwui\u0027s scissor optimization\nBug #7158326\n\nWhen scissor optimization is enabled, OpenGLRenderer will attempt to\nminimize the use of scissor by selectively enabling and disabling the\nGL scissor test.\nWhen the optimization is disabled, OpenGLRenderer will keep the GL\nscissor test enabled and change the scissor rect as needed.\nSome GPUs (for instance the SGX 540) perform better when changing\nthe scissor rect often than when enabling/disabling the scissor test\noften.\n\nChange-Id: Idb68862e287a23358f9188d577ae0f86161902fd\n"
    },
    {
      "commit": "8e586f61dd4f7fa53b01e63ac779ffc7cde05bdd",
      "tree": "8329d87f72780ef47d6d8c74ab46a56cca648bbe",
      "parents": [
        "88923c973e3b58593c4d0fb6724addcefc53004f",
        "7c450aaa3caac2a05fcb20a177483d0e92378426"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 21 19:28:05 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 21 19:28:06 2012 -0700"
      },
      "message": "Merge \"Add support for a new developer setting: overdraw debugging\" into jb-mr1-dev"
    },
    {
      "commit": "7c450aaa3caac2a05fcb20a177483d0e92378426",
      "tree": "986e53542f0b59d8108b366c5d4c4d8a3f04e51e",
      "parents": [
        "f7e52d92b41adf460089625ea47bfea2ed7e6296"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 21 19:15:00 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 21 19:15:00 2012 -0700"
      },
      "message": "Add support for a new developer setting: overdraw debugging\n\nChange-Id: I350ba4486577c3289f82c20938f7a35138778727\n"
    },
    {
      "commit": "61d37041ac76a95aedb98d3550bb5efa33d898a1",
      "tree": "cffd7916bceba166b3cff01054a092ca52c7bc44",
      "parents": [
        "739bc9e3f51c203fc0b58c30d67cacda985e95c6",
        "710f46d9d6a5bf9ea1c1833384caf61e1934124f"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Sep 21 11:03:59 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 21 11:03:59 2012 -0700"
      },
      "message": "Merge \"Polygonal rendering of simple fill shapes\" into jb-mr1-dev"
    },
    {
      "commit": "11cb642756093a4af901b1525375b1eb2b5c3e2b",
      "tree": "b412ad763bb1cc240c65c7545a208e4e709c0b30",
      "parents": [
        "3e87eafc7d1aef95801f1758bb78da8b2f960a75"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 21 00:39:43 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 21 00:39:43 2012 -0700"
      },
      "message": "Update layers in a single batch at the beginning of a frame\nBug #7186819\n\nChange-Id: Ice5926dfedfb3be3a3064e65008dafa2852407da\n"
    },
    {
      "commit": "57b5268708c3b974296c7d4e58a02a957979224a",
      "tree": "bb3a36e20b66edcbd7539aefd947c5b57d2897b3",
      "parents": [
        "314488b791d36756504ee593f818f04b4cd24893"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 20 17:38:46 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 20 17:38:46 2012 -0700"
      },
      "message": "Optimize tiling management\nBug #7186819\n\nChange-Id: Iebc42a6e9c96ad5605fbbe1539aa887695d2e829\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": "2b7028eabac80cec170572bc0e945a1d4224e595",
      "tree": "116f24c751ece653a5c1e08aa9c142ad1e142b25",
      "parents": [
        "4be07ade3658da9345067780520ddbd266900ee4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 19 17:25:38 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 19 21:10:09 2012 -0700"
      },
      "message": "Add support for QCOM_tiled_rendering\nBug #7186819\n\nThis optional OpenGL extension can be used by tiled renderers to optimize\ncopies from main memory to tiles memory.\n\nChange-Id: Id4a5d64e61ad17f50e773e8104b9bf584bb65077\n"
    },
    {
      "commit": "35643ddc689913f5b5f80ceed864470d987bd6cd",
      "tree": "db2ac0933bc52d1c71aa7d0edfd94c06dcc2cf2a",
      "parents": [
        "29d0aa73a099fde05c506857b5d215cde87b78d6"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Sep 18 15:40:58 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Sep 18 15:41:16 2012 -0700"
      },
      "message": "Minimize state changes when updating layers\n\nChange-Id: I407fcc80bd3178f9f09a3b379ceb7f7ce0749e08\n"
    },
    {
      "commit": "603f6de35f21d74ae242d52d501f4f5c25ff4f4c",
      "tree": "b249a7750a60b445a43670b7ba540beecbe715db",
      "parents": [
        "cc5dd18d15a174799ad79d26633c268e8860c8ab"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Sep 14 15:31:25 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Sep 17 11:21:34 2012 -0700"
      },
      "message": "Fix occasional crash bug with layers\n\nLauncher occasionally crashes with a stack trace indicating that the memory\nof a Layer object is corrupt. It is possible for us to delete a Layer\nstructure and then, briefly, use it to draw a DisplayList again before\nthat DisplayList gets recreated (without the layer that got deleted).\n\nWhen this happens, if the memory got corrupted, it\u0027s possible to crash.\n\nThe fix is to add Layer to the other objects which we currently refcount\n(bitmaps, shaders, etc.). Then instead of deleting a Layer, we decrement the\nrefcount. We increment when creating it, then increment it again when it\u0027s\nreferenced from a DisplayList. Then we decrement the refcount instead of\ndeleting it, and decrement when we clear a DisplayList that refers to it.\nThen when the refcount reaches 0, we delete it.\n\nIssue #6994632 Native crash in launcher when trying to launch all apps screen\n\nChange-Id: I0627be8d49bb2f9ba8d158a84b764bb4e7df934c\n"
    },
    {
      "commit": "45e4c3df6c00ac98ff6144de9af574877d4fff19",
      "tree": "206209b5faf3bb4c63366d29e8891bc53783d232",
      "parents": [
        "f625436cc741932518e5f1a41586c72ac8297ece"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Sep 11 17:17:07 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Sep 11 17:30:43 2012 -0700"
      },
      "message": "Discard framebuffer commands when we redraw the entire buffer\n\nChange-Id: I32e3014832cbd3bdbace8c3d2206eb20a2002d64\n"
    },
    {
      "commit": "beb8bd0db28d8c5cad2a258f2ba2f3b8b76cf037",
      "tree": "84add68f98d2850a7f2ad468310a052822d5c1b4",
      "parents": [
        "a3909a93958676d341424d574752bc7b3280d421"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Sun Sep 09 16:13:26 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Sep 10 08:56:55 2012 -0700"
      },
      "message": "Reset GL buffer state after functor invocation\n\nFunctors in WebView were binding to different buffers than we\nassumed in the toolkit, eventually causing a crash due to improper\ndereferencing in the currently bound buffer. Fix is to reset state\nafter invoking functors.\n\nIssue #6666279 Native crash in Currents, mostly on Nakasi\n\nChange-Id: I3697812d83613fffc9193daa99beea4dbf26474a\n"
    },
    {
      "commit": "dc531fa7d4ec545ace1b3daae0849d3101102e49",
      "tree": "4023b7ace3d64ac779e138d2ea5fce4480ebbaca",
      "parents": [
        "330a5bf82e60fca9591f14a4db5ee98066c610d1",
        "75040f8a7727f18bb33da23696a32a0760926ff2"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Sep 07 15:27:05 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 07 15:27:05 2012 -0700"
      },
      "message": "Merge \"Handle different x, y scales in drawLines AA path\" into jb-mr1-dev"
    },
    {
      "commit": "75040f8a7727f18bb33da23696a32a0760926ff2",
      "tree": "9f32eb9b41df3c09ce0f27abae389695eaa3ff3d",
      "parents": [
        "9147cd4ac56d53dec6da1ef13dd04ba1eec1a7df"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Sep 07 13:56:43 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Sep 07 15:20:38 2012 -0700"
      },
      "message": "Handle different x, y scales in drawLines AA path\n\nbug:7114630\n\nFixes different x, y scales, and fixes boundaryWidthProportion to be from\ncenter, not edge.\n\nAlso adds drawLine tests that previously drew blurry.\n\nChange-Id: I2b648a60361ad3931eac67647b9b27909525ee1e\n"
    },
    {
      "commit": "d15ebf25c595b855f6978d0600218e3ea5f31e92",
      "tree": "35154bd1ec18cf8299a0d737847291ab28a5c98b",
      "parents": [
        "4db5d23deab9ea8de34cdb1c56af31e6e3cff79b"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Sep 05 11:40:29 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Sep 07 13:27:02 2012 -0700"
      },
      "message": "Enable changing properties of layer paint\n\nPreviously, to draw a layered view with a changed Paint object for the\ndrawLayer operation, you\u0027d have to invalidate the parent view, to get the\nnative DisplayList to pick up the new Paint properties. This change adds\nAPI and functionality so that the developer can call setLayerPaint(), which\ndoes the proper invalidation (lightweight, doesn\u0027t cause redrawing the view).\n\nIssue #6923810 Make it easy to efficiently animate a layer\u0027s Paint\n\nChange-Id: I7fea79788d50f6d9c86dd5e5b2a4490cb95142bb\n"
    },
    {
      "commit": "9147cd4ac56d53dec6da1ef13dd04ba1eec1a7df",
      "tree": "b2b281f65745e56c0f3db9abb6b75be001efa12e",
      "parents": [
        "fb3ec448f1208d75edebff0e93fa97a8913ff29e"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Sep 06 16:44:51 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Sep 06 16:44:51 2012 -0700"
      },
      "message": "Fix m11 to be Y scale instead of X\n\nbug:7114630\n\nFixes different X and Y values resulting in blurry lines/rects.\n\nChange-Id: I3eb244e0cf769efa6b38d08741cf37d0bf62b786\n"
    },
    {
      "commit": "378d131e65348d199db36c21ba7156542bbf0045",
      "tree": "b2e41ab4962973acea7fe8a3b9b3f97581ead2be",
      "parents": [
        "369bb97d02209fa800081fc3b4e8675ea7e75d34",
        "6ebdc114e0d72137394f02bc8ffe9d7a782a65c4"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Sep 06 10:52:13 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 06 10:52:14 2012 -0700"
      },
      "message": "Merge \"Varying-based AA rect drawing\" into jb-mr1-dev"
    },
    {
      "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": "d84aaa23a53b57834b0722ad36c460833dc4823c",
      "tree": "8e49bb44218800edd1d7645828ba1cb4d60b83d6",
      "parents": [
        "c83f982804e39b957fbef5bc3ecab163e03b216e",
        "8f5ad7657b6c7cdb8927d7da5140602b68b450ac"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Sep 04 16:56:16 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 16:56:16 2012 -0700"
      },
      "message": "Merge \"Fix line drawing path to use proportional distance from center\" into jb-mr1-dev"
    },
    {
      "commit": "8f5ad7657b6c7cdb8927d7da5140602b68b450ac",
      "tree": "2df87bbf09f8d9c202d5b1ec1ce7c21dd87f8da0",
      "parents": [
        "176d105d2f71198966b566d36d4e856a797695c7"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Sep 04 14:35:19 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Sep 04 14:35:19 2012 -0700"
      },
      "message": "Fix line drawing path to use proportional distance from center\n\nboundaryWidth and boundaryLength are now distance from center, instead of\ndistance from edge, in order to avoid unnecessary calculation in the shader. New\ncalculation of these matches drawAARect.\n\nChange-Id: I1c7f576a97a6f0ce00d521661fd56fb62e05e6f2\n"
    },
    {
      "commit": "0baaac5e9adf3ee280ae1239e2e58754a9d2b099",
      "tree": "430a7392973ff3dc04089cc2b3550afcdde673de",
      "parents": [
        "a8557d2169e14997637f57bc897640c8882d4a46"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 31 20:31:01 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 31 20:31:32 2012 -0700"
      },
      "message": "Revert \"Revert \"Add more support for transformed clip rects and paths\"\"\n\nThis reverts commit a8557d2169e14997637f57bc897640c8882d4a46.\n\nChange-Id: I36d4883d548fc47ba6c0b4a42012107d0d2f85a6\n"
    },
    {
      "commit": "a8557d2169e14997637f57bc897640c8882d4a46",
      "tree": "7b2266c166f65ef186e913f18110dab6bbd7d9e8",
      "parents": [
        "703bd32647556524fa8cadbe869c8a8d734640ef"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 31 19:52:30 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 31 20:04:18 2012 -0700"
      },
      "message": "Revert \"Add more support for transformed clip rects and paths\"\n\nthis introduced a dead lock in GradientCache\u0027s ctor.\n\nThis reverts commit dfe082f63e94cde9aee271c94d13de5e7217e036.\n\nBug: 7096001\nChange-Id: I57b8bbab11fb7cb502fa58e3bbf5d19864db874f\n"
    },
    {
      "commit": "dfe082f63e94cde9aee271c94d13de5e7217e036",
      "tree": "938584a2a121427d00521a10fe95ce0e34588a06",
      "parents": [
        "fbb4321b94927fd6bd39d327fe56787989b11c71"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 31 17:14:30 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 31 17:17:40 2012 -0700"
      },
      "message": "Add more support for transformed clip rects and paths\n\nChange-Id: I41791b1e1bffef77d503dc9e52428395d2309688\n"
    },
    {
      "commit": "63f2fcae3e7089ce0e27837a5152392d503f41eb",
      "tree": "f4e1e7c8b56fbf92c95855c7a1d8a58a7de0e4c7",
      "parents": [
        "428f53937efdc362b60d01592bd01c568691f70e",
        "d48885a6c8cd27a8a62552c33b5282e9882e19f6"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Aug 30 07:22:36 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 30 07:22:37 2012 -0700"
      },
      "message": "Merge \"Fix bug with Fbo layer clipping\" into jb-mr1-dev"
    },
    {
      "commit": "d48885a6c8cd27a8a62552c33b5282e9882e19f6",
      "tree": "4f072606d96207049d37be3a5e8035514e923a35",
      "parents": [
        "71d7c3c628fbce04b8bdb60f127588ada00bae13"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue Aug 28 17:43:28 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Aug 29 17:41:49 2012 -0700"
      },
      "message": "Fix bug with Fbo layer clipping\n\nRendering views with alpha causes the creation of Fbo layers. These layers\nare created at the size of the view, clipped by the current clip rect.\nHowever, if the view lies completely outside the current clip rect, the\nFbo layer is created at the full size of the view and copied into place\noutside of its container, causing artifacts like notification items showing\nup outside the notification panel.\n\nFix is to note when the intersect() operation fails and to set an empty bounds\non the layer.\n\nIssue #7069881 Bottom notification sometimes shows below bottom of notification panel shade\n\nChange-Id: Ib52f7c4e503bbe9204cb808755ab269195aa94c1\n"
    }
  ],
  "next": "a798b95a9ef328720febec72d01462cd97e3d4c7"
}
