)]}'
{
  "log": [
    {
      "commit": "25d2f7bc1ff9b475eff75bfff647466e91dbacb2",
      "tree": "2a4dc136adae063c2018ce35bd3e8f9944a15d92",
      "parents": [
        "b776122a8aa9fd082fa8aaa216c8a589d709c4c9"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Sep 10 13:12:09 2013 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Sep 10 20:45:29 2013 +0000"
      },
      "message": "Fix scissor for functor invocation\n\n Bug: 10677765\n enableScissor() must precede setScissorFromClip() as\n otherwise setScissorFromClip() doesn\u0027t do anything.\n Also make sure to call setScissorFromClip() if\n enableScissor() returns true as enableScissor() calls\n resetScissor() if the scissor state has changed.\n\nChange-Id: I9226b20bb256c92066aae344e4e6407540b6eae9\n"
    },
    {
      "commit": "9578e642403c0fa4fdcb32828f27c2417cabe88d",
      "tree": "34e95855ef8c2e7b080106bb83d7fccfbc9fb17a",
      "parents": [
        "16c3220734f3cbf32c0148d82815d93e2f28af65"
      ],
      "author": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Mon Sep 09 16:15:56 2013 -0700"
      },
      "committer": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Mon Sep 09 16:23:27 2013 -0700"
      },
      "message": "Add flags word to initialization.\n\nbug 10427951\n\nChange-Id: I1356b9b96315ead44aa3898de5604d75f9bb8be5\n"
    },
    {
      "commit": "66063ae2d6ff523bbf200cccdb9223d824c240a4",
      "tree": "ba09faecc2c98a10482c97b0640143fd8ec42737",
      "parents": [
        "0cdc24a2fb5268241cf16c6b28a4a3b58965a2c8"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Sep 05 16:11:18 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Sep 05 16:11:18 2013 -0700"
      },
      "message": "Dump the right matrix when logging display lists\n\nbug:10631274\nChange-Id: I6b32bfcb3e207321da60807091d7ac0ecf6112ab\n"
    },
    {
      "commit": "54f574acf4dd5483170b8f79e2f7c70b58763ce7",
      "tree": "8d97e104903d19019cb538fef06fac6597d384ba",
      "parents": [
        "5bc1ea4e4ae0133d4d5eaa4ac98cf4719effd032"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Aug 26 11:23:46 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Aug 26 11:23:46 2013 -0700"
      },
      "message": "Move functor GL setup to just before functor\n\nbug:10399469\n\nBecause the stencil setup can issue draws, it *must* come before the\nGL state setup.\n\nChange-Id: I52a36213549fc60b091a90cbb923a1f0d35f9a65\n"
    },
    {
      "commit": "5d923200846ed59e813373bde789d97d4ccc40b5",
      "tree": "db2f874cf61f812c4aa359f07d49525d8da82de8",
      "parents": [
        "0a8c51b1d0d66d6060afcec1eab33091d49332ae"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 21 18:40:24 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 21 18:42:46 2013 -0700"
      },
      "message": "Second attempt at avoiding infinite loop in PathCache::trim()\nBug #10347089\n\nChange-Id: I70f5a3933e848632473acc6636c88be5dc6ac430\n"
    },
    {
      "commit": "0a8c51b1d0d66d6060afcec1eab33091d49332ae",
      "tree": "28e92fa12d2a53e6521469cc8ef6c5024b7cc5b2",
      "parents": [
        "627c6fd91377ead85f74a365438e25610ef1e2ee"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 21 17:35:38 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 21 17:35:38 2013 -0700"
      },
      "message": "Properly account for created paths in the cache\n\nChange-Id: I47b89b3085cefab6daac9194e7bfd3c140b37fa2\n"
    },
    {
      "commit": "627c6fd91377ead85f74a365438e25610ef1e2ee",
      "tree": "3fad6c0a8a6fb3e4c88702b6a407a0fdd75be065",
      "parents": [
        "906da6bfe4092fda1daff63e00e9f2ce1daac00b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 21 11:53:18 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 21 11:53:18 2013 -0700"
      },
      "message": "Add overdraw debugging that accounts for Deuteranomaly\n\nChange-Id: I31f68a07aa7cf0490d2572e24e4c5ac2066a1151\n"
    },
    {
      "commit": "d8c8aaa82ef90f30df647ca42453e953ee52af0f",
      "tree": "bceb079beb618fd8122b18b7da7218442e7080f7",
      "parents": [
        "7e7f8d48a62a972ad18af2d222a011a1dd0c8928"
      ],
      "author": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Mon Aug 19 12:04:38 2013 -0700"
      },
      "committer": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Mon Aug 19 12:07:52 2013 -0700"
      },
      "message": "Handle updates to C++ API.\n\nChange-Id: I8ab17cbae3a9a4cc3c3202b8277d49f27bdf1fec\n"
    },
    {
      "commit": "46bfc4811094e5b1e3196246e457d4c6b58332ec",
      "tree": "10644c6a2e5dc6714be21a974fb86ce977d5bdf5",
      "parents": [
        "b0a41ed3dcc34a2b4026f6cc8336796f3523aa21"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 16 18:38:29 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 16 18:38:29 2013 -0700"
      },
      "message": "Fix hardware layers lifecycle\nBug #10075732\n\nHardware layers could survive across EGL terminate events.\n\nChange-Id: Ie8565d55cb29fe6625fa1584d695edfecd37ab5e\n"
    },
    {
      "commit": "b0a41ed3dcc34a2b4026f6cc8336796f3523aa21",
      "tree": "f3be3328e2c2ca0d70c95dd26d605a638c4a6cc4",
      "parents": [
        "b746371de7f21ae36a14953d9b253df06838efb1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 16 14:44:38 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 16 14:44:38 2013 -0700"
      },
      "message": "Prevent ANR in apps using drawPath()\nBug #10347089\n\nIf an app clears its path cache before stopping background tasks, it could\nget into an infinite loop in PathCache::trim().\n\nChange-Id: Ieb865b762e7b00aebaba0c023769c2db286a94f5\n"
    },
    {
      "commit": "b746371de7f21ae36a14953d9b253df06838efb1",
      "tree": "e53554662b63a290d109437cf5533ad61f2f5c68",
      "parents": [
        "0a94b9ce277ef2ec79902e3c576a50ab438dca97"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 16 13:55:29 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 16 13:55:29 2013 -0700"
      },
      "message": "Clear FBO cache on full memory flush\n\nChange-Id: I44e06d5d15cd899a0522c62d7c0d042170665abb\n"
    },
    {
      "commit": "723b2feb929b96b1dde40a865c49ea18bc42f055",
      "tree": "31415cd1bef736d7da007944999064ffad63b822",
      "parents": [
        "9a68f82f3730432399618bf2e4f73208f84dc87f"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Mon Aug 12 14:38:44 2013 -0700"
      },
      "committer": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Mon Aug 12 15:12:49 2013 -0700"
      },
      "message": "fix kBW_Format glyphs\n\nOops! kBW_Format was omitted from a couple of switch statements,\nresulting in glyphs in that format being invisible.\n\nBug: 10206452\nChange-Id: Ib2aa52250aeeecc0de1b1b78e3d0f568f368c73e\n"
    },
    {
      "commit": "9b5a1a28c327e6113d68302b1f0eed1d1c6f6183",
      "tree": "6b6bb3bc658bf948b5211e7bbde72a19140dba6e",
      "parents": [
        "d81a15c6b77c94109d0a08bc7355f62301fe9234"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 09 14:06:29 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 09 14:06:29 2013 -0700"
      },
      "message": "Take shadow bounds into account for quick rejects\nBug #8634346\n\nChange-Id: I995c5205c2959d8e4da638ae47fedcda92eb1b36\n"
    },
    {
      "commit": "003123004f7b23b3dc472d5c40b8c1a16df37a54",
      "tree": "974c2608d0f3f2477acb6da24b9a935f44952033",
      "parents": [
        "37ee68fc091f64e17c0ef29b123b782b6daecf16"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 08 19:11:20 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 09 03:52:29 2013 +0000"
      },
      "message": "Remove an unnecessary allocation\n\nAlso remove dead code from OpenGLRenderer.cpp\n\nChange-Id: I7eb54ca19e77ee3c32f1fe9513a031e6b2e115cf\n(cherry picked from commit 5c7d5ab878b26f855175a3305a14ac12fcacf25e)"
    },
    {
      "commit": "7f6d6b0370df4b5a9e0f45bffc31ea6caeeb509d",
      "tree": "00e4cbd5c4b2f7e27d4c4f42ea05bdee576a0766",
      "parents": [
        "605ca203782781aa023b5b2963edbf2966379c45"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 06 13:49:28 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 06 18:35:01 2013 -0700"
      },
      "message": "Split assets atlas batches\nBug #10185769\n\nThe assets atlas contains assets that need to be blended and assets\nthat do not need to be blended. With a single merge id, currently\nset to be the pointer to the atlas itself, draw ops merging could\ngenerate batches of commands containing both opaque and translucent\nassets. The blend state was chosen from only one of the assets in\nthe batch, leading either to inefficiencies (blending large opaque\nassets) or incorrect behaviors (not blending translucent assets.)\n\nThis change introduces two new merge ids in the atlas: an opaque\nkey and a blend key. These keys are simple booleans set to false\nand true respectively (the values do not matter really.) Their\nmemory addresses are used as the merge ids when createing draw ops\nbatches, allowing all opaque ops to be batched together and all\ntranslucent ops to be batched together.\n\nChange-Id: I114dba0533c44987e53864b471ccb28c811f2025\n"
    },
    {
      "commit": "83ad4e393ae8223745924ac9b37949c8efbce3f2",
      "tree": "469ca23b4b673f98a9c5e17983778b3b41201443",
      "parents": [
        "0281b406365080bce90d8562950cfcfd83b48303"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 05 13:27:39 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 05 14:12:50 2013 -0700"
      },
      "message": "Remove an unused C zip API.\n\nChange-Id: I10ae849bdedf3e3bb97547c4f9e5a20742e9d6b1\n"
    },
    {
      "commit": "250b1cfc831fd2a271c09cab547efcc5e3d5f828",
      "tree": "bf502f12f2488e26c1fd3e4978cf2eced0ea7e0e",
      "parents": [
        "bb9b30078739dba99ffa094b35fde0118c245097"
      ],
      "author": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Thu Aug 01 14:49:22 2013 -0700"
      },
      "committer": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Fri Aug 02 15:31:29 2013 -0700"
      },
      "message": "Handle updates to RS C++ API.\n\nChange-Id: I73127fc7369643b94d4a49f31a516b50c74b54ac\n"
    },
    {
      "commit": "b213cec0ce659c1e35c3e7f60a61bae38d94482a",
      "tree": "3fc40dd88060676ff462c836a548615ddef05ffe",
      "parents": [
        "03ed0127dae141d99b003ede9ba3ea937128e471",
        "5e49b307eb99269db2db257760508b8efd7bb97d"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Aug 02 20:34:38 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 02 20:34:38 2013 +0000"
      },
      "message": "Merge \"Fix quickReject\u0027s handling of AA ramp geometry\""
    },
    {
      "commit": "5e49b307eb99269db2db257760508b8efd7bb97d",
      "tree": "18c9f02b947e99fe8aa5b27074725b11fc6df2ba",
      "parents": [
        "cb9accefb19ba6ae6fd449dc9ab62e972b51335c"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 30 19:05:20 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Aug 02 11:29:22 2013 -0700"
      },
      "message": "Fix quickReject\u0027s handling of AA ramp geometry\n\nBy having quickReject round out the window-space geometry bounds, we\nprevent the AA perimeter (which falls outside the local bounds passed\nin) from drawing outside the clip.\n\nChange-Id: I8ee36be9039a9c47906815ee2f0dbaa5eb910b82\n"
    },
    {
      "commit": "b7b93e00893f5c690a96bd3e0e10583bc5721f83",
      "tree": "89c975e81ab527630ab4c10478b80bca12593d24",
      "parents": [
        "5d3dff1d66f99fbd5bef9178e62d789119c02ad1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 01 15:29:25 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 01 15:35:24 2013 -0700"
      },
      "message": "Fix region clipping bugs\nSee external bug #58344\n\nChange-Id: Iecd6c41fc8076cd76add2335d3442a6dd8878f12\n"
    },
    {
      "commit": "f296e317fb44ac33fe5294fcfe0cc1218ca5b86c",
      "tree": "92d228d6e902f5f34ed05599db843216a689d9ea",
      "parents": [
        "2f3efcf1078b051205c2b6708a79f176fa943d17",
        "1e546815bbb736c50679a8aefc25f48561026fc5"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Thu Aug 01 14:40:53 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 01 14:40:54 2013 +0000"
      },
      "message": "Merge \"Support RGBA fonts and bitmap fonts (and RGBA bitmap fonts)\""
    },
    {
      "commit": "d45c68dd24fe3dd510af5a9591b5e2f509b56772",
      "tree": "f9a3d18ecce9509eddcc2b4c5899e2b7c90765a2",
      "parents": [
        "af728bd201195799c8e993ece145d607b9ca67df"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 31 12:14:24 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 31 15:57:49 2013 -0700"
      },
      "message": "Resource memory optimization.\n\nDon\u0027t ever need the cached UTF-16 string conversions on the\ndevice.  Don\u0027t need to create those strings, and don\u0027t need\nto create the lookup array for them at all.  This requires\nfixing all of the remaining places in the platform where we\ninteracted with the resources with the blind assumption that\nthe strings are UTF-16.\n\nChange-Id: Ia0e5a150499837471e494e85b23b05fa06e0cf1d\n"
    },
    {
      "commit": "1e546815bbb736c50679a8aefc25f48561026fc5",
      "tree": "11a3b7106638c123d052d50ce3e2a1757e004cb4",
      "parents": [
        "3a6f25512c0a682b10961a5a7428e3393ffb0b75"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Tue Jun 25 14:25:17 2013 -0700"
      },
      "committer": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Wed Jul 31 15:50:47 2013 -0700"
      },
      "message": "Support RGBA fonts and bitmap fonts (and RGBA bitmap fonts)\n\nQuite a few things going on in this commit:\n\n- Enable bitmap strikes by default in Paint objects.\n\nThe SkPaint parameter that enables bitmap strikes was not previously\nincluded in DEFAULT_PAINT_FLAGS. This effectively disabled bitmap\nfonts. Oops! It\u0027s for the best, though, as additional work was needed\nin Skia to make bitmap fonts work anyway.\n\n- Complain if TEXTURE_BORDER_SIZE is not 1.\n\nOur glyph cache code does not currently handle any value other than 1\nhere, including zero. I\u0027ve added a little C preprocessor check to\nprevent future engineers (including especially future-me) from\nthinking that they can change this value without updating the related\ncode.\n\n- Add GL_RGBA support to hwui\u0027s FontRenderer and friends\n\nThis also happened to involve some refactoring for convenience and\ncleanliness.\n\nBug: 9577689\nChange-Id: I0abd1e5a0d6623106247fb6421787e2c2f2ea19c\n"
    },
    {
      "commit": "fb6c743c6e01aa2d4c457d85389a698a193c60b8",
      "tree": "1ef3aed292e3ab91ecd8da467c64b7675e60e710",
      "parents": [
        "87c79a18fe03de3b141b95336199b7504ac95c6c",
        "6cad75744ed3b81cf2c96f545368067b62c726ec"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 24 18:54:11 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 24 18:54:11 2013 +0000"
      },
      "message": "Merge \"Fix 9patches\u0027 limitation of 32 empty quads\""
    },
    {
      "commit": "6cad75744ed3b81cf2c96f545368067b62c726ec",
      "tree": "42028d937d8071bbd1e58029da66a20e39346b1c",
      "parents": [
        "4a8baef3f56042ab4592db030c61af0a4c632d15"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 24 11:49:33 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 24 11:49:33 2013 -0700"
      },
      "message": "Fix 9patches\u0027 limitation of 32 empty quads\n\nThe 9patch format allows to define more empty quads than this, remove\nthe use of a single int to index empty quads and replace it with a\nlookup in the 9patch resource data structure.\n\nChange-Id: I148ee5d9e0c96822b534a344e15c9d88078db7c2\n"
    },
    {
      "commit": "0d6e7315eb302b5402535dca87ac2c4dad4709b8",
      "tree": "5cfe7ff4c350d85d457e1d2bfc054a018d7893fb",
      "parents": [
        "e58bb044701d0b092fb09103f14d9406a497c65b"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jul 23 17:31:18 2013 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jul 23 18:04:24 2013 -0700"
      },
      "message": "add static dependency on liblog\n\nChange-Id: I8056aa744b37ef0c31229329a0de79c58c5955ea\n"
    },
    {
      "commit": "98427708a81eefcc24ae29e2f22e55f1ae44c927",
      "tree": "b541f690c964d8bce9562a93203dd7aeb5ad909b",
      "parents": [
        "fd23eca5ba30a1624233c9597f8c4b9db790994b",
        "9ab2d1847552aa4169b4325aae1b1368d6947a9f"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jul 22 23:31:18 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 22 23:31:20 2013 +0000"
      },
      "message": "Merge \"Ensure glActiveTexture is cleaned up correctly on functor resume\""
    },
    {
      "commit": "9ab2d1847552aa4169b4325aae1b1368d6947a9f",
      "tree": "52955e896e6f021961bbfc9dd52003c918fdbb50",
      "parents": [
        "7bfddb5434736a26fa9b32d7cd1741067169ae74"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jul 22 16:16:06 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jul 22 16:21:55 2013 -0700"
      },
      "message": "Ensure glActiveTexture is cleaned up correctly on functor resume\n\nChange-Id: I103d7d63b17289d599c2c08dcc442cfba9b8e51d\n"
    },
    {
      "commit": "448455fe783b0a711340322dca272b8cc0ebe473",
      "tree": "e67a3894b8d1fc2cdfd08e7f45ff54c37070d279",
      "parents": [
        "e4d4e20e8f84d53b4b7198300baaf3e21ff9be58"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 22 13:57:50 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 22 14:37:21 2013 -0700"
      },
      "message": "Use global indices array to draw layers\n\nAn array of indices local to a layer would only be necessary if\nwe changed the way we resolve T-junctions. Since we only ever\ndraw quads, let\u0027s just use the indices we use everywhere else.\n\nThis change also uses the global indices array to render list\nof colored rectangles to save on the number of vertices generated\nCPU-side.\n\nChange-Id: Ia6d1970b0e9247805af5a114ca2a84b5d0b7c282\n"
    },
    {
      "commit": "b3d83888229d9a9d40c3ada037fcf6f96e80e125",
      "tree": "f4e5d9c893f107e7dec327b5840694590532bf45",
      "parents": [
        "07c09ce248db379c7c4f515c2c84611c9f258dd3",
        "ecca6da4eab601f05a9d977c8d2651068b6e16b2"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 16 22:43:01 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 16 22:43:02 2013 +0000"
      },
      "message": "Merge \"Support stencil-based clipping for functors\""
    },
    {
      "commit": "4e7b772b733593fbe25c733e95b8dcea293234b6",
      "tree": "26acbca3bc0a543bf90655412f04d3b4ae86fb0b",
      "parents": [
        "d91f8af40b8f9eb8752c432315c619e90d095b6a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 16 13:47:01 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 16 14:52:55 2013 -0700"
      },
      "message": "Fix crashes in setMatrix() and concat()\n\nsetMatrix() was crashing in native code, only with hw acceleration on.\nconcat() would throw a NullPointerException. It now ignores null matrices.\n\nChange-Id: Iebd8b410a957d2ba501570c6fbb3f680ff4a1a23\n"
    },
    {
      "commit": "ecca6da4eab601f05a9d977c8d2651068b6e16b2",
      "tree": "d7b3d39eb65155174cafe6c3033be0917bde15ed",
      "parents": [
        "e77d6dd94371b97a8fac21a60b804b4f99559eab"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 16 13:27:18 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 16 13:27:18 2013 -0700"
      },
      "message": "Support stencil-based clipping for functors\n\nbug:9070351\nChange-Id: I1c54e1bea1b84b1619cce27b14f189b42cab7062\n"
    },
    {
      "commit": "0c20c3898a533b7b76f60827cb6ea02e17c5953d",
      "tree": "15a488db02872005937082b918bfe108eeae1282",
      "parents": [
        "e969964c80a20b2d968b4ee54495176c9049d3e3"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 02 10:48:54 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jul 08 11:08:02 2013 -0700"
      },
      "message": "Use global references for Bitmap AndroidPixelRefs\n\nbug:9621717\n\nBecause we\u0027re no longer holding onto Bitmaps Java side during\nDisplayList lifetime, use global refs to keep the backing byte arrays\naround.\n\nAdds back bitmap buffer passing + native ref management removed by\n3b748a44c6bd2ea05fe16839caf73dbe50bd7ae9\n\nAdds back globalRef-ing removed by\nf890fab5a6715548e520a6f010a3bfe7607ce56e\n\nChange-Id: Ia59ba42f05bea6165aec2b800619221a8083d580\n"
    },
    {
      "commit": "9d3b1a424c5c61e24e9659d15fb353026a00d925",
      "tree": "0e543391e3ac7b6ac0bff377e08cd2e233ef7363",
      "parents": [
        "8f5e3d13e166e4873e130a5ef7c987333dbac917"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 01 19:07:15 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 01 20:11:42 2013 -0700"
      },
      "message": "Move input library code to frameworks/native.\n\nNo longer compile libandroidfw as a static library on the device\nsince it already exists as a shared library.  Keeping the static\nlibrary would force us to provide a static library version of\nlibinput for the device as well which doesn\u0027t make sense.\n\nChange-Id: I3517881b87b47dcc209d80dbd0ac6b5cf29a766f\n"
    },
    {
      "commit": "c36fe2fc5354fadc140c898f59d47859cbdeac67",
      "tree": "a238c4eb527573da5ecbc3ac4c31a240a4a1eb3c",
      "parents": [
        "1e09cfaa689cff21d3d00883d38af5c296859fdb",
        "55e789dbc782be0dcaf1d4bae5f32e9e2f674152"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 28 11:15:02 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 28 11:15:02 2013 -0700"
      },
      "message": "am 55e789db: am ed96349a: am 3d1b158e: Merge \"Fix out of range glCopyTexImage2D Bug #9425270\" into jb-mr2-dev\n\n* commit \u002755e789dbc782be0dcaf1d4bae5f32e9e2f674152\u0027:\n  Fix out of range glCopyTexImage2D Bug #9425270\n"
    },
    {
      "commit": "b254c242d98f4a9d98055726446351e52bece2c6",
      "tree": "69df91645e499216cadb4e9ba11e57bc32b2d681",
      "parents": [
        "e6cb43a1ea50681d2da30ce5e8cb5ac97e80e88a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 27 17:15:24 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 27 17:15:24 2013 -0700"
      },
      "message": "Fix out of range glCopyTexImage2D\nBug #9425270\n\nA better solution would be to use glCopyTexImage2D whenever possible but\nthis change would be a little more dangerous.\n\nChange-Id: Ib1aaceda39d838716285ef97f356721416822dbb\n"
    },
    {
      "commit": "55b6f95ee4ace96c97508bcd14483fb4e9dbeaa0",
      "tree": "f66490c89db4ac96004144731a89d1956108f1a0",
      "parents": [
        "9feab843ac8139f4e971d93fd767470d0d727e41"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 27 15:27:09 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 27 15:40:46 2013 -0700"
      },
      "message": "Track the atlas\u0027 generation ID\nBug #9589379\n\nIf the atlas is terminated/reinitialized and a view does not invalidate\nin between it might end up using a stale AssetAtlas::Entry. This change\nis similar to how 9patch meshes are cached in DrawPatchOp: we simply\ntrack the generation ID of the cache to make sure we always use the\nlatest data.\n\nChange-Id: Ib5abb3769d2ce0eabe9adc04e320ca27c422019e\n"
    },
    {
      "commit": "e3b0a0117a2ab4118f868a731b238fe8f2430276",
      "tree": "a4a6ac3783ace541cd35a0f9d3868af6d2bf97b7",
      "parents": [
        "89dc02a9bed818cc6f5296c97eb504ccb010db42"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 26 15:45:41 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 26 17:15:08 2013 -0700"
      },
      "message": "Refcount 9-patches and properly handle GC events\n\nThis change adds refcounting of Res_png_9patch instances, the native\ndata structure used to represent 9-patches. The Dalvik NinePatch class\nnow holds a native pointer instead of a Dalvik byte[]. This pointer\nis used whenever we need to draw the 9-patch (software or hardware.)\n\nSince we are now tracking garbage collection of NinePatch objects\nlibhwui\u0027s PatchCache must keep a list of free blocks in the VBO\nused to store the meshes.\n\nThis change also removes unnecessary instances tracking from\nGLES20DisplayList. Bitmaps and 9-patches are refcounted at the\nnative level and do not need to be tracked by the Dalvik layer.\n\nChange-Id: Ib8682d573a538aaf1945f8ec5a9bd5da5d16f74b\n"
    },
    {
      "commit": "f296dca95f09be9832b5dcc79717986525d2b6cb",
      "tree": "7fda09c7b293823c59d63c08370369c45690a95d",
      "parents": [
        "066bdcfe83e49ad4bfb97670521c1b7e7297ba53"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jun 24 14:33:37 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jun 24 16:45:41 2013 -0700"
      },
      "message": "(Small) 9patch drawing improvements\n\nSave a bit of memory in meshs generated from native code\nAvoid an extra if/else when drawing with hardware accelration on\n\nChange-Id: I31a4550bde4d2c27961710ebcc92b66cd71153cc\n"
    },
    {
      "commit": "4f20f8ae50ecc3b6c04afd2e62716ca87620962b",
      "tree": "e3cb9ca5ce19b83bc351323111b9be7082fb883e",
      "parents": [
        "b06accf34f53956a5ccd44cecc3604cc2d166cd7",
        "0e87f00f8cb79635aa70b9a2dfa02bf19dc7473d"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jun 21 20:51:54 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 21 20:51:54 2013 +0000"
      },
      "message": "Merge \"Initialize MergingDrawBatch clip with viewport bounds\""
    },
    {
      "commit": "0e87f00f8cb79635aa70b9a2dfa02bf19dc7473d",
      "tree": "f109c7a20dc65947e8d69cd274a10b512a46d940",
      "parents": [
        "2c290392c9a934f9ac48364af01c848b01ba8e80"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jun 19 16:54:59 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jun 21 13:16:31 2013 -0700"
      },
      "message": "Initialize MergingDrawBatch clip with viewport bounds\n\nThis allows merged, clipped operations to behave correctly within a\nsavelayer, even if the base viewport has a large offset.\n\nAdditionally, disregard opaqueness when within a\ncomplexclip/savelayer, as the coverage can\u0027t be trusted.\n\nChange-Id: Ic908b82a4bb410bc7fac1b4295f4874ed166efc5\n"
    },
    {
      "commit": "64d592129e4f5231f61ac2b6055e1b37f8c0ebb6",
      "tree": "8e56629d2d87b17c93e170d5059da540552ff099",
      "parents": [
        "b38d53dacb4289bd96e1dbfa6211ffa734281c57",
        "16ea8d373b03b1e115dd505af70dbee4e3a3a182"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 21 18:37:56 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 21 18:37:56 2013 +0000"
      },
      "message": "Merge \"Refcount the paint used by Canvas.drawPatch()\""
    },
    {
      "commit": "16ea8d373b03b1e115dd505af70dbee4e3a3a182",
      "tree": "8f1f6bc7c67d520fce80fa7d87d9f8e7d8c82fe0",
      "parents": [
        "03c00b5a135e68d22ca5bb829b899ebda6ed7e9d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 21 11:35:52 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 21 11:35:52 2013 -0700"
      },
      "message": "Refcount the paint used by Canvas.drawPatch()\n\nPrevents crashes :)\n\nChange-Id: I62103ce97490613142321f080b82c2edaed67a95\n"
    },
    {
      "commit": "2c290392c9a934f9ac48364af01c848b01ba8e80",
      "tree": "6450396c938fb0216b5f958f24d49e5bd0d34af2",
      "parents": [
        "ede7eb7749e08b6343955cf52304a17f21c54e6f",
        "03c00b5a135e68d22ca5bb829b899ebda6ed7e9d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 21 17:42:23 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 21 17:42:23 2013 +0000"
      },
      "message": "Merge \"Batch 9-patches in a single mesh whenever possible\""
    },
    {
      "commit": "ede7eb7749e08b6343955cf52304a17f21c54e6f",
      "tree": "603d4fe4c4c512e5213c8588b19e8ed09496f2bd",
      "parents": [
        "3b8b276644c5ee1ebcd73b5b1981d7e54a29561b",
        "c5493fb7fa1f6995955c667d4377f2337f2cf465"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jun 21 17:39:14 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 21 17:39:14 2013 +0000"
      },
      "message": "Merge \"Make op outputting const, for more general logging\""
    },
    {
      "commit": "03c00b5a135e68d22ca5bb829b899ebda6ed7e9d",
      "tree": "7538aa95ebbfb5c06aaaebbd22966cddcce2ee1e",
      "parents": [
        "d485ef27c795648c4a05c4c089e8c5a15712fd36"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 20 18:30:28 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 21 10:13:58 2013 -0700"
      },
      "message": "Batch 9-patches in a single mesh whenever possible\n\nThis change also fixes the way batched bitmaps were handled\ninside a layer. The layer is now correctly dirtied to minimize\nthe amount of pixels to blend.\n\nFix alpha, mode and opaque computations for DrawPatchOp.\n\nChange-Id: I1b6cd581c0f0db66c1002bb4fb1a9811e55bfa78\n"
    },
    {
      "commit": "d485ef27c795648c4a05c4c089e8c5a15712fd36",
      "tree": "7608ca3814d7aa0dca699fbe48bb8c5e71970543",
      "parents": [
        "fb5dbfea1abc75603c8132e9fb23b79b15f378fa",
        "f6bed4f12a2c975678fc0bdea15054ab169aafb5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 21 01:31:54 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 21 01:31:55 2013 +0000"
      },
      "message": "Merge \"An identity matrix should be considered a pure translate matrix\""
    },
    {
      "commit": "f6bed4f12a2c975678fc0bdea15054ab169aafb5",
      "tree": "fbfc0e2154782601063f6b4a9e1dcd7e033b8fc5",
      "parents": [
        "9e6f3ac109b5cd7736122d1bdf83ed38b9d739c6"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 20 17:52:07 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 20 17:52:07 2013 -0700"
      },
      "message": "An identity matrix should be considered a pure translate matrix\n\nChange-Id: I75e91797e8270f902f67bdd7bb526cccc23adc6b\n"
    },
    {
      "commit": "d4fed90d246a8decf962cd3a63507a3637354fb1",
      "tree": "59385af344e401438b4dcac0e7db95d59b404551",
      "parents": [
        "6ebe3de331efd00ba23bc4191d4a82cfa4c39160",
        "9e6f3ac109b5cd7736122d1bdf83ed38b9d739c6"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 20 23:32:39 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 20 23:32:40 2013 +0000"
      },
      "message": "Merge \"Add debugging logs for GPU pixel buffers\""
    },
    {
      "commit": "9e6f3ac109b5cd7736122d1bdf83ed38b9d739c6",
      "tree": "00fa539e34214d163d694adbd316e39785b3e6d4",
      "parents": [
        "2458939b5f926176a485a3196f59688eed78e858"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 20 16:31:35 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 20 16:31:35 2013 -0700"
      },
      "message": "Add debugging logs for GPU pixel buffers\n\nChange-Id: I7edb04dd30ee6fd823099e72788169cc185e70f2\n"
    },
    {
      "commit": "8e1af51787983808b5181de9d17739810e943e1a",
      "tree": "b0014eb5631108e8ece9c5a4508f7c4c2cb2dcf5",
      "parents": [
        "0db9f4ddd7a339e4ba1cf16d7a9b49234635ff09",
        "0618148f9031129540631b6d5aa823377e993415"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jun 20 00:46:24 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 20 00:46:24 2013 +0000"
      },
      "message": "Merge \"input: Handle a few extra error conditions.\""
    },
    {
      "commit": "c5493fb7fa1f6995955c667d4377f2337f2cf465",
      "tree": "8ccfc0798c68abf6fa5107452d57879967bcffd3",
      "parents": [
        "cadc5bf4116945a1800061f984d95175e20caba6"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jun 19 16:58:58 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jun 19 16:58:58 2013 -0700"
      },
      "message": "Make op outputting const, for more general logging\n\nChange-Id: Iaf78985ee5558e0b5d32d7bc1cd039eaffc820e5\n"
    },
    {
      "commit": "fb5a41a371e540f402e3dd987b0fbf92d1267902",
      "tree": "4ac7697c19cef2444e9d48fbe32e4de602cecd34",
      "parents": [
        "ff4ea7987714dad4f4d9065902f0ac5fd61833fd",
        "2458939b5f926176a485a3196f59688eed78e858"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 19 23:40:57 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 19 23:40:57 2013 +0000"
      },
      "message": "Merge \"Fix regression: TextureView.setAlpha() was ignored\""
    },
    {
      "commit": "2458939b5f926176a485a3196f59688eed78e858",
      "tree": "fc608a8ae818144c69f679e059adb1fa198e01aa",
      "parents": [
        "31e08e953fe7bdb1b1cbc247156cb6a19917a2f1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 19 12:17:01 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 19 12:17:01 2013 -0700"
      },
      "message": "Fix regression: TextureView.setAlpha() was ignored\n\nChange-Id: I9f43eec0fe23a65dcc1cf9cd0ac1f5e8907786a7\n"
    },
    {
      "commit": "cadc5bf4116945a1800061f984d95175e20caba6",
      "tree": "e56682c2d1325a06ef7a5b4c66444d9876d932b0",
      "parents": [
        "1f54f9246e500042a42fde627ce5c438c8da895d",
        "31e08e953fe7bdb1b1cbc247156cb6a19917a2f1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 19 19:16:21 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 19 19:16:21 2013 +0000"
      },
      "message": "Merge \"Share Caches\u0027 index buffer with FontRenderer\""
    },
    {
      "commit": "0618148f9031129540631b6d5aa823377e993415",
      "tree": "17acc57cfc16d9e95c0757e15b38f53f2e2fce02",
      "parents": [
        "736d4ddcdcd74165ad292b136468207644b28f9d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 18 16:05:54 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 18 16:10:49 2013 -0700"
      },
      "message": "input: Handle a few extra error conditions.\n\nIt turns out that SOCK_SEQPACKET sockets may sometimes return\nECONNREFUSED or ECONNRESET errors when the peer dies instead of\nthe usual EPIPE.\n\nBug: 9479906\nChange-Id: Ia7e572b08bf63e43ba5aeda58281508beb5f8c73\n"
    },
    {
      "commit": "31e08e953fe7bdb1b1cbc247156cb6a19917a2f1",
      "tree": "a9b1d4f934c40a6c1a6e3c32e10451fc323ebaea",
      "parents": [
        "2d5945e88731787babce1061f44cd54f02eeefc5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 18 15:53:53 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 18 15:53:53 2013 -0700"
      },
      "message": "Share Caches\u0027 index buffer with FontRenderer\n\nThis reduces state changes when we draw 9patches and text together,\nwhich happens *a lot*. Also disable the NV profiling extension by\ndefault since it doesn\u0027t play nice with display lists deferrals.\nTo enable it set debug.hwui.nv_profiling to true.\n\nChange-Id: I518b44b7d294e5def10c78911ceb9f01ae401609\n"
    },
    {
      "commit": "77d55c7e5c7ace27dfe56665a59edc17102418a8",
      "tree": "36023ceec5ffdf3ce19f62a9c983767ea459d91f",
      "parents": [
        "ae2db13e820b68f0bf5a1c7fe933839d1723305c",
        "2d5945e88731787babce1061f44cd54f02eeefc5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 18 20:08:38 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 18 20:08:39 2013 +0000"
      },
      "message": "Merge \"Take hinting into account when caching fonts Bug #9464403\""
    },
    {
      "commit": "2d5945e88731787babce1061f44cd54f02eeefc5",
      "tree": "ea2e4a98ea66e2caa6b585306017e3ca30c7f032",
      "parents": [
        "e93482f5eac3df581d57e64c2a771a96aa868585"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 18 12:59:25 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 18 13:02:03 2013 -0700"
      },
      "message": "Take hinting into account when caching fonts\nBug #9464403\n\nChange-Id: I26a5f0c17eb27d096717b444d3e18ad1d2b5a43c\n"
    },
    {
      "commit": "49cc5d71192cbd776e237488218aea18a3ed14b1",
      "tree": "d2594687291550519aa6088b55e73400060ff377",
      "parents": [
        "3e0a4633c34aaffffbf0cc63257dd40eb19a80d3",
        "f09b746acb266a849f3421df1604ebec161bb93d"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 17 22:50:39 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 17 22:50:39 2013 +0000"
      },
      "message": "Merge \"Handle all text bounds as post-translated\""
    },
    {
      "commit": "f09b746acb266a849f3421df1604ebec161bb93d",
      "tree": "bcb905a7d24ff00765c39a0f24dc63e800d2cf39",
      "parents": [
        "4aaf8b3d4b160aea5ceb5ccf799e44c1d5a3f14b"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 17 15:17:11 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 17 15:17:11 2013 -0700"
      },
      "message": "Handle all text bounds as post-translated\n\nWe were treating immediate mode bounds as pre translate, which is\ninconsistent with using them for quickRejection.\n\nThis fixes the overdraw counter not drawing correctly (since it uses\nimmediate mode drawing.\n\nChange-Id: I1c734d367a00942bd7d9b041822c0a9f284e70a8\n"
    },
    {
      "commit": "36d38cb904556025b76c6d98f9fe2ccfa1c8a304",
      "tree": "ce339566cfe52d099f529241460fcac508fdcda6",
      "parents": [
        "f0542ee466372a29ebaa3c1ea1f362c353a28f4a",
        "d72b73cea49f29c41661e55eb6bfdbc04f09d809"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 17 21:02:56 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 17 21:02:56 2013 +0000"
      },
      "message": "Merge \"Better handle op size edge cases\""
    },
    {
      "commit": "d72b73cea49f29c41661e55eb6bfdbc04f09d809",
      "tree": "e6782e49ac767cd62e22ca8e44f18eb3977bb1e6",
      "parents": [
        "4aaf8b3d4b160aea5ceb5ccf799e44c1d5a3f14b"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 17 13:52:06 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 17 13:52:06 2013 -0700"
      },
      "message": "Better handle op size edge cases\n\nbug:9464358\n\nPreviously, empty and unknown sized ops are assumed to fully cover\ntheir clip. This is now corrected such that empty sized ops are\npre-rejected before defer. Additionally, unknown sized ops disable\noverdraw avoidance.\n\nChange-Id: Icf2ce24f98be5ea6299e24ffcf826790373564a1\n"
    },
    {
      "commit": "fb5c9050978afad2c1df570a13a6747f438c27f7",
      "tree": "5ad303b8842436dccb104e46d19aea14d5617cfb",
      "parents": [
        "61e1ca68fa82e5228b5bfcdad8deecd9383fb183",
        "e93482f5eac3df581d57e64c2a771a96aa868585"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jun 17 20:39:45 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 17 20:39:45 2013 +0000"
      },
      "message": "Merge \"Cancel layer update when a layer is about to be destroyed Bug #9310706\""
    },
    {
      "commit": "e93482f5eac3df581d57e64c2a771a96aa868585",
      "tree": "009afbdf49655b35ee29f857aa554a42c4e96048",
      "parents": [
        "6410c0aaf13c9aec606b90ee942f2ac2d98b1609"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jun 17 13:14:51 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jun 17 13:35:03 2013 -0700"
      },
      "message": "Cancel layer update when a layer is about to be destroyed\nBug #9310706\n\nChange-Id: I73eea6314c326f15a979617e3a05b525935f0d3f\n"
    },
    {
      "commit": "61e1ca68fa82e5228b5bfcdad8deecd9383fb183",
      "tree": "8720959ea3bf316d06cd65bba871b79f17aa4c70",
      "parents": [
        "0a1e9611e9d26310642d36b573368affbd1167af",
        "8c6e17c2a9b0ad7864a261cc9a30b9623e20bdcb"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 17 20:16:37 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 17 20:16:37 2013 +0000"
      },
      "message": "Merge \"Check for layer renderer in flush\""
    },
    {
      "commit": "8c6e17c2a9b0ad7864a261cc9a30b9623e20bdcb",
      "tree": "4072dc4f15f545c8a8cad311ef6e412e6c2a6829",
      "parents": [
        "4aaf8b3d4b160aea5ceb5ccf799e44c1d5a3f14b"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 17 13:02:12 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 17 13:04:45 2013 -0700"
      },
      "message": "Check for layer renderer in flush\n\nbug:9310706\n\nIn some cases flush will occur after a layer is destroyed. Avoid\ntrying to draw after putting the layer in the layer cache.\n\nChange-Id: I55d66f420e7354fe552c82eb3145a7d91b4441e3\n"
    },
    {
      "commit": "2a0451e54a3c3b397861736c42e42125bd938d43",
      "tree": "c8713e9605f2c2a796f2ed0c1d1a01acf5f09bdd",
      "parents": [
        "4aaf8b3d4b160aea5ceb5ccf799e44c1d5a3f14b",
        "a02c4ed885d97e516f844ddb0a96083f1b45b4cb"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 17 18:11:34 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 17 18:11:34 2013 +0000"
      },
      "message": "Merge \"Fix clip merging behavior\""
    },
    {
      "commit": "5216c3b05fc6c7bacd74be67b932fe3aba89cc8e",
      "tree": "30cbaba31df888eb0ecd10561cf0e8c707c4c34a",
      "parents": [
        "756a53f4e4dc8671287d7a192c619e0e1c627ebd"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 14 16:31:37 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 14 16:31:37 2013 -0700"
      },
      "message": "Merge more 9patches\n\nChange-Id: If8b16af84f0ee42afc406922d15897e51d833e68\n"
    },
    {
      "commit": "a02c4ed885d97e516f844ddb0a96083f1b45b4cb",
      "tree": "74a79cf96d32b37ee36c9308170aa3643093dce5",
      "parents": [
        "5f73a7df6dccd61ee2596ece7e9e3c66a7a58339"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jun 14 13:43:58 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jun 14 13:43:58 2013 -0700"
      },
      "message": "Fix clip merging behavior\n\nPreviously, a new op with a clipped side could be added to a\nMergingDrawBatch without considering the batch\u0027s current bounds.\n\nChange-Id: I1b873ecf821bad7cda6630c3f311edd90ac5cc8c\n"
    },
    {
      "commit": "d1f9aaa5d776a94907f9e5b632125648043c47b3",
      "tree": "c008d354fecef5753ea1044dfcdc3a4eb30025a8",
      "parents": [
        "e08d54b92e32244a44283a84d7fae9ca37ff51b5",
        "39a908c1df89e1073627b0dcbce922d826b67055"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jun 14 01:06:29 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 14 01:06:30 2013 +0000"
      },
      "message": "Merge \"Fix various draw ops that may incorrectly not scissor\""
    },
    {
      "commit": "39a908c1df89e1073627b0dcbce922d826b67055",
      "tree": "ff2549616c210443c773bef7c1c35391d8ee6d99",
      "parents": [
        "6db1054692495be7413d0fcc49a0f26c179d6fed"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jun 13 14:39:01 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jun 13 16:16:13 2013 -0700"
      },
      "message": "Fix various draw ops that may incorrectly not scissor\n\nbug:8965976\n\nAlso consolidates quickReject scissor-ing and scissor-less paths.\nRenamed plain \u0027quickReject\u0027 method, as it has sideEffects beyond what\nthe java and skia canvases do.\n\nChange-Id: I4bdf874d3c8f469d283eae1e71c5e7ea53d47016\n"
    },
    {
      "commit": "735760e3c28c18a86ba503031497cb2d5fa81903",
      "tree": "7ab817da533d7a24b2bc743dde4e138ce5e6e9ed",
      "parents": [
        "539d270516819278e74804c29caf66320968648f",
        "7f4307668b10467ee39d41c7ea29cf1ff238a835"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 13 22:10:21 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 13 22:10:22 2013 +0000"
      },
      "message": "Merge \"Add new Query class for debugging\""
    },
    {
      "commit": "7f4307668b10467ee39d41c7ea29cf1ff238a835",
      "tree": "83fdf6fec84c510d33d62c6348e86b821cd996ea",
      "parents": [
        "405436021da156fbe3c5d4de48bdefa564cf7fc0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 13 14:29:40 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 13 14:58:32 2013 -0700"
      },
      "message": "Add new Query class for debugging\n\nThis class can be used to perform occlusion queries. An occlusion query\ncan be used to test whether an object is entirely hidden or not.\n\nChange-Id: Ida456df81dbe008a64d3ff4cb7879340785c6abf\n"
    },
    {
      "commit": "f70119cd776f871a82c94be8522dce02e04c73a8",
      "tree": "44663acd78d347dac3712baf69e3f617eb5b52e5",
      "parents": [
        "6db1054692495be7413d0fcc49a0f26c179d6fed"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jun 13 11:21:22 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jun 13 11:28:45 2013 -0700"
      },
      "message": "Reset batching state when overlap batch deletion occurs\n\nChange-Id: Ifdbee9baaa734e27d15d2b54aa3b3abfffbce1e9\n"
    },
    {
      "commit": "7112fddbe26acb12f478f4e77ff9607b523180b4",
      "tree": "1ecc0d7566dbb88ed71bc36811f7fddb412a6ae6",
      "parents": [
        "512d8fbe51186967d4a3db9f4b3a3b0f335557fe",
        "405436021da156fbe3c5d4de48bdefa564cf7fc0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 13 01:19:46 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 13 01:19:46 2013 +0000"
      },
      "message": "Merge \"Restore buildLayer()\u0027s old behavior; it\u0027s synchronous again Bug #9193833\""
    },
    {
      "commit": "149b015db9a478c6345cf0528fe4df3c7c2b5110",
      "tree": "249c56eec7775891208a1c3ed0dc23ada71146c7",
      "parents": [
        "af0fa4fd739aae14733615b6ee9a6b9ca025c628",
        "28ce94a4ffc7576f40776d212f1ada79fafaa061"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jun 13 00:37:02 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 13 00:37:02 2013 +0000"
      },
      "message": "Merge \"Overdraw avoidance and merging of clipped ops\""
    },
    {
      "commit": "9846de68f1b4f2720da421e5242017c28cfc93ed",
      "tree": "e2321a0dc6a3e5b4f5024d470755fda3e3df0d54",
      "parents": [
        "97f41383eb2bb098767ca153e470009fea810540"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jun 12 16:23:00 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jun 12 16:26:34 2013 -0700"
      },
      "message": "Remove crash workarounds, add logging\n\nbug:9321162\nChange-Id: I748c27f979af1a303be01db29aedcbad6d608c38\n"
    },
    {
      "commit": "405436021da156fbe3c5d4de48bdefa564cf7fc0",
      "tree": "339d70e2c2e90f87a5c303e7167fe9db0508ed64",
      "parents": [
        "97f41383eb2bb098767ca153e470009fea810540"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 12 15:31:28 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 12 15:31:28 2013 -0700"
      },
      "message": "Restore buildLayer()\u0027s old behavior; it\u0027s synchronous again\nBug #9193833\n\nChange-Id: I4ee07e65c0a8967f0b55da030ecaad6dfc46136f\n"
    },
    {
      "commit": "28ce94a4ffc7576f40776d212f1ada79fafaa061",
      "tree": "644d590fb3ccb5db34ecf68bb3360923f3d65c29",
      "parents": [
        "97f41383eb2bb098767ca153e470009fea810540"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri May 31 11:38:03 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jun 12 14:46:52 2013 -0700"
      },
      "message": "Overdraw avoidance and merging of clipped ops\n\nbug:8951267\n\nIf an opaque op, or group of opaque ops covers the invalidate region,\nskip draw operations that precede it.\n\nClipped operations may now be merged, but only if they share a\nclipRect - this is a very case for e.g. ListView, where all background\nelements may now be a part of the same MergingDrawBatch.\n\nIt is this more aggressive merging that groups together clipped\nbackground elements in the ListView case, enabling the overdraw\navoidance skipping the window background.\n\nChange-Id: Ib0961977e272c5ac37f59e4c67d828467422d259\n"
    },
    {
      "commit": "1e4795ab64755bdae48fe7b8cd78f204c9022791",
      "tree": "d5a5dc28396667854f0bfc5719844a9c18b716af",
      "parents": [
        "fc74f85f2e54ee561888dfef57cd70cb6ab6f2d1",
        "4c2547fa9244e78115cde0a259291053108c3dc7"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 12 00:23:27 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 12 00:23:27 2013 +0000"
      },
      "message": "Merge \"Avoid 9patch cache lookups when possible\""
    },
    {
      "commit": "4c2547fa9244e78115cde0a259291053108c3dc7",
      "tree": "4337937e216918e4febe861daa7ef093b99aff03",
      "parents": [
        "fadd2081443dd2f59f8e8143256a34b7485fe72e"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 11 16:19:24 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 11 17:14:59 2013 -0700"
      },
      "message": "Avoid 9patch cache lookups when possible\n\nThis optimization saves up to 0.3ms per frame on the Play Store\u0027s\nfront page, on a Nexus 4 device.\n\nChange-Id: Iaa4ef33c6e3b37e175efd5b9eea9ef59b43f14f3\n"
    },
    {
      "commit": "e13fb01d25b22f46206115faff2c7787d330f0d1",
      "tree": "72eaa11693bb1e5fdc1c53e8d944b1e423c673d6",
      "parents": [
        "ffcec1d4bd0f88a41b57493cf342b28f130d38e2",
        "8cb26c099dc6357340141c9d81a1131ee404ae41"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jun 11 14:13:32 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 11 14:13:32 2013 -0700"
      },
      "message": "am 8cb26c09: am cb5d644f: Merge \"Workaround possible use after delete\" into jb-mr2-dev\n\n* commit \u00278cb26c099dc6357340141c9d81a1131ee404ae41\u0027:\n  Workaround possible use after delete\n"
    },
    {
      "commit": "9abddd54d4177d1a9790889046407da13aa7077b",
      "tree": "2cc51803d2aa7c8e6bbc5d950c20eda0f878f667",
      "parents": [
        "8d8fc469952ffe3feb45e52388f2129f8dd5e40c"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 10 11:28:51 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 10 11:30:37 2013 -0700"
      },
      "message": "Workaround possible use after delete\n\nbug:9321162\nChange-Id: Ic35af5b5925da56e9a143e6b33658831038f3b72\n"
    },
    {
      "commit": "be1b127c7bec252e0c6ab0e06ed6babed07d496f",
      "tree": "eaab57886d7cd44e10da155d3dc6188a30b2b17b",
      "parents": [
        "f69913056b8c6000ff0306573a97971702e8d35a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 06 14:02:54 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 06 16:26:51 2013 -0700"
      },
      "message": "Assume a texture is unbound after deleting it\nBug #9316260\n\nThe GL specification indicates that deleting a bound texture has\nthe side effect of binding the default texture (name\u003d0). This change\nreplaces all calls to glDeleteTextures() by Caches::deleteTexture()\nto properly keep track of texture bindings.\n\nChange-Id: Ifbc60ef433e0f9776a668dd5bd5f0adbc65a77a0\n"
    },
    {
      "commit": "450dc7554de90026a6dd2a1ec7108c1423fce18e",
      "tree": "f721a0a66cac1697079c5dffd58d486b2b9158b7",
      "parents": [
        "8aa195d7081b889f3a7b1f426cbd8556377aae5e"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 05 14:14:03 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 05 14:14:03 2013 -0700"
      },
      "message": "Remove string allocations when creating display lists\n\nChange-Id: Id520db981a3988cb980c8da5dbea8f26ef94989f\n"
    },
    {
      "commit": "8aa195d7081b889f3a7b1f426cbd8556377aae5e",
      "tree": "6cd0ab4181c25d3113c4e39b49e8f8a0c7d12b8b",
      "parents": [
        "84f3c5689cffbfc1e45a0101d5bb636323769f54"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 04 18:00:09 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 04 18:58:36 2013 -0700"
      },
      "message": "Introduce Caches::bindTexture() to reduce glBindTexture calls\n\nChange-Id: Ic345422567c020c0a9035ff51dcf2ae2a1fc59f4\n"
    },
    {
      "commit": "f9f0016b1ff816eb2c7561eed482c056189005f8",
      "tree": "b0d47161a66da155e402391680e157c4788f74bf",
      "parents": [
        "36e337f971649b00841cc3a0e69869769229af14"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu May 09 11:50:12 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 04 11:57:58 2013 -0700"
      },
      "message": "Enable GPU pixel buffers on OpenGL ES 3.0 devices\n\nChange-Id: I164d72ccd7a9bf6ae0e3f79dfef50083558937ba\n"
    },
    {
      "commit": "7d9b1b3c02eb1ffd99742ecb7b69e3ab97d2ba18",
      "tree": "56b72ad7a4975043f28a8af8b63d3f4d9f0f630e",
      "parents": [
        "0efd4f0215f1df1207b67240d7a52b1da6af43c8"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue May 28 14:25:09 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue May 28 14:32:01 2013 -0700"
      },
      "message": "Re-initialize the 9patch cache if cleared with onTrimMemory\n\nThe 9aptch cache was reinitialized after destroying/recreating\nthe EGL context but not after clearing it during a normal\nmemory trim.\n\nChange-Id: If6155bfc8a62439e9878bc742a4766b3bd6c6aec\n"
    },
    {
      "commit": "a404e16e4933857464046d763ed7629cd0c86cbf",
      "tree": "fec5bfa47138b29d22b25b9d87dc84ebfea7f1e6",
      "parents": [
        "64770d16b0907a8e1ee81ef6c8fa398a6bdbee79"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri May 24 16:19:19 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri May 24 16:19:19 2013 -0700"
      },
      "message": "Make sure atlas antries can correctly filter/wrap textures\n\nThe virtual textures would each have their own values for wrapping\nand filtering which could lead to conflict and/or extraneous GL\ncommands being issued.\n\nChange-Id: I64cb59a03e598f46bf645bd1d30fccfa63a07431\n"
    },
    {
      "commit": "608094041177193dcce7a91e8dc96a2556d29bfd",
      "tree": "e3c6f0564980c2b38c3e41fab7105bfdca06b3f9",
      "parents": [
        "ac5b347d03c52e286f11994699d4e6d462789988",
        "e9bc11f7121dbe373b0cbe5779ee6a12d824492c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu May 23 19:50:58 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 23 19:50:58 2013 +0000"
      },
      "message": "Merge \"Add PerfHUD ES profiling capabilities\""
    },
    {
      "commit": "e9bc11f7121dbe373b0cbe5779ee6a12d824492c",
      "tree": "0da7d9e380841202b3df300341321fed984a9c0c",
      "parents": [
        "e0fc1875492cf1e59fe3ae4e0b1a5020672962bb"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu May 23 12:47:26 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu May 23 12:50:13 2013 -0700"
      },
      "message": "Add PerfHUD ES profiling capabilities\n\nThe eglGetSystemTimeNV extension can be used to enable profiling\nin PerfHUD ES. When the delta of two calls to eglGetSystemTimeNV\nequals 0, we now cancels display lists updates. This allows the\ntool to redraw the same frame several times in a row to run its\nanalysis.\n\nFor better results profiling should only be attempted after\nsetting viewroot.profile_rendering to true using adb shell\nsetprop.\n\nChange-Id: I02e3c237418004cff8d6cb0b9a37126efae44c90\n"
    },
    {
      "commit": "341ac60009e6b3c1114938f40743fd81a0ce034f",
      "tree": "6b6360a0c3a3a6891de54801815195abfc04c905",
      "parents": [
        "664ed997a2887e4f462d99e731c5c9c0b0e41f2c",
        "1bf58a5a4c3275a8de676046da311ec0c3c61c78"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu May 23 11:28:05 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 23 11:28:05 2013 -0700"
      },
      "message": "am 1bf58a5a: am cfbbc864: Merge \"Restore previous alpha value on noop\\\u0027d DisplayList operations\" into jb-mr2-dev\n\n* commit \u00271bf58a5a4c3275a8de676046da311ec0c3c61c78\u0027:\n  Restore previous alpha value on noop\u0027d DisplayList operations\n"
    },
    {
      "commit": "db90a330ba6c8df653f311a34e0288c5cdeade3f",
      "tree": "8f89779cda1935eddcf12b3b561226d3e5447d7b",
      "parents": [
        "f17771f2a55b566ebeabe247e8ec39c987e74244",
        "631500ef58e016943bd73521d113f12eab16dc25"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu May 23 15:40:11 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 23 15:40:11 2013 +0000"
      },
      "message": "Merge \"Move VelocityTracker.cpp to target build only\""
    },
    {
      "commit": "c725903eec82aa73ebe9682d142904c06321bc2c",
      "tree": "0de52325852945b3a66f0c35f0329647944728e5",
      "parents": [
        "30c798d58772efd595fffebd9d0d54f717e34ed6"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu May 23 07:57:17 2013 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu May 23 07:57:17 2013 -0700"
      },
      "message": "Restore previous alpha value on noop\u0027d DisplayList operations\n\nPreviously, when a DisplayList operation was rejected because it was not\nin the clip bounds, the code would not properly restore the previous\nstate, leading to errors in alpha values of the noop\u0027d op being applied\nto unrelated operations later in the DisplayList.\n\nIssue #9051935 Flash of grey background when transitioning to conversation view\n\nChange-Id: I56645cc9ebf2e07be0228ca5e249213dbeb10d7d\n"
    },
    {
      "commit": "7f77736599c39cdd5540168fc652cf6846799a33",
      "tree": "d37082cd742d57d27ec7469e9fa4e49499b24f9e",
      "parents": [
        "41541825bc90dac740e424cdd41a8c997e15cdb7",
        "2db5e993b626794eb07a0ff354269f9a77da81b3"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed May 22 00:43:48 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 22 00:43:48 2013 +0000"
      },
      "message": "Merge \"Merge scaled bitmaps with translated bitmaps\""
    },
    {
      "commit": "2db5e993b626794eb07a0ff354269f9a77da81b3",
      "tree": "97d5bfdcbc76c68de765015b64b5297128e02c5c",
      "parents": [
        "779321fde1c6461884b521c2ce7134468e085ba5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue May 21 15:29:59 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue May 21 17:42:43 2013 -0700"
      },
      "message": "Merge scaled bitmaps with translated bitmaps\n\nChange-Id: I03089f48f97b69fcb4a0171984d3ff548d41c4a8\n"
    },
    {
      "commit": "41541825bc90dac740e424cdd41a8c997e15cdb7",
      "tree": "c06c9c12d2d67381014c22dca77f22478825e642",
      "parents": [
        "7f43674db314ab76e77cfd2a9488058eae144aa8"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri May 03 16:35:54 2013 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 21 23:04:05 2013 +0000"
      },
      "message": "Use individual glyph positions to determine text bounds.\n\nbug:8766924\n\nPreviously text bounds were calculated to be from 0 to totalAdvance in\nthe X, and from the font\u0027s top to bottom. These are incorrect,\nespecially in light of the font fallback mechanism.\n\nNow, we calculate the bounds of the text as we layout each glyph.\nSince these are much tighter bounds in the common case, this\nsignificantly reduces the amount of clipping required (which in turn\nenables more aggressive text merging).\n\nChange-Id: I172e5466bf5975bf837af894a9964c41db538746\n"
    },
    {
      "commit": "631500ef58e016943bd73521d113f12eab16dc25",
      "tree": "a34410053cdfdf5f61d900a5f6f1b4deedd3d276",
      "parents": [
        "7f43674db314ab76e77cfd2a9488058eae144aa8"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue May 21 15:04:14 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue May 21 15:04:14 2013 -0700"
      },
      "message": "Move VelocityTracker.cpp to target build only\n\nVelocityTracker.cpp makes reference to property_get, which\ndoesn\u0027t make a lot of sense when compiling for the host.\nCompile this file for the target only.\n\nKeyboard.cpp: Remove unnecessary include file.\n\nChange-Id: Iee9edd81953b2e7e815005770ce286a6ec586f20\n"
    },
    {
      "commit": "7f43674db314ab76e77cfd2a9488058eae144aa8",
      "tree": "ebfcd163c533a347687a30ed809675e7d5472a8a",
      "parents": [
        "a66c789f61d44c1e70a982afbd941d9939d20bf1",
        "6045d2b7cd0fe62d4385a053bbd1a74d64614d8e"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue May 21 20:30:19 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 21 20:30:19 2013 +0000"
      },
      "message": "Merge \"Fix DISPLAY_LIST_DEBUG\""
    }
  ],
  "next": "6045d2b7cd0fe62d4385a053bbd1a74d64614d8e"
}
