)]}'
{
  "log": [
    {
      "commit": "95aeff8f11968c8b29ae114bb5e1172c70cf7634",
      "tree": "d2c4cb1a5c7d043c703c6ac828a9d5abd9c6ded3",
      "parents": [
        "e203384f1627f27c81ff72426498927fb9d80698"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Apr 12 16:32:05 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Apr 12 16:32:05 2013 -0700"
      },
      "message": "Properly computer gradient textures width\n\nOnly on devices that do not have the npot extension\n\nChange-Id: I472a13dc707d2abaf5fcc06f99c9da343b333558\n"
    },
    {
      "commit": "b48800428906ae455c2b63acacd44e390e1fee49",
      "tree": "bc0de8c6f51eb5c9cac2d5fe1d5a41fede6d727a",
      "parents": [
        "80fdc9624e6d53a78031bf99d34e7c01d53ad66e"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Apr 05 11:17:55 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Apr 05 14:17:17 2013 -0700"
      },
      "message": "Use float textures to render gradients when possible\n\nFloat textures offer better precision for dithering.\n\nIn addition this change removes two uniforms from gradient shaders.\nThese uniforms were used to dither gradients but their value is\na build time constant. Instead we hardcode the value directly in\nthe shader source at compile time.\n\nChange-Id: I05e9fd3eef93771843bbd91b453274452dfaefee\n"
    },
    {
      "commit": "ca89e2a68703bd428e8b66547d033a6ed35b3595",
      "tree": "5661de81848f7d26559531a1ea650ed7fea2decd",
      "parents": [
        "6e2004089305cf2cd958b52b234459a49a4e5c83"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 08 17:44:20 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 11 17:05:28 2013 -0700"
      },
      "message": "Precache paths from a worker thread\n\nChange-Id: I3e7b53d67e0e03e403beaf55c39350ead7f1e309\n"
    },
    {
      "commit": "3bbacf27c0be1bae4e4483577fc89ae3113abe5d",
      "tree": "102ffa5362c1782af27f2f0abad3e9f481479e79",
      "parents": [
        "c2a972131f1870042eb63847d4b24fbe718d8e3f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 06 16:51:04 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 07 12:11:22 2013 -0800"
      },
      "message": "Add a RenderBuffer object to store stencil buffers.\nBug #7146141\n\nThis change is needed to add a render buffer cache to avoid\ncreating and destroying stencil buffers on every frame.\n\nThis change also allows the renderer to use a 1 bit or 4 bit\nstencil buffer whenever possible.\n\nFinally this change fixes a bug introduced by a previous CL\nwhich causes the stencil buffer to not be updated in certain\nconditions. The fix relies on a new optional parameter in\ndrawColorRects() that can be used to avoid performing a\nquickReject on rectangles generated by the clip region.\n\nChange-Id: I2f55a8e807009887b276a83cde9f53fd5c01199f\n"
    },
    {
      "commit": "15a65bfee5b0a98664eb5ebadad63c73e2c471f8",
      "tree": "3fe682fcf0893d426e60da1847465d9009ef7f31",
      "parents": [
        "dcfc836b457a87881da409e1acf251515f121446"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 03 14:22:40 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 03 14:45:39 2013 -0800"
      },
      "message": "Remove unnecessary \u0026 uninitialized variable\nBug #7728929\n\nThe uninitialized variable was taken into account to compute\nthe hash of gradient cache entries, thus causing cache corruptions\nand sometimes infinite loops (it would also cause the cache to fill\nup.)\n\nChange-Id: Ic807a9bf901888b121a6a781a81dafc33075ed2a\n"
    },
    {
      "commit": "059e12ccd20f5c249724a8362d6bac325334ea76",
      "tree": "7b15fa6bc6d2963715ea298a51cca3909c1e50c9",
      "parents": [
        "c653df46436a796556da2633f90353900344ce39"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Nov 28 17:35:51 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Nov 29 11:44:02 2012 -0800"
      },
      "message": "Use LruCache instead of GenerationCache in libhwui\n\nChange-Id: Ic26ddc7151eb5462bcd243b21daf7187ed6d3bec\n"
    },
    {
      "commit": "a8557d2169e14997637f57bc897640c8882d4a46",
      "tree": "7b2266c166f65ef186e913f18110dab6bbd7d9e8",
      "parents": [
        "703bd32647556524fa8cadbe869c8a8d734640ef"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 31 19:52:30 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 31 20:04:18 2012 -0700"
      },
      "message": "Revert \"Add more support for transformed clip rects and paths\"\n\nthis introduced a dead lock in GradientCache\u0027s ctor.\n\nThis reverts commit dfe082f63e94cde9aee271c94d13de5e7217e036.\n\nBug: 7096001\nChange-Id: I57b8bbab11fb7cb502fa58e3bbf5d19864db874f\n"
    },
    {
      "commit": "dfe082f63e94cde9aee271c94d13de5e7217e036",
      "tree": "938584a2a121427d00521a10fe95ce0e34588a06",
      "parents": [
        "fbb4321b94927fd6bd39d327fe56787989b11c71"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 31 17:14:30 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 31 17:17:40 2012 -0700"
      },
      "message": "Add more support for transformed clip rects and paths\n\nChange-Id: I41791b1e1bffef77d503dc9e52428395d2309688\n"
    },
    {
      "commit": "d679b57ef279239cf11bb6c9bd14fb99b07971c9",
      "tree": "8755627bed9d9ffc8045cdd06e54d729f6cab5f3",
      "parents": [
        "2c577f1777a9227c581d41d5c08d674740e39ea9"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 29 21:49:00 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 29 21:56:18 2012 -0700"
      },
      "message": "Pre-multiply color components for 2-stop gradients\nBug #7033344\n\nChange-Id: Ia168501f1dc56ba7a1bb0c55078320432309a66a\n"
    },
    {
      "commit": "320d46bf844b84351cb80c5d4a4768d86447ac81",
      "tree": "fee65370216aee9df6116a46ebae0edfd8de1272",
      "parents": [
        "c89b14bba0f6cc2c91629080617f7ed215f697f3"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 08 16:05:42 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 08 16:05:42 2012 -0700"
      },
      "message": "Reduce gradients textures size whenever possible\n\nChange-Id: Ifd58625ee62edac3b5d20b77553cb98b6fa2b46e\n"
    },
    {
      "commit": "42e1e0d482d774cf18a55773e434f02edb9e4462",
      "tree": "33ac1bca20382f2e8ccbf176c89b3476f2ae5c9b",
      "parents": [
        "8ab8fbbf46d8779f53301e7f706f97608eed7117"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 30 14:47:51 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 31 18:55:16 2012 -0700"
      },
      "message": "Improve gradients\n\nAvoid using textures for common gradients (two stops from 0.0 to 1.0)\n\nChange-Id: Iff55d21b126c8cfc4cfb701669f2339c8f6b131a\n"
    },
    {
      "commit": "98ba89492a477114148fcb1f89675e41679ca7cc",
      "tree": "89db302c556fdbb61cc1e2e21adceb30a8e53372",
      "parents": [
        "00755fed35e4a91291c42a8a47bed8b957e9f8e1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 20 16:50:03 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 20 16:58:45 2012 -0700"
      },
      "message": "Make gradients look slightly better\n\nChange-Id: Ib12c628a88b9ec6af1214ce6e5cb14cfde40485e\n"
    },
    {
      "commit": "8dcfd5e836341b4a803b04d104a930bb312182d3",
      "tree": "cd2b75a4431f7ecfd869e007c5c15031e74298ed",
      "parents": [
        "0aa87bbfc41e8b5f52de701ac17b4e66a7a7b609"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 20 11:36:03 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 20 11:47:57 2012 -0700"
      },
      "message": "Clamp gradient textures to max GL texture size\n\nChange-Id: I8ce4e50988f5194fe5ce4bde7945ec01673af3cd\n"
    },
    {
      "commit": "eb61cd8296ed7e3f3aef5bd430d846aa54d5d7e2",
      "tree": "baf241a0b6912a8304843a542dfadf4b869474c1",
      "parents": [
        "63553478130f78d44c8fbeaebc610e19925544a5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 18 20:26:02 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 18 20:39:45 2012 -0700"
      },
      "message": "Optimize gradient textures\n\nCompute the size of the backing textures based on the maximum possible\nnumber of shades in the gradient.\n\nChange-Id: I2d7f20477d31b81e9735f2c1d83ebdd0dbcbe340\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": "39d252a6632d057d5077f7eaf1b8ed7a142f3397",
      "tree": "c840b4084ba7fb8be54b0d387953cc6a15decbdd",
      "parents": [
        "f44e66fcf70aa4a354deca72dfbd3b29c29302be"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Dec 12 18:14:06 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Dec 12 18:14:06 2011 -0800"
      },
      "message": "Various OpenGL optimizations\n\nChange-Id: Ib0742c96f10f5f50e7e5148b742c31b6c232d127\n"
    },
    {
      "commit": "6203f6c8147069976342be8f42add797a50f9557",
      "tree": "cb623a81ace2133781fe04d57d5e08aee7aa8121",
      "parents": [
        "0965a3244b4c3009d08db2e084cdcb681ef66d26"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 01 18:56:21 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 01 18:56:21 2011 -0700"
      },
      "message": "Reduce the amount of data cached by the gradients cache.\n\nChange-Id: I8546f5a5ecf38031c9a40bdcc434d4c7f22da63d\n"
    },
    {
      "commit": "e3c26851dc315b730ea0fe5ef35bb1db81f6d675",
      "tree": "bc3fbae626f785fa38e40d4f5ab3737777d9a1ef",
      "parents": [
        "29d23ecfd8612ecd4a7b2140acd344934b73a558"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 25 16:36:01 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 25 16:36:01 2011 -0700"
      },
      "message": "Improve rendering performance on some GPUs\n\nThis change sets textures filtering to GL_NEAREST by default. GL_LINEAR\nfiltering is only used when textures are transformed with a scale or\na rotation. This helps save a couple of fps on some GPUs.\n\nChange-Id: I1efaa452c2c79905f00238e54d886a37203a2ac1\n"
    },
    {
      "commit": "c9855a53edfac818dc68714557185977556f849d",
      "tree": "7ace2dd62d887408e84f8a09c43e60de26b436b6",
      "parents": [
        "6828656220f4ed5ae803e4c11fb75fb56bc3ea25"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jan 21 21:14:15 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jan 21 21:14:15 2011 -0800"
      },
      "message": "Log only 1 line per process when using OpenGLRenderer.\n\nChange-Id: Idbdd6b84f31301e58ed53e0d50fd61fece192dfa\n"
    },
    {
      "commit": "fe48f65922d4a3cc4aefe058cee5acec51504a20",
      "tree": "97ea23ae71dade1ef7bf783523bea9cda31dd042",
      "parents": [
        "50c5e4c36e494d092576d42cf2b406abab20510a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Nov 11 15:36:56 2010 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Nov 11 15:36:56 2010 -0800"
      },
      "message": "Free resources only from the GL context thread.\nBug #3179882\n\nResources were freed following garbage collections on a worker thread.\nThis worker thread had no EGL context, which would cause the renderer\nto incorrectly assume that the memory was liberated.\n\nChange-Id: Ifdb51f94ddf42641e8654522787bfac532976c7c\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": "a2341a9f6addcd79723965ec5b1a1c5ae0f8bd65",
      "tree": "ce61e01a0719f9fc52e48be002fe1d57d3af9c68",
      "parents": [
        "9aaa8269a3e7291aab84d01c3fc9c744d8f2d2f4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 08 18:04:33 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 08 18:04:33 2010 -0700"
      },
      "message": "Purge Skia objects from GL caches as needed.\n\nChange-Id: I754c671cf790ad5ae8bf047ad328034217da4ecc\n"
    },
    {
      "commit": "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": "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": "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"
    }
  ]
}
