)]}'
{
  "log": [
    {
      "commit": "24edca8b526515979778e577191089a57f5277d7",
      "tree": "8974701bf7100ce56b1c13b47c3c4ada7af02181",
      "parents": [
        "05bbde70fd2a3af737656b9f8c5a25b56429632e"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Dec 09 13:08:06 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Dec 09 13:08:06 2011 -0800"
      },
      "message": "Code cleanup\n\nChange-Id: If92e3addfc4d8546a60edcdea60a1fc89c27b680\n"
    },
    {
      "commit": "df0a7fbdcff3c683641b7980da50a7d0eebe0876",
      "tree": "bce1f0ec1aecb5735a1dd17a7a5a87f13d7a94b0",
      "parents": [
        "8ef9eaaea8cc27145bf159e45b7d9eaa0aae6d5c",
        "8f0095cd33558e9cc8a440047908e53b68906f5f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon May 02 18:33:26 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 02 18:33:26 2011 -0700"
      },
      "message": "Merge \"Allows to render with an OpenGL context inside a TextureView.\""
    },
    {
      "commit": "8f0095cd33558e9cc8a440047908e53b68906f5f",
      "tree": "2f55d779bf102e0c134357d89c7de69d0444634a",
      "parents": [
        "3a5c227279011f850036c29e7c0bc96023298d5c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon May 02 17:24:22 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon May 02 18:32:29 2011 -0700"
      },
      "message": "Allows to render with an OpenGL context inside a TextureView.\n\nChange-Id: I59453f7fc3997f0502a1c5d325d37fed376fabc7\n"
    },
    {
      "commit": "99585adeb4167ca357a72eb866f34c1af944f4b9",
      "tree": "ba993a2167fb880c98e29e4d2bd46933e182b1cf",
      "parents": [
        "71a0dab1ca962c2827be0221a7fbcc065dc3cbb8"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon May 02 15:00:16 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon May 02 15:08:38 2011 -0700"
      },
      "message": "Line endcaps for AA lines are now antialiased.\n\nAlso fixed other minor issues with AA and line rendering.\n\nChange-Id: Icd4638d27c70e2ee0f28b5d9a2b97d8b29e8ac4d\n"
    },
    {
      "commit": "aa6c24c21c727a196451332448d4e3b11a80be69",
      "tree": "27114ab3852d31723d885f3846ee874a07247126",
      "parents": [
        "9fc27819d75e24ad63d7b383d80f5cb66a577a0d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Apr 28 18:40:04 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Apr 28 18:46:19 2011 -0700"
      },
      "message": "New widget: TextureView\nBug #4343984\n\nTextureView can be used to render media content (video, OpenGL,\nRenderScript) inside a View.\n\nThe key difference with SurfaceView is that TextureView does\nnot create a new Surface. This gives the ability to seamlessly\ntransform, animate, fade, etc. a TextureView, which was hard\nif not impossible to do with a SurfaceView.\nA TextureView also interacts perfectly with ScrollView,\nListView, etc. It allows application to embed media content\nin a much more flexible way than before.\n\nFor instance, to render the camera preview at 50% opacity,\nall you need to do is the following:\n\nmTextureView.setAlpha(0.5f);\nCamera c \u003d Camera.open();\nc.setPreviewTexture(mTextureView.getSurfaceTexture());\nc.startPreview();\n\nTextureView uses a SurfaceTexture to get the job done. More\nAPIs are required to make it easy to create OpenGL contexts\nfor a TextureView. It can currently be done with a bit of\nJNI code.\n\nChange-Id: Iaa7953097ab5beb8437bcbbfa03b2df5b7f80cd7\n"
    },
    {
      "commit": "6fca9884b3ea24d5775af4cf713fd81506913a39",
      "tree": "374fa71493a7fe3fb1c871d67ef4928ebf28369a",
      "parents": [
        "466e3a22db283958a1da71cc60a23ce3976a3659"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Apr 25 14:49:07 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Apr 25 14:50:04 2011 -0700"
      },
      "message": "Minor cleanup in GLrenderer code\n\nChanged the way we use bitcodes for one of the rendering\noptions to make the code cleaner.\n\nChange-Id: Ifaa965f228dbdad297a40da93bfbe63373986e35\n"
    },
    {
      "commit": "6cfdf4538049e4b96f50d8c0fe3119664420cc34",
      "tree": "766190868e274776121ec8b3d41669d223d9c78e",
      "parents": [
        "b86a6ea41dadae6ee1915cdb9406c51193e97555"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Apr 22 16:42:10 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Apr 22 16:42:10 2011 -0700"
      },
      "message": "Fix bitfield bug with vertex shader selection\n\nChange-Id: I8bd3005f363afb52e6624806efb3e04c4a56ee18\n"
    },
    {
      "commit": "5b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82",
      "tree": "905d0c539f0ed9a4e6ae6538bd6ab7f74efeefb8",
      "parents": [
        "3ad604b3d8a3ae87ee3f7545677bacc8f11159c0"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Apr 13 17:58:08 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Apr 21 11:47:05 2011 -0700"
      },
      "message": "Enable anti-aliasing for hw-accelerated lines\n\nDraw anti-aliased lines with OpenGL by constructing a quad with\na border that fades out (to mimic fragment coverage).\n\nChange-Id: Ib81a3e62d663acdf1b46b401ac4aa7ee9855cc7e\n"
    },
    {
      "commit": "ed6fcb034b44d9a6ac2fc72fee6030417811f234",
      "tree": "42a469fd5b0eabb1fd3b6a34243d57c081eee764",
      "parents": [
        "67ac217a81f34ee3d35df84b38f3456843c40706"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 21 13:11:28 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 21 13:11:49 2011 -0700"
      },
      "message": "Add support for drawPoint() and drawPoints().\n\nChange-Id: I01bef50c08ec3160f8d40dc060b2cf6c2e4d7639\n"
    },
    {
      "commit": "7b5b6abf852c039983eded25ebe43a70fef5a4ab",
      "tree": "918c9bd4b35e0790a9d01fdf88bafd90b952101e",
      "parents": [
        "c7fcc5076fb2988fba699a2167d19475fd58ed0b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 14 18:05:08 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 14 18:05:08 2011 -0700"
      },
      "message": "Fix rendering artifact in edge fades.\nBug #4092053\n\nThe problem always existed but was made visible by partial invalidation.\nWhen saving a layer, the renderer would try to postpone glClear()\noperations until the next drawing command. This however does not work\nsince the clip might have changed. The fix is rather simple and\nsimply gets rid of this \"optimization\" (that turned out to be\nusless anyway given how View issues saveLayer() calls.)\n\nThis change also fixes an issue with gradients (color stops where\nnot properly computed when using a null stops array) and optimizes\ndisplay lists rendering (quickly rejects larger portions of the\ntree to avoid executing unnecessary code.)\n\nChange-Id: I0f5b5f6e1220d41a09cc2fa84c212b0b4afd9c46\n"
    },
    {
      "commit": "70ca14e08ae197547ac412e8a1210e1ebdfb2eb1",
      "tree": "b5d798c0ae819e6d769b826c5d090ea4f03665a0",
      "parents": [
        "b8c0de2c2726f4e8f0029710047efe0c8e6661ed"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Dec 13 18:24:33 2010 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Dec 13 18:24:33 2010 -0800"
      },
      "message": "Refactor OpenGLRenderer to simplify OpenGL drawing code.\n\nThis is the first step of the refactoring:\n- drawColorRect\n- drawTextureMesh\n\nRemaining methods to refactor:\n- setupTextureAlpha8\n- drawPath\n- setupShadow\n- drawText\n- drawLines\n- composeLayerRegion\n\nChange-Id: I0fced6a05b6b6eee10ee7cef0c3fbdaa6cefab20\n"
    },
    {
      "commit": "c15008e72ec00ca20a271c3006dac649fd07533b",
      "tree": "a518cebc2b12966bde88c0a3a80ee19b989d17bb",
      "parents": [
        "21c1114dad3a778992479ec8ef514e412a7b2646"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Nov 10 11:59:15 2010 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Nov 10 11:59:15 2010 -0800"
      },
      "message": "Move all debug flags in a single place.\n\nThis change also adds a new memory usage flag. When turned on, the\nfollowing is printed after every frame:\n\nD/OpenGLRenderer( 3723): Current memory usage / total memory usage (bytes):\nD/OpenGLRenderer( 3723):   TextureCache          3766680 / 20971520\nD/OpenGLRenderer( 3723):   LayerCache            3538944 /  8388608\nD/OpenGLRenderer( 3723):   GradientCache          135168 /   524288\nD/OpenGLRenderer( 3723):   PathCache               41180 /  4194304\nD/OpenGLRenderer( 3723):   TextDropShadowCache         0 /  2097152\nD/OpenGLRenderer( 3723):   FontRenderer 0         262144 /   262144\nD/OpenGLRenderer( 3723):   FontRenderer 1         262144 /   262144\nD/OpenGLRenderer( 3723):   FontRenderer 2         262144 /   262144\nD/OpenGLRenderer( 3723): Other:\nD/OpenGLRenderer( 3723):   FboCache                    2 /       12\nD/OpenGLRenderer( 3723):   PatchCache                 31 /      512\nD/OpenGLRenderer( 3723): Total memory usage:\nD/OpenGLRenderer( 3723):   8268404 bytes, 7.89 MB\n\nThis should help tracking possibe memory issues.\n\nChange-Id: I83f483ca1d2dbef904829bce368e33fe5503e8d6\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": "4afdf666fdb034834c48445570ed9d6f4133fc71",
      "tree": "a957f9f7fc930ac5e7eed44b8849ecee9794c6ab",
      "parents": [
        "1b422d8cd8ed83b79e977a3afb99969cea4a6700"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Wed Oct 13 21:31:28 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Wed Oct 13 21:31:28 2010 -0700"
      },
      "message": "Color filters were ignored by the program cache fast path.\n\nChange-Id: I08f2f02d356234a674be778d088e0558fd49c849\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": "ee916f14cbd1fe1422c063ce2ef7b185e2bc5c6f",
      "tree": "4fd53bcd273d42fa1aebb064b18563aa293467b1",
      "parents": [
        "b5ab4173e0927e4668a45298c9900cd8007584e1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Sep 20 17:53:08 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Sep 20 17:54:17 2010 -0700"
      },
      "message": "Add support for SweepGradient in the GL renderer.\n\nChange-Id: I7aa397ed4e34655ead9ba1f5b4ce087665e0f022\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": "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": "98173a277f8bd6d53d6ff9f7ff09e084f2666fc1",
      "tree": "e90ee9b61c1a23300de1bad3a1eb83d6d77c6d07",
      "parents": [
        "3fa3403e2ee98a66b1b1b83b6f65980163609b6d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 11 16:40:25 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 11 16:40:25 2010 -0700"
      },
      "message": "Delete shaders after a compile error. Also disable extra logging.\n\nChange-Id: I9b1558b0feac3d9b2cca926feeaf73921664cc73\n"
    },
    {
      "commit": "48daa54d31fc59ec969dcff65eb3cbb0ce879a8d",
      "tree": "f4ad358f86c6c66b457129ca2aa863be01a47a20",
      "parents": [
        "a674ab74e359ac73b4c4dd6b1a3a771836ac7e40"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 10 19:21:34 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 10 21:42:40 2010 -0700"
      },
      "message": "Add extra blending modes.\n\nThis change adds the following blending modes for shaders and color filters:\nAdd\nMultiply\nScreen\nOverlay\nDarken\nLighten\n\nChange-Id: Iff22f5ce6041b43c71b1857d73013f5010ab3413\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": "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"
    }
  ]
}
