)]}'
{
  "log": [
    {
      "commit": "cf51a4199835e9604aa4c8b3854306f8fbabbf33",
      "tree": "9f5095c3243d0e5dc367c613eee01db80472f1a0",
      "parents": [
        "f8a67f4f5dd4c5499a6e7148331f0286e31203ec"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Apr 08 19:40:31 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Apr 11 14:07:34 2013 -0700"
      },
      "message": "Introduce PixelBuffer API to enable PBOs\n\nPBOs (Pixel Buffer Objects) can be used on OpenGL ES 3.0 to perform\nasynchronous texture uploads to free up the CPU. This change does not\nenable the use of PBOs unless a specific property is set (Adreno drivers\nhave issues with PBOs at the moment, Mali drivers work just fine.)\n\nThis change also cleans up Font/FontRenderer a little bit and improves\nperformance of drop shadows generations by using memcpy() instead of\na manual byte-by-byte copy.\n\nOn GL ES 2.0 devices, or when PBOs are disabled, a PixelBuffer instance\nbehaves like a simple byte array. The extra APIs introduced for PBOs\n(map/unmap and bind/unbind) are pretty much no-ops for CPU pixel\nbuffers and won\u0027t introduce any significant overhead.\n\nThis change also fixes a bug with text drop shadows: if the drop\nshadow is larger than the max texture size, the renderer would leave\nthe GL context in a bad state and generate 0x501 errors. This change\nsimply skips drop shadows if they are too large.\n\nChange-Id: I2700aadb0c6093431dc5dee3d587d689190c4e23\n"
    },
    {
      "commit": "c5cbee7d78513527e89450e6369a30a04b2d5e7a",
      "tree": "a3709dd93124509c4490b889622b277d11fbef30",
      "parents": [
        "9eac52698b18d089e73c7ec2bf73a64a39504733"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 20 19:15:02 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 20 19:16:53 2013 -0700"
      },
      "message": "Stop worker threads on memory trim \u0026 fix bad pointer access\n\nChange-Id: I6fe7e31aeb6dd41fa65ab952caed97bc2da510d7\n"
    },
    {
      "commit": "c46d07a29e94807e768f8b162ce9f77a88ba6f46",
      "tree": "9b6aec5f5dc1d73b6cd9d583d5c5c78285480070",
      "parents": [
        "338b18844434379de54050ff582d36ff6da3ba11"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 15 19:06:39 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 18 18:32:17 2013 -0700"
      },
      "message": "Merge all shapes/paths caches to PathCache\n\nThis change will greatly simplify the multi-threading of all\nshape types.\n\nThis change also uses PathTessellator to render convex paths.\n\nChange-Id: I4e65bc95c9d24ecae2183b72204de5c2dfb6ada4\n"
    },
    {
      "commit": "ff78583d8a73ca35ce65b5d2592570ff6fb9901b",
      "tree": "24e7da9e7434d4884130a33f9b312a77654df733",
      "parents": [
        "9105ce744ecd237d4c74f4ee3a5b204c72e10c96"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 08 13:12:16 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 15 14:48:18 2013 -0700"
      },
      "message": "Fully deferred displaylist replay\n\nbug:8037003\n\nA recursive drawDisplayList call is now entirely deferred before\nplaying back to the screen and issuing GL commands. This way, the\nentire stream can be inspected, optimized, and batch work (such as\nuploading textures) before issuing commands.\n\nAdditionally, this fixes an issue where operations draw could move\nacross restores corresponding to saveLayer(alpha). Those and other\nsimilar cases (such as complex clipping, requiring the stencil) are\nnow treated as batching barriers, with the operations that change\nrenderer state in a way that\u0027s difficult to defer are just re-issued\nat flush time.\n\nChange-Id: Ie7348166662a5ad89fb9b1e87558334fb826b01e\n"
    },
    {
      "commit": "0f6675332c04c74909425d1d328f02b32c0ff40e",
      "tree": "53a912c204ba470a0d6cd2c5701a1aef614cc7eb",
      "parents": [
        "8b5aa4846939975adacd6ea1d2a57a2493ac0216"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 01 14:31:04 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 01 16:04:53 2013 -0800"
      },
      "message": "Precache glyphs at final raster size\n\nThe deferred display lists model now allows us to precache glyphs\nat their exact size on screen.\n\nThis change also removes debug markers when the renderer defers\nand reorders display lists. It also adds a flush event marker.\n\nChange-Id: I66ec5216dc12b93ecfdad52a7146b1cfb31fbeb4\n"
    },
    {
      "commit": "3ff0bfdd144bba3b023eda8c49b25fb0d0de8653",
      "tree": "cfc94ccf18fb1bfaaefb1241c700900a32276acf",
      "parents": [
        "01d159d88a51c44d7e282e07b834535e5b0e8bd1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Feb 25 14:15:37 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Feb 25 15:01:58 2013 -0800"
      },
      "message": "Add new property to debug non-rectangular clip operations\n\nThis change adds a new property called \"debug.hwui.show_stencil_clip\"\nthat accepts the following values:\n\n- \"highlight\", colorizes in green any drawing command that\u0027s tested\n  against a non-rectangular clip region\n- \"region\", shows the non-rectangular clip region in blue every time\n  it is used\n- \"hide\", default value, nothing is shown\n\nChange-Id: I83c8602310edc4aaeb8b905371cdd185b17d32b5\n"
    },
    {
      "commit": "ff316ec7a76e52572a2e89b691e6b3bba0cafba3",
      "tree": "8418a45b809c9382a0fc3d9d9bb6db6a537dd4cc",
      "parents": [
        "2b44eb75c42e4caa94f0b002f0ea9e134fe7b543"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 13 18:39:43 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 13 18:39:43 2013 -0800"
      },
      "message": "Implement support for drawBitmapMesh\u0027s colors array\n\nChange-Id: I3d901f6267c2918771ac30ff55c8d80c3ab5b725\n"
    },
    {
      "commit": "8d4aeb7111afac0c3c7e56d4ad5d92f9cfce2ffd",
      "tree": "d526296ca8e54842b15b60adaad484ee29feccf2",
      "parents": [
        "d1a84242a7ba807310d8f8d389796c7163cb97a0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 12 16:08:55 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 13 11:27:05 2013 -0800"
      },
      "message": "Add a render buffer cache to reuse stencil buffers\nBug #7146141\n\nThis new cache is used in a similar way to LayerCache. It helps\nreuse already allocated stencil buffers and thus avoid churning\nmemory on every frame.\n\nChange-Id: I19551d72da52c40039e65904563600e492c8b193\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": "c2a972131f1870042eb63847d4b24fbe718d8e3f",
      "tree": "5e9d66fbc9c58b7b9f260f9559fc1cc39fff87c4",
      "parents": [
        "3c099c42fd7ead1429076055990ae39b72c904f4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 06 15:29:46 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 06 15:29:46 2013 -0800"
      },
      "message": "Fix uninitialized variables in Caches.cpp\nBug #8151401\n\nChange-Id: I221f93de0f1981974f82a094297836dd3fe418bc\n"
    },
    {
      "commit": "f735c8e5cb59d6e1d1aa152fed7a6480a08d1c2a",
      "tree": "aeec78a2213d2fac2f3d052cf61b67ffb762fd7d",
      "parents": [
        "f158198ccc3a1f53bfebaa6b8f4426e80e1867ea"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 31 17:45:55 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 31 17:45:55 2013 -0800"
      },
      "message": "Fix tiling on QCOM GPU\n\nRename Caches::startTiling parameter from opaque to discard to\nmake it clearer what its role is. Tweak calls to startTiling\nto preserve the buffer when needed and discard it when possible.\n\nChange-Id: If7f8ff19003f79f36885a0a7207cc61901f637d2\n"
    },
    {
      "commit": "5bb3c730f5ebd2a0db1b02a8981c6fdbea6c1a2e",
      "tree": "b049bafac199be2d7e5cd4e86e4d8b03c1416616",
      "parents": [
        "db69db1510e77052f702a997894af5ca4b87e9e0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Nov 29 17:52:58 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Nov 30 16:29:33 2012 -0800"
      },
      "message": "Apply dev. settings at runtime\nBug #7434649\n\nChange-Id: I16f00eaa8a5eefd9f9849e196cf2cb1659215390\n"
    },
    {
      "commit": "aa42c9af6ea2158a685ebf9b338e6d2355712268",
      "tree": "051d7e09ddbc7baf5afa0a9d4d151a302c8ee0d8",
      "parents": [
        "d07fa6e0dc8141e5e77ffec6863f81a246bf8384"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue Oct 16 17:36:16 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue Oct 16 17:36:16 2012 -0700"
      },
      "message": "Correctly adjust clip regions that lie offscreen\n\nWe were clamping the x/y location of the scissor to 0,0, but not adjusting\nthe width/height appropriately. This fix adjusts width/height and also clamps\nthem to 0 to correctly clip out offscreen operations.\n\nIssue #7221524 Top left and top right portions of the screen blanks out after some time\n\nChange-Id: I47f23336ea612409ed86652b9a68e272819ef00e\n"
    },
    {
      "commit": "50ae66a554126fadee2054e0d01a9e57150cedb5",
      "tree": "536c47edc484fec4b9dffc46917e7a88a615f535",
      "parents": [
        "7711260e4959686bb1d6f177a843c2108bb04710"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Oct 07 14:05:59 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Oct 07 15:23:55 2012 -0700"
      },
      "message": "Work around a possible driver bug\nBug #7296475\n\nWhen re-enabling the scissor the driver seems to ignore the already\nexisting scissor box. This change resets the scissor box when the\ntest state changes.\n\nChange-Id: I3a68433164f99d21fbab769a26c56fe416c1539a\n"
    },
    {
      "commit": "6a2d17f71342f981c9df1dc5beff33e30eb3ae2b",
      "tree": "aaf68defc949273eccdd48aa40927fe8895ad37d",
      "parents": [
        "933a7546c857dba7704a15b7f7f7847934f14912"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Sun Sep 30 12:14:13 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Sun Sep 30 15:35:08 2012 -0700"
      },
      "message": "Fix texture corruption\n\nWhen memory gets low on a device, activities flush everything they can.\nHardware-accelerated activites, such as Launcher, flush GL resources and destroy\nthe GL context. However, some resources were still hanging around, due to deferred\ndestruction policies (we don\u0027t delete layers until the DisplayLists they are in\nare finalized, to ensure we don\u0027t deref deleted objects). This meant that we were\nreferring to obsolete GL data in these objects. in particular, it meant that we might\ncome around later, after a new GL context was created, and delete a texture object\nthat was incorrect. We use the layer\u0027s \"texture id\" to refer to the texture underlying the\nlayer. But if there\u0027s a new GL context, then this texture ID is no longer valid, and\nwe may be deleting the texture that a different object (layer, icon, whatever) is referring\nto, because the driver may return that same ID under the new GL context.\n\nThe fix is to more aggressively delete things that we know will not be used again\nwhen the GL context is destroyed. In particular, we delete all resources being used\nby all DisplayLists at GL context destruction time.\n\nIssue #7195815 Textures corruption on all devices, in many apps\n\nChange-Id: I52d2d208173690dbb794a83402d38f14ea4c6c22\n"
    },
    {
      "commit": "a852ff3a4b637e8101c2f54e110467586fe604cf",
      "tree": "0c940ea5314930c6fdbe15bfc1f4cc17c61d1b78",
      "parents": [
        "93aa70c6dfec91909404c9ade9b4a94574814092",
        "6ed9e43879039ce0cbead08d304edbce79a88ced"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 27 18:45:42 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 27 18:45:42 2012 -0700"
      },
      "message": "Merge changes I9873540e,I4f6c38e3 into jb-mr1-dev\n\n* changes:\n  Skia\u0027s ColorMatrix vector is in the 0..255 range not 0..1 Bug #7248980\n  Don\u0027t use the QCOM_tiled_rendering extension with functors Bug #7247880\n"
    },
    {
      "commit": "54c1a64d5441a964890b44280e4457e11f4f924a",
      "tree": "31e8837991a90927dfa925246df31b8e6ee36a18",
      "parents": [
        "d9730390c6bbac09107866462b9bf45d0b5706cf"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 27 17:55:46 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 27 17:57:24 2012 -0700"
      },
      "message": "Don\u0027t use the QCOM_tiled_rendering extension with functors\nBug #7247880\n\nChange-Id: I4f6c38e37b953c58e6107097c613891a49dac766\n"
    },
    {
      "commit": "cb4d6009576cf08195dc23f341a3f4939c0878bb",
      "tree": "234201781d7baaba35fc3baab178007ab03ea2df",
      "parents": [
        "fd3398c8bf25d8ec7ce813ebda431d67d734f268"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Sep 25 12:00:29 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Sep 26 14:38:11 2012 -0700"
      },
      "message": "Add stroke support to polygonal shape rendering\n\nbug:4419017\nbug:7230005\n\n- Adds support for stroke/strokeAndFill for shapes without joins\n- Fixes path-polygonization threshold calculation\n- Fixes rendering offset (now only used for points)\n- Several formatting fixes\n\nChange-Id: If72473dc881e45752e2ec212d0dcd1e3f97979ea\n"
    },
    {
      "commit": "17ef62cc1f9d092669af0fed465a9a77e0dc1a4f",
      "tree": "6d88c86ef0cb81ae3cecdfc4724f96f850415983",
      "parents": [
        "348f08f468167d56d7f66c59401da8bc69aab746"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 25 22:52:40 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 25 22:52:40 2012 -0700"
      },
      "message": "fix a possible dead-lock when clearing caches\n\nBug: 7195815\nChange-Id: I8e226b7ec445f9f4fe46ae216ef7cc41efc5a0fd\n"
    },
    {
      "commit": "54643d72f86d0ee0b23e3643ac9257d52ddfae6b",
      "tree": "fa42aca7c07a2a22050733a78fcaf72f20c4db51",
      "parents": [
        "cefbd1438c9054e3a34b4ab93b4b26b427604cb1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 25 21:30:22 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 25 21:41:38 2012 -0700"
      },
      "message": "make sure to destroy GL objects on the GL thread\n\nBug: 7195815\nChange-Id: I5bcac61cd0b903d1ccca0754fdb9cb1023efbe0f\n"
    },
    {
      "commit": "4285de3c8bc77856a2df98894f74bb7333f1d348",
      "tree": "1704cd1d596a0f35d8c5c21c07fa13644fe8b453",
      "parents": [
        "574cf6070d34e66dfd6f2006937986eddd1f09e7"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Sep 23 14:46:35 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Sep 23 14:46:35 2012 -0700"
      },
      "message": "Fix overdraw debug on QCOM\n\nDisable the use of the tiling extension when overdraw debug is\nturned on.\n\nChange-Id: Ib0a0b7d1998146aa0c7efef2d3822f9997efb123\n"
    },
    {
      "commit": "7c450aaa3caac2a05fcb20a177483d0e92378426",
      "tree": "986e53542f0b59d8108b366c5d4c4d8a3f04e51e",
      "parents": [
        "f7e52d92b41adf460089625ea47bfea2ed7e6296"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 21 19:15:00 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 21 19:15:00 2012 -0700"
      },
      "message": "Add support for a new developer setting: overdraw debugging\n\nChange-Id: I350ba4486577c3289f82c20938f7a35138778727\n"
    },
    {
      "commit": "57b5268708c3b974296c7d4e58a02a957979224a",
      "tree": "bb3a36e20b66edcbd7539aefd947c5b57d2897b3",
      "parents": [
        "314488b791d36756504ee593f818f04b4cd24893"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 20 17:38:46 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 20 17:38:46 2012 -0700"
      },
      "message": "Optimize tiling management\nBug #7186819\n\nChange-Id: Iebc42a6e9c96ad5605fbbe1539aa887695d2e829\n"
    },
    {
      "commit": "2b7028eabac80cec170572bc0e945a1d4224e595",
      "tree": "116f24c751ece653a5c1e08aa9c142ad1e142b25",
      "parents": [
        "4be07ade3658da9345067780520ddbd266900ee4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 19 17:25:38 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 19 21:10:09 2012 -0700"
      },
      "message": "Add support for QCOM_tiled_rendering\nBug #7186819\n\nThis optional OpenGL extension can be used by tiled renderers to optimize\ncopies from main memory to tiles memory.\n\nChange-Id: Id4a5d64e61ad17f50e773e8104b9bf584bb65077\n"
    },
    {
      "commit": "35643ddc689913f5b5f80ceed864470d987bd6cd",
      "tree": "db2ac0933bc52d1c71aa7d0edfd94c06dcc2cf2a",
      "parents": [
        "29d0aa73a099fde05c506857b5d215cde87b78d6"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Sep 18 15:40:58 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Sep 18 15:41:16 2012 -0700"
      },
      "message": "Minimize state changes when updating layers\n\nChange-Id: I407fcc80bd3178f9f09a3b379ceb7f7ce0749e08\n"
    },
    {
      "commit": "85ef80d8902afe8d26cb75fa7837fd9e6d019620",
      "tree": "d9dbb8a0d49731396fb904a541f9fbe2ece39698",
      "parents": [
        "dcd8c81bf4beb719888b6be1b9418303c9075938"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 13 20:26:50 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 13 20:26:50 2012 -0700"
      },
      "message": "Foundation for tiling optimization\n\nChange-Id: I4db32a4749f196472ba0dde7e102439d2ba4a3a7\n"
    },
    {
      "commit": "4ff0cf4b83605bff630c4e6f1fabe4f72a3f93a1",
      "tree": "2616ad1230b8ebc22a720945c5841a36572b9545",
      "parents": [
        "bec1d13da2ef3c8c2c4cc4f740474d095068bd8b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 06 14:51:10 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 06 14:51:10 2012 -0700"
      },
      "message": "Add new debug tool to track hardware layers updates\n\nYou can setprop debug.hwui.show_layers_updates true to flash\nhw layers in green when they update. This is also a setting\nin the Dev. section of the settings app.\n\nChange-Id: Ibe1d63a4f81567dc1d590c9b088d2e7505df8abf\n"
    },
    {
      "commit": "211efea7376371ee755edd2ad03e83ef6eea464e",
      "tree": "b79530b9f807f24571ce0e9ca143747e8c418725",
      "parents": [
        "42e1e0d482d774cf18a55773e434f02edb9e4462"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 31 21:16:07 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 01 19:18:35 2012 -0700"
      },
      "message": "Add dithering to gradients\n\nChange-Id: Ic1208855bde3a254eca2fd7cef43e0f1318ce419\n"
    },
    {
      "commit": "8a4ac610e1aaf04931ac1af54b146a7fc8e66114",
      "tree": "72a29e07d41dbf1e85966ec70acba688a93ec90c",
      "parents": [
        "41a48e4a9984eff92705a0c52104b0abd365521a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 17 17:32:48 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 17 17:32:48 2012 -0700"
      },
      "message": "Don\u0027t clear the dirty clip flag if it\u0027s not applied\nBug #6833979\n\nChange-Id: I0ea78b7f31a557a335de10d910d03b0520029080\n"
    },
    {
      "commit": "b1d0a4ed21168fefcb82232c8f22cb95d60acb85",
      "tree": "bb7cf461df68f47b83f1e302610504b534284a38",
      "parents": [
        "dd0d0ba654cea3051e44ba9ae20ac4b269e123c0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 13 18:25:35 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 13 18:25:35 2012 -0700"
      },
      "message": "Refactor GammaFontRenderer\n\nThis change is the first step to a shader-based text antialias\ngamma correction.\n\nChange-Id: I9eb02d4c56cb95d05219f712290c865b46141954\n"
    },
    {
      "commit": "586cae3ac69c0c667fbf8a954edbd399f620a717",
      "tree": "400d845a02c1ff3e36db59835072bf23efa789e7",
      "parents": [
        "9c0b188e4231bcb967234f3646c178d22d8a9f50"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 13 15:28:31 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 13 15:28:31 2012 -0700"
      },
      "message": "Improve rendering speed by disabling scissor tests\n\nThis change improves execution of display lists, particularly on\ntiled renderers. The goal is to disable the scissor test as\noften as possible. Drawing commands are rarely clipped by View\nbounds so most of them can be drawn without doing a scissor test.\n\nThe speed improvements scale with the number of views and drawing\ncommands.\n\nChange-Id: Ibd9b5e051a3e4300562463805acc4fd744ba6266\n"
    },
    {
      "commit": "dfa1046ecab165eb0daf5caa8475e993350f4a2b",
      "tree": "90cf67b49d82feaad76749749c38c59239bc2b08",
      "parents": [
        "2d97a70ff8bbac5ea807003d65b64e3b255e82bc"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sat May 12 16:18:58 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sat May 12 16:22:35 2012 -0700"
      },
      "message": "Add call sites for OpenGL\u0027s debug label extension\n\nChange-Id: I9c689127e8166cbef92c935f8aa07217ab806dda\n"
    },
    {
      "commit": "bb0acdf9e1d862a7cf0e2533321fc1105c29b5e3",
      "tree": "fbf7facb0b3e3c704ded07219bd7829cded40142",
      "parents": [
        "fb9c41c2060497a459d16c30122e1d082895e5d1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 05 13:44:35 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 05 13:44:35 2012 -0800"
      },
      "message": "Delete display list objects and resources on the UI thread\nBug #6073717\nBug #6065504\nBug #6026515\nBug #5971725\n\nPrior to this patch, the destructor of DisplayList would always run\non the finalizer thread. This could cause a race condition if the UI\nthread was busy rendering display lists at the same time leading to\nvarious random native crashes.\n\nChange-Id: Ie11108e3b1538d4b358a1a8b4cce1b2d33152d0c\n"
    },
    {
      "commit": "13631f3da855f200a151e7837ed9f6b079622b58",
      "tree": "ca21323b115baaa572ba94428e58283e0b6afeef",
      "parents": [
        "275345b0871c6b269709c3d6a25d9fae03f7922a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 30 17:41:55 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 30 17:41:55 2012 -0800"
      },
      "message": "Add debug markers to OpenGLRenderer\n\nThese markers will be used to group the GL commands by View in the\nOpenGL ES debugging tool. This will help correlate individual GL\ncalls to higher level components like Views.\n\nChange-Id: I73607ba2e7224a80ac32527968261ee008f049c6\n"
    },
    {
      "commit": "8564c8da817a845353d213acd8636b76f567b234",
      "tree": "71acbd8ace822c769aef917629bf5a079f63274d",
      "parents": [
        "c42e6a0bed2c88fd03466c5104d62d7f98e68768"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Jan 05 23:22:43 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 10:07:54 2012 +0000"
      },
      "message": "Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/157065\n\nBug: 5449033\nChange-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69\n"
    },
    {
      "commit": "5baa3a62a97544669fba6d65a11c07f252e654dd",
      "tree": "109755e1595b438873d34b981e31f84ea64bd2a5",
      "parents": [
        "173ab4d61077c49f115b82eff34f97fda5a7273a"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Dec 20 16:23:08 2011 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Jan 03 22:38:27 2012 +0000"
      },
      "message": "Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/156016\n\nBug: 5449033\nChange-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298\n"
    },
    {
      "commit": "82bc7a772747fcf8a6fe7097f70bf2981429ffe9",
      "tree": "c4991ea3e2f27ab029616ab2f87ce6413b639e0d",
      "parents": [
        "b8f90a0e6eae582778bbe10b6347acbf5fc69bfb"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 03 14:13:39 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 03 14:14:55 2012 -0800"
      },
      "message": "Properly restore the GL scissor after a GL draw functor\nBug #5781254\n\nChange-Id: I1dc4809563a793b6b579814951d4d73b4c34bf32\n"
    },
    {
      "commit": "8f85e80b64b89fd38cc23b129f61ec36ddde7f15",
      "tree": "bac2bd06357532f524277551c7606ad2471f7be8",
      "parents": [
        "2d4fd364843d3efc6e6ee59ccc5beb513a86d789"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Dec 14 19:23:32 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Dec 14 19:23:32 2011 -0800"
      },
      "message": "Generate even fewer GL commands\n\nChange-Id: I0f4dcacb03ef5ee7f6ebd501df98bfead5f0a7f8\n"
    },
    {
      "commit": "ec31f83bd3af1f900d1ee9116b15f56904c66dcd",
      "tree": "ff764a7793f4114db8a0c30c8b16511df2daedf9",
      "parents": [
        "a1d3c91afbd52c7e8b01f4a9060c5459f02ae7a5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Dec 13 18:39:19 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Dec 13 18:41:12 2011 -0800"
      },
      "message": "\u003cInsert something improper about OpenGL\u003e\n\nChange-Id: Ib645376093838156771588adc76a718da0ceb0db\n"
    },
    {
      "commit": "a1d3c91afbd52c7e8b01f4a9060c5459f02ae7a5",
      "tree": "25fabe19bc7667a756c27aec7b541acee0f49def",
      "parents": [
        "e829bc0f0364e942bed01536d115a5c08d25d776"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Dec 13 14:55:06 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Dec 13 14:58:14 2011 -0800"
      },
      "message": "Further reduce the number of GL commands sent to the driver\n\nChange-Id: Id922b2a166ea4573b767c27d3195e11c70320b23\n"
    },
    {
      "commit": "15bc6437f8b4cf10dba55c7638d349e7b9563f4f",
      "tree": "18e054e26a43a757fec54387571ae2d1aadbea1c",
      "parents": [
        "5009f65c9a676b64869e638e08ec0294e20d7e6e"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Dec 13 13:11:32 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Dec 13 13:11:32 2011 -0800"
      },
      "message": "Reduce the number of GL commands generated by the UI\n\nThis optimization along with the previous one lets us render an\napplication like Gmail using only 30% of the number of GL commands\npreviously required\n\nChange-Id: Ifee63edaf495e04490b5abd5433bb9a07bc327a8\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": "8ff6b9ebeeb24a6161ec6098e6bfdf8790ee5695",
      "tree": "b6caef363611d37aa58a1b92d96b0b8e2e9f50c4",
      "parents": [
        "36a7f2a9adfa21ec31f00d496fef82e68931c860"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Nov 09 20:10:18 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Nov 10 16:44:49 2011 -0800"
      },
      "message": "Terminate EGL when an app goes in the background\n\nThis does not happen on high end gfx devices. This happens\nonly if only one EGL context is initialized in the current\nprocess.\n\nChange-Id: Ibd1737efdf84eef8a84108b05795440d1ae9964e\n"
    },
    {
      "commit": "eca0ca2424afc1e98912405906edfc32f7733e16",
      "tree": "9f49527f35d77b0de3ee49f76e1b7bc99fac3ac6",
      "parents": [
        "650ee281ae9e007ce82ea79ff18bab9ef49503de"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Nov 04 15:12:29 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Nov 04 16:23:47 2011 -0700"
      },
      "message": "Memory optimizations for libhwui\nBug #5566149\n\nLazily initialize font renderers\nKeep 60% of the texture cache when an app goes to the background\nDelete least used font renderer when going to the background\nDelete all font renderers on full memory trim\n\nChange-Id: I3c2454d46dc1107ec0f0f72a9ce69cbbcc8825e7\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": "6d7475d666baefaa3ba9f0dcee25238739454241",
      "tree": "3050764e37c2d8610e143549074206f171dc6c66",
      "parents": [
        "eea60692b060737faeaa02bb30f5b79e2202b482"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 27 16:28:21 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 27 16:29:39 2011 -0700"
      },
      "message": "Destroy layers and flush layers cache when a window is destroyed.\n\nChange-Id: I3fa1bc3ff50fb99e3d2e490925bd6b0a0f809fff\n"
    },
    {
      "commit": "bdf7609867a3f886455c51dba91623a86cceb6e2",
      "tree": "269a199e3f566c6ac967412e13d2c72dc9cf20bf",
      "parents": [
        "d94b71de3b465c9c113f5b09c7cd5f221370af23"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 18 15:00:43 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 18 15:00:43 2011 -0700"
      },
      "message": "Trim OpenGLRenderer\u0027s memory usage whenever possible\n\nChange-Id: I9225077184f374b1a43300add15cc1d5b6869d1c\n"
    },
    {
      "commit": "042f7d64b5ccd7b5b73e7e9814a84576f04fb7d4",
      "tree": "66221ac5ac0764e2d7832a13385b52b00bd7cc38",
      "parents": [
        "8c55a9a57e4f13ec420c3de7b3abfdcf454f6633"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 13 09:49:43 2011 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 13 09:51:00 2011 -0700"
      },
      "message": "Fix debugging for hwui caches\n\nDebugging code attempted to delete a stack item.\n\nAlso, the flag fields weren\u0027t exactly clear, so rewrite it so it\u0027s\nclear that kDebugMoreCaches is a combined flag.\n\nChange-Id: If42b7f0f754919343301da5656aee5943cc9bd4a\n"
    },
    {
      "commit": "02ccac69fd1c0a03c24c5f3ace0ad4bed337b1fd",
      "tree": "60531b505178d4fb169abc83567d5d8db4f14ed0",
      "parents": [
        "b0b1b11b965598cb8fb724e636ebb58a77d437b5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 24 13:20:23 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 24 13:20:23 2011 -0700"
      },
      "message": "Code cleanup\n\nChange-Id: I64c346004e0adf9a776d0315534d4fe445f0c0ca\n"
    },
    {
      "commit": "d2ba50ab861ec0950bda18dd0f463b687e66249f",
      "tree": "4c20851d228c57b6635254fcea1710491aa71ed4",
      "parents": [
        "bc7cdb6783d059249133b1c0baf52c305c6b4a33"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri May 27 10:21:07 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri May 27 10:21:07 2011 -0700"
      },
      "message": "Prettify memory dump.\n\nChange-Id: I071c6a04a144a96955d85f56dffc6162288ee33e\n"
    },
    {
      "commit": "9c1e23baf5bfbebd1aebbd6d9a18c225325567ce",
      "tree": "00eeed008fc5b296391adfcb20a610e37849cf87",
      "parents": [
        "827107f4ec7d9a53d7bb6e4071858252f263fa8c"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Mar 24 10:51:31 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Apr 01 13:24:53 2011 -0700"
      },
      "message": "Add logging of graphics acceleration info to bugreports\n\nChange-Id: I9fa4cda6ccf92df9d1c644ccdc0e7274a30106e0\n"
    },
    {
      "commit": "2fc941e4650d618ff6e122f28b616d9032ffa134",
      "tree": "c05148e4502efbb492d93e45386601eab522faa4",
      "parents": [
        "ef36255f876aa1a61dcf5e879f4380887dda3854"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 03 15:06:05 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 03 16:20:08 2011 -0800"
      },
      "message": "Fixes cache misses and extra allocations.\nBug #3421454\n\nChange-Id: If4d5c960a7e4c581a9d213073e658284b4e1c497\n"
    },
    {
      "commit": "09b7c91de73b59aa3f679b3ae3ba299f82ec9f8a",
      "tree": "9eb49f2fedb60e6df37b54216ed20f054a6f55fd",
      "parents": [
        "62687ec12cb8e0b1d4044a235b1387b9a8c3b4b4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 02 20:28:09 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 02 20:28:09 2011 -0800"
      },
      "message": "Allocate layers from the layers pool.\nBug #3413433\n\nThis change will be beneficial to Launcher to avoid hiccups when\nswiping pages of icons. When a layer is discarded, it is kept\nin the layers pool instead of being destroyed right away. This\nfavors memory reuse over allocations.\n\nChange-Id: Ifb6944ba83d6ceb67c331527c0827b26ce648eb1\n"
    },
    {
      "commit": "01d58e43ede5ca98cbebdd166f9b0c545032c01b",
      "tree": "6d9976c551fd6ec9f104e5a849c0ad743946af6c",
      "parents": [
        "9335f5b2fde244614184f45d29cc574d1ba8cbba"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 19 21:54:02 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 19 21:55:10 2011 -0800"
      },
      "message": "Add rounded rects and circles support to OpenGLRenderer.\n\nChange-Id: I6cedf2b495d58de7c0437096809fa9e4518a1b8c\n"
    },
    {
      "commit": "ada830f639591b99c3e40de22b07296c7932a33f",
      "tree": "308f469469e96ce7f99d2ec5135e7d44eb858a35",
      "parents": [
        "4f6aff386045000c2c03b903c7109cb42092b7ea"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 13 12:13:20 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 13 12:13:20 2011 -0800"
      },
      "message": "Cleanup implementation of hardware layers.\n\nThe new implementation relies on OpenGLRenderer\u0027s existing layer\ncode instead of duplicating it. The new code is much cleaner, with\nsimpler and better APIs and allows tracking of drawn regions inside\nlayers. Region tracking is not yet enabled but this will be done\nin a future CL.\n\nChange-Id: Ie826121a2227de8252c77b992a61218defea5143\n"
    },
    {
      "commit": "57066eb64c9a190d1afc87bb060bbb2d31e5b86c",
      "tree": "09c71b4431b6146e08d12e792b4c3dcea6ff57ed",
      "parents": [
        "9454fe1080458812db76599dd02a8b91a2e1e8f4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 12 12:53:32 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 12 12:53:32 2011 -0800"
      },
      "message": "Cleanup GL objects on the correct thread.\n\nChange-Id: Iddfea6e08a6591a4fab147151098ef27005f373d\n"
    },
    {
      "commit": "7230a74e9a36dfc6c4346c14e325bf07cd05b380",
      "tree": "0726a708eb545618fde761bd03ed3a1830e34c03",
      "parents": [
        "a07105b7d2a27e6d69407bf96ddb773bddb5e553"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 10 22:26:16 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 10 22:26:16 2011 -0800"
      },
      "message": "Composite layers as regions.\n\nThis change detects what area of a layer was drawn into and generates a mesh\nto match this area exactly. This can be used to avoid blending empty pixels\nwhen the layer is composited.\nThis change also adds proper layers support to lines rendering and implements\nlayers composition in a more readable way.\n\nChange-Id: I4a5588b98b19bd66891ebdc39631b193c5e31999\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": "e190aa69756aecfaffabdd4c6d32cb6b3220d842",
      "tree": "3e0b6400e428be77544e2670627eeec8ceb6a434",
      "parents": [
        "c15008e72ec00ca20a271c3006dac649fd07533b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Nov 10 19:01:29 2010 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Nov 10 19:01:29 2010 -0800"
      },
      "message": "Add new runtime debug flags.\n\nChange-Id: I07955de166a89b5053c6c13f250bb3e2936ca86e\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": "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": "9bca4793a33d2714b306d69ceb870925a588fe71",
      "tree": "03d6bc554b1a61de818c32330039af59cad4b70d",
      "parents": [
        "3e3ba155fc0ef7a7f40f06762240d9ba22f62b19"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 25 18:42:25 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 25 18:42:25 2010 -0700"
      },
      "message": "Small cleanup.\n\nRemoves unnecessary forward class declaration, make Caches::currentBuffer\nprivate instead of public.\n\nChange-Id: Idba6325c8c602d89239e667cb8ec87e7943f8e75\n"
    },
    {
      "commit": "dd78ccacff83f0714ad90be98b58ad85f5d08c66",
      "tree": "40889dd933c043eb840e2f6beda2981908af6e1f",
      "parents": [
        "4de82c7885bd41f9fa5ca3938d617cae5edacbdf"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Oct 22 18:59:26 2010 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Sun Oct 24 12:27:22 2010 -0700"
      },
      "message": "Fix Caches singleton to avoid resource leaks\n\nThe declaration of Singleton objects must be in CPP files (not header\nfiles) to avoid creating separate instances of what is supposedly a\nsingle object.\n\nChange-Id: Ie903384824a458b5572f3ce5b6cfb359c18a9c44\n"
    }
  ]
}
