)]}'
{
  "log": [
    {
      "commit": "d98aa2de9ab18e09c2be1997f41212740f51f6e6",
      "tree": "04bf505226c6a38fde7a466e28154e006e806f30",
      "parents": [
        "9bb127869666be6507fb5c4b37b7d1965c7e5fa6"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Oct 25 15:47:32 2010 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue Oct 26 06:54:55 2010 -0700"
      },
      "message": "DisplayList optimizations and fixes.\n\nWe now use a copy of SkPaint objects to avoid having it changed from under us.\nWe reuse copies that have not changed. We also copy the SkMatrix every time to\navoid the same problem.\n\nChange-Id: If3fd80698f2d43ea16d23302063e0fd8d0549027\n"
    },
    {
      "commit": "7adaf3d1aa18c7e521f7154e545fe52d329763c3",
      "tree": "23a2a9ffb2f538ba097626a786281928d4360bf1",
      "parents": [
        "469b1dbeaf7d3267d1b43af4e7391b49eac10ee0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 05 14:58:09 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 05 14:58:09 2010 -0700"
      },
      "message": "Add support for paletted textures.\n\nChange-Id: I36e6069bd58f78c609cdd1f3e4560c98f128f48e\n"
    },
    {
      "commit": "29d8997bd43b7c4ad37fc3d6f91eaafa74913c88",
      "tree": "2bc22f92798fdb17ac519d22ca3a3f7b84d328f8",
      "parents": [
        "8c749f87d29e1a363ddf9027c3a51753c612d510"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Wed Sep 22 16:10:57 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Wed Sep 22 16:44:49 2010 -0700"
      },
      "message": "Fix OpenGL errors in various places.\n\nChange-Id: I3a4e115d8fb13b6c443e65460d92987b16f2524c"
    },
    {
      "commit": "8c749f87d29e1a363ddf9027c3a51753c612d510",
      "tree": "839f894a1f9749b5d32136206ca494dea9c16294",
      "parents": [
        "adaba84ad76f70d833e140d5c28a0de58c8f19d2"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Wed Sep 22 14:13:32 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Wed Sep 22 14:13:32 2010 -0700"
      },
      "message": "Fix texture corruption issue, faster re-upload of textures.\n\nBug #2950691\n\nChange-Id: I57e2bc1d1a23e8683c25de7d09d6f5af2df59f41\n"
    },
    {
      "commit": "a2341a9f6addcd79723965ec5b1a1c5ae0f8bd65",
      "tree": "ce61e01a0719f9fc52e48be002fe1d57d3af9c68",
      "parents": [
        "9aaa8269a3e7291aab84d01c3fc9c744d8f2d2f4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 08 18:04:33 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 08 18:04:33 2010 -0700"
      },
      "message": "Purge Skia objects from GL caches as needed.\n\nChange-Id: I754c671cf790ad5ae8bf047ad328034217da4ecc\n"
    },
    {
      "commit": "9aaa8269a3e7291aab84d01c3fc9c744d8f2d2f4",
      "tree": "cdb43405ac7ef845d01d993442193cad2adfb84e",
      "parents": [
        "53389bdcdf6ffaaec533b73bc1d0abc5807ec7f6"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 08 15:15:43 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 08 15:15:43 2010 -0700"
      },
      "message": "Fix possible infinite loop when purging textures.\n\nChange-Id: Ib05b398ae03e734da2dab0496df416fed4570b1c\n"
    },
    {
      "commit": "fb8b763f762ae21923c58d64caa729b012f40e05",
      "tree": "013792d41f32bff4dd35e6d53eebac711c513729",
      "parents": [
        "a1f1174b396cda7bdff469a2e974a737600c5eb0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 23 21:05:08 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 24 17:18:14 2010 -0700"
      },
      "message": "Use only one GL context per process, share chaches.\n\nChange-Id: Ieabaa25338d2f4b8d4fd90e7401ad6e7452eae11\n"
    },
    {
      "commit": "e9e7fd0813f1485d20c6cd0014d59aff53c35d84",
      "tree": "27439301826c76d553486539d128c84c648d004f",
      "parents": [
        "207b3ab604bcbe47fa55f26f358cde60cf8a784d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 19 14:45:42 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 19 14:45:42 2010 -0700"
      },
      "message": "Update OpenGLRenderer test to test opaque ARGB8888 bitmaps.\n\nChange-Id: I7159825f4b1d6f5a1cd09ec091994801b52b6bda\n"
    },
    {
      "commit": "163935113919a184122b8b3bd672ef08c8df65dc",
      "tree": "c8aa9b460ae7fd9e2e675d4bf25924a3459f8696",
      "parents": [
        "1ad7343409442a4a027c0092d07beff1b412a7dc"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Sun Aug 08 00:14:31 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Sun Aug 08 17:45:07 2010 -0700"
      },
      "message": "Make libhwui entirely optional.\n\nThe makefile variable USE_OPENGL_RENDERER must be set to true to compile\nlibhwui and the related code in the JNI layer.\n\nThis change also removes obsolete APIs from Canvas that must not be used\nand would be confusing if left in. These APIs were remnants of our first\nattempt at an OpenGL renderer for the view hierarchy and had not been\ntaken out before Android 1.0 was released.\n\nChange-Id: I2475ff1307212bab26c926724f3c508681c7dae1\n"
    },
    {
      "commit": "9cccc2b9bdd4850a3f9679569aaec3ab98477a5d",
      "tree": "365c32954d65cf037c948ee92b14ed30243319f5",
      "parents": [
        "de0547c07a65b59d5330588cdd8b1e410a613e9c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Sat Aug 07 23:46:15 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Sat Aug 07 23:48:29 2010 -0700"
      },
      "message": "Enforce maximum texture size.\n\nWhen an app tries to render a bitmap or path larger than the GPU\u0027s maximum\ntexture size, the drawing command is ignored and a warning is logged. This\nchange also makes texture drawing more robust by catching potential errors\nduring texture creation.\n\nThis change also fixes a crash in the FontRenderer. The destructor would\nsometimes try to free an uninitialized array.\n\nChange-Id: I95ae0939c52192d97b340aa02417bf6d0c962c57\n"
    },
    {
      "commit": "22158e139a3d6c6a9787ca0de224e9368f643284",
      "tree": "fac1da337f6fd11ef0761bd0a776af7f184b0ec7",
      "parents": [
        "ff0f973442d22ba6bb1231fb6e97e5f3051a7f48"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 06 11:18:34 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 06 11:18:34 2010 -0700"
      },
      "message": "Automatically cleanup textures that don\u0027t fit in the cache.\n\nChange-Id: I4f29ed96ea11118b391fb957e1e4d1b8fcef1537\n"
    },
    {
      "commit": "bd0e6aa0ff0bd8b376772c3e23513a6021bdda87",
      "tree": "c32048451001806f0be1361f970f9d1686cc1532",
      "parents": [
        "950d6a984a49eac8e688a66a79a55c83e92eb869"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 22 18:50:12 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 22 18:52:24 2010 -0700"
      },
      "message": "Add a way to query GL extensions.\n\nChange-Id: Ic27dbf72289dacf641b640a749fbd40c12cd474f\n"
    },
    {
      "commit": "c0ac193b9415680f0a69e20a3f5f22d16f8053be",
      "tree": "9a1d680ad20ba3f6ec0924c6b445290696d63b8c",
      "parents": [
        "9d339c13aaa30ddfd51d0f13f8ab22af05e40ea0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 19 18:43:02 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 19 18:44:05 2010 -0700"
      },
      "message": "Add support for linear gradients.\n\nChange-Id: Id15329da065045b3f06fdaed615f33cd57608496\n"
    },
    {
      "commit": "1e79386ba34f0db38c1b35b22cdf122632534354",
      "tree": "35c3fe20c2dc66823ac1c7970e395748d8fe52a3",
      "parents": [
        "079ba2c85b15e882629b8d188f5fbdb42f7f8eea"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jul 16 15:07:42 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jul 16 15:07:42 2010 -0700"
      },
      "message": "Optimize textures binding.\n\nThe renderer is still changing textures\u0027 wrap modes every time, this will require\na latter optimization.\n\nChange-Id: I3eb92cb8c886c4a692b7f0ca759911f9371d4d2c\n"
    },
    {
      "commit": "594f4065141a53427cad6f4fc89219d2f27e1a7d",
      "tree": "0b162df7ee27b40e519c5471f7ce0743617ecd73",
      "parents": [
        "46c076d193fe91721912d3bfa8e5a6d24707b5bc"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 13 17:41:31 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 13 17:41:31 2010 -0700"
      },
      "message": "Enable 32-bits only assets.\n\nGo away dithering!\n\nChange-Id: Iee5ee2e9430606e732d9b0abb3adc9f68275bd6d\n"
    },
    {
      "commit": "6c81893c626499e58c8eeb20d6c35ec4e1ce808b",
      "tree": "d4926e6c4952de9aec539f1b44ed0380779e12d0",
      "parents": [
        "3038f47d1c716f9385cf0befc08e708c65f069bb"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 07 15:15:32 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 07 15:15:32 2010 -0700"
      },
      "message": "Simpler way to deal with the FBO multi-cache.\n\nThis change removes the need for the SortedList and instead just\nadd a generated id to each FBO stored in the cache. This is an\nartificial way to store several FBOs with the same dimensions.\n\nChange-Id: I9638364e9bdc0f2391261937a0c86096f20505bf\n"
    },
    {
      "commit": "5f0c6a483900f3989f4d2a8f913cf5b6a9777d03",
      "tree": "cd0898b027dab942753874a070c403ca9b88e4aa",
      "parents": [
        "c832baa107f36740e462c83e7525ba2e9f01f086"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 07 13:06:26 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 07 13:06:26 2010 -0700"
      },
      "message": "Optimize FBO cache.\n\nThis change introduces a new generational cache called GenerationMultiCache\nthat can store several values with the same key. This can be used to use\nmultiple layers of the same size at the same time, without recreating them\nover and over again.\n\nChange-Id: I425466a20908b862c5f464a0f9e582ec18cbd7ac\n"
    },
    {
      "commit": "dda570201ac851dd85af3861f7e575721d3345da",
      "tree": "795e46c7cae42b22814af1ef2ac70c083debd746",
      "parents": [
        "216108c492fef05261c70f1018d94cef0c3b23fd"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Tue Jul 06 11:39:32 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Tue Jul 06 12:00:33 2010 -0700"
      },
      "message": "Add a layer (FBO) cache.\n\nThe cache is used to draw layers so that a new\ntexture does not have to be recreated every time\na call to saveLayer() happens.\n\nThe FBO cache used a KeyedVector, which is a bad\nidea. The cache should be able to store several\nFBOs of the same size (this happens a lot during\nscrolling with fading edges for instance.) This\nwill be changed in a future CL.\n\nChange-Id: Ic316189e625f0dbcf0d273a71cc981a433d48726\n"
    },
    {
      "commit": "7d139ba2c331f11e9b485753cc727a0ff202f2a4",
      "tree": "7d61a0d1cacc78c0d3053d31d85c13a5aa3e3326",
      "parents": [
        "d73ddd2c9d459e363c07a8f5e47995b52b4ae049"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jul 02 11:20:34 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jul 02 11:20:34 2010 -0700"
      },
      "message": "Remove extra leftover logs and use uint32_t instead of unsigned int.\n\nChange-Id: I944f82fe3255de38dc04048cc8bd861f578f01a7\n"
    },
    {
      "commit": "121e2242565d5f09ad83a2d33ecd2225838802c5",
      "tree": "9c87b01a24909f832e00e9448fc2feb8241e41d1",
      "parents": [
        "37f447338e4633461253539e62c9b8eae04de3b3"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 01 18:26:52 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 01 18:26:52 2010 -0700"
      },
      "message": "Track the size in memory of the texture cache.\n\nThe texture cache was previously checking the number of stored textures. This was\nnot very useful as this could easily lead to an abuse of memory. The new cache\ninstead tracks the total size occupied in RAM by the cached textures. When a new\ntexture is generated, older textures are kicked out as needed.\n\nChange-Id: Ib27142f4a018d5bf84774c1fb6f45a67a85f20bc\n"
    },
    {
      "commit": "8ba548f81d1ab5f1750cbf86098c4a14e0b8bead",
      "tree": "cac0b8552a14e0b01809d1d67840953e144d7383",
      "parents": [
        "e07f6eeb3af2defe99fbd63a73b8e636139edd1a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 30 19:21:21 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 30 19:21:21 2010 -0700"
      },
      "message": "Add implementation for drawBitmap(Bitmap, Rect, Rect, Paint)\n\nChange-Id: I10904d2325a5431d15801aebcec1048715678e8c\n"
    },
    {
      "commit": "c1396e93b6a5286a5183c00c781b62e940a12c1f",
      "tree": "41da22a7756936c8cbc4687286e9b854235cd3f5",
      "parents": [
        "efcd77407b321498a43ca380c8f67b84eb5a2d6e"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 30 17:56:19 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 30 17:56:19 2010 -0700"
      },
      "message": "Add implementation for drawBitmap().\n\nChange-Id: Iada9325f3c5642b61c2e0c4cd80bcfbc92cb491e\n"
    },
    {
      "commit": "fe8809471a40cac8acc984adfa51c39e13e83947",
      "tree": "941d366f5445acc27f6774dcf1e0166e8b69ccb1",
      "parents": [
        "364703c6fa4aa1a7d2ef5b0c048ea2a0d57a4c40"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 30 16:05:32 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 30 16:05:32 2010 -0700"
      },
      "message": "Remove unnecessary return and add bitmap generation ID tracking.\n\nChange-Id: Icf5e0635e789f5ea53268c22fad51cf733b5b1a6\n"
    },
    {
      "commit": "364703c6fa4aa1a7d2ef5b0c048ea2a0d57a4c40",
      "tree": "bb39ba42acd1d5e16c3120a89b1de216d65c0950",
      "parents": [
        "68e9a49aeb0b07d0d99c0a05771348bcd460a703"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 30 15:51:03 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 30 15:51:03 2010 -0700"
      },
      "message": "Fix the build.\n\nChange-Id: I08bd6daf25351daca3ae552e1cfcfce85eefa73b\n"
    },
    {
      "commit": "ce0537b80087a6225273040a987414b1dd081aa0",
      "tree": "31682a01c12091c552217186604fca32f43e98ff",
      "parents": [
        "81ea83d10883886013bc95eac2fe032acf1e7aa9"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 29 21:05:21 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 30 15:21:01 2010 -0700"
      },
      "message": "Add hooks for drawBitmap().\n\nChange-Id: I58e962c3a8b2bc75c2605fe369ad3002579d86e0\n\nAdd texture cache.\n\nChange-Id: I1c0e5581d228869e114438258a1014e33e024ad7\n"
    }
  ]
}
