)]}'
{
  "log": [
    {
      "commit": "0fe478ea04720a57ef3919dbc23711bc7eba517f",
      "tree": "d498b2893e0890f0bb9dccf44dc392004d68e844",
      "parents": [
        "cce1d2a60bc1ef10ec6beb338ec3d4cf94486c47"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Nov 08 12:08:41 2010 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Nov 08 12:15:28 2010 -0800"
      },
      "message": "Support nested display lists.\n\nChange-Id: I3815a2832fc0f722c668ba8f51c5f177edb77c94\n"
    },
    {
      "commit": "7f78b0c3ae6222b39f6240524390de9764f21764",
      "tree": "63f1de17ded22cd96c91bb6463b80f85fe1fd93b",
      "parents": [
        "d8d7b555cb45bf55f74e89a7cf9312e400f7cd1c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Nov 04 14:36:26 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Nov 04 14:36:26 2010 -0700"
      },
      "message": "Lines would not set the scissor before drawing.\n\nLines were not drawing in Calendar because they were getting clipped\nby the previous clip rectangle. This change simply updates the scissor\nas needed. This change also reduces the number of state changes in GL.\n\nChange-Id: I41ab13dca3a33cfa6d1a44371c48852ab418b04e\n"
    },
    {
      "commit": "e45362cad94c014d8b3765cb102db0f8c0d92500",
      "tree": "184c8a507c06f077668e294203ae370823fcb5e5",
      "parents": [
        "5ec9924d24495822b589f1a17996655d66273b30"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Nov 03 19:58:32 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Nov 03 19:58:32 2010 -0700"
      },
      "message": "Fix rendering bug with saveLayerAlpha/drawColor.\n\ndrawColor() was not calling quickReject because it fills the clip region\nand thus always passes the test. However, quickReject also checks whether\nthe current layer is invisible. drawColor() now performs the same check\nand avoid drawing inside an invisible layer.\n\nChange-Id: I63d0e9a8a9c0fba774f0f5c3870d58e6ed96fbd1\n"
    },
    {
      "commit": "5ec9924d24495822b589f1a17996655d66273b30",
      "tree": "60a92b5ceb25b980be02cef82ef56ecf55cb7f04",
      "parents": [
        "98444a944c9126898bc4c370f831a79bb3b30bd8"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Nov 03 16:19:08 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Nov 03 16:19:08 2010 -0700"
      },
      "message": "Fix rendering issue with layers.\n\nChange-Id: I1d511ab2707000762a942d32c300a9944ab38603\n"
    },
    {
      "commit": "5b3b35296e8b2c8d3f07d32bb645d5414db41a1d",
      "tree": "bad2ebdbfeb8a3a0be1591d5a357a8280df7d1d2",
      "parents": [
        "2444ddb3d9b59ec45ba50858fcbff639e59b93b1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 27 18:57:51 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Nov 02 16:17:23 2010 -0700"
      },
      "message": "Optimize FBO drawing with regions.\nThis optimization is currently disabled until Launcher is\nmodified to take advantage of it. The optimization can be\nenabled by turning on RENDER_LAYERS_AS_REGIONS in the\nOpenGLRenderer.h file.\n\nChange-Id: I2fdf59d0f4dc690a3d7f712173ab8db3848b27b1\n"
    },
    {
      "commit": "746b7401ceb86b5f2805f8c0d3b39ac739152015",
      "tree": "757875a6d574e07572088b7c1eed80125299bdff",
      "parents": [
        "0d9275e565551eed57297627188aa39f3897a50b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 26 16:27:31 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 26 16:27:31 2010 -0700"
      },
      "message": "Remove unnecessary GL calls.\n\nThis change batches calls to glScissor() and removes extra GL\nqueries and glActiveTexture() calls.\n\nChange-Id: I1cd079d314f87cd9c088f95c8d4909c2f860f6aa\n"
    },
    {
      "commit": "3e3ba155fc0ef7a7f40f06762240d9ba22f62b19",
      "tree": "ceaa261fca5f5be2a171e25ecef3376fc24021bd",
      "parents": [
        "8164c2d338781c3a3c4a443941070dca5d88f2a7"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 25 18:33:16 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 25 18:33:16 2010 -0700"
      },
      "message": "Don\u0027t change texture unit when not needed.\n\nChange-Id: Ifa84426d234f2122402cb13533cb5964f1ce95ec\n"
    },
    {
      "commit": "8164c2d338781c3a3c4a443941070dca5d88f2a7",
      "tree": "22f218c64471d29d1cfbc9a55cb8bb530cf78714",
      "parents": [
        "c361da845a205ac35e724c0ca436744d483de7aa"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 25 18:03:28 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 25 18:03:28 2010 -0700"
      },
      "message": "Don\u0027t change textures wrap modes on every draw.\n\nChange-Id: If6d3f313778cc7f3e803a063338539c8b3e165e3\n"
    },
    {
      "commit": "ae88e5e8e9cb6c9539314c4360c5b20f8ec1fefc",
      "tree": "451798ed04880220134161c51b1f417fb8450797",
      "parents": [
        "58ae6db4ff8a9d0910e1183ee8be9a038a2712a6"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Oct 22 17:49:18 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Oct 22 17:49:18 2010 -0700"
      },
      "message": "Fix rendering issue with layers.\n\nA change was made earlier in the renderer to not snap the current clip rect\non every clip operation. The clip rect must not be snapped to pixel boundaries\nbefore being used for pixel precision operations. Some operations were doing\nthis correctly, others were not. For instance, a layer was always created by\nrounding to the correct pixels, but composing a layer was done with a non\nrounded clip, thus resulting in slightly odd behaviors.\n\nChange-Id: I31c2cf0a343450470bcd449c3f13fe37648b9c7c\n"
    },
    {
      "commit": "58ae6db4ff8a9d0910e1183ee8be9a038a2712a6",
      "tree": "3c3186965c778b0019af3bb1cc58f8ccc5f1af6a",
      "parents": [
        "b0be86e08ea124c525eebc41f256a96ee4fc10cc"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Oct 22 11:16:37 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Oct 22 11:16:37 2010 -0700"
      },
      "message": "Don\u0027t use two different variables to refer to mSnapshot.\n\nChange-Id: Ie4a0616d2fe0b040ac14b734a9ddf77bf1f35b0c\n"
    },
    {
      "commit": "ae517591d96be39f5f18a1716c856ade13a8bcc7",
      "tree": "05fbd13d7ea9d793455da764d6852e12429dd8dd",
      "parents": [
        "477d9b2ddc9515e0df088c448ddfb6f9145edce1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Oct 22 10:40:27 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Oct 22 10:40:27 2010 -0700"
      },
      "message": "Don\u0027t perform glCopyTextImage with coordinates outside the buffer.\n\nBug #3122179\n\nChange-Id: I91ed397e9e553a8eeb69d82d0c5b1e49a3cdd5ff\n"
    },
    {
      "commit": "5c13d89c1332fcc499379b9064b891187b75ca32",
      "tree": "439222e6d58a765a84133345ac6ef7cb13f1c04e",
      "parents": [
        "a376d030a2075909219926d622b71016418d7dcd"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Oct 08 08:37:55 2010 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Oct 21 12:02:42 2010 -0700"
      },
      "message": "Optimizing display lists by referencing pointers to resources instead of copying them\n\nChange-Id: I81ad3551d74aa1e5bb64d69e33d2eb29a6c1eb6a\n"
    },
    {
      "commit": "50c0f093d942a59d4e01b2c76d26c0e9d6ed796c",
      "tree": "e3ba1ae68c0694bfcfca0c5c538b034ac86ca8b4",
      "parents": [
        "29d9849fd7b8b49c26fe7e7bae0ba01e907dc1b7"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 19 11:42:22 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 19 11:42:22 2010 -0700"
      },
      "message": "Solve rendering issue with embedded WebViews.\nBug #3094017\n\nThe blending mode was not appropriately set after WebView released the\ncontext.\n\nChange-Id: Ib36d48e82c12f6d131dd5a0bcde9106925b8da63\n"
    },
    {
      "commit": "03750a067e818ca7fbd0f590e2ff6a8fded21e6c",
      "tree": "e41ffdc1b72f66c13284df27877703111f048170",
      "parents": [
        "65202242defad10eb33a3b3277af49eb238a3f33"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 18 14:06:08 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 18 14:49:19 2010 -0700"
      },
      "message": "Use VBOs to render most geometries.\n\nChange-Id: I4360dc4fe5693ab425450c107282b2c22db4dca7\n"
    },
    {
      "commit": "054dc1840941665e32036f9523df51720ad069c8",
      "tree": "1f89288c08d67739f4f92d5cd04996d896a6d1e6",
      "parents": [
        "9d13fe25f4f10b25776b1dc5c858f9ebb0b28b30"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Oct 15 17:55:25 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Oct 15 17:55:25 2010 -0700"
      },
      "message": "Don\u0027t draw entirely transparent 9patch meshes.\n\nChange-Id: If3e62e18b8e0dbde8a22f8ede2889b86500a4dc2\n"
    },
    {
      "commit": "9d13fe25f4f10b25776b1dc5c858f9ebb0b28b30",
      "tree": "9ea9d664453cffdd499fad587693e5dcf12e4c88",
      "parents": [
        "e5ebcb0107a939395e03592fd44c746cd09e311d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Oct 15 16:06:03 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Oct 15 16:06:03 2010 -0700"
      },
      "message": "Fix text rendering artifact.\n\nChange-Id: I50f47207846e4208d363dde4e8f5f1a0f23d2d75\n"
    },
    {
      "commit": "e5ebcb0107a939395e03592fd44c746cd09e311d",
      "tree": "1ee2cc9fb92d3de28f40658df2a7df1da79f64f8",
      "parents": [
        "c65217e4ec3e6c80834988ec3bc66a90778ee4b0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Oct 15 13:57:28 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Oct 15 13:57:28 2010 -0700"
      },
      "message": "Fix clipping issue in StackView.\n\nChange-Id: I7ec28f25c3993a2bd7ef6399ba1923839d239905\n"
    },
    {
      "commit": "d2a1ff003b9b1212c9ab4b5f679b5b097720a359",
      "tree": "8ed98a94f0799861c4ebcb1799e7263fc8024000",
      "parents": [
        "ba7aad209f2b130a953467abd8cb41357fc20410"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Oct 14 14:46:44 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Oct 14 14:49:34 2010 -0700"
      },
      "message": "Fix text rendering issue.\n\nThe local clip rect could be off by one pixel when a 3D transform\nwas applied to a text primitive. This would cause small rendering\nglitches in Launcher in particular.\n\nChange-Id: I1254f6a5838c26810cbe969b096679d40b8dd504\n"
    },
    {
      "commit": "93d2361c6d294c390cb5c4a13bd1b88dcd465fd7",
      "tree": "654b730c9228af7f6947f5f7db231057235b9a34",
      "parents": [
        "909cbaf8f92d69f507bbdba9e5aa960d1e6c7a1f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 13 18:26:36 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 13 18:26:36 2010 -0700"
      },
      "message": "Fix layer rendering glitch.\n\nChange-Id: If2f987fe5526fc88743ca3e91edde4f8232ff658\n"
    },
    {
      "commit": "909cbaf8f92d69f507bbdba9e5aa960d1e6c7a1f",
      "tree": "e0b26f1015f875c9490bb1cfeceb76d3c40c1fd0",
      "parents": [
        "5d794412e3e429e47404395badcd11b0b8639e8b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 13 18:19:48 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 13 18:19:48 2010 -0700"
      },
      "message": "Don\u0027t draw TextView\u0027s alpha layers when not needed.\n\nChange-Id: Iedf42cbc62d727f18500c78fcccf2d081a761fec\n"
    },
    {
      "commit": "99bcdc52dcb365ed7d8cfa13540fb33fbcbbac9d",
      "tree": "6aa73d73948d851ea9b61c36e74a275c4092f5ad",
      "parents": [
        "bbf68c6ad2cc3dd338f93779d60c5821e730a263"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 13 15:17:00 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 13 17:24:41 2010 -0700"
      },
      "message": "Return identity matrix when rendering in an FBO.\n\nChange-Id: I57438e745b30c8cfe16c269f3cafcd719049d705\n"
    },
    {
      "commit": "41030da16856c8869e1e51d4a0405432fa96614e",
      "tree": "e40b599f2961989c444e5ca1bb92536eef76b7ba",
      "parents": [
        "2b67ce7213501d4377e46f67656993914eceb423"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 13 13:40:37 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 13 13:40:37 2010 -0700"
      },
      "message": "Add a getNativeMatrix() API.\n\nThis API can be used by WebView to apply the appropriate transform\non its rendering.\n\nChange-Id: I79aa39a29805f462fb08226370328815e74bdc52\n"
    },
    {
      "commit": "eb07af687319a0f52c219c3c0c1b73162fce9d04",
      "tree": "a27dad9873cd7cab7217ff45fd5c26a4a8885ff0",
      "parents": [
        "a0a312225ad56b858f37c2a428e9b8a7140907c4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 12 18:40:36 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 12 18:40:36 2010 -0700"
      },
      "message": "Optimize layer clears.\n\nDon\u0027t clear the entire texture when we use textures that are bigger\nthan the layer itself. This will save time during the glClear() calls.\n\nChange-Id: I06f3259ba62affb3708ba69ea41418832c7e1a65\n"
    },
    {
      "commit": "e91080581f467d55913a8c5ab53dedc2dab2e5b6",
      "tree": "ef4bfc31fac147b8a36b3c3d6593726106825032",
      "parents": [
        "1f114a55b5eaaa81bd302c9ad851362512b61e2f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 12 18:15:42 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 12 18:15:42 2010 -0700"
      },
      "message": "Tweak layers caching for better performance in Launcher.\n\nChange-Id: Ia6e67699d98f69c8a93385b3ecbdd814c7b16921\n"
    },
    {
      "commit": "4bb942083a0d4db746adf95349108dd8ef842e32",
      "tree": "7707bc9551f3db4ad0561c30c73293e4a0edfbf2",
      "parents": [
        "5a3b8e698e276839e502dcf41894b56ad59695c3"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 12 15:59:26 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 12 15:59:26 2010 -0700"
      },
      "message": "Optimize 9patch rendering.\n\nThis change detects empty quads in 9patches and removes them from\nthe mesh to avoid unnecessary blending.\n\nChange-Id: I4500566fb4cb6845d64dcb59b522c0be7a0ec704\n"
    },
    {
      "commit": "c00972bb162779e52d1b0d8f662a9f6033bf9182",
      "tree": "8ccf4a198e231998bc3c2eb75d3fc4d17cb0b2b3",
      "parents": [
        "425c305a535d8c5a9082685523ba46d06199e543"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 12 11:31:07 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 12 11:31:07 2010 -0700"
      },
      "message": "Don\u0027t recreate a new texture every time we draw a layer.\n\nChange-Id: I3c28aff5acffc7c6f1ac74805869725426c62d28\n"
    },
    {
      "commit": "dbc26d2ba13f80a7590c57de2d80530d96832969",
      "tree": "1883c28948243ec8906c594009c4a4208b132546",
      "parents": [
        "707b2f78ccaa09965d7e030fda3a883ce9b75ea8"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 11 17:58:29 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 11 17:58:29 2010 -0700"
      },
      "message": "Don\u0027t draw fully transparent views/primitives.\n\nChange-Id: Icd7d8ef1f57b51a24faf32f7004125e6300d4fdc\n"
    },
    {
      "commit": "707b2f78ccaa09965d7e030fda3a883ce9b75ea8",
      "tree": "0503326cbed34fe219dc32508456b5ce9bd03340",
      "parents": [
        "7537f856f9076a84db04d8de447f6527b67166fd"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 11 16:34:59 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 11 16:34:59 2010 -0700"
      },
      "message": "Optimize GLSL shaders.\n\nChange-Id: I9a5e01bced63d8da0c61330a543a2b805388a59d\n"
    },
    {
      "commit": "2728f961614a385df1f056fc24803a9f65c90fab",
      "tree": "c09ff5c42f949f4b9e76e197108cc5a506113ca3",
      "parents": [
        "8550c4c7b5952b7a4e1e0ede95c9492d03099a13"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Oct 08 18:36:15 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Oct 08 18:36:57 2010 -0700"
      },
      "message": "Don\u0027t update 9patches on every frame.\n\nChange-Id: I7ffb2365f83e0453e7d0a0cdcb3fc9308b305238\n"
    },
    {
      "commit": "8550c4c7b5952b7a4e1e0ede95c9492d03099a13",
      "tree": "3f2bccdd02bcf390eac98749475aad4ead1da1e4",
      "parents": [
        "ecd31740a00f8fb07090209cd979257c38cbcc92"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Oct 08 15:49:53 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Oct 08 15:49:53 2010 -0700"
      },
      "message": "Better cache for layers, reduce memory usage and increase framerate.\n\nChange-Id: I5ff864a361db4791bd5ff6be716f7ce692ef572d\n"
    },
    {
      "commit": "6b7bd24659fb175fe1f0e97c86c18969918b496a",
      "tree": "7f72a7811783f52871bdb49c702ef1247ce9d3a2",
      "parents": [
        "e3095e0c1e2a4a4f34f741aa386eae56536ca5aa"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 06 19:49:23 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 06 19:49:23 2010 -0700"
      },
      "message": "Don\u0027t clear the framebuffer when not needed."
    },
    {
      "commit": "eb99356a0548684a501766e6a524529ab93304c8",
      "tree": "7beb40beea2f12944057cd025ca8b212d3a01855",
      "parents": [
        "7adaf3d1aa18c7e521f7154e545fe52d329763c3"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 05 18:14:38 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 05 18:14:38 2010 -0700"
      },
      "message": "Optimize saveLayer() when the clip flag is set.\n\nThis speeds up applications, especially Launcher."
    },
    {
      "commit": "bdb801ca993bcccbf2a4c2401d1720c3fa523777",
      "tree": "a4b650bf412f692080aa3ecaedea39ac4816d6c4",
      "parents": [
        "11fd654a90359043e17ac78c1a3d6578c38b5c42"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 04 17:22:29 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 04 17:22:29 2010 -0700"
      },
      "message": "Remove logs to reduce logcat spam.\n\nChange-Id: I5fc295b05b5d82bb86827b88e94dd51e8bcdc7d3\n"
    },
    {
      "commit": "e8cb9c14309b0f01c0159efdf9a7198f44a62642",
      "tree": "4e4e2702c4db4fadc6161f62d5e34c36bfc83ccf",
      "parents": [
        "95930e13faac8c17dabfaa1478089baa772f091b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 04 14:14:11 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 04 14:14:11 2010 -0700"
      },
      "message": "Apply bilinear filtering on text only when necessary.\n\nChange-Id: Ic903f4b5d30e9c92528c6291941896efe4729ee3\n"
    },
    {
      "commit": "0bb5667b4ef91fefd0500fae0186789d15d54e0e",
      "tree": "92dfccfc1a428b6124e2a41061cde6a403976cd1",
      "parents": [
        "557ed7aa290497fb5764acb3f577edbe78bad5b9"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Oct 01 00:25:02 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Oct 01 00:25:02 2010 -0700"
      },
      "message": "Fix INVALID_OPERATION error with layers rendering.\n\nThis change is a workaround for a driver bug that causes an INVALID_OPERATION\nto be thrown on every glCopyTexSubImage() call. This change also adds a new\ntest for gradients local matrices.\n\nChange-Id: I41b7437481026702d0a3a9677f099b4557c0a84e\n"
    },
    {
      "commit": "4aa90573bbf86db0d33a3a790c5dbd0d93b95cfe",
      "tree": "65cedf6266b9f40b7227334f9e50d8d86f2340bf",
      "parents": [
        "cc64c5dbfbf11f513f60a82ee590f62dfb9a1565"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Sep 26 18:40:37 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Sep 26 18:40:37 2010 -0700"
      },
      "message": "Adding display lists to the GL renderer (checkpoint.)\n\nChange-Id: Iaa49757600a53b39369dbb23f8c3feab282518e6\n"
    },
    {
      "commit": "e2d345ea67e2960b37bfdc0fc8626d1bfa747404",
      "tree": "1c6aebf69921950237754ef7b8386a9856624e25",
      "parents": [
        "9a40babc62416259d18783ce8c03c00042ec317b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 24 18:39:22 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 24 18:39:22 2010 -0700"
      },
      "message": "Add debug mode to measure performance.\n\nChange-Id: I9d4c84034dc200b99c8266165942a7cdbcb5c0c5\n"
    },
    {
      "commit": "38c85b907a478af96d71b9a5df5a2066b8475311",
      "tree": "03c8ffe517ff14b71fb24e29ca43c3eb482ba442",
      "parents": [
        "806de5b1c5f98d67b00f7ba6087faca3b9632845"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Wed Sep 22 22:48:20 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Wed Sep 22 22:51:12 2010 -0700"
      },
      "message": "Correctly initialize/refresh layers.\n\nChange-Id: Id8cdcf587b13098460f7d4aa1bd17708784d89bb\n"
    },
    {
      "commit": "e20ecbd12d26467754a7770d44bcce2ea92335ef",
      "tree": "129cc4cfc5a5fd38c4a3be2ae665fcc25033cf9e",
      "parents": [
        "29d8997bd43b7c4ad37fc3d6f91eaafa74913c88"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Wed Sep 22 19:49:04 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Wed Sep 22 19:49:04 2010 -0700"
      },
      "message": "Draw text decorations with lines instead of rectangles.\n\nChange-Id: Icd25c85c3a24da96a3d2f76f9477da6f87e0303c\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": "b5ab4173e0927e4668a45298c9900cd8007584e1",
      "tree": "e059836b7a463cad61aed46d8bd8942836018e7b",
      "parents": [
        "c95c8d6bf8fda5c4e8ebd0033b789be7868e6e07"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 17 15:36:56 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 17 15:36:56 2010 -0700"
      },
      "message": "Fix positioning of 1 pixel wide lines (esp. non AA lines.)\n\nChange-Id: Ic155cac72f351edae35dffdfbb236954f57ba7de\n"
    },
    {
      "commit": "c95c8d6bf8fda5c4e8ebd0033b789be7868e6e07",
      "tree": "3f5a4ca860841db0de4678065d6f392590749780",
      "parents": [
        "31529ff7918ce891fba9a660d0a861eb313ea554"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 17 15:31:32 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 17 15:31:32 2010 -0700"
      },
      "message": "Add support for non AA lines.\n\nChange-Id: Id5200e94815404d62760437d0d2dbb0a9276c700\n"
    },
    {
      "commit": "759ea80dca64ad652110a129e0d8bf93fea79f61",
      "tree": "910900df67d9f9fed51398de2a03f40e2abefec5",
      "parents": [
        "bf434114cbf55b216fdc76fc8d65a75e84c9dab5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 16 20:49:46 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 16 20:49:46 2010 -0700"
      },
      "message": "Add support for drawLines(), with anti-aliasing\n\nChange-Id: I16c0593c5671490909dec13a85df601e1428a1a6\n"
    },
    {
      "commit": "bf434114cbf55b216fdc76fc8d65a75e84c9dab5",
      "tree": "5ad5f0411e6b804c264bed8927a9786a1942719c",
      "parents": [
        "b025b9c8b4efefadb01937db61a1f8ee7d2452bf"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 16 14:40:17 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 16 14:40:17 2010 -0700"
      },
      "message": "Snap layer bounds to pixel boundaries.\n\nChange-Id: I272ceebf469a119f01ea9d73cdd68519afdffa99\n"
    },
    {
      "commit": "b025b9c8b4efefadb01937db61a1f8ee7d2452bf",
      "tree": "dabed85e1e6b4aad2363925c779b783855b02d7e",
      "parents": [
        "857d7cf80ee37fc3b1d55ecfa4c27029672f5114"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 16 14:16:48 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 16 14:16:48 2010 -0700"
      },
      "message": "Better error handling in the OpenGL renderer.\n\nAdd a glGetError() check on every frame\nDon\u0027t attempt to create textures larger than the maximum size allowed\n\nChange-Id: Iee4afae16089406dbe8bf10fc93b674f1271a0ca\n"
    },
    {
      "commit": "6820ac8b14b4558f5d8b833dde80895306a3e137",
      "tree": "b90f253c05f20ae8a36c7bdc49147d447b75e7d5",
      "parents": [
        "9322775014432ed6c87c864e98fe482f879ff233"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 15 18:11:50 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 15 18:11:50 2010 -0700"
      },
      "message": "Fix 9patch rendering.\n\nChange-Id: Ic4c18ff483cca95fbabcb10843f7714efe488adb\n"
    },
    {
      "commit": "87a76578f76f4a6bceb187da6b7a01899ca0d85a",
      "tree": "853825c9d863f06c7ace42e2fd5da3ce814c92a5",
      "parents": [
        "e8c1c539ca18f8aeb74c3a3710893516e2c1be7c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Sep 13 18:11:21 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Sep 13 18:13:52 2010 -0700"
      },
      "message": "Docs updates.\n\nChange-Id: Iff395e1c6d81a484a2c4ad6e88357c0134971b78\n"
    },
    {
      "commit": "1c740bce8a762f02b5283045a0e2de7c8fb41277",
      "tree": "ebc1358a3cdcfb69f0427769756cbc83914f6c29",
      "parents": [
        "81ab046a1127bd2ad397e6d1c6f8021b202a97ff"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Sep 13 18:00:09 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Sep 13 18:03:21 2010 -0700"
      },
      "message": "Document the implementation of saveLayer().\n\nThe implementation is simple but tricky. Leave explanations to my\nfuture self so that I don\u0027t invent a time machine to come back to\nnow and slap my self.\n\nThis change also simplifies the way the GL blending function is\nchosen when compositing a layer. It reuses existing OpenGLRenderer\nAPIs and is easier to understand.\n\nChange-Id: I1b9cf8c5d51e09836d85b8cf157a1c284aa65c59\n"
    },
    {
      "commit": "81ab046a1127bd2ad397e6d1c6f8021b202a97ff",
      "tree": "136ad86c1a50582a4e3e79026bfd932df5e94404",
      "parents": [
        "8411f336c786379c5a03106e9ed3bc8622b579a5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Sep 13 17:32:34 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Sep 13 17:32:34 2010 -0700"
      },
      "message": "Forgot the return value...\n\nChange-Id: Iccf369a613c1cf83f3e948460c567291b084fad2\n"
    },
    {
      "commit": "8411f336c786379c5a03106e9ed3bc8622b579a5",
      "tree": "a84342e818982f1075d6c1722706e3bf4bd14ddb",
      "parents": [
        "1510770165b7bc675e5171560e907c0269dbe0fa"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Sep 13 17:27:57 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Sep 13 17:27:57 2010 -0700"
      },
      "message": "Fix rendering issue with layers intersecting the clip rect.\n\nChange-Id: Icbe35194fa219ef13ce639d33631235f8d7df3d7\n"
    },
    {
      "commit": "2bffd268f135df8308c9e67af110525a5c463424",
      "tree": "4af48402f57aeb87e7d9765c5b739825af3fcb70",
      "parents": [
        "eb851c4ecf38e3e2935fcf81c75c2ceadc2728e1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Sep 12 17:40:02 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Sep 12 17:59:13 2010 -0700"
      },
      "message": "Fix text rendering issue with text scaling.\n\nChange-Id: I1f3ae40025697e8f8ca0616ee6550fe215cadcc8\n"
    },
    {
      "commit": "8694230ff25fa0a60e480d424843e56b718f0516",
      "tree": "4fa55299cb6a516c443ce2c2082530ec69928211",
      "parents": [
        "f607bdc167f66b3e7003acaa4736ae46d78c1492"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Sep 12 13:02:16 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Sep 12 13:02:16 2010 -0700"
      },
      "message": "Optimize calls to glCopyTexImage2D().\n\nChange-Id: I34ee87bd4472864f440916e03a2894fae24bbe4a\n"
    },
    {
      "commit": "f607bdc167f66b3e7003acaa4736ae46d78c1492",
      "tree": "b3b4fb761b25d08ba836ff822f6e72d85b5be695",
      "parents": [
        "d14f0dfd58af653a2d41424d472fe97de6af0a78"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 10 19:20:06 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Sep 12 12:24:12 2010 -0700"
      },
      "message": "Correct implementation of saveLayer().\n\nChange-Id: I5375126636913e0a84f2d6bbd0ebe40d2e4f2763\n"
    },
    {
      "commit": "a5aed0d58962a24c44728ffc46dc9e1ba2f9fda5",
      "tree": "4194d14711b2cba0e8192e5f1c0764f530bc7309",
      "parents": [
        "d90f23e24a4d1768d5a7ed0e7072e67af6330a45"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 09 14:42:43 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 09 14:42:43 2010 -0700"
      },
      "message": "Add support for advanced blend modes with the framebuffer.\n\nThis adds the ability to blend with the framebuffer using Darken,\nLighten, Add, Multiply, Overlay and Screen.\n\nChange-Id: Iae01a53797d4ad39c373cba6ff2a42293129da1a\n"
    },
    {
      "commit": "d90f23e24a4d1768d5a7ed0e7072e67af6330a45",
      "tree": "5e6eb8954298a8c081b1e435eb7cc657b8a8b1b6",
      "parents": [
        "183f17e7eb2f51be24489e7b1bd3e2e5e4bc579a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 09 11:47:54 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 09 11:47:54 2010 -0700"
      },
      "message": "Do not convert 8888 bitmaps to 565 when doing a copy.\n\nBug #2988077\nThis change keeps the 8888 format for new bitmaps and also keeps,\nwhen possible, the opaque flag.\n\nChange-Id: Ia61f2e89936916b329212a4c59a7d815c329f84e\n"
    },
    {
      "commit": "8aef54fa17f2a3753d9a8f2027629bc480088f69",
      "tree": "b4b9e8130e46e3e2271f6e9d55aa988e1f172655",
      "parents": [
        "dbecc24a4ed4e9c24fc03db19038ee45cf7a0b1d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Wed Sep 01 15:13:49 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Wed Sep 01 15:49:25 2010 -0700"
      },
      "message": "Add support for Canvas flags on save.\n\nThis is required for the rewrite of layers support.\n\nChange-Id: I5c0867dcf5aeb0392c8d0fbab05febb0eaff70d9\n"
    },
    {
      "commit": "da8532c6f48b4c10b5e2ccb9e08690341efa1616",
      "tree": "e6ce7f533b4f4bb5bb9cdf60be64138d6bbb34ea",
      "parents": [
        "7dff1a72146ba549d51649ad786a0e1cc8b6897c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 31 11:50:35 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 31 11:50:35 2010 -0700"
      },
      "message": "Add hooks for hardware accelerated WebView.\n\nChange-Id: I907cdec8a67594f87749ac46bda85f04af5a2003\n"
    },
    {
      "commit": "b45c0c9774bd19a9dbe77d149abae4e124b08bf6",
      "tree": "809e63c596802906242c982ed67f463481b57230",
      "parents": [
        "c70bd1921bbc4046d0caf84959e5f1c2d526769a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 26 20:35:23 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 27 11:31:24 2010 -0700"
      },
      "message": "Apply gamma correction to font rendering.\n\nChange-Id: I1b05f40e356221b2a5eb9400e67d77ecd98ed6c4\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": "a80d32f7b69aa37026ab99e4ade1ad86dae76a81",
      "tree": "208c28a7cef27756daa88030f4c71ca2a721f41a",
      "parents": [
        "29378192f7ac4162d54fea4e34fddd42fd1f00d2"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 20 18:42:37 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 20 18:42:37 2010 -0700"
      },
      "message": "Add support for textScaleX.\n\nThis will not look great because we render fonts using bitmaps, not\npaths.\n\nChange-Id: I01b87b81bfbdbfa28460a5d5309d38e2a65e77c4\n"
    },
    {
      "commit": "8b55f377655d13a445b08a0a8ed09b6e95c752b0",
      "tree": "f21ba0cf47cdd5c32f5d84c9774f2a5ff0b4530f",
      "parents": [
        "5aaeaffdce904dae6e3eaf566dccf52611dffafa"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 18 17:10:07 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 18 17:10:07 2010 -0700"
      },
      "message": "Fix drawing issues with layers.\n\nPrior to this change layers would clip their content incorrectly. They would\nalso not apply alpha properly.\n\nChange-Id: Id7b3aaa7dbdc51de68fe050e64458f68e40503fd\n"
    },
    {
      "commit": "1f8c9602eeff0a35f8af70bd3fdcd770f0127775",
      "tree": "05042473a06c2db63bc3d12be1dddeb1b64a32ef",
      "parents": [
        "756879836bd3acb9fd500ca0aefebe7579567148"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 18 12:57:31 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 18 12:57:31 2010 -0700"
      },
      "message": "Fix the build.\n\nChange-Id: I8bd418ba21e3e3f68b793030398d1a5e933dfb19\n"
    },
    {
      "commit": "2542d199745cdf3ec910b8e3e4cff5851ed24e9b",
      "tree": "b0628a20db972e570e5781a957a2747dc3a3c16a",
      "parents": [
        "a8031c68c8e7ac5b1edfff2b6d03e3b46ec38a9d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 18 11:47:12 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 18 11:47:12 2010 -0700"
      },
      "message": "Layers were using an extra Snapshot causing extra clipping.\n\nBug #2919310\n\nChange-Id: I72ccd44bba7a3f3db72f581aa96198b6226e4478\n"
    },
    {
      "commit": "8fb954263dd2f918ad339045cc6d82e346515599",
      "tree": "6cc5874902c757432432f26cec37f1fdcbab0e4a",
      "parents": [
        "31d5becb7fe2981381a6c16afe6bb357416f4c3a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 17 18:38:51 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 17 18:40:21 2010 -0700"
      },
      "message": "Fix save()/restore() issues in the OpenGL renderer.\n\nThe save stack now behaves exactly like in Skia.\n\nChange-Id: If7e642f41f2c8f693f6e8c26cba81507d466562e\n"
    },
    {
      "commit": "1d83e1981c8b89da93dff37a4f8b2b1ad8480b44",
      "tree": "84e1106e4f55d13b9398658f6e639b18f4a9c9c1",
      "parents": [
        "0a41749953f35d33f61b3119e3161a82bb5fa59e"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 17 11:37:00 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 17 11:37:00 2010 -0700"
      },
      "message": "Correctly set the viewport in layers.\n\nBug #2919295\n\nChange-Id: I16ce79ab0d5747cb01c6c1abe531da3dfd93fb54\n"
    },
    {
      "commit": "0a41749953f35d33f61b3119e3161a82bb5fa59e",
      "tree": "3e0827c18c19e3ad8745ce133561be8a275f0345",
      "parents": [
        "5b53f9186e7812c93bc578d18e92cb123481fcbc"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 16 20:26:20 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 16 20:26:20 2010 -0700"
      },
      "message": "Cleanup, better code reuse.\n\nChange-Id: Ib86a7309ae579cce3b7cf464782c34e70a74c616\n"
    },
    {
      "commit": "1e45aae5de003657e5d18f74d34998f5de5db5b7",
      "tree": "355320038d0de8ed9b39c0cd3d3865b7fbbae1fd",
      "parents": [
        "029a74a38b56b97cbfe02b3d8e23536cea71609d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 13 19:39:53 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 13 19:41:14 2010 -0700"
      },
      "message": "Add drop shadows.\n\nChange-Id: Ic6a72409d4785968d1fbdff229f17ee5c00b240b\n"
    },
    {
      "commit": "959c91f7f7b4f921d341264f5b4ef54e702a0df0",
      "tree": "0b6e7264bf5680cb2dea83cf587449fde9802034",
      "parents": [
        "943fbb4f4006273ae5983da42143d721ae05dfd4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 11 19:35:53 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 11 19:35:53 2010 -0700"
      },
      "message": "Bunch of fixes.\n\nFixes memory leak, fixes multiple context support, fix 3d transforms.\n\nChange-Id: I7462cfbc57857dbd4de4e76b9d4cba58a1bce77b\n"
    },
    {
      "commit": "a674ab74e359ac73b4c4dd6b1a3a771836ac7e40",
      "tree": "d8797f1491f1486bf6cfedca446ccf845af4dc95",
      "parents": [
        "7a70374606499f8dbc65fd295b26672e95426595"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 10 17:26:42 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 10 17:26:42 2010 -0700"
      },
      "message": "Add support for text underline and strikethru.\n\nChange-Id: I3a0e6643d7cafbdd06d9a908c8cf9347dcaba146\n"
    },
    {
      "commit": "61c8c9c5b2006d18e9310b6521c65b36ffe75ce4",
      "tree": "f2a792387a3177a2e7a25290ec48bd79c62ef3e6",
      "parents": [
        "8cc82c6f4802937309dce6cba310e31358cdf6bf"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 09 20:48:09 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 10 12:22:01 2010 -0700"
      },
      "message": "Fix tons of bugs and add new text rendering support.\n\nChange-Id: I326c66b10784006f6df2f12d38e120cef94cd0d7\n"
    },
    {
      "commit": "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": "7fbcc0492fca03857e3c45064f4aa040af817d55",
      "tree": "a2422b4694ae589a60f2571070c53c7b918ec732",
      "parents": [
        "bc9151bcad5d1b1d14bb900fcc50ba08c06f87d4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 04 15:40:07 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 05 17:23:49 2010 -0700"
      },
      "message": "Add support for paths.\n\nRendering is implementing by rasterizing the paths into A8 textures.\nThis cna be extremely inefficient if the path changes often.\n\nChange-Id: I609343f304ae38e0d319359403ee73b9b5b3c93a\n"
    },
    {
      "commit": "db1938e0e6ef816e228c815adccebd5cb05f2aa8",
      "tree": "d40e91a873bca6750083fdb1713a12b469ebad4d",
      "parents": [
        "16f8c620abd0ea07e704b6997a66a45ad3590dea"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 02 18:50:22 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 02 18:50:56 2010 -0700"
      },
      "message": "Add support for ColorFilters.\n\nColor filters are fully supported and can be used with shaders.\n\nChange-Id: Id90ccf1c81cb462f2431f366f3f8f710d7971e04\n"
    },
    {
      "commit": "06f96e2652e4855b6520ad9dd70583677605b79a",
      "tree": "7d0e3709c8a400e264f37206eb27a286ee50d64b",
      "parents": [
        "42272759e4c3c406977187fd2b4df8739edccde8"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 30 19:18:16 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 30 19:18:16 2010 -0700"
      },
      "message": "Refactor Skia shaders handling.\n\nWith this change, Skia shaders can easily be applied to any mesh. This change also\nsupports ComposeShader. For instance, this can be used to blend a gradient and a\nbitmap togehter and paint a string of text with the result.\n\nChange-Id: I701c2f9cf7f89b2ff58005e8a1d0d80ccf4a4aea\n"
    },
    {
      "commit": "b82da65cb1601be504241f36778395cd6cb9f87b",
      "tree": "19fc51fb41e806817a4895212b8111fa9131af04",
      "parents": [
        "b422107d1d599e5d43cc47cd7e1342976b6b5b1a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 30 11:36:12 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 30 11:40:21 2010 -0700"
      },
      "message": "Fix improper clipping after a save()\n\nChange-Id: I13426a67f20d77e2710bd500d82884098f4be97c\n"
    },
    {
      "commit": "ae5575b3421c8fbe590ab046d7d5f2b36ecfd821",
      "tree": "2e4cfe7b83c81492a577428e0f8b7cb33faaa551",
      "parents": [
        "889f8d1403761d5668115ced6cbb3f767cfe966d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 29 18:48:04 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 29 18:48:04 2010 -0700"
      },
      "message": "Fix gradients rendering and destructor crashes.\n\nThis changes binds all textures to GL_TEXTURE0, this will have\nto be changed when combining shader capabilities.\n\nChange-Id: I02df4f5ba41e9b01ffa52fd7c26b41477c7ed18f\n"
    },
    {
      "commit": "889f8d1403761d5668115ced6cbb3f767cfe966d",
      "tree": "8620d3453e3811dce152630f1b17e0f5f42601c6",
      "parents": [
        "85d8daa889db113b51c5d98929245e80f7277388"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 29 14:37:42 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 29 14:37:42 2010 -0700"
      },
      "message": "Moved all the rendering code to the new shader generator.\n\nThe generator supports features that are not yet implement in the\nrenderer: color matrix, lighting, porterduff color blending and\ncomposite shaders.\n\nThis change also adds support for repeated/mirrored non-power of 2\nbitmap shaders.\n\nChange-Id: I903a11a070c0eb9cc8850a60ef305751e5b47234\n"
    },
    {
      "commit": "ac670c0433d19397d4e36ced2110475b6f54fe26",
      "tree": "10722cd4e465fc053f9536cc312c1125a694108a",
      "parents": [
        "bb2b2a996b2c0bea7e434136e20340f4f1b398ab"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 27 17:39:27 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 27 19:52:29 2010 -0700"
      },
      "message": "Generate shaders to cover all possible cases.\n\nWith this change, all the vertex and fragment shaders used by the GL\nrenderer are now generated based on a program description supplied\nby the caller. This allows the renderer to generate a large number\nof shaders without having to write all the possible combinations by\nhand. The generated shaders are stored in a program cache.\n\nChange-Id: If54d286e77ae021c724d42090da476df12a18ebb\n"
    },
    {
      "commit": "65ef909776c03417d8b597738da54ca211e37e4f",
      "tree": "01ca487c074d00d87f3c6662a5d3f123da532dfe",
      "parents": [
        "b46507f6b84f0cf5a7f56cc3bf3a19feb368eecb"
      ],
      "author": {
        "name": "Alex Sakhartchouk",
        "email": "alexst@google.com",
        "time": "Mon Jul 26 11:09:33 2010 -0700"
      },
      "committer": {
        "name": "Alex Sakhartchouk",
        "email": "alexst@google.com",
        "time": "Mon Jul 26 12:11:18 2010 -0700"
      },
      "message": "When font cache still has empty space,\nprecache some commonly used characters to reduce studder.\n\nChange-Id: I1f66f57482c4a025672dfd1d8ecaf2b9736cd9a0\n"
    },
    {
      "commit": "e8e62a4a032a80409114a37908b5f18ab0080848",
      "tree": "7bd5be7505e21861a02dda702e24f94d8e9b24cc",
      "parents": [
        "9e05ed2f6860a2d34c339a1755dbb5f68081c62e"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 23 18:55:21 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 23 18:55:21 2010 -0700"
      },
      "message": "Add text alignment support to drawText().\n\nThis change also integrates better support for RTL text.\n\nChange-Id: I6da8f5cf5dc28ca7cf1b22e27b0d853c919e8481\n"
    },
    {
      "commit": "51769a68a5cb34e9564740c6a854fcb93018789d",
      "tree": "ceb06dc0bd51240c4aaabdef8bfb415b3c982cdd",
      "parents": [
        "b84b7e8f2172964fb32598728cc25cada73cb148"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jul 23 00:28:00 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jul 23 00:28:00 2010 -0700"
      },
      "message": "Cleanup, added properties for the FontRenderer.\n\nChange-Id: I909c74815d3ac394438ad8071d17fef5401dbeed\n"
    },
    {
      "commit": "09147fbdc8206a0cac78bfe9083e7e15b3c5689c",
      "tree": "16f155fd722b6fba13508a09c29b9e8ea5adfdd3",
      "parents": [
        "612f8da2bc994043f26a278a9b1c2b681eabc4c9"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 22 13:08:20 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 22 13:08:20 2010 -0700"
      },
      "message": "Add support for text culling.\n\nChange-Id: Ibf0adacdc5c64d40a8000b21d7cb0797d63efe29\n"
    },
    {
      "commit": "694b519ac647fe998fd396fe0784cc8e179aadc4",
      "tree": "80a5e423f90aba3ab74645ac7f3b2cbfd838c757",
      "parents": [
        "0119ba5bd3335fe026927eeb65de535a7bd8c838"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 21 21:33:20 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 21 21:33:20 2010 -0700"
      },
      "message": "Add text rendering.\n\nChange-Id: Ibe5a9fa844d531b31b55e43de403a98d49f659b9\n"
    },
    {
      "commit": "a1db574036c9bc2d397b69f8200594027e1fff16",
      "tree": "ece6071cd30838075c334e6b2eda391af45c0f12",
      "parents": [
        "c0ac193b9415680f0a69e20a3f5f22d16f8053be"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 20 13:09:13 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 20 16:37:27 2010 -0700"
      },
      "message": "Add preliminary support for text rendering.\n\nChange-Id: I547eb631dbda24d13960d54b4144fb8908fd8a49\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": "f9764a4f532561f6e2e985ff3b25112f1132ce44",
      "tree": "910110cc35d1d3e2a48f000734ec50f6e53ced0f",
      "parents": [
        "7fac2e18339f765320d759e8d4c090f92431959e"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jul 16 23:13:33 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jul 16 23:18:27 2010 -0700"
      },
      "message": "Add program for linear gradient.\n\nThis change adds a new DrawLinearGradientProgram class to enable the drawing\nof linear gradients. Two new vertex and fragment shaders are introduced,\nbased on DrawTextureProgram\u0027s shaders.\n\nChange-Id: I885afc076bb6cef8cd3962ae21a086fa6a03bf96\n"
    },
    {
      "commit": "7fac2e18339f765320d759e8d4c090f92431959e",
      "tree": "1761c4f41ecd783a85220efcbcacb04d784d96cf",
      "parents": [
        "1e79386ba34f0db38c1b35b22cdf122632534354"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jul 16 17:10:13 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jul 16 17:10:13 2010 -0700"
      },
      "message": "Add plumbing to support gradients in OpenGL renderer.\n\nThe LinearGradient class keeps a copy of the various parameters that\ndefine the gradient. The copies are native arrays to avoid copying\nJava arrays on every draw call. The gradient code path is implemented\nuntil OpenGLRenderer::drawRect() (see TODO.) The actual gradient\nimplementation will be added in a latter change.\n\nChange-Id: I9300d250ef5e2e9c2e097c3116ee71dfc9d752d8\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": "079ba2c85b15e882629b8d188f5fbdb42f7f8eea",
      "tree": "dcdad4233c75952bea11e4d5b945996a0f930a9a",
      "parents": [
        "ebd6f94dbdafdb14d620d2bd8e08535a309f266a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jul 16 14:12:24 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jul 16 14:12:24 2010 -0700"
      },
      "message": "Improve clip support (add intersect, union and replace.)\n\nThis change also modifies the way the clip is stored. The clip is now\nalways stored in screen-space coordinates.\n\nChange-Id: I96375784d82dfe975bc6477a159e6866e7052487\n"
    },
    {
      "commit": "d27977d1a91d5a6b3cc9fa7664ac7e835e7bd895",
      "tree": "a8290b6045c8a13ea250e2dc00bb904b993a5bdc",
      "parents": [
        "7ba6617a53424b85711313478459a0a8cda8c3da"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 14 19:18:51 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 15 14:44:42 2010 -0700"
      },
      "message": "Add support for BitmapShader.\n\nThis change also fixes an issue with the clip and layers.\n\nChange-Id: I5fd9832098d8cf7ae8eb781ff9bffe7defaea279\n"
    },
    {
      "commit": "3d58c03de0d8877b36cdb78b0ca8b5cac7f600e2",
      "tree": "81d20a1aac231574266c696b82c36a67ff6772be",
      "parents": [
        "756088482fb102f0c728151553210dca254b575f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 14 16:34:53 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 14 16:35:43 2010 -0700"
      },
      "message": "Do not apply transforms when using drawColor().\n\nThis fixes an issue in the way the clip transformations were applied.\n\nChange-Id: I91e7b5d15baf244d1280e48938282bb33609081d\n"
    },
    {
      "commit": "a979474f15b454c8e2963f239a3770e200bb227c",
      "tree": "4279e918b6c244a7ce6ef115952fc44484a80166",
      "parents": [
        "37b76cdcb47697de7460dd254b62f1ff63e4ccde"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 13 11:37:54 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 13 11:37:54 2010 -0700"
      },
      "message": "Cleanup: remove unnecessary parameters.\n\nChange-Id: I5956ef1db6be28a01369387aaeeb65a94656c48c\n"
    },
    {
      "commit": "92429d9266edf63cf632c132c5936f0e31850988",
      "tree": "f5a61c444492f687ac8195f25d7f98f613d1f160",
      "parents": [
        "c7f3ce8401f9bb25ee8818092e85365908ae986d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 12 20:27:17 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 12 20:27:17 2010 -0700"
      },
      "message": "Fix premultiplied alpha.\n\nChange-Id: I08da422c5350503e1f4f27b9890f15a813d0c6c7\n"
    },
    {
      "commit": "6926c72e25b8dec3dd4b84af0819fa1937ae7296",
      "tree": "b59a3b01ddbc9ae8c0b5f11eaa6fcf27a9f9511d",
      "parents": [
        "260e102162322958cf17dbd895cd6bd30dc87e32"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 12 20:20:03 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 12 20:20:03 2010 -0700"
      },
      "message": "Correctly support pre-multiplied alpha, optimizations, more stuff.\n\nAdd support for the following drawing functions:\n- drawBitmap(int[]...)\n- drawPaint()\n\nOptimizes shader state changes by enabling/disabling attribute arrays\nonly when needed.\n\nAdds quick rejects when drawing trivial shapes to avoid unnecessary\nOpenGL operations.\n\nChange-Id: Ic2c6c2ed1523d08a63a8c95601a1ec40b6c7fbc9\n"
    },
    {
      "commit": "260e102162322958cf17dbd895cd6bd30dc87e32",
      "tree": "e7ff653e0e68525f1f90edeb2fbccc88fb81caeb",
      "parents": [
        "d12315ae7ee06902f4b7470259ce33076b6f542c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 12 14:41:06 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 12 14:43:40 2010 -0700"
      },
      "message": "Optimize shader binding changes.\n\nThis change also cleans up the internal API a little bit by using mat4\neverywhere instead of float[16] (for the ortho matrix for instance.)\n\nChange-Id: I35924c7dc17bad17f30307118d5ed437c2ed37e0\n"
    },
    {
      "commit": "0b9db91c3dc8007b47c8fd4fb9dd85be97201a88",
      "tree": "f8de431ac029c79d581e54b8ba52afe8a90e3e6b",
      "parents": [
        "8445ca6c3ba9b7cee6d20f5919e3b3ba8e6b8c96"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 09 18:53:25 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 09 18:53:25 2010 -0700"
      },
      "message": "Remove math from the vertex shader.\n\nChange-Id: I02847a60a8734bf8b3d29ec12e76297795095e38\n"
    },
    {
      "commit": "16202fc9745e9b11db089ebc8f40119d13732016",
      "tree": "1765a6146b9a4fcaf9513e1b9bc851e47fdc76b3",
      "parents": [
        "82164ad543b4eb6c11937b2a81891443317709cc"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 09 16:13:28 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 09 16:13:28 2010 -0700"
      },
      "message": "Fix alpha blending and improve fragment shaders performance.\n\nChange-Id: Ib74f6941d25ca6f6a41708e541174eaa7e8d9bc2\n"
    },
    {
      "commit": "fb5e23c327cd5f8f93d1eaa7c10f34d6fd3efb6c",
      "tree": "8637af6593869b9e3f31a8b35c4388016eb690ac",
      "parents": [
        "3465d5f532b65b0e50d21f5b23bc3badc73248ba"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 09 13:52:56 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 09 13:52:56 2010 -0700"
      },
      "message": "Refactoring to move vertex computing to the Patch class.\n\nThis change is mostly cleanup to keep less code in OpenGLRenderer.\n\nChange-Id: I954375143b2943829457ab470423729b60b844f5\n"
    },
    {
      "commit": "82ba814ca0dea659be2cc6523bc0137679d961ce",
      "tree": "93d2375615c7c67ccda0506376eef2079366fa5b",
      "parents": [
        "020057bd534a41080af8edbe6c6565d478ef256c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 09 13:25:56 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 09 13:25:56 2010 -0700"
      },
      "message": "Optimize blending state changes.\n\nChange-Id: I7c22a8aecccb8b5abfcf7243f049a4ef3cf3979a\n"
    }
  ],
  "next": "f7f93556c8fcc640ab5adef79d021a80a72a645a"
}
