)]}'
{
  "log": [
    {
      "commit": "62a42c13a6e86255a0118688a60c9248030c95a9",
      "tree": "3f7e12c3f6c7dcc4ae571a792fda5d9780afa429",
      "parents": [
        "101ae3bb3909827303121e5e11ed16b7efe36538"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 15 11:58:14 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 15 14:53:12 2013 -0800"
      },
      "message": "Adjust offset for non-AA line drawing\n\nbug:8114304\n\nThe original .375 was chosen to make GL_LINES align with Skia drawing.\nThe new value of .065 is chosen to be as small as possible to make\ntriangle-based lines align with Skia, while keeping lines drawn on\ninteger coordinates unambiguous as to which column/row they draw on.\n\nAlso adds more lines in CanvasCompare test to highlight the difference\n\nChange-Id: If578684f2db320682219c3caa625cf79bc62d88f\n"
    },
    {
      "commit": "39284b763a09688468ed3799ebd2ebb76ea5dfd5",
      "tree": "b67c139bf0552ff066a4eafb9e29deae62924075",
      "parents": [
        "bd43152bda835c5a9a619a5869344a6a3af11917"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 26 16:39:40 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 26 16:39:40 2012 -0700"
      },
      "message": "Make gradients beautiful again\nBug #7239634\n\nThis change passes two matrices to the vertex shader instead of one.\nWe used to compute the final MVP matrix on the CPU to minimize the\nnumber of operations in the vertex shaders. Shader compilers are\nhowever smart enough to perform this optimization for us. Since we\nneed the MV matrix to properly compute gradients dithering, this\nchange splits the MVP matrix into two. This has the advantage of\nremoving one matrix multiplication per drawing operation on the\nCPU.\nThe SGX 540 shader compiler produces the same number of instructions\nin both cases. There is no penalty hit with having two matrices\ninstead of one. We also send so few vertices per frame that it\ndoes not matter very much.\n\nChange-Id: I17d47ac4772615418e0e1885b97493d31435a936\n"
    },
    {
      "commit": "0990ffbc4d407e174423a4a04b5902ed83f71db5",
      "tree": "1296fbc452975cfb910733c9fe7f865fd474dd7b",
      "parents": [
        "218e2f199b9ba568a815d64269ea0784e2d32935"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Sep 17 17:43:45 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue Sep 18 14:10:10 2012 -0700"
      },
      "message": "Fix GL shader bugs\n\nFixing errors in emitted shader code that caused GL errors\nat runtime\n\nChange-Id: I267a84398a81329a6688b292505f8779bd750ad1\n"
    },
    {
      "commit": "3762c311729fe9f3af085c14c5c1fb471d994c03",
      "tree": "7d4caccad80ac7327c7bff96dafc857d5f4631ad",
      "parents": [
        "7a939077bd14521c7d351af98df7ed75a8ec9c15"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 19:20:56 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Sun Jan 08 13:19:13 2012 +0000"
      },
      "message": "Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/#/c/157220\n\nBug: 5449033\nChange-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c\n"
    },
    {
      "commit": "2d4fd364843d3efc6e6ee59ccc5beb513a86d789",
      "tree": "e6314681f94a7fcd0355a5700ecf65d9e3e0c5bb",
      "parents": [
        "ec31f83bd3af1f900d1ee9116b15f56904c66dcd"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Dec 13 22:00:19 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Dec 13 22:00:19 2011 -0800"
      },
      "message": "Reduce the number of active texture changes\n\nChange-Id: I94046bdfe20740c26c8183822e3002d692fde7c4\n"
    },
    {
      "commit": "f3a910b423db7ad79cf61518bdd9278c048ad0d8",
      "tree": "a0ae14d597ee14202ec6ca60cedfb446ff470379",
      "parents": [
        "d71dd367af604571c7d00ca473184a1b9240eca2"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Dec 12 20:35:21 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Dec 12 20:35:21 2011 -0800"
      },
      "message": "Optimize state changes\n\nChange-Id: Iae59bc8dfd6427d0967472462cc1994987092827\n"
    },
    {
      "commit": "f44e66fcf70aa4a354deca72dfbd3b29c29302be",
      "tree": "a0ad778032fe70f89b07b55750c772f5edc84b79",
      "parents": [
        "3e263fac8c9c0e0fb242186b514a7af8efb40961"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Dec 12 16:50:13 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Dec 12 16:50:13 2011 -0800"
      },
      "message": "Remove leftover debugging code\n\nChange-Id: I1589af7991da36744071d5081daa24ebae5b4dfd\n"
    },
    {
      "commit": "3e263fac8c9c0e0fb242186b514a7af8efb40961",
      "tree": "c4333a2489886c933172a5cd271c8bda0796324a",
      "parents": [
        "6752d0ab029a185a42e34e7a933b669e6ed19e89"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Dec 12 16:47:48 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Dec 12 16:47:48 2011 -0800"
      },
      "message": "Keep shaders to render properly\n\nI don\u0027t know who\u0027s to blame, SGX or Tegra2 but one of those two GPUs is not\nfollowing the OpenGL ES 2.0 spec.\n\nChange-Id: I2624e0efbc9c57d571c55c8b440a5e43f08a54f2\n"
    },
    {
      "commit": "6752d0ab029a185a42e34e7a933b669e6ed19e89",
      "tree": "1aeae1aa8a3907412fd12521c99f19b629b53ba4",
      "parents": [
        "11326aa1b9482fefa0c0bdcb7e48cfeae6f9e33d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Dec 12 12:15:17 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Dec 12 12:15:17 2011 -0800"
      },
      "message": "Mark color uniform fetched after fetching it\n\nChange-Id: I10e8027018608070a536eb8b51c7a4272e37006c\n"
    },
    {
      "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": "05bbde70fd2a3af737656b9f8c5a25b56429632e",
      "tree": "9bfe33e07e50af451260807d67606d1b75e692f8",
      "parents": [
        "9477c6e6581ce97976250951f33e1297604ac777"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Dec 09 12:55:37 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Dec 09 12:55:37 2011 -0800"
      },
      "message": "Free up resources by deleting shaders early on\n\nChange-Id: I29a39775732c0a48d3e6823f7afa3e741cae8541\n"
    },
    {
      "commit": "8a5cc92a150bae38ec43732d941b38bb381fe153",
      "tree": "24bf32e7fcc20ab94e64f57e6f72bd8762d3bdf9",
      "parents": [
        "b4a56f10d875dc62a9c73008f98596c7e32fc249"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue Apr 26 07:28:09 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Apr 27 14:23:29 2011 -0700"
      },
      "message": "Fix various hw-accelerated line/point bugs\n\nAll accelerated lines are now rendered as quads. Hairlines used to\nbe rendered as GL_LINES, but these lines don\u0027t render the same as our\nnon-accelerated lines, so we\u0027re using quads for everything. Also, fixed\na bug in the way that we were offsetting quads (and not offseting points)\nto ensure that our lines/points actuall start on the same pixels as\nSkia\u0027s.\n\nChange-Id: I51b923cc08a9858444c430ba07bc8aa0c83cbe6a\n"
    },
    {
      "commit": "67f27952c1bcb2230beef9b5ca0bf42edad436a9",
      "tree": "9cfec6c807b64d51fba041e2f6dd50c6abe3577e",
      "parents": [
        "dbf78bdb7a9aed3b8393c247128a7e8c760343b5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Dec 07 20:09:23 2010 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Dec 07 20:12:50 2010 -0800"
      },
      "message": "Correctly release the OpenGL Canvas on EGL error.\n\nChange-Id: Ib31fd8445f7ce5f7aa7e0205de0e7db80d024fc2\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": "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": "31529ff7918ce891fba9a660d0a861eb313ea554",
      "tree": "8be25943daf28a7e39af5d87d389abf1e986dd5a",
      "parents": [
        "a977120681904ee6309f3e90f51c6cc43615c007"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 17 10:26:31 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 17 10:26:31 2010 -0700"
      },
      "message": "Correctly free memory.\n\nChange-Id: I08fcbfa7d27ae413e0a8e8ca6ea305c8530a72c1\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": "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": "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": "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": "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": "5cbbce535744b89df5ecea95de21ee3733298260",
      "tree": "37dda328f8d127cead9e799e5220b4589267bc5e",
      "parents": [
        "1d58b498de5eb3b53ca0c7ffd14b1c209833d297"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Sun Jun 27 22:59:20 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Sun Jun 27 22:59:20 2010 -0700"
      },
      "message": "Reduced the complexity of layers composition.\n\nThis change also refactors the code base a bit by moving classes out of\nOpenGLRenderer into separate headers/implementations. This makes the code\nmore manageable.\n\nThis change also adds documentation for implementation methods. The\nundocumented methods are simply Skia\u0027s Canvas methods.\n\nChange-Id: I54c68b443580a0129251dddc1a7ac95813d5289e\n"
    }
  ]
}
