)]}'
{
  "log": [
    {
      "commit": "62d307c2402777d5e53b4590af5f32f8c55afd81",
      "tree": "fbf89a15003e9e4e3b665bd271c41693dc992dbe",
      "parents": [
        "f4bf67012b2109ead9a4cb9c4407563fc3671255"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 29 10:35:13 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 29 17:42:22 2014 +0000"
      },
      "message": "Fix behavior of stencil clipping within clearLayerRegions\n\nbug:16376960\n\nThe draw within clearLayerRegions should never be affected by the\ncurrent stencil clip, since it\u0027s just ensuring that the content of the\nlayer is cleared, and not doing real content drawing.\n\nAlso, add optional verbose GL event logging\n\nChange-Id: I538b1bc631fc091340b76e12db6af0c219851b57\n"
    },
    {
      "commit": "ba9b613437c34873fa95800a25fc51720638267c",
      "tree": "c47ac384de0306a48956ad6efaa3c5c5e51553c0",
      "parents": [
        "d83adf00ae6cb073fa0e4fbb837c2b87d824ec4f"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Sun Dec 15 17:10:19 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Dec 16 14:57:00 2013 -0800"
      },
      "message": "Create private properties on GLCanvas for experimentation with 3d\n\nChange-Id: I17772f61efce727cb4c1111f4d97f58c741786b8\n"
    },
    {
      "commit": "55bfb4e728fe1db619af5d2c287f4abe711b3343",
      "tree": "3b9c9eb0902fdb0f8991259a04c342f89f65bcaa",
      "parents": [
        "d08eadd287991ec18eafe620b24e2b1bf0ce1f2d"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Tue Dec 03 10:38:55 2013 -0800"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Dec 13 17:25:47 2013 -0800"
      },
      "message": "Calculate and show Ambient shadow.\n\nBasically we compute the shadow as a strip of triangles, whose alpha value\nis the strength of the shadow.\nWe use the normal to extend the geometry.\nAnd we use static function and try to avoid new/malloc in the computation.\n\nChange-Id: I382286f1cad351bd5ff983f76f446c075819dcaf\n"
    },
    {
      "commit": "f57776b2d195f0937906eb88b777bb55ccc36967",
      "tree": "f2c160bb0860a6f3d0f883cdf0c520892a1bde24",
      "parents": [
        "c3c4d36df01631883a79163da841ca222497c9d3"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Oct 25 18:30:17 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Dec 12 10:18:23 2013 -0800"
      },
      "message": "3d view system!\n\nTrue 3d transformations are now supported by DisplayLists and the\nrenderer, initially with the translationZ property on view.\n\nRenderer operations used directly by DisplayList (formerly,\nclip/save/restore/saveLayer) are now more simply managed by allocating\nthem temporarily on the handler\u0027s allocator, which exists for a single\nframe. This is much simpler than continuing to expand the pool of\npre-allocated DisplayListOps now that more operations are called\ndirectly by DisplayList, especially with z ordered drawing.\n\nStill TODO:\n-APIs for camera positioning, shadows\n-Make Z apis public, and expose through XML\n-Make invalidation / input 3d aware\n\nChange-Id: I95fe6fa03f9b6ddd34a7e0c6ec8dd9fe47c6c6eb\n"
    },
    {
      "commit": "3b748a44c6bd2ea05fe16839caf73dbe50bd7ae9",
      "tree": "ea104e727beba793c10952f5b328478020859599",
      "parents": [
        "dd424cf079d2677e9333d89466f93166787e61c8"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Apr 17 18:54:38 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu May 02 13:32:09 2013 -0700"
      },
      "message": "Pack preloaded framework assets in a texture atlas\n\nWhen the Android runtime starts, the system preloads a series of assets\nin the Zygote process. These assets are shared across all processes.\nUnfortunately, each one of these assets is later uploaded in its own\nOpenGL texture, once per process. This wastes memory and generates\nunnecessary OpenGL state changes.\n\nThis CL introduces an asset server that provides an atlas to all processes.\n\nNote: bitmaps used by skia shaders are *not* sampled from the atlas.\nIt\u0027s an uncommon use case and would require extra texture transforms\nin the GL shaders.\n\nWHAT IS THE ASSETS ATLAS\n\nThe \"assets atlas\" is a single, shareable graphic buffer that contains\nall the system\u0027s preloaded bitmap drawables (this includes 9-patches.)\nThe atlas is made of two distinct objects: the graphic buffer that\ncontains the actual pixels and the map which indicates where each\npreloaded bitmap can be found in the atlas (essentially a pair of\nx and y coordinates.)\n\nHOW IS THE ASSETS ATLAS GENERATED\n\nBecause we need to support a wide variety of devices and because it\nis easy to change the list of preloaded drawables, the atlas is\ngenerated at runtime, during the startup phase of the system process.\n\nThere are several steps that lead to the atlas generation:\n\n1. If the device is booting for the first time, or if the device was\nupdated, we need to find the best atlas configuration. To do so,\nthe atlas service tries a number of width, height and algorithm\nvariations that allows us to pack as many assets as possible while\nusing as little memory as possible. Once a best configuration is found,\nit gets written to disk in /data/system/framework_atlas\n\n2. Given a best configuration (algorithm variant, dimensions and\nnumber of bitmaps that can be packed in the atlas), the atlas service\npacks all the preloaded bitmaps into a single graphic buffer object.\n\n3. The packing is done using Skia in a temporary native bitmap. The\nSkia bitmap is then copied into the graphic buffer using OpenGL ES\nto benefit from texture swizzling.\n\nHOW PROCESSES USE THE ATLAS\n\nWhenever a process\u0027 hardware renderer initializes its EGL context,\nit queries the atlas service for the graphic buffer and the map.\n\nIt is important to remember that both the context and the map will\nbe valid for the lifetime of the hardware renderer (if the system\nprocess goes down, all apps get killed as well.)\n\nEvery time the hardware renderer needs to render a bitmap, it first\nchecks whether the bitmap can be found in the assets atlas. When\nthe bitmap is part of the atlas, texture coordinates are remapped\nappropriately before rendering.\n\nChange-Id: I8eaecf53e7f6a33d90da3d0047c5ceec89ea3af0\n"
    },
    {
      "commit": "527a3aace1dd72432c2e0472a570e030ad04bf16",
      "tree": "24f8cca71f0377a88b35fbe060a3247040b3de9f",
      "parents": [
        "8d4c23b9c32f8c0328ebca538bb801716fe4478a"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Mar 04 10:19:31 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Apr 15 13:53:02 2013 -0700"
      },
      "message": "Draw Operation merging\n\nMerge simple bitmap draw operations and text operations to avoid\nissuing individual gl draws for each operation. Merging other ops to\nbe done eventually.\n\nThe methods are different - the bitmap merging generates a single\nmesh for reused, unclipped images (esp. repeated images in a listview)\n\nThe text approach queries just defers the normal font rendering until\nthe last drawText in the sequence that can share the same shader.\n\nPatches are sorted and merged, but don\u0027t yet have a multiDraw\nimplementation. For now, the pretending-to-merge gives better sorting\nbehavior by keeping similar patches together.\n\nChange-Id: Ic300cdab0a53814cf7b09c58bf54b1bf0f58ccd6\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": "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": "c3566d06421c8acc0aafb18f7e307e5725ce87e1",
      "tree": "3807ef3c1825ce9154bf3bc84fe24f34b331702a",
      "parents": [
        "101ae3bb3909827303121e5e11ed16b7efe36538"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Feb 04 16:16:33 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 15 13:30:09 2013 -0800"
      },
      "message": "DisplayList draw operation reordering\n\nbug:8037003\n\nThe reordering enables similar operations to draw together, minimizing the\nOpenGL state change operations that go inbetween draws. Eventually, multiple\ncomplete canvas draw operations will be merged (into a single glDrawArrays call,\nfor example)\n\nReorders DisplayList draw operations when:\n\n-They can move backwards in the command stream to be after similar\noperations without violating draw ordering\n\n-The OpenGLRenderer is in a simple, replayable state (no complex clip,\nor filter/shadow etc)\n\nAlso adds two system properties to control the deferral/reordering:\n    \"debug.hwui.disable_draw_defer\"\n    \"debug.hwui.disable_draw_reorder\"\nwhich can be set to \"true\" to control the display list manipulation\n\nChange-Id: I5e89f3cb0ea2d2afd3e15c64d7f32b8406777a32\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": "735738c4ddf3229caa5f6e634bf591953ac29944",
      "tree": "4e972e943ffefc5bc268629ed45e8a5783ffe7c5",
      "parents": [
        "57b59e025bc10056daf42cd741b626843ff344f5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Dec 03 12:34:51 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 14 14:27:54 2013 -0800"
      },
      "message": "Preliminary Support for region clipping\n\nRegion clipping, using Canvas.clipPath or Canvas.clipRegion, requires\na stencil buffer to be always present. In addition, extra wiring is\nrequired in JNI and display lists.\n\nThis change only adds the necessary JNI/C++ APIs and some extra\nplumbing to start the real work on properly supporting region\nclipping.\n\nA new debug define called DEBUG_CLIP_REGIONS can be used to draw\nthe current clip region. It is off by default, as is region\nclipping.\n\nThe default implementation of clipPath() and clipRegion(), now\nin native, mimics the previous Dalvik implementation to prevent\nregressions.\n\nChange-Id: I7903e7cfd7412b9b9b622566d4dbfce7bdcec00c\n"
    },
    {
      "commit": "6e25e38e43f9e7f71397dfab7ed32c81c7bf7d46",
      "tree": "0bca4ce1b09dee6f3bfeb941ca324b4ca91a1eff",
      "parents": [
        "accf721ebdf4d3da53e8ae09572650775bfe10f8"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 18 15:50:29 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 18 16:28:44 2012 -0700"
      },
      "message": "Add a new method for text gamma correction\n\nTo select the gamma correction method, adb shell setprop hwui.text_gamma_correction\nwith one of the following values:\n\nlookup3\nlookup\nshader3\nshader\n\nSee Properties.h for more information about these different methods.\nYou can also control gamma correction using the following properties:\n\nhwui.text_gamma\nhwui.text_gamma.black_threshold\nhwui.text_gamma.white_threshold\n\nChange-Id: I47970b804d2c590c37d3da5008db094241579e25\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": "4121063313ac0d6f69f6253cac821d0c1c122086",
      "tree": "b076706786610f6c87c275355b8853289cbfd0f7",
      "parents": [
        "157bd5749f40b0330fccf3ef159d922742103ef2"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 16 17:04:24 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 16 17:04:24 2012 -0700"
      },
      "message": "Add shader-based text gamma correction\n\nTo enable it, the system property ro.hwui.text_gamma_shader must be\nset to true. For testing, DEBUG_FONT_RENDERER_FORCE_SHADER_GAMMA\ncan be set to 1 in libhwui/Debug.h.\n\nChange-Id: If345c6b71b67ecf1ef2e8847b71f30f3ef251a27\n"
    },
    {
      "commit": "9c10ab03cd6a35fca9eec617b9bd444d13544b99",
      "tree": "73317506783c45195f147dcff355cdf6301e9b76",
      "parents": [
        "96ebc6b5097ab73eef45e094241e444f4c21bfcc"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 22 14:34:58 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 22 14:34:58 2012 -0800"
      },
      "message": "Reduce logs\n\nChange-Id: I2768972ec62f4d3ad800a4d7a4c44307a2fa0105\n"
    },
    {
      "commit": "b629490ffb21752750cc081827ca4c1eae1eb015",
      "tree": "8dc7b38e24041e5d08f2b3ebb86e4e7624af07c6",
      "parents": [
        "bbf1bc8b6c3348265930ce08506efbbd3c5ab61f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 02 15:13:18 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 02 15:13:18 2012 -0800"
      },
      "message": "Disable debugging code in the font renderer\n\nChange-Id: I92463057ff4ae712bb25789db1667ff1ecfd389f\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": "a60c3889718f4513a6c9d8b80f655db5d6346905",
      "tree": "e0a43ec5fbc9031aa839ccb5be2064cfd85181fc",
      "parents": [
        "e5ea4403ce58982522554b7ff23f41e6551923c1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 01 15:28:16 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 01 15:28:16 2011 -0700"
      },
      "message": "Use high precision iterators on specific GPUs\nBug #5098359\n\nChange-Id: I52ee8c7b4c9e8d4c7bedb684eaf7bef6c44c74b9\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": "f504a2fa144504ca1efd39a4ef9208e3d4d336c5",
      "tree": "3d797f8910ac7615bddfc073435d8a26fcb80e61",
      "parents": [
        "3453b1c584f456a18f17d74a72c044b4e39c6405"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu May 26 16:40:55 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu May 26 16:40:55 2011 -0700"
      },
      "message": "Correctly implement the CLEAR xfermode.\n\nThe previous implementation was using glBlendFunc with the parameters\nGL_ZERO/GL_ZERO which doesn\u0027t work for text, paths and other alpha\nsources (anti-aliasing.) The correct implementation is GL_ZERO/\nGL_ONE_MINUS_SRC_ALPHA.\n\nChange-Id: I4cca65e57b6a37bbf5a41d382cb0648ee8e11e79\n"
    },
    {
      "commit": "aaceeb0c5be11121a81e44b9633c06fc5c0fcd4d",
      "tree": "075e5d603af80699089b5fc1aa245a751ddb943d",
      "parents": [
        "5b7a3150a6dbf193b371854b66fa654937633d3a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 23 19:56:13 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 23 19:56:13 2011 -0700"
      },
      "message": "Use the correct API to query system properties.\n\nChange-Id: Ie120dee0e24959d4db3fdb0100b6d8fe7fe46cdb\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": "ff26a0c1c905dc1ec53b1bab860b80f2976d59be",
      "tree": "a14b731211e689e0da77cdd9772a7add8f1b88ac",
      "parents": [
        "482b34a6f8aebe620cf815cdc689726ef5cf437e"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 20 11:35:46 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 20 11:39:09 2011 -0800"
      },
      "message": "Remove unnecessary code.\n\nChange-Id: I83eba3406c26a4028af08b4d4c95ecd02803e75a\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": "fb13abd800cd610c7f46815848545feff83e5748",
      "tree": "299f1c241fc360cbf3016adee07ac3db46750203",
      "parents": [
        "90fc03bc493fc2c984599b198b9d50bc387134f2"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Jan 16 15:16:38 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Jan 16 15:16:38 2011 -0800"
      },
      "message": "Fix 9patch rendering in ExpandableListView.\n\nChange-Id: I60843d61a40b0cb7dd09923cb4489a5a76f20486\n"
    },
    {
      "commit": "ffac7fc5042296a459d0f5a450dbfe20917093dc",
      "tree": "27a86c15331cd38d7d072e1c2b7bf8829cceeb90",
      "parents": [
        "462433ae94ff33f9591d910b662e63b821549cad"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 13 17:21:49 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 13 17:22:58 2011 -0800"
      },
      "message": "Add debug logs for display lists.\n\nChange-Id: I7bae8fd96e9eccb51f29f73e4069b4d3e6bdbdd7\n"
    },
    {
      "commit": "1fc883b271707c4206ae20cc9a935d7bd4a7485e",
      "tree": "e17af17553a2fb593d5819dc3e4b005205f0d455",
      "parents": [
        "3aaff3aef4998156226486d1fad297150dd7a6bf"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 12 14:30:59 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 12 14:31:55 2011 -0800"
      },
      "message": "Add logging to the new layers API.\n\nChange-Id: I78b9426eb17de3e775aca9fafe4a50bd9c0785c4\n"
    },
    {
      "commit": "a5ef39a21683189e5906c9f252b997f0508e350d",
      "tree": "f87616c7a443f8e8d19d40654036653252bf65e4",
      "parents": [
        "d8591020ec5940aa9ac738593a460a8df8cd560a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Dec 03 16:48:20 2010 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Dec 03 16:48:20 2010 -0800"
      },
      "message": "Don\u0027t render degenerate triangles in 9patches.\nBug #3251983\n\nChange-Id: Ib0b38a7b8111542372f4c4c106b6321c26fe4ad4\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"
    }
  ]
}
