)]}'
{
  "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": "d685894212e6dbeac1fda4996903c1da115d49a6",
      "tree": "c52d05c78811e79a869afbcdbe55a906e38f2fa1",
      "parents": [
        "9fa49cc3308f6af593d780581121afc3c1d7e046"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 21:54:12 2013 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 21:54:12 2013 -0700"
      },
      "message": "Add liblog\n\nBug: 8580410\nChange-Id: I746aa8258866508c3a725d0773faf4518096548f\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": "5dc7fa709646799a5207a5d217f70aa02bf4a3aa",
      "tree": "3ebf45fa51bd0373f77aa451868df2d6ae1a8a87",
      "parents": [
        "8818d84a3540de6e53e5d82e2112292102574118"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 11 20:48:31 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 12 15:06:42 2013 -0700"
      },
      "message": "Add TaskManager API\n\nThis API can be used to run arbitrary tasks on a pool of worker\nthreads. The number of threads is calculated based on the number\nof CPU cores available.\n\nThe API is made of 3 classes:\n\nTaskManager\n      Creates and manages the worker threads.\n\nTask\n      Describes the work to be done and the type of the output.\n      A task contains a future used to wait for the worker thread\n      to be done computing the result of the task.\n\nTaskProcessor\n      The processor dispatches tasks to the TaskManager and is\n      responsible for performing the computation required by\n      each task. A processor will only be asked to process tasks\n      sent to the manager through the processor.\n\nA typical use case:\n\nclass MyTask: Task\u003cMyType\u003e\n\nclass MyProcessor: TaskProcessor\u003cMyType\u003e\n\nTaskManager m \u003d new TaskManager();\nMyProcessor p \u003d new MyProcessor(m);\nMyTask t \u003d new MyTask();\np.add(t);\n\n// Waits until the result is available\nMyType result \u003d t-\u003egetResult();\n\nChange-Id: I1fe845ba4c49bb0e1b0627ab147f9a861c8e0749\n"
    },
    {
      "commit": "6e2004089305cf2cd958b52b234459a49a4e5c83",
      "tree": "e5cd875ac22fc80f9f0098a1c910251d672d50a9",
      "parents": [
        "b09f1471262c3e629daacbc319bcefc2d621a484"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 08 11:28:22 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 08 11:28:22 2013 -0800"
      },
      "message": "Move blur code from FontRenderer to utils/Blur.cpp\n\nChange-Id: I2cebbfbcb722ed4b37e54ffbf8b53bb92ad0c964\n"
    },
    {
      "commit": "620cff4006ee0b507f00ef8a242ecff4e60ba4e9",
      "tree": "30c29f1ee548bb5da57a0a68b95f3c25beaa8eb6",
      "parents": [
        "57a8b612fa6b31a18f9e00a7bdf7dfbd261f793c",
        "ad82f20d2382396f5ac75fdf6f7db5c4da1c4c23"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Feb 19 09:56:33 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 19 09:56:33 2013 -0800"
      },
      "message": "am ad82f20d: Merge \"DisplayList draw operation reordering\"\n\n* commit \u0027ad82f20d2382396f5ac75fdf6f7db5c4da1c4c23\u0027:\n  DisplayList draw operation reordering\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": "41250b67fe6308570860f2435c6b305ed8270002",
      "tree": "e8d646311f49e72f8b08b0823afe5a6cdfaf91cc",
      "parents": [
        "88e4b3ff90b86de6e358c717dbd0959e8b1b8267",
        "101ae3bb3909827303121e5e11ed16b7efe36538"
      ],
      "author": {
        "name": "Kristian Monsen",
        "email": "kristianm@google.com",
        "time": "Thu Feb 14 23:57:29 2013 -0800"
      },
      "committer": {
        "name": "Kristian Monsen",
        "email": "kristianm@google.com",
        "time": "Thu Feb 14 23:59:27 2013 -0800"
      },
      "message": "resolved conflicts for merge of 101ae3bb to master-chromium\n\nOnly include file changes in conflict.\n\nChange-Id: I1b6eb3343e7163827d8031ffea4b77f294980ccc\n"
    },
    {
      "commit": "0776a6069365bdea83855db154fa2d37f9d1d808",
      "tree": "da11eafebfe2a7f855e84687da2e2453d1882b62",
      "parents": [
        "805a6fe7b1417640ccaf7914171cb65515b6ab39"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Feb 14 15:36:01 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Feb 14 15:40:03 2013 -0800"
      },
      "message": "Move DisplayList to its own cpp file\n\nChange-Id: Ic9c1bbf4673ad5c756f3908b2ab7e699edd6a119\n"
    },
    {
      "commit": "0229d0818c8f08753a0df583798bbac19f67a4c4",
      "tree": "8de3eaf093bccbccdc2ef488723fc047732e93f6",
      "parents": [
        "b5dc90258087f4ed12d0ca0e7a90788540d54126",
        "805a6fe7b1417640ccaf7914171cb65515b6ab39"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 13 16:45:46 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Feb 13 16:45:46 2013 -0800"
      },
      "message": "am 805a6fe7: Merge \"Revert \"Revert \"Use RenderScript for large text blurs\"\"\"\n\n# Via Android (Google) Code Review (1) and Chris Craik (1)\n* commit \u0027805a6fe7b1417640ccaf7914171cb65515b6ab39\u0027:\n  Revert \"Revert \"Use RenderScript for large text blurs\"\"\n"
    },
    {
      "commit": "f2d8ccc15d7272b3416f73605c1f31d1d346bd40",
      "tree": "de40afaf0e04bd78687f4ac166190b17e300a6a6",
      "parents": [
        "a7d72dfded3437e05c303dc40d61248022eb048b"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 13 16:14:17 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 13 16:40:02 2013 -0800"
      },
      "message": "Revert \"Revert \"Use RenderScript for large text blurs\"\"\n\nThis reverts commit bf5703e52e3304246cbf0e73f6976f7d7312d238.\n\nChange-Id: Ic6f991277dec9e80a6fed93db91499726b30ab2a\n"
    },
    {
      "commit": "c932760f667cf56ca7a1aeffde505745dc3632e1",
      "tree": "280d86bf8205c51a2b6b59da6c617e220677e790",
      "parents": [
        "eb26fbe427192bc87bb3dbb7882dbf87f760fab2",
        "7c1a49f5f5ed6613d736464bf5001b777e89ced2"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 13 23:14:26 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 13 23:14:58 2013 +0000"
      },
      "message": "Merge \"Revert \"Merge remote-tracking branch \u0027goog/master-chromium\u0027 into \u0027goog/master\u0027\" DO NOT MERGE\""
    },
    {
      "commit": "68b600913b699da0fbfcd9d913e4c4fdb08e06b8",
      "tree": "202989fdd57cbe05e7fb0324793ce0652205537b",
      "parents": [
        "769a5b72dc076facae20154bf5d55b9810322b87",
        "bf5703e52e3304246cbf0e73f6976f7d7312d238"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 13 19:50:23 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 13 19:50:24 2013 +0000"
      },
      "message": "Merge \"Revert \"Use RenderScript for large text blurs\"\""
    },
    {
      "commit": "bf5703e52e3304246cbf0e73f6976f7d7312d238",
      "tree": "81ef6382317512aa2c068e99b35477ca61449b60",
      "parents": [
        "3f76e65d251ead65fe8ff98e3bd4c7623fbaac07"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 13 19:47:24 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 13 19:47:24 2013 +0000"
      },
      "message": "Revert \"Use RenderScript for large text blurs\"\n\nThis reverts commit 3f76e65d251ead65fe8ff98e3bd4c7623fbaac07\n\nChange-Id: Ia81cd485e5ca696bb284c419dc8a1d2f3247100e\n"
    },
    {
      "commit": "bce29d2a549c374e642ad7a41a1daf869b46f53c",
      "tree": "215381512ad9237f14f6579637c4cca1909f7597",
      "parents": [
        "eff99182297f1c762789237a7d66c9bef754a3d7",
        "3f76e65d251ead65fe8ff98e3bd4c7623fbaac07"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 13 19:32:55 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 13 19:32:56 2013 +0000"
      },
      "message": "Merge \"Use RenderScript for large text blurs\""
    },
    {
      "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": "7c1a49f5f5ed6613d736464bf5001b777e89ced2",
      "tree": "c6726264bde03f4c5957876921d4b15a835b2c71",
      "parents": [
        "d04892d207d50378356feef181ac4e4eff9652d7"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 13 10:25:12 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 13 10:50:20 2013 -0800"
      },
      "message": "Revert \"Merge remote-tracking branch \u0027goog/master-chromium\u0027 into \u0027goog/master\u0027\" DO NOT MERGE\n\nThis reverts commit 6c0307dd0aefe9a08794b155fc03ee60ebd14f25, reversing\nchanges made to a2cd828b749c444d55c2c41c7dbb85088ff94b9f.\n\nConflicts:\n\tpackages/SystemUI/res/values-sv/strings.xml\n\nChange-Id: Ia178efe8b14751583d47b2826bfe3d3d5463dd2e\n"
    },
    {
      "commit": "3f76e65d251ead65fe8ff98e3bd4c7623fbaac07",
      "tree": "b8dfc636012f670aba6a348340ae12770ab63372",
      "parents": [
        "d04892d207d50378356feef181ac4e4eff9652d7"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Nov 14 16:11:10 2012 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Feb 12 17:45:28 2013 -0800"
      },
      "message": "Use RenderScript for large text blurs\n\nStill fall back to simple path for small tasks\n\nChange-Id: I492f1b3f7d6fec1738f3e45cbfb15864bd23a392\n"
    },
    {
      "commit": "da8d8b9699fe8e9557389465007e333d3f03dcc1",
      "tree": "a06894789c3d0a66fccdda3030d344a0b072fed6",
      "parents": [
        "2c45e913734a64460c6dcf5b831a32a0af5ba5c1",
        "3bbacf27c0be1bae4e4483577fc89ae3113abe5d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 07 20:11:56 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 07 20:11:56 2013 +0000"
      },
      "message": "Merge \"Add a RenderBuffer object to store stencil buffers. Bug #7146141\""
    },
    {
      "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": "1ba0289d18f16e190a3bc7cf9226d061016dc355",
      "tree": "cc4b448cd10a5b23724741774e63e737c4e433ac",
      "parents": [
        "1095d9ac5df839408b9a549cc638c2909d98dfac",
        "65cd612face362d054a85d0f7e5881c59cd523be"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Feb 07 00:14:05 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 07 00:14:38 2013 +0000"
      },
      "message": "Merge \"Add cap tessellation support\""
    },
    {
      "commit": "65cd612face362d054a85d0f7e5881c59cd523be",
      "tree": "8d71fb22d3a6dd515456a44b0d1010c906abb774",
      "parents": [
        "c93c6aa5553203f05df871804517885fcc071cfd"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Dec 10 17:56:27 2012 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 06 15:35:12 2013 -0800"
      },
      "message": "Add cap tessellation support\n\nbug:7117155\nbug:8114304\n\nCurrently used for lines (with and without AA) and arcs with useCenter\u003dfalse\n\nAlso removes 0.375, 0.375 offset for AA lines\n\nChange-Id: Ic8ace418739344db1e2814edf65253fe7448b0b0\n"
    },
    {
      "commit": "ca79cf69d09efa0c327e9b1237d86a119aea5da7",
      "tree": "0fd02203babacee45f23ba19f869f869f3de0f54",
      "parents": [
        "dbc8cee1d500702bc8b1a8cb6a6c0961ab4ae0ed"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Tue Aug 14 16:44:52 2012 -0400"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Wed Dec 12 15:28:54 2012 -0500"
      },
      "message": "Update framework to support r5967 of Skia.\n\nbug: 6906025\nChange-Id: Iefdb830ec3aa2ab3472c1c142484a7aa21788a15\n"
    },
    {
      "commit": "710f46d9d6a5bf9ea1c1833384caf61e1934124f",
      "tree": "5dbc56cf9b6bb957f9cbdaaff7283d44897b265d",
      "parents": [
        "5ca88a103c2841b64bfa01b4848aec4b8aa64687"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Sep 17 17:25:49 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Sep 20 13:08:20 2012 -0700"
      },
      "message": "Polygonal rendering of simple fill shapes\n\nbug:4419017\n\nChange-Id: If0428e1732139786cba15f54b285d880e4a56b89\n"
    },
    {
      "commit": "d15ebf25c595b855f6978d0600218e3ea5f31e92",
      "tree": "35154bd1ec18cf8299a0d737847291ab28a5c98b",
      "parents": [
        "4db5d23deab9ea8de34cdb1c56af31e6e3cff79b"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Sep 05 11:40:29 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Sep 07 13:27:02 2012 -0700"
      },
      "message": "Enable changing properties of layer paint\n\nPreviously, to draw a layered view with a changed Paint object for the\ndrawLayer operation, you\u0027d have to invalidate the parent view, to get the\nnative DisplayList to pick up the new Paint properties. This change adds\nAPI and functionality so that the developer can call setLayerPaint(), which\ndoes the proper invalidation (lightweight, doesn\u0027t cause redrawing the view).\n\nIssue #6923810 Make it easy to efficiently animate a layer\u0027s Paint\n\nChange-Id: I7fea79788d50f6d9c86dd5e5b2a4490cb95142bb\n"
    },
    {
      "commit": "9f5dab3fc228fa11c32b483e6101ec086895a32b",
      "tree": "f30e239e8396c08f7aa3a5009ca528af3d63591d",
      "parents": [
        "9fc4b356a4552336f661bf4dfaaa19a251194cdb"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Sep 04 12:55:44 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Sep 04 12:55:44 2012 -0700"
      },
      "message": "Refactor FontRenderer.cpp\n\nFontRenderer.h defined several classes and structures that now live\nin the font/ folder. This will make the code easier to read and\nmaintain.\n\nChange-Id: I3dc044e9bde1d6515f8704f5c72462877d279fe2\n"
    },
    {
      "commit": "0baaac5e9adf3ee280ae1239e2e58754a9d2b099",
      "tree": "430a7392973ff3dc04089cc2b3550afcdde673de",
      "parents": [
        "a8557d2169e14997637f57bc897640c8882d4a46"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 31 20:31:01 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 31 20:31:32 2012 -0700"
      },
      "message": "Revert \"Revert \"Add more support for transformed clip rects and paths\"\"\n\nThis reverts commit a8557d2169e14997637f57bc897640c8882d4a46.\n\nChange-Id: I36d4883d548fc47ba6c0b4a42012107d0d2f85a6\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": "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": "157bd5749f40b0330fccf3ef159d922742103ef2",
      "tree": "9876c3d6bb52cc90ae06e40651b928b83147b322",
      "parents": [
        "be6f9dc1e71b425b7ac1c40c0a2c72d03eb9fbee"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 16 15:17:38 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 16 15:17:38 2012 -0700"
      },
      "message": "Add makefile flags for perf\n\nChange-Id: Ibcb6e1c883551273c3392cdaa40cd0b71a3bfa70\n"
    },
    {
      "commit": "ada4d53d50dc869b8278573ad640dc44118d3bcf",
      "tree": "b054bbf97a5cf550e376b93b846e4275d4066f7a",
      "parents": [
        "b629490ffb21752750cc081827ca4c1eae1eb015"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 02 17:31:16 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 02 17:31:16 2012 -0800"
      },
      "message": "Separate interface definition and implementation of Snapshot\n\nThe Snapshot class is getting complicated enough that its implementation\nshould now live in a separate .cpp file. This will become particularly\nuseful when support for clip regions and paths will be added later on.\n\nChange-Id: I050fac5683a9f7a0ff2f7a6beec3dd28aa5eb0d8\n"
    },
    {
      "commit": "9c4b79af221b53f602f946faa9ff317a596a0c39",
      "tree": "134a3a19b685c55dc23a08ae8929fb292333f768",
      "parents": [
        "e98ae0a050d6ce4b3e2aec7c070a87922086c256"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Nov 10 19:23:58 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Dec 06 16:37:10 2011 -0800"
      },
      "message": "Discard framebuffer rendering queues when discarding layers\nBug #5581817\n\nChange-Id: Ie30700a29059d2ea60eb7bd3f8bd20ac48a149ab\n"
    },
    {
      "commit": "7077506f9945b87b02bdd47ffce75a5b813c821c",
      "tree": "303448affa31375afa0a721d8d5555801ead8454",
      "parents": [
        "cde433c5f75fd4ac2ab31e9fc34654750d1e83f8"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Mon Nov 14 11:39:30 2011 -0800"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Mon Nov 14 11:39:30 2011 -0800"
      },
      "message": "Revert \"Discard framebuffer rendering queues when discarding layers\"\n\nThis reverts commit da96f8ac2c1c35a54f3f36e6d776cb386a251d03.\n"
    },
    {
      "commit": "da96f8ac2c1c35a54f3f36e6d776cb386a251d03",
      "tree": "646abfdfeee4346b422943924182162f4a3cdf84",
      "parents": [
        "50a66f0e9c5a85a6af4a99eb66656a69eba24572"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Nov 10 19:23:58 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Nov 10 19:23:58 2011 -0800"
      },
      "message": "Discard framebuffer rendering queues when discarding layers\nBug #5581817\n\nChange-Id: If612846ec5f7793710fc4df152791fb32c506551\n"
    },
    {
      "commit": "7953745dd565167113f8cbfc461bc0521d32d870",
      "tree": "f45d34b4b7a6c19c0a639be68e6455a116a93bca",
      "parents": [
        "0bbd8d8273c1dde9e0504f67bd8eb159bef2406a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 12 13:48:51 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 12 13:48:51 2011 -0700"
      },
      "message": "Reduce the size of libhwui by 50%\n\nThis change removes unnessary symbols. All symbols are hidden by\ndefault, public APIs with exported symbols are explicitly marked\nwith ANDROID_API.\n\nChange-Id: I692fde432a86c12108de1cfd1f6504919a7d5f3f\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": "3070af08821ee86f06a9cc6b58dbb79c82946b94",
      "tree": "350ed99dcd32f33f936639c946b0176ed6022693",
      "parents": [
        "e3f075622da4e78772abf21a5a219a0d48bc6c04"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Mar 14 14:02:13 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Mar 14 14:25:59 2011 -0700"
      },
      "message": "frameworks/base: remove LOCAL_PRELINK_MODULE\n\nChange-Id: I54dd62ebef47e7690afa5a858f3cad941b135481\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "cabfcc1364eb7e4de0b15b3574fba45027b45cfc",
      "tree": "f38e237ba2009dcacb5082a99928aad379a7adc0",
      "parents": [
        "9b7146db6d9c0586b98b062fbcdb3fac6cc54d19"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 07 18:06:46 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 07 18:09:03 2011 -0800"
      },
      "message": "Add support for partial invalidates in WebView\nBug #3461349\n\nThis change also fixes two bugs that prevented partial invalidates\nfrom working with other views. Both bugs were in our EGL implementation:\nthey were preventing the caller from comparing the current context/surface\nwith another context/surface. This was causing HardwareRenderer to always\nredraw the entire screen.\n\nChange-Id: I33e096b304d4a0b7e6c8f92930f71d2ece9bebf5\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": "6c319ca1275c8db892c39b48fc54864c949f9171",
      "tree": "d89e4222487db2ccd9a6b03b0d55f8361a7d1856",
      "parents": [
        "b796889671c089fb7e2fc4498aa701d3e8e552a3"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 11 14:29:25 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 11 17:53:19 2011 -0800"
      },
      "message": "Better backend for hardware layers.\n\nWith this new backend, a hardware layer is only recreated when\nits associated view is udpated. This offers fast composition\nin GL and fast update of the layer in GL as well.\n\nChange-Id: I97c43a612f5955c6bf1c192c8ca4af10fdf1d076\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": "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"
    },
    {
      "commit": "5c13d89c1332fcc499379b9064b891187b75ca32",
      "tree": "439222e6d58a765a84133345ac6ef7cb13f1c04e",
      "parents": [
        "a376d030a2075909219926d622b71016418d7dcd"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Oct 08 08:37:55 2010 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Oct 21 12:02:42 2010 -0700"
      },
      "message": "Optimizing display lists by referencing pointers to resources instead of copying them\n\nChange-Id: I81ad3551d74aa1e5bb64d69e33d2eb29a6c1eb6a\n"
    },
    {
      "commit": "03750a067e818ca7fbd0f590e2ff6a8fded21e6c",
      "tree": "e41ffdc1b72f66c13284df27877703111f048170",
      "parents": [
        "65202242defad10eb33a3b3277af49eb238a3f33"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 18 14:06:08 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 18 14:49:19 2010 -0700"
      },
      "message": "Use VBOs to render most geometries.\n\nChange-Id: I4360dc4fe5693ab425450c107282b2c22db4dca7\n"
    },
    {
      "commit": "8550c4c7b5952b7a4e1e0ede95c9492d03099a13",
      "tree": "3f2bccdd02bcf390eac98749475aad4ead1da1e4",
      "parents": [
        "ecd31740a00f8fb07090209cd979257c38cbcc92"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Oct 08 15:49:53 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Oct 08 15:49:53 2010 -0700"
      },
      "message": "Better cache for layers, reduce memory usage and increase framerate.\n\nChange-Id: I5ff864a361db4791bd5ff6be716f7ce692ef572d\n"
    },
    {
      "commit": "4aa90573bbf86db0d33a3a790c5dbd0d93b95cfe",
      "tree": "65cedf6266b9f40b7227334f9e50d8d86f2340bf",
      "parents": [
        "cc64c5dbfbf11f513f60a82ee590f62dfb9a1565"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Sep 26 18:40:37 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Sep 26 18:40:37 2010 -0700"
      },
      "message": "Adding display lists to the GL renderer (checkpoint.)\n\nChange-Id: Iaa49757600a53b39369dbb23f8c3feab282518e6\n"
    },
    {
      "commit": "e2d345ea67e2960b37bfdc0fc8626d1bfa747404",
      "tree": "1c6aebf69921950237754ef7b8386a9856624e25",
      "parents": [
        "9a40babc62416259d18783ce8c03c00042ec317b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 24 18:39:22 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 24 18:39:22 2010 -0700"
      },
      "message": "Add debug mode to measure performance.\n\nChange-Id: I9d4c84034dc200b99c8266165942a7cdbcb5c0c5\n"
    },
    {
      "commit": "b45c0c9774bd19a9dbe77d149abae4e124b08bf6",
      "tree": "809e63c596802906242c982ed67f463481b57230",
      "parents": [
        "c70bd1921bbc4046d0caf84959e5f1c2d526769a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 26 20:35:23 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 27 11:31:24 2010 -0700"
      },
      "message": "Apply gamma correction to font rendering.\n\nChange-Id: I1b05f40e356221b2a5eb9400e67d77ecd98ed6c4\n"
    },
    {
      "commit": "1e45aae5de003657e5d18f74d34998f5de5db5b7",
      "tree": "355320038d0de8ed9b39c0cd3d3865b7fbbae1fd",
      "parents": [
        "029a74a38b56b97cbfe02b3d8e23536cea71609d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 13 19:39:53 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 13 19:41:14 2010 -0700"
      },
      "message": "Add drop shadows.\n\nChange-Id: Ic6a72409d4785968d1fbdff229f17ee5c00b240b\n"
    },
    {
      "commit": "163935113919a184122b8b3bd672ef08c8df65dc",
      "tree": "c8aa9b460ae7fd9e2e675d4bf25924a3459f8696",
      "parents": [
        "1ad7343409442a4a027c0092d07beff1b412a7dc"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Sun Aug 08 00:14:31 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Sun Aug 08 17:45:07 2010 -0700"
      },
      "message": "Make libhwui entirely optional.\n\nThe makefile variable USE_OPENGL_RENDERER must be set to true to compile\nlibhwui and the related code in the JNI layer.\n\nThis change also removes obsolete APIs from Canvas that must not be used\nand would be confusing if left in. These APIs were remnants of our first\nattempt at an OpenGL renderer for the view hierarchy and had not been\ntaken out before Android 1.0 was released.\n\nChange-Id: I2475ff1307212bab26c926724f3c508681c7dae1\n"
    },
    {
      "commit": "7fbcc0492fca03857e3c45064f4aa040af817d55",
      "tree": "a2422b4694ae589a60f2571070c53c7b918ec732",
      "parents": [
        "bc9151bcad5d1b1d14bb900fcc50ba08c06f87d4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 04 15:40:07 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 05 17:23:49 2010 -0700"
      },
      "message": "Add support for paths.\n\nRendering is implementing by rasterizing the paths into A8 textures.\nThis cna be extremely inefficient if the path changes often.\n\nChange-Id: I609343f304ae38e0d319359403ee73b9b5b3c93a\n"
    },
    {
      "commit": "db1938e0e6ef816e228c815adccebd5cb05f2aa8",
      "tree": "d40e91a873bca6750083fdb1713a12b469ebad4d",
      "parents": [
        "16f8c620abd0ea07e704b6997a66a45ad3590dea"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 02 18:50:22 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 02 18:50:56 2010 -0700"
      },
      "message": "Add support for ColorFilters.\n\nColor filters are fully supported and can be used with shaders.\n\nChange-Id: Id90ccf1c81cb462f2431f366f3f8f710d7971e04\n"
    },
    {
      "commit": "06f96e2652e4855b6520ad9dd70583677605b79a",
      "tree": "7d0e3709c8a400e264f37206eb27a286ee50d64b",
      "parents": [
        "42272759e4c3c406977187fd2b4df8739edccde8"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 30 19:18:16 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 30 19:18:16 2010 -0700"
      },
      "message": "Refactor Skia shaders handling.\n\nWith this change, Skia shaders can easily be applied to any mesh. This change also\nsupports ComposeShader. For instance, this can be used to blend a gradient and a\nbitmap togehter and paint a string of text with the result.\n\nChange-Id: I701c2f9cf7f89b2ff58005e8a1d0d80ccf4a4aea\n"
    },
    {
      "commit": "ac670c0433d19397d4e36ced2110475b6f54fe26",
      "tree": "10722cd4e465fc053f9536cc312c1125a694108a",
      "parents": [
        "bb2b2a996b2c0bea7e434136e20340f4f1b398ab"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 27 17:39:27 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 27 19:52:29 2010 -0700"
      },
      "message": "Generate shaders to cover all possible cases.\n\nWith this change, all the vertex and fragment shaders used by the GL\nrenderer are now generated based on a program description supplied\nby the caller. This allows the renderer to generate a large number\nof shaders without having to write all the possible combinations by\nhand. The generated shaders are stored in a program cache.\n\nChange-Id: If54d286e77ae021c724d42090da476df12a18ebb\n"
    },
    {
      "commit": "694b519ac647fe998fd396fe0784cc8e179aadc4",
      "tree": "80a5e423f90aba3ab74645ac7f3b2cbfd838c757",
      "parents": [
        "0119ba5bd3335fe026927eeb65de535a7bd8c838"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 21 21:33:20 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 21 21:33:20 2010 -0700"
      },
      "message": "Add text rendering.\n\nChange-Id: Ibe5a9fa844d531b31b55e43de403a98d49f659b9\n"
    },
    {
      "commit": "c0ac193b9415680f0a69e20a3f5f22d16f8053be",
      "tree": "9a1d680ad20ba3f6ec0924c6b445290696d63b8c",
      "parents": [
        "9d339c13aaa30ddfd51d0f13f8ab22af05e40ea0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 19 18:43:02 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 19 18:44:05 2010 -0700"
      },
      "message": "Add support for linear gradients.\n\nChange-Id: Id15329da065045b3f06fdaed615f33cd57608496\n"
    },
    {
      "commit": "fb5e23c327cd5f8f93d1eaa7c10f34d6fd3efb6c",
      "tree": "8637af6593869b9e3f31a8b35c4388016eb690ac",
      "parents": [
        "3465d5f532b65b0e50d21f5b23bc3badc73248ba"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 09 13:52:56 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 09 13:52:56 2010 -0700"
      },
      "message": "Refactoring to move vertex computing to the Patch class.\n\nThis change is mostly cleanup to keep less code in OpenGLRenderer.\n\nChange-Id: I954375143b2943829457ab470423729b60b844f5\n"
    },
    {
      "commit": "f7f93556c8fcc640ab5adef79d021a80a72a645a",
      "tree": "71fc93983fc54c32a0051890b719e6f20ec90003",
      "parents": [
        "26be805f4242af9d511584663e88dfae235d74a4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 08 19:17:03 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 08 19:19:07 2010 -0700"
      },
      "message": "Draw n-patches using OpenGL.\n\nCurrently only tested with title bars and buttons.\n\nChange-Id: I8263a9281898dc0e943b1b8412827fe55639b9d6\n"
    },
    {
      "commit": "6c81893c626499e58c8eeb20d6c35ec4e1ce808b",
      "tree": "d4926e6c4952de9aec539f1b44ed0380779e12d0",
      "parents": [
        "3038f47d1c716f9385cf0befc08e708c65f069bb"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 07 15:15:32 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 07 15:15:32 2010 -0700"
      },
      "message": "Simpler way to deal with the FBO multi-cache.\n\nThis change removes the need for the SortedList and instead just\nadd a generated id to each FBO stored in the cache. This is an\nartificial way to store several FBOs with the same dimensions.\n\nChange-Id: I9638364e9bdc0f2391261937a0c86096f20505bf\n"
    },
    {
      "commit": "5f0c6a483900f3989f4d2a8f913cf5b6a9777d03",
      "tree": "cd0898b027dab942753874a070c403ca9b88e4aa",
      "parents": [
        "c832baa107f36740e462c83e7525ba2e9f01f086"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 07 13:06:26 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 07 13:06:26 2010 -0700"
      },
      "message": "Optimize FBO cache.\n\nThis change introduces a new generational cache called GenerationMultiCache\nthat can store several values with the same key. This can be used to use\nmultiple layers of the same size at the same time, without recreating them\nover and over again.\n\nChange-Id: I425466a20908b862c5f464a0f9e582ec18cbd7ac\n"
    },
    {
      "commit": "dda570201ac851dd85af3861f7e575721d3345da",
      "tree": "795e46c7cae42b22814af1ef2ac70c083debd746",
      "parents": [
        "216108c492fef05261c70f1018d94cef0c3b23fd"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Tue Jul 06 11:39:32 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Tue Jul 06 12:00:33 2010 -0700"
      },
      "message": "Add a layer (FBO) cache.\n\nThe cache is used to draw layers so that a new\ntexture does not have to be recreated every time\na call to saveLayer() happens.\n\nThe FBO cache used a KeyedVector, which is a bad\nidea. The cache should be able to store several\nFBOs of the same size (this happens a lot during\nscrolling with fading edges for instance.) This\nwill be changed in a future CL.\n\nChange-Id: Ic316189e625f0dbcf0d273a71cc981a433d48726\n"
    },
    {
      "commit": "ce0537b80087a6225273040a987414b1dd081aa0",
      "tree": "31682a01c12091c552217186604fca32f43e98ff",
      "parents": [
        "81ea83d10883886013bc95eac2fe032acf1e7aa9"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 29 21:05:21 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 30 15:21:01 2010 -0700"
      },
      "message": "Add hooks for drawBitmap().\n\nChange-Id: I58e962c3a8b2bc75c2605fe369ad3002579d86e0\n\nAdd texture cache.\n\nChange-Id: I1c0e5581d228869e114438258a1014e33e024ad7\n"
    },
    {
      "commit": "5cbbce535744b89df5ecea95de21ee3733298260",
      "tree": "37dda328f8d127cead9e799e5220b4589267bc5e",
      "parents": [
        "1d58b498de5eb3b53ca0c7ffd14b1c209833d297"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Sun Jun 27 22:59:20 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Sun Jun 27 22:59:20 2010 -0700"
      },
      "message": "Reduced the complexity of layers composition.\n\nThis change also refactors the code base a bit by moving classes out of\nOpenGLRenderer into separate headers/implementations. This makes the code\nmore manageable.\n\nThis change also adds documentation for implementation methods. The\nundocumented methods are simply Skia\u0027s Canvas methods.\n\nChange-Id: I54c68b443580a0129251dddc1a7ac95813d5289e\n"
    },
    {
      "commit": "3e168335b3422008908ac6973bb36078fd979f35",
      "tree": "6f1a6c2ef576190b470f1f200835148917f3882f",
      "parents": [
        "af002cf12c6924cd31715c6891d885f609ce2c5e"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 22 13:29:14 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 22 13:29:14 2010 -0700"
      },
      "message": "Fix simulator build again.\n\nChange-Id: Ifd204d64eaa4c356422e3363ec0a6e6aa61c52dc\n"
    },
    {
      "commit": "85bf02fc16784d935fb9eebfa9cb20fe46ff7951",
      "tree": "7d8cb5d36bca58555a33e8647afd8f0e00647b7b",
      "parents": [
        "102fb89b9a4d2a6620f88b247405f853d78a09b6"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 22 13:11:24 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 22 13:11:24 2010 -0700"
      },
      "message": "Fix the simulator build.\n\nChange-Id: Ie404f7c2c308f0657f273af19a56e8c039b61898\n"
    },
    {
      "commit": "08ae317c21ec3086b5017672bba87420cc38a407",
      "tree": "fcd8d6cddb0078ac401b96bd5a516025f970eac0",
      "parents": [
        "ab8aa51aa6b98dd5c83132659867aed36532c224"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jun 21 19:35:50 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jun 21 19:35:50 2010 -0700"
      },
      "message": "Add glOrtho equivalent to the OpenGL ES 2.0 renderer.\n\nChange-Id: I063dad3d81dab7833acb1e7a9c7121f8efd2a044\n"
    },
    {
      "commit": "e4d011201cea40d46cb2b2eef401db8fddc5c9c6",
      "tree": "b890cdac7775120beb89308de1b593ec6af76a0e",
      "parents": [
        "5e81e5b96b20bddf90adff33d50f5d003ab619ad"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 16 18:44:05 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 17 13:40:11 2010 -0700"
      },
      "message": "Add libhwui, to hardware accelerate the Canvas API using OpenGL ES 2.0.\n\nThis is the initial checkin to setup the library and turn on OEGL ES 2.0\nin ViewRoot, not a functional renderer.\n\nChange-Id: I6655c54166e2967da2e21e7d6dcfba78bf113b44\n"
    }
  ]
}
