)]}'
{
  "log": [
    {
      "commit": "6e068c0182f6f85bccb855a647510724d1c65a13",
      "tree": "8ee074307867bfcdc9c8a708aa6ae03f1d9b7ecc",
      "parents": [
        "d38308e4d0599836f9c5446ba9d6edbc0713c428"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jan 15 16:15:30 2016 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Feb 02 17:10:25 2016 -0800"
      },
      "message": "Early kickoff of shadow tasks\n\nbug:26562703\n\nChange-Id: I7cdf18f2c662380bd31c7ffeefd5c3f569e5c1c6\n"
    },
    {
      "commit": "c3bd56811268a074ffb9513bde0d940199e7ad16",
      "tree": "3f912ab3a94046c8246a0063db362fece2a92946",
      "parents": [
        "c9fd313f94f7e0dc1f1f865290a2eb1b1897d2ad"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Jan 25 12:01:12 2016 -0800"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Jan 26 12:49:28 2016 -0800"
      },
      "message": "Restore code to draw backdrop and content nodes\n\nbug: 26626661\nChange-Id: I9e4dd41708e8ed93d3cf64242ad81815a653d269\n"
    },
    {
      "commit": "dd93728b461c686ee4c5f329509418fe9342cb8d",
      "tree": "c9b11301b78a029cea99727205abedd898d461a6",
      "parents": [
        "8dfd95d0913a38d78840d65056f57a93501e6a9c",
        "eecff56fed5dd5206acfbc5007b4912081b36d3b"
      ],
      "author": {
        "name": "Florin Malita",
        "email": "fmalita@google.com",
        "time": "Tue Jan 26 17:00:37 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 26 17:00:37 2016 +0000"
      },
      "message": "Merge \"Add internal Canvas save flags\""
    },
    {
      "commit": "c52ac0b9e2dc9d060f21498ac59404ec7fd1e846",
      "tree": "9609f5a11f1ca11a6d3142488ff7b23d7e6bd819",
      "parents": [
        "37e65a409fb01815e826665c651e07b952cb4f28",
        "975591a7af883d866d86ab819e164c6004694744"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Jan 26 15:21:07 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 26 15:21:07 2016 +0000"
      },
      "message": "Merge \"Add fine-grained debug layer\""
    },
    {
      "commit": "975591a7af883d866d86ab819e164c6004694744",
      "tree": "b0247aebad80c7380141137e9de8d7edcf1ef89f",
      "parents": [
        "fe434a15d6bde9299b51dc284b336944e5cf8a1c"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Jan 22 16:28:07 2016 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Jan 25 16:15:14 2016 -0800"
      },
      "message": "Add fine-grained debug layer\n\nFull GLES error checking layer via -include\ntrickery. Change DEBUG_OPENGL to a level system.\n\nHIGH \u003d every GL call is error checked\nMODERATE \u003d checkpointing at interesting spots\nLOW \u003d only asserts there are no errors at the end of a frame\n or when the FBO changes\nNONE \u003d AIN\u0027T GOT NO TIME FOR ERRORS GOTTA GO FAST!\n\nChange-Id: Ibe81aae93d942059c4ddf1cbb11c828b7ce4c10b\n"
    },
    {
      "commit": "eecff56fed5dd5206acfbc5007b4912081b36d3b",
      "tree": "5e9b0e3dcf6add0bde182a791d9ba9040c16dafa",
      "parents": [
        "36c297f426b2d1337658d781bc6cbd60b04ce4e8"
      ],
      "author": {
        "name": "Florin Malita",
        "email": "fmalita@google.com",
        "time": "Mon Dec 21 10:43:01 2015 -0500"
      },
      "committer": {
        "name": "Florin Malita",
        "email": "fmalita@google.com",
        "time": "Mon Jan 25 15:48:00 2016 -0500"
      },
      "message": "Add internal Canvas save flags\n\nSkia\u0027s SkCanvas::SaveFlags are being deprecated.  This CL introduces\nthe equivalent android::SaveFlags, converts all internal clients to\nthe new enum, and switches the saveLayer glue to the\nSaveLayerRec-based API.\n\nChange-Id: Icb1785f4e7c0f652b1f04b34a1e3ccb063c408f3\n"
    },
    {
      "commit": "06f5bc70a667a02b14e31d3f53f91d3661e30666",
      "tree": "3de8a009d084a71906aa26506b209fea01ef4471",
      "parents": [
        "0ed21de72134a2b55648104f517e44a2deff17dd"
      ],
      "author": {
        "name": "Andres Morales",
        "email": "anmorales@google.com",
        "time": "Tue Dec 15 15:21:31 2015 -0800"
      },
      "committer": {
        "name": "Andres Morales",
        "email": "anmorales@google.com",
        "time": "Fri Jan 22 12:58:51 2016 -0800"
      },
      "message": "expose hwui frame stats through FrameStatsObserver\n\nChange-Id: I88884bafc8e2f6d7f67a36d3609490e83cf8afd5\n"
    },
    {
      "commit": "9372ac3621848085e77b867f220c0b5ffce4010d",
      "tree": "2077130e6ffe97d3aa03ae8bb7a861aaa452fb85",
      "parents": [
        "663d09ab4273f3e2c68bfaa72d4973f58e5cc023"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Jan 19 11:46:52 2016 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Jan 19 12:58:48 2016 -0800"
      },
      "message": "Fix ordering of texture-\u003eupload arguments\n\nCaught by scatter-shotting GL_CHECKPOINTS which\nseem generally useful to have\n\nBug: 26609444\n\nChange-Id: Ie31d9297d8dae56405126720f338b4256c8bae77\n"
    },
    {
      "commit": "cbc5bd57f0f528743fce5ec02b0739dc6368311f",
      "tree": "45541b44b29965e05430cde89b2c5229eb7d7a14",
      "parents": [
        "f6762aca4a353a17cf79723f8a69b625b9e27237",
        "38e0c32852e3b9d8ca4a9d3791577f52536419cb"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Jan 14 21:49:42 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 14 21:49:42 2016 +0000"
      },
      "message": "Merge \"Track texture memory globally\""
    },
    {
      "commit": "38e0c32852e3b9d8ca4a9d3791577f52536419cb",
      "tree": "72286f7531e094182b2bfe959015d7ed7f9c6abc",
      "parents": [
        "a5abf801044c5e53349c2e67428fe011a2f6985f"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Nov 10 12:19:17 2015 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Jan 14 13:42:12 2016 -0800"
      },
      "message": "Track texture memory globally\n\nAlso mostly consolidates texture creation\n\nChange-Id: Ifea01303afda531dcec99b8fe2a0f64cf2f24420\n"
    },
    {
      "commit": "b79151759ac59bcb6f8f76188d9af7b3155ae2ff",
      "tree": "59775ae09d851065e6099bd04365ee6a9f158fd7",
      "parents": [
        "9b974bf25bf13aa72399c74107c14749bba5625f",
        "099bd9ca8fea02795424d62c05c723290d68ae14"
      ],
      "author": {
        "name": "Matthew Bouyack",
        "email": "mbouyack@google.com",
        "time": "Wed Jan 13 19:00:07 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 13 19:00:07 2016 +0000"
      },
      "message": "Merge \"In CanvasContext::doFrame, make a separate call to computeFrameTimeNanos and save the result. Then pass that value to UiFrameInfoBuilder::setVsync as both arguments.\" into cw-e-dev am: eebf168e43 am: e0845e8629 am: 6222bb0f6a\nam: 099bd9ca8f\n\n* commit \u0027099bd9ca8fea02795424d62c05c723290d68ae14\u0027:\n  In CanvasContext::doFrame, make a separate call to computeFrameTimeNanos and save the result. Then pass that value to UiFrameInfoBuilder::setVsync as both arguments.\n"
    },
    {
      "commit": "3145247b3e8563f25e9d908579ce03060f3e880b",
      "tree": "223997176b9bd8514e78d07d727a7bf53692f3be",
      "parents": [
        "477e26cf931290f6b3353fab43a05406eea223f9"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jan 12 18:55:15 2016 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jan 12 18:55:15 2016 -0800"
      },
      "message": "Disable buildLayer crash\n\nChange-Id: Ia51e8da01d5c694fb1a084cea8dfce865c56a456\n"
    },
    {
      "commit": "099bd9ca8fea02795424d62c05c723290d68ae14",
      "tree": "a5e21ecae738d4660da99a80945dbafb1e761ed8",
      "parents": [
        "35bdda107fe76ab62087527946b201551ddfe965",
        "6222bb0f6a772c8fa1dc402740399b0ad1017520"
      ],
      "author": {
        "name": "Matthew Bouyack",
        "email": "mbouyack@google.com",
        "time": "Tue Jan 12 22:45:49 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jan 12 22:45:49 2016 +0000"
      },
      "message": "Merge \"In CanvasContext::doFrame, make a separate call to computeFrameTimeNanos and save the result. Then pass that value to UiFrameInfoBuilder::setVsync as both arguments.\" into cw-e-dev am: eebf168e43 am: e0845e8629\nam: 6222bb0f6a\n\n* commit \u00276222bb0f6a772c8fa1dc402740399b0ad1017520\u0027:\n  In CanvasContext::doFrame, make a separate call to computeFrameTimeNanos and save the result. Then pass that value to UiFrameInfoBuilder::setVsync as both arguments.\n"
    },
    {
      "commit": "f158b49c888f722194afe5a80539a2b020c130bc",
      "tree": "83d2e40497f2ea9ca439653d5ef334263c92c61b",
      "parents": [
        "89ceb5c97745c6901620c20eb0828a5c2f768f4f"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jan 12 14:45:08 2016 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jan 12 14:45:08 2016 -0800"
      },
      "message": "Rename Reorderers to Builders\n\nChange-Id: I9bb5a2e70055e2f6d14912fbd86ab72ac0d6e20c\n"
    },
    {
      "commit": "7f667e7a0823d52eed2ed64a31b125f6b8da21cb",
      "tree": "8e19e45d77476fb074e7050d1b1ab2820cd676c3",
      "parents": [
        "1d3bac82b3bc59fd7225a3c27b32db2fc90b0308"
      ],
      "author": {
        "name": "Matthew Bouyack",
        "email": "mbouyack@google.com",
        "time": "Tue Jan 12 12:01:48 2016 -0800"
      },
      "committer": {
        "name": "Matthew Bouyack",
        "email": "mbouyack@google.com",
        "time": "Tue Jan 12 12:01:48 2016 -0800"
      },
      "message": "In CanvasContext::doFrame, make a separate call to computeFrameTimeNanos\nand save the result. Then pass that value to\nUiFrameInfoBuilder::setVsync as both arguments.\n\nThe order of function argument evaluation is undefined in C++. Because\nthe value returned from TimeLord::latestVsync may be changed by\nthe preceding call to TimeLord::computeFrameTimeNanos the values of the\narguments passed to UiFrameInfoBuilder::setVsync is also undefined. This\nchange removes any ambiguity.\n\nChange-Id: Ie71ee453f9ccc725edfe5f7cc9b277f2a809dfdc\n"
    },
    {
      "commit": "5ea1724be4d3b6039818f91fc087e1216c1463d5",
      "tree": "04c3a8a7b6c2dfe8d3ce4cc665c2bebc3af47e39",
      "parents": [
        "7435eb148e72382126e9073183e881357bb38a8b"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jan 11 14:07:59 2016 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jan 11 15:35:52 2016 -0800"
      },
      "message": "Rename OpReorderer to FrameReorderer\n\nAlso separate LayerReorderer into its own files.\n\nChange-Id: Iafb6a156f760f62f831f6288fd0dadf1db25da24\n"
    },
    {
      "commit": "031eaedef8047c8054064ab12d05c3edca07a933",
      "tree": "cbda2b6c1d2877e5eda3fc23f028f4859108d435",
      "parents": [
        "ca9c0d428aebd0506d7cd13e4a6d3c0e99f35233",
        "d2dfd8f128b632ed99418ab2b32949c939a9a369"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Dec 16 23:48:27 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 16 23:48:27 2015 +0000"
      },
      "message": "Merge \"Add TextureView support to new renderer/reorderer\""
    },
    {
      "commit": "d2dfd8f128b632ed99418ab2b32949c939a9a369",
      "tree": "ef9446320399a05cf5bf2e1d7d4a6a177c261960",
      "parents": [
        "d7448e65e243754f31890baef29dff187dc2e5e5"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Dec 16 14:27:20 2015 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Dec 16 15:35:40 2015 -0800"
      },
      "message": "Add TextureView support to new renderer/reorderer\n\nbug:22480459\n\nChange-Id: I2e4c0bc6b904706132f3f5087ededc9cac9b40fb\n"
    },
    {
      "commit": "bf4b31f7b23b0bc7a2ed4fc779aac37c9c486eb2",
      "tree": "664a22edd64a136d05eb9d14d87ebe05f274a107",
      "parents": [
        "636e71c326f4938b1edd26953151987f6f2e5ec2",
        "04ce46db647724b7c30c9a593bf717888d59081c"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Dec 16 11:07:53 2015 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Dec 16 11:07:53 2015 -0800"
      },
      "message": "resolve merge conflicts of 04ce46db64 to master.\n\nChange-Id: I935bb47718f0e7d5fb48945dd8de6e28dac136e5\n"
    },
    {
      "commit": "adfeec94560c6661c5e6600b10c05f34a40f6454",
      "tree": "ff36367c650761dcf27fb4991851acfd9d6a4939",
      "parents": [
        "20754c5a112e418c11cc88176283db2c4bf2efd6"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Dec 15 19:17:32 2015 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Dec 16 10:20:41 2015 -0800"
      },
      "message": "Allow RT animation of new renderer\n\nChange-Id: I60136dc080dc4fd853ac8c3d37fefa85da1181df\n"
    },
    {
      "commit": "0bcd0cb6b1193168fa2840855195347488daab9e",
      "tree": "6123412bc7a325a1021e37082b60c832a3bce700",
      "parents": [
        "cb299b858f4f073e2abd4ad45aa944dc0dfd0aa2"
      ],
      "author": {
        "name": "Thomas Buhot",
        "email": "thomas.buhot@intel.com",
        "time": "Fri Dec 04 12:18:03 2015 +0100"
      },
      "committer": {
        "name": "Zhiquan Liu",
        "email": "zhiquan.liu@intel.com",
        "time": "Thu Dec 10 14:51:58 2015 +0800"
      },
      "message": "libhwui: make setSurface asynchronous\n\nOn the critical path of the cold launch of applications\nthe main thread of the started application tells the RenderThread\nto create a surface. This process is synchronous and blocks\nthe main thread of the application until the creation\nof the EGLContext is complete.\nAs a consequence the launch time of the application is delayed\nby time spent allocating the EGL Context in the RenderThread.\n\nWith this optimization the launch time of any application\nis improved (for example settings by 20 to 40 ms).\n\nChange-Id: Ibf47aaa0abb8dedf7aa00693073db3785d9d6b08\nSigned-off-by: Thomas Buhot \u003cthomas.buhot@intel.com\u003e\nSigned-off-by: Zhiquan Liu \u003czhiquan.liu@intel.com\u003e\n"
    },
    {
      "commit": "52b783f76af58a948dad4d3b4d1b7ad7979347ce",
      "tree": "037e37a8502b6ffef9929f7de1dbdbddaee62dbf",
      "parents": [
        "1a3c1650ccc0b15668f44b2911f5daf93573c0e0"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Nov 24 11:12:55 2015 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Nov 24 11:12:55 2015 -0800"
      },
      "message": "INT_MAX nanoseconds is not very long\n\nBug: 25843358\n\nIf the time between last swap \u0026 current vsync grew larger\nthan 2 seconds it would overflow when placed into an int, causing\nframes to be dropped as negative numbers are definitely\nless than 2_ms.\n\nChange-Id: Icd2136989e5bbf5a0e21611b95a4d515b5ff9b14\n"
    },
    {
      "commit": "98787e6c9b2c10b1ab7820bdac168686025b924a",
      "tree": "4bc65070a5f3c460c3b2a6c358d990b300010457",
      "parents": [
        "9fded232a9548a304e0145011df8849fba0dcda7"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Nov 13 10:55:30 2015 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Nov 16 11:21:18 2015 -0800"
      },
      "message": "Finish shadow support in new reorderer/renderer\n\nNow passes alphas and light radius, and correctly transforms light\ncenter for layers.\n\nAlso fixes begin-frame/layer clears to be damage rect aware.\n\nChange-Id: I3b1415cd7bf1518c510145ebebdb745f494a2542\n"
    },
    {
      "commit": "9fded232a9548a304e0145011df8849fba0dcda7",
      "tree": "ffe48b03342817dd2681825498ecdf3799e01a0d",
      "parents": [
        "8b8be50c640a13b98d364b3f36962d9cf185d6d9"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Nov 11 16:42:34 2015 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Nov 12 13:05:35 2015 -0800"
      },
      "message": "Recycle OffscreenBuffers\n\nChange-Id: Ia2e219026f211a5308ecf8209c5f986bb888aadd\n"
    },
    {
      "commit": "290b23a1e11d532b39098bb58693ef97ba98a622",
      "tree": "45a80e36c460d98c7df89a8e6a8e871ed4ea22ee",
      "parents": [
        "374745095659d378164bfee4c7f5c9299c47a814"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Nov 05 14:10:47 2015 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Nov 05 22:15:18 2015 +0000"
      },
      "message": "Fix build\n\nstd::abs requires \u003ccstdlib\u003e\n\nChange-Id: I0722340d17aed88c4c8dabcb723d432b05cebedb"
    },
    {
      "commit": "2359d85e31c8f17b82869fb35ebca50b8dd428bd",
      "tree": "586f8b98d5e4b940fc3474e4e4b0c85529c050ec",
      "parents": [
        "02a5a6bb9ba05bdf7517de90ede49fb535ea06ca",
        "0b7e8245db728d127ada698be63d78b33fc6e4da"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Nov 02 21:16:37 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 02 21:16:37 2015 +0000"
      },
      "message": "Merge \"Initial HW layer support in new reorderer/renderer\""
    },
    {
      "commit": "0b7e8245db728d127ada698be63d78b33fc6e4da",
      "tree": "b7138962e159b3359cb08735098d34779a5ce78e",
      "parents": [
        "8462bad554c2c0f5639c00dd7f1f32e9567c8e04"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Oct 28 16:50:44 2015 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Nov 02 12:59:38 2015 -0800"
      },
      "message": "Initial HW layer support in new reorderer/renderer\n\nShares vast majority of clipped savelayer code, with only minor\ndifferences in lifecycle.\n\nDoesn\u0027t yet handle fill region, resize, or window transform.\n\nChange-Id: Iabdd71811590d2b937eb11e1b01ce556ade54a5a\n"
    },
    {
      "commit": "b97ba3c09d5baf7c85ac4ddbdeb99770a7d3cab3",
      "tree": "bb325154d874c4bb3b90ee7a2960ba53c9df725b",
      "parents": [
        "bac13378ca2490e98e814908984bc9184ed1d42b",
        "b6c2624c8d9ee71d1c8d0aaf8082f92bb84b1418"
      ],
      "author": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Fri Oct 30 20:55:35 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 30 20:55:35 2015 +0000"
      },
      "message": "Merge \"Add window setDecorView API.\""
    },
    {
      "commit": "263e19bf46a40e3924ab9a7f374ecc420726fc9d",
      "tree": "dc3c94e21379c93676abf9f6b317941ee9180f64",
      "parents": [
        "02ed4a0e10522147425ea65704edd56f2aa6d061",
        "e2e53a7079733694bd52dbce665e9ceff21e9727"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Oct 29 19:49:22 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 29 19:49:22 2015 +0000"
      },
      "message": "Merge \"Simplify TreeInfo\""
    },
    {
      "commit": "b6c2624c8d9ee71d1c8d0aaf8082f92bb84b1418",
      "tree": "6557ee8a8c6bbda603d1a0876ca2551d870c5542",
      "parents": [
        "1e4313dfd06aba910785d7395ca72736b7b3731e"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Thu Oct 22 12:03:28 2015 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Thu Oct 29 12:31:47 2015 -0700"
      },
      "message": "Add window setDecorView API.\n\nAdd a Window API for setting a view which will be placed in\nthe decoration area (next to the window control buttons).\n\nChange-Id: Ie106cbea653ff95fdba987a2a43506d394600612\n"
    },
    {
      "commit": "e2e53a7079733694bd52dbce665e9ceff21e9727",
      "tree": "80dc4fae5d8c38c8bb4716593f90e25e34f379cc",
      "parents": [
        "37028137f25b298c00bf2d1e7e090b3b1ccbe633"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Oct 28 15:55:40 2015 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Oct 28 15:55:40 2015 -0700"
      },
      "message": "Simplify TreeInfo\n\nChange-Id: I8f05e9046236d607016b6c2bb77a333cfb47ba47\n"
    },
    {
      "commit": "97c92659fab67ca61d276f551e6f9d315428a6aa",
      "tree": "d668c9d351223d8475a4658dbef81b34d8e164ec",
      "parents": [
        "3398abb25b6a8614f80f79efcf428a07185fe50f",
        "e486d932ca5a10446a3c98d6d065213913277268"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Oct 28 19:24:45 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 28 19:24:45 2015 +0000"
      },
      "message": "Merge \"Tune scheduling a bit, avoid a binder ipc\""
    },
    {
      "commit": "e486d932ca5a10446a3c98d6d065213913277268",
      "tree": "b424ac4bf217a048a784f00377828a651ce1380a",
      "parents": [
        "5918519f972b4eedfc0e402b96cf8a288446deed"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Oct 28 09:21:19 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Oct 28 12:24:13 2015 -0700"
      },
      "message": "Tune scheduling a bit, avoid a binder ipc\n\nDon\u0027t query running behind if it\u0027s not possible to be behind such\nas having received a vsync since the last call to swap buffers.\n\nThis also avoids an accidental-starvation issue where if surface\nflinger was a bit sluggish to dequeue then renderthread would drop\nthinking the queue was full.\n\nAlso be a bit smarter about tracking if we\u0027ve already drawn for this\nvsync target to avoid producing two frames for the same vsync\n\nChange-Id: Ib266500a693c27000b2e8ea578f111229d75147a\n"
    },
    {
      "commit": "3398abb25b6a8614f80f79efcf428a07185fe50f",
      "tree": "a5562847fd183fad7a51fdebb5aa36e4cfe5907b",
      "parents": [
        "9f091287b1a06986871faebffb0d72771ec99df6",
        "77c40109cf25d29f85ee6c13aeb96e22e55f33ab"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Oct 28 19:21:17 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 28 19:21:17 2015 +0000"
      },
      "message": "Merge \"Cleanups\""
    },
    {
      "commit": "5854b34881b1a747ac80b5077869ef270a92b1f4",
      "tree": "9b25f2320950929e03a772bc985ea40df50d5e4b",
      "parents": [
        "ac7062e7f1716f137f14299c28e3c638cf4bdb9f"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Oct 26 15:49:56 2015 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Oct 27 16:44:50 2015 -0700"
      },
      "message": "Rework receiver/dispatcher design slightly, and replace Layer usage.\n\nSwitched from \u0027renderer/info\u0027 to \u0027dispatcher/renderer\u0027 to make their\ninteraction more natural. The new BakedOpRenderer is more similar in\nresponsibilities to the OpenGLRenderer, as it manages layer and frame\nlifecycles, and performs the actual rendering.\n\nHowever, it\u0027s still simpler because the BakedOpDispatcher handles\nmapping Canvas drawing ops to Glops, and the OpReorderer handles almost\nall canvas state operations.\n\nAlso switch BakedOpRenderer to use the new OffscreenBuffer, which\nserves as a lightweight Layer replacement, with a much simpler\nlifecycle.\n\nChange-Id: Ie0e2e248503400041d49729d813d485d28c76eb3\n"
    },
    {
      "commit": "77c40109cf25d29f85ee6c13aeb96e22e55f33ab",
      "tree": "479c941dfbb94c36fb73dc86e03da8412636fcec",
      "parents": [
        "5918519f972b4eedfc0e402b96cf8a288446deed"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Oct 26 15:49:47 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Oct 27 07:54:17 2015 -0700"
      },
      "message": "Cleanups\n\nChange-Id: I10001711afb2530c5dc19aebf2d055ae41f58c6a\n"
    },
    {
      "commit": "818c9fbf1d76d5df19253ba4eb964efa939ec9ec",
      "tree": "6fa7a565ae56d5c92a5905b19c9a20f675b0526b",
      "parents": [
        "914e362d1884a79588e848f6f87772e4e3fc73b2"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Oct 23 14:33:42 2015 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Oct 26 15:51:48 2015 -0700"
      },
      "message": "Initial version of clipped saveLayer in new pipeline\n\nAdditionally disables usage of FBO cache, so FBO destruction safely\ninteracts with renderstate caching.\n\nChange-Id: I25c277cb7afec2ca33bf226445d6c8867a15a915\n"
    },
    {
      "commit": "6fe991e5e76f9af9dab960100d5768d96d5f4daa",
      "tree": "20616f2c371e188492b48a9c759530b06047550a",
      "parents": [
        "387d1b25b58bb2bb80d983b7db7ddac22731a552"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Oct 20 09:39:42 2015 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Oct 21 18:19:37 2015 -0700"
      },
      "message": "Work to support saveLayer in new pipeline\n\nclipped SaveLayers will now be pulled to the beginning of the frame,\nprior to drawing FBO 0. This will remove the need for switching FBOs\nmid-frame.\n\nChange-Id: I4d8dc1f845e84e9b49d5acdf4f4703eef4a9cb06\n"
    },
    {
      "commit": "ddf2215d9807b641dbcb304779ef6b530f876ac7",
      "tree": "ca20de2796daee1718925929c00d2ada55415c23",
      "parents": [
        "80435a7fcd98e5ad1a0537a9646be2fca575f3bb"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Oct 14 17:42:47 2015 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Oct 15 09:38:15 2015 -0700"
      },
      "message": "Add partial damage support to new draw path\n\nChange-Id: I612578fd181240de71297c9a28bc9a8f350764a7\n"
    },
    {
      "commit": "b565df13a9e5c7b1d7d93bdfa4a793752d66d3cc",
      "tree": "4a2dadd3b2c95663c23a626eff75962a0b8d4ce2",
      "parents": [
        "b08949151f8dfc7a72ea6696f2e6067c2b1643bb"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Oct 05 13:00:52 2015 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Oct 14 16:10:40 2015 -0700"
      },
      "message": "Initial commit of new Canvas operation recording / replay\n\nDone:\n- drawRect, drawBitmap, drawColor, drawPaint, drawRenderNode, drawRegion\n- Recording with new DisplayList format\n- batching \u0026 reordering\n- Stateless op reorder\n- Stateless op rendering\n- Frame lifecycle (clear, geterror, cleanup)\n\nNot done:\n- SaveLayer (clipped and unclipped)\n- HW layers\n- Complex clipping\n- Ripple projection\n- Z reordering\n- Z shadows\n- onDefer prefetching (text + task kickoff)\n- round rect clip\n- linear allocation for std collections\n- AssetAtlas support\n\nChange-Id: Iaf98c1a3aeab5fa47cc8f9c6d964420abc0e7691\n"
    },
    {
      "commit": "ac02eb9035a13a3d09c2def9ed63d04225eb2509",
      "tree": "f6305a3b32606d77e81eb1ff5766c22daa5506d7",
      "parents": [
        "117e6daa420763e956c2125da09707b60cbaa33e"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Oct 05 12:23:46 2015 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Oct 05 14:16:26 2015 -0700"
      },
      "message": "Remove confusing behavior of Rect::intersect() and rename\n\nbug:24670525\n\nRemoves silly \u0027do nothing if rects do not intersect\u0027 behavior, and\nchanges the name to clarify the difference (contrasting against\nSkRect::intersect())\n\nbug:24670525\n\nChange-Id: Id2ca1cfea1a9d720d4dc70b251f426d9916f8b53\n"
    },
    {
      "commit": "b816087962aba0019b022303330f03b897b580ed",
      "tree": "2ecea9a96a864346296922eb212d2feb5ccdca9c",
      "parents": [
        "3da3ca609ec48e1ff23bcfda0b208632fab88d80"
      ],
      "author": {
        "name": "Skuhne",
        "email": "skuhne@google.com",
        "time": "Tue Sep 22 09:51:39 2015 -0700"
      },
      "committer": {
        "name": "Skuhne",
        "email": "skuhne@google.com",
        "time": "Fri Oct 02 07:11:45 2015 -0700"
      },
      "message": "Rendering the window frame with a second thread\n\nUsing a multi threaded render node to render the window frame\nasynchronously from the application relayout.\n\nBug: 22527834\nBug: 24400680\nBug: 24459827\nBug: 24409773\nBug: 24537510\nChange-Id: I1010fc6a8b6e38424178140afa3ca124433ab7e4\n"
    },
    {
      "commit": "ea7a7fb75acb7305eb774ca7bc7e96103bd49323",
      "tree": "a11a7df7a54d24e1d25dcea6914ea0b8fbc69b07",
      "parents": [
        "0f3a4f94243167a652f605530d4a69534db59cf7"
      ],
      "author": {
        "name": "Skuhne",
        "email": "skuhne@google.com",
        "time": "Fri Aug 28 07:10:31 2015 -0700"
      },
      "committer": {
        "name": "Skuhne",
        "email": "skuhne@google.com",
        "time": "Mon Sep 21 07:18:00 2015 -0700"
      },
      "message": "MultiThreaded rendering of different renderNodes\n\nThis is adding the renderer side infrastructure to allow\nrendering multiple render nodes with different threads.\nThis is a pre-step for decoupling a non client decor\nresize reder from a content resize render.\n\nMultiple render nodes can be added to be drawn, and to\nprevent overdrawing, a content bounds area can be set\n\nBug: 22527834\n\nChange-Id: Ie7271e20895bf38957e5a84aeefc883e282039ad\n"
    },
    {
      "commit": "64e445bf74bee2098781d608cedfd723d8cc88d3",
      "tree": "2a2d3727a8feff2470bc648f02a72c3cd7ae665a",
      "parents": [
        "9557106c6f84640382a068997b1fc125099d6019"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Sep 02 14:23:49 2015 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Sep 02 15:15:56 2015 -0700"
      },
      "message": "CanvasState frame init refactor\n\nbug:23760482\n\nChange-Id: Idc0802b4b8a6a3cebd20797350f4eb01bcc3fe77\n"
    },
    {
      "commit": "e248bd1b2c3fcf8088429507e73b31f45ee2544b",
      "tree": "11b5ca9ab43877438cc05101ca0c8c2c95bfb6bd",
      "parents": [
        "c0877bb0ff769f09e9e60f600bdd294f1aac8331"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Aug 05 13:53:53 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Aug 26 16:29:15 2015 -0700"
      },
      "message": "Serializing display lists\n\nThis is a WIP prototype\n\nChange-Id: Id4bfcf2b7bf905221c3734b7b6887c9b2efd37e6\n"
    },
    {
      "commit": "b9ce116dac378b4cf4490f265dcbd5704a1dd43c",
      "tree": "359fda22ac4f3c659c1afe2542a8266b9278318b",
      "parents": [
        "e4a6f925621e9360238869ae28f7df1b4c2d97de"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Aug 20 15:14:06 2015 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Aug 21 23:05:44 2015 +0000"
      },
      "message": "Switch several enums to enum classes\n\nChange-Id: I00ecd0b61657196b51704f70ca31a9d1c1ac254e\n"
    },
    {
      "commit": "149173d28c0843aba86b0810ce75b34be6a0d08f",
      "tree": "b602af79dc1bb677a6fc504960cd27d4ac09ff6b",
      "parents": [
        "fb3a57d0c1044dedacabfaaa722f5ed4409067b9"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Aug 10 09:52:29 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Aug 12 14:26:05 2015 -0700"
      },
      "message": "Support new EGL extensions\n\nBug: 21753739\n\nIncludes a revert of 13d1b4ab10fbee5e81a2ba1ac59cfae1e51d3ef0\nas that only supported EGL_EXT_buffer_age\n\nChange-Id: Ia86a47d19e3355c067934d7764c330b640c6958d\n"
    },
    {
      "commit": "13d1b4ab10fbee5e81a2ba1ac59cfae1e51d3ef0",
      "tree": "6844646af7e67205908076b0fa641dcf24cc6e9d",
      "parents": [
        "4692f42b7869110631b0521188afe56a4641ebf2"
      ],
      "author": {
        "name": "Season Li",
        "email": "seasonl@nvidia.com",
        "time": "Wed Jul 29 17:16:19 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Aug 04 13:01:54 2015 -0700"
      },
      "message": "renderthread: add EGL_EXT_buffer_age support\n\nEGL_EXT_buffer_age is better than EGL_BUFFER_PRESERVED\nbecause it can save memory bandwidth used to blit\nback buffer into front buffer.\n\nChange-Id: I2fea0ee08dc7dd66e348b04dd694d075d509d01b\n"
    },
    {
      "commit": "6d4d0db312fa8a9fce629dd92aa133c6f8249cf8",
      "tree": "dd6fe51ff86aaf5e281d57cd36011c1f3873e35c",
      "parents": [
        "0faca96f939b8530e5387a30e317d852f39f689f"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Aug 03 15:34:52 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Aug 03 22:47:49 2015 +0000"
      },
      "message": "Disable skipping frames on empty damage\n\nBug: 22592975\n\nOptimization added in MNC is not quite correct, occasionally\nit will fail to repaint when it was supposed to leading\nto buffer corruption. Disable the optimization for now.\n\nChange-Id: I34dfdfb357eda298198043ded7335d4588a003fd\n"
    },
    {
      "commit": "00e79c9947b741194ff6c0d08ede9b3befbf9c9d",
      "tree": "26098cf607eaef09a94855aec4ccdd9d8789fd55",
      "parents": [
        "29cf9aea5490c42b85aaaa98b6784daff82629f8"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Jul 21 10:23:59 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Jul 21 10:46:54 2015 -0700"
      },
      "message": "Mark isInUse per-window\n\nBug: 22509159\nChange-Id: I0ae0f1fa582ee38dcb9f24ca20f0b4d0c57ccb32\n"
    },
    {
      "commit": "f2dcc2aecb94e726096256c47b913ed0a57ae7e2",
      "tree": "927778287d0b2d9610ad1efe74fe37e83d6d4032",
      "parents": [
        "30c8245afc8d9558b76e5c86f917c22e02f6e820"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Jul 16 09:17:59 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Jul 16 09:17:59 2015 -0700"
      },
      "message": "Don\u0027t crash on makeCurrent fail\n\nBug: 22444755\n\nWindowManager may decide to yank the surface at any point, so\nattempt to kinda handle this\n\nChange-Id: Id2f665d2f0f93bccd4ec977fbf52dca4dc1ec891\n"
    },
    {
      "commit": "be3fba05e823f740f65b2679929347dc3dd282ad",
      "tree": "8dfd52f0e6297d009dd7e671ac8187a7dfac6996",
      "parents": [
        "a559590043e32f670813e062f042f9e642297edf"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Jul 06 13:49:58 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Jul 06 16:12:46 2015 -0700"
      },
      "message": "Adjust for pipeline stalls\n\nBug: 20853441\n\nCalculating duration that crosses the UI-RT\nsync point will now subtract out the time spent waiting\nin queue under the assumption that this time will be\naccounted for in the previous frame\u0027s metrics\n\nChange-Id: Ia8213f4410638840613f5ae439e98dfb77532a6a\n"
    },
    {
      "commit": "1b54fb27ac48495ed0b33868fda5776fb49fe0f3",
      "tree": "5e4c41e89b3065437c0e778a73a041cdffed1932",
      "parents": [
        "4575acf1e72827dd6fd6cb645abfb3ba9043fa47"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jun 02 17:40:58 2015 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jun 03 13:42:21 2015 -0700"
      },
      "message": "Delete MAKE_ENUM_FLAGS\n\nbug:21595702\n\nSettle on namespace-enum for consistency. Also removes k prefix.\n\nChange-Id: Ib89f94cb9263de40b6e4636577dca4860867d0d8\n"
    },
    {
      "commit": "2a8bb05a31ddd0d44d8513cba9fbd9b4ef9b97f6",
      "tree": "08f15a4f926c173615a8220201d5bbdf1d1d0c6c",
      "parents": [
        "e7f68c18bf1a1da5d0aa129674fe4f9ecf06ac8c"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Jun 03 09:52:01 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Jun 03 09:53:42 2015 -0700"
      },
      "message": "Fix warning\n\nBug: 21608208\nChange-Id: I1d1cf1fbc8c0a4561bf76e307c56be580fb4baef\n"
    },
    {
      "commit": "6058251939e417ed764d76fbde77eefc964d0ee6",
      "tree": "ec5b7b222d704227a23e05ad45fa5d8107a32923",
      "parents": [
        "4e14da5695b5457ae7da53c7f3079c71e37b2e19",
        "bf3c602284f9a344faf185c3a5e94a264ba44c4f"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Jun 02 23:16:22 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 02 23:16:31 2015 +0000"
      },
      "message": "Merge \"More colors, now with material colors\" into mnc-dev"
    },
    {
      "commit": "bf3c602284f9a344faf185c3a5e94a264ba44c4f",
      "tree": "fdf404c8f4f4859290157229cc1689ed5b0b1df7",
      "parents": [
        "233241f13d5d7f841d3db80408429d4d0a528c78"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Jun 02 15:55:00 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Jun 02 16:13:56 2015 -0700"
      },
      "message": "More colors, now with material colors\n\nBug: 18052916\nChange-Id: I66c2573d796338ee7b7d0ddf240b90cc78a71ce5\n"
    },
    {
      "commit": "4db3d17debef68f72d23999d69ae68b75f59dda3",
      "tree": "e6458545b7dfedcb156ac33adba4b6162a3d09a9",
      "parents": [
        "233241f13d5d7f841d3db80408429d4d0a528c78"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Jun 02 15:58:43 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Jun 02 15:58:43 2015 -0700"
      },
      "message": "FrameInfo header fixes\n\nBug: 21560187\n\nLog column names as part of output in case of other such\nissues\n\nChange-Id: I16157ed968307e761d416ca54bd7af5453fe67bf\n"
    },
    {
      "commit": "d7db4d767246b41d44995acb93d03d220b53c748",
      "tree": "653c8f5bb3026359be78c2d5083bd2c18f6d30ec",
      "parents": [
        "97bf518f7b818d297a500204627d1ad06127bff1"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed May 20 07:18:55 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed May 20 11:24:57 2015 -0700"
      },
      "message": "Eliminate requireGlContext\n\nBug: 20297820\n\nChange-Id: I37c63bab6f6c0d2337c8c6002046d2ef17e74097\n"
    },
    {
      "commit": "50210d912925aef14e4ce69be82e4949122a3cd9",
      "tree": "ba87c37a8b2db6521df6f8c62307319bcf70a823",
      "parents": [
        "9cb90cbbf8fc91793dad1d1cb317079dbc7e8421"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Thu May 14 18:05:36 2015 -0700"
      },
      "committer": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Thu May 14 18:05:36 2015 -0700"
      },
      "message": "Adjust light source for window position\n\nBug: 16523629\nChange-Id: I2f3fed1edcac0a3cfd5034aded45e08ececfebaf\n"
    },
    {
      "commit": "4c9e59d03c2bca38001225b79d01740b8999adfb",
      "tree": "140ff328b9966bdd974a7868c631eebdc1fea76f",
      "parents": [
        "4bd4121d584e16c700ba08828c675b7f906ff331"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue May 12 07:17:50 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue May 12 11:02:07 2015 -0700"
      },
      "message": "Unify DrawProfiler/JankStats\n\nBug: 20822400\n\nChange-Id: I24345c3120440bfce14e8cbe7e880b39f10b744a\n"
    },
    {
      "commit": "9aa7b45e796fea9e308fb2fc1fe5363390f1e7ba",
      "tree": "088ba6cec51a28c992eb8b22fbc1a3bae979f137",
      "parents": [
        "e48f44f55b5cdb9c4c3fa6ae6eae56768c6b12af",
        "aef9dc8d186bd5f78068ab2d5240b5e9c8ab44b6"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri May 08 21:19:37 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 08 21:19:54 2015 +0000"
      },
      "message": "Merge \"Fix kSkippedFrame setting\" into mnc-dev"
    },
    {
      "commit": "aef9dc8d186bd5f78068ab2d5240b5e9c8ab44b6",
      "tree": "88f7178c62f401c570bb4c70fd4debc20055602e",
      "parents": [
        "a0698b617f1efc71d5301f98aead822e266ec5d6"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri May 08 14:10:57 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri May 08 14:12:32 2015 -0700"
      },
      "message": "Fix kSkippedFrame setting\n\nIt was only set previously if RenderThread dropped the frame,\nbut not if the UI thread frame was dropped. Unify the\ntwo paths\n\nChange-Id: If2574edde3cb0949deed4e47f3daaddb890a1b28\n"
    },
    {
      "commit": "d04794a9a3f9edc8b7ca336175d66eb81a8f55fa",
      "tree": "b1fb28d9c72377bc981e5242ad58210cf2bd33bf",
      "parents": [
        "a0698b617f1efc71d5301f98aead822e266ec5d6"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri May 08 10:04:36 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri May 08 10:48:57 2015 -0700"
      },
      "message": "Add eglSwapBuffersWithDamageKHR support\n\nBUG: 20761426\nDisabled temporarily\n\nChange-Id: I0b6b6f0eebab886145e13fa35aefe76826965cf5\n"
    },
    {
      "commit": "240ff6246a29602539fd0295274e1c769e743a2e",
      "tree": "d40e9aaf5e0871ba6270b31ccfbae9468a09a1ab",
      "parents": [
        "ba474807b3e46c1e6127d461214deafc22f53766"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Apr 28 13:50:00 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Apr 28 13:50:00 2015 -0700"
      },
      "message": "Skip frames with no damage\n\nBug: 20464038\nChange-Id: Iae3aa9baf1d03c3aa443a39373e2bbd4a3910fad\n"
    },
    {
      "commit": "edc524c90506d80e0fc5fb67e8de7b8f3ef53439",
      "tree": "098c18daa80655fe0fa3faab7c39332685c163ef",
      "parents": [
        "1cef4196886b0cc1238111d396c1e3665a5fd2ae"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Mar 18 15:24:33 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Mar 27 11:50:56 2015 -0700"
      },
      "message": "Add GraphicsStatsService\n\nMore S\u0027s for More Speed\n\nSplit JankTracker\u0027s backing data from the\nclass to allow for data relocation to/from ashmem regions\n\nPack the jank tracking data to fit in 256 bytes\n\nChange-Id: Ife86a64b71a328fbd0c8075fe6a0404e081f725b\n"
    },
    {
      "commit": "b36016c65f1d1b5846dba0349aab491dbd3a746a",
      "tree": "6ce0e78368d6797988cc9b9745b20de5919bb19f",
      "parents": [
        "4771577a342214ef4f7373a8d37d015749b00347"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Mar 11 08:50:53 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Mar 11 11:29:13 2015 -0700"
      },
      "message": "Cleanups \u0026 simplifications\n\nChange-Id: I5ad5e3b8fe55b1528f2e20c63e5abe51d9e40ff1\n"
    },
    {
      "commit": "c87be99c6ead0720a8918ea38ce3b25e5c49e1c6",
      "tree": "017c6aa6e000f52b0b579444e32336999912b656",
      "parents": [
        "df570c6e66d98536597737f863430510b6336ffe"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Feb 20 10:57:22 2015 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Feb 20 10:58:48 2015 -0800"
      },
      "message": "C++11 style fixups\n\nChange-Id: I356d02338820bfef41a9e278c88dafc17cfe1cf9\n"
    },
    {
      "commit": "ba6adf66d3c44c0aa2fd8a224862ff1901d64300",
      "tree": "8172a893f00caa283cf0386dd3d585ca8fac867c",
      "parents": [
        "004a46eb171bc86a3d40eb8fc6a4d9eed48027c7"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Feb 19 14:36:50 2015 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Feb 20 08:27:38 2015 -0800"
      },
      "message": "Initial attempt at jank-tracking stat collection\n\nIs a bit naive, perhaps overly aggressive, but sorta works\n\nChange-Id: I01a774e00dbe681439c02557d9728ae43c45ce50\n"
    },
    {
      "commit": "96a5c4c7bab6718524de7253da8309143ab48bef",
      "tree": "c984108195579a6da2aa8ccadded7ec46104d4a4",
      "parents": [
        "06a8a121b0dc02bea7977c4112eb4319fd1a133f"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jan 27 15:46:35 2015 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jan 28 16:32:39 2015 -0800"
      },
      "message": "Move more GL state management to RenderState and its directory\n\nChange-Id: Ic68584e1c08dc64be2ad43450cb6caa1de834fdc\n"
    },
    {
      "commit": "65fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6",
      "tree": "2283afa7268a8c9c488eb533066881e2b24d73a5",
      "parents": [
        "d05d91358d89953a1374601a5b04b7ed65403e8c"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jan 26 18:06:29 2015 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jan 27 17:12:39 2015 -0800"
      },
      "message": "Move scissor state to RenderState\n\nChange-Id: I1227a3886fb24e4d9fad79fca469794f06cfb15e\n"
    },
    {
      "commit": "d41c4d8c732095ae99c955b6b82f7306633004b1",
      "tree": "dbb2e26c6c5a80c7ccf43e5cd5fb1554cc603555",
      "parents": [
        "8dfaa4904205772cdceee63ef3989bcdedf1a914"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jan 05 15:51:13 2015 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jan 05 16:49:13 2015 -0800"
      },
      "message": "Add overrides and switch to nullptr keyword for all files\n\nAdds remaining missing overrides and nullptr usages, missed due to\nan extreme failure in tool usage.\n\nChange-Id: I56abd72975a3999ad13330003c348db40f59aebf\n"
    },
    {
      "commit": "51d6a3db97bdd5315f1a17a4b447d10a92217b98",
      "tree": "80803f8d2a5507e2d29bd58c7243a23fca343454",
      "parents": [
        "e84a208317e0ed388fcdad1e6743c7849acb51b0"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Dec 22 17:16:56 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Dec 23 16:53:56 2014 -0800"
      },
      "message": "Cleanup various clang warnings, use unique_ptrs in several places\n\nChange-Id: I347904b25e51fcc7de14b1e72f1acd0f6ba26f3f\n"
    },
    {
      "commit": "9fb42f07784ac9e1ab29fa7d5bcda6c3081d238f",
      "tree": "23fe00a35b718051d190f018ed8603d0c06acb14",
      "parents": [
        "e1a96f7fe217ccc610bd3cfb4e9a66630c816571",
        "a75b0ad3842a5cfc406fbd9c7a36bf8a7bdcf069"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Dec 04 13:51:41 2014 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Dec 04 13:51:41 2014 -0800"
      },
      "message": "resolved conflicts for merge of a75b0ad3 to master\n\nChange-Id: I32a2d129c556407727ada909daa6470309d42499\n"
    },
    {
      "commit": "a75b0ad3842a5cfc406fbd9c7a36bf8a7bdcf069",
      "tree": "aef030b2f3b65e829e3569a0b0304b609f1c856c",
      "parents": [
        "1c88fc009fb3f7a3b5f085abb6a40cf4d845d662",
        "a51a0901ada5e2bc472c379a39df13ff48e666ed"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Dec 04 13:41:04 2014 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Dec 04 13:41:04 2014 -0800"
      },
      "message": "resolved conflicts for merge of a51a0901 to lmp-mr1-dev-plus-aosp\n\nChange-Id: Id7df835f0bd3d5d276b162635ddfb7fe0918dfed\n"
    },
    {
      "commit": "01a5ea35fbba4c5bb1d7790ae1677a2fa752e042",
      "tree": "d890ced3bdb3be6275e2d13d0dbd9f901ec8ce4d",
      "parents": [
        "8d72046b9ba06feadbcf71815a1c6e1017c8da37"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Dec 03 13:01:07 2014 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Dec 03 13:03:59 2014 -0800"
      },
      "message": "Resume RT-animations after a pauseSurface\n\nBug: 18203577\n\nThe issue occurs as a result of performTraversals() both doing\na window relayout call *and* early-returning because it\u0027s not dirty.\n\nTo fix this pauseSurface() returns whether or not the RT-side is\n\"dirty\" to force ViewRootImpl to do a draw even if mDirty is\notherwise empty.\n\nChange-Id: I534f367e75d18d273ebf14df3927f5c464ef6bef\n"
    },
    {
      "commit": "c5cf471758169f7ffdf7669568a7780902159790",
      "tree": "f8ff84ce373fde3e5163c466bf5f6f28a2ce2037",
      "parents": [
        "6e8fea14ccc4c30d56a7f70c9addf3d5b8a229d2",
        "d7af6eaace4ffdd3635a1cdeff65e9dc1af39f67"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Dec 01 21:47:03 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 01 21:47:03 2014 +0000"
      },
      "message": "am d7af6eaa: am d51205fd: am 6afc5cf3: Merge \"Prevent calling GL functions with an invalid surface\"\n\n* commit \u0027d7af6eaace4ffdd3635a1cdeff65e9dc1af39f67\u0027:\n  Prevent calling GL functions with an invalid surface\n"
    },
    {
      "commit": "d7af6eaace4ffdd3635a1cdeff65e9dc1af39f67",
      "tree": "db08af2392b33783928c8ff5954301131d5e09aa",
      "parents": [
        "b62b1b03792e7c583ec1a51a3d621deb51663414",
        "d51205fda7351ca32e54ef34b32e72f6c7c79847"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Dec 01 21:40:32 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 01 21:40:32 2014 +0000"
      },
      "message": "am d51205fd: am 6afc5cf3: Merge \"Prevent calling GL functions with an invalid surface\"\n\n* commit \u0027d51205fda7351ca32e54ef34b32e72f6c7c79847\u0027:\n  Prevent calling GL functions with an invalid surface\n"
    },
    {
      "commit": "a12b2405df5c12363e24cebc684f5f3a5c9a5b7b",
      "tree": "395524d5f2413969c38197aa7db765e45e29c655",
      "parents": [
        "6cacf44e7ecfe50097adc99dab97c3fb9770a1af"
      ],
      "author": {
        "name": "Sangkyu Lee",
        "email": "sk82.lee@lge.com",
        "time": "Fri Nov 21 18:05:41 2014 +0900"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Dec 01 21:38:34 2014 +0000"
      },
      "message": "Prevent calling GL functions with an invalid surface\n\nBug: 18518580\n\nWhen destroying CanvasContext, the surface can be invalid\nstate. So the surface should be updated to null prior to\ndestroying GL resources to ensure that GL functions\nare not called with an invalid surface.\nSome GL implementation makes an error if GL functions\nare called with an invalid surface. (Adreno 3xx)\n\nCherry picked from AOSP: f76d36f96bf221672e98e440c9df7cbf0e02e84e\n\nChange-Id: Ie6f6ea081ec931fc9df30b2c3ed066ec1ae9d294\n"
    },
    {
      "commit": "62bdf2c86342db66d86ceff3a8c0b609e4570bfc",
      "tree": "7a1de1fc46fad8849e465038311cf02bb4e6e1e9",
      "parents": [
        "ddf7e2dfc26ea5341c62cb5391a1cfb12cd8c129",
        "e986817a2dc8a412c12e456319965a67ac60f236"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Nov 26 21:08:00 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 26 21:08:00 2014 +0000"
      },
      "message": "am e986817a: am 6eac26a4: am ca84c8b1: Merge \"Revert \"Force-use the pbuffer surface for destroy\"\" into lmp-mr1-dev\n\n* commit \u0027e986817a2dc8a412c12e456319965a67ac60f236\u0027:\n  Revert \"Force-use the pbuffer surface for destroy\"\n"
    },
    {
      "commit": "e986817a2dc8a412c12e456319965a67ac60f236",
      "tree": "b2d50e32c557e8f7c38c0c8f09c9886bc82e0114",
      "parents": [
        "0eaee607b8799bc6635efc8e65df13b6411b5a84",
        "6eac26a49957eda233ad22ad75da43379f220bbc"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Nov 26 21:02:24 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 26 21:02:24 2014 +0000"
      },
      "message": "am 6eac26a4: am ca84c8b1: Merge \"Revert \"Force-use the pbuffer surface for destroy\"\" into lmp-mr1-dev\n\n* commit \u00276eac26a49957eda233ad22ad75da43379f220bbc\u0027:\n  Revert \"Force-use the pbuffer surface for destroy\"\n"
    },
    {
      "commit": "9f81485a76dd02a07fd460a29db6adddd2ca2efe",
      "tree": "b83710c292efceb1675ae0a1adb543ba24b704a7",
      "parents": [
        "b945f2313aee6e49a082ba5caaf95334d2570d52"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Nov 26 18:59:58 2014 +0000"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Nov 26 18:59:58 2014 +0000"
      },
      "message": "Revert \"Force-use the pbuffer surface for destroy\"\n\nbug:18528859\n\nThis reverts commit b945f2313aee6e49a082ba5caaf95334d2570d52.\n\nChange-Id: I6915624d356cb8570471eb3a5b8921f59b58db6d\n"
    },
    {
      "commit": "e39f788950c60f6468a038f88e6dc7ac5ee65f8f",
      "tree": "89d0720d85d43aaf47ad2daf77817d9980af1cdf",
      "parents": [
        "2edf7d6065d7ac3bff500b93daab4860a3f3741d",
        "0d4ab958c11801f5453e999f930416c87c63d100"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Nov 26 12:09:42 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 26 12:09:42 2014 +0000"
      },
      "message": "am 0d4ab958: am 4e3404d9: am dec3f138: Merge \"Force-use the pbuffer surface for destroy\" into lmp-mr1-dev\n\n* commit \u00270d4ab958c11801f5453e999f930416c87c63d100\u0027:\n  Force-use the pbuffer surface for destroy\n"
    },
    {
      "commit": "0d4ab958c11801f5453e999f930416c87c63d100",
      "tree": "02b23e48142325e228d32e81783cdb7a84c7ca99",
      "parents": [
        "2f47df83343e51214c792dc89874f0bccbeb4593",
        "4e3404d90fe33a0ff790aff4a97b6bb55e4c0e8f"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Nov 26 12:02:19 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 26 12:02:19 2014 +0000"
      },
      "message": "am 4e3404d9: am dec3f138: Merge \"Force-use the pbuffer surface for destroy\" into lmp-mr1-dev\n\n* commit \u00274e3404d90fe33a0ff790aff4a97b6bb55e4c0e8f\u0027:\n  Force-use the pbuffer surface for destroy\n"
    },
    {
      "commit": "f76d36f96bf221672e98e440c9df7cbf0e02e84e",
      "tree": "e1c81a2faf4ea012f087292f198b703fc9d0288c",
      "parents": [
        "f926d71b8ef2790da067550144860705c1a61fe5"
      ],
      "author": {
        "name": "Sangkyu Lee",
        "email": "sk82.lee@lge.com",
        "time": "Fri Nov 21 18:05:41 2014 +0900"
      },
      "committer": {
        "name": "Sangkyu Lee",
        "email": "sk82.lee@lge.com",
        "time": "Wed Nov 26 09:59:39 2014 +0900"
      },
      "message": "Prevent calling GL functions with an invalid surface\n\nWhen destroying CanvasContext, the surface can be invalid\nstate. So the surface should be updated to null prior to\ndestroying GL resources to ensure that GL functions\nare not called with an invalid surface.\nSome GL implementation makes an error if GL functions\nare called with an invalid surface. (Adreno 3xx)\n\nChange-Id: Ie6f6ea081ec931fc9df30b2c3ed066ec1ae9d294\n"
    },
    {
      "commit": "b945f2313aee6e49a082ba5caaf95334d2570d52",
      "tree": "99319f925561305925e2dc3ec71c651f2f04b0cd",
      "parents": [
        "0c31d97a38909e85e0df6cdc29469dbb1580ed4b"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Nov 25 09:54:13 2014 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Nov 25 09:54:13 2014 -0800"
      },
      "message": "Force-use the pbuffer surface for destroy\n\nBug: 18518580\n\nIf CanvasContext is being destroyed() the Surface\nis probably no longer valid as well, so make sure to\nmakeCurrent() to the pbuffer surface so that the\nsubsequent GL operations are not using an invalid\nEGLSurface\n\nChange-Id: Ica5d6a065841772c47e00ad65aa7894c7e27e043\n"
    },
    {
      "commit": "64bb413a664001c95c8439cf097dc3033f4ed733",
      "tree": "d4562f7bb5656865d32e5d684b5a41542ecfaf58",
      "parents": [
        "8a902d9f24e83c87b054adb5836b4a5b8a257be9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Nov 22 00:35:09 2014 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Nov 22 00:35:09 2014 +0000"
      },
      "message": "Revert \"resolved conflicts for merge of 220c3f4f to master\"\n\nReverted as hwui doesn\u0027t agree.\n\nThis reverts commit 8a902d9f24e83c87b054adb5836b4a5b8a257be9.\n\nChange-Id: I109e7b02bee2921e2155ded6df36f52e6f574b5a\n"
    },
    {
      "commit": "8a902d9f24e83c87b054adb5836b4a5b8a257be9",
      "tree": "7a1842dd8f8b9b8e1880df7a3fe0fc7f5d103d48",
      "parents": [
        "fa6547f6c0aad15c308a4ba946955087081ae1eb",
        "220c3f4f48b53b6010093a1ef437f4197a382ebf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 21 15:51:04 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 21 15:51:04 2014 -0800"
      },
      "message": "resolved conflicts for merge of 220c3f4f to master\n\nChange-Id: I37ecce8fddecdff82b0eace16f1ee75152f7171e\n"
    },
    {
      "commit": "2ab8298dc37851aab4623ba3f98d71055d653a73",
      "tree": "e31d76f1c16ec8e980983392b09287515bcec2f1",
      "parents": [
        "4c9041cf837cda13c749b148661d18c3fab0fbd6",
        "99377df12ee696e01cd9071132f122801a9862ce"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 21 14:19:06 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 21 14:19:06 2014 -0800"
      },
      "message": "resolved conflicts for merge of 99377df1 to lmp-mr1-dev-plus-aosp\n\nChange-Id: I3a98f55832ac447b1ed0dd129c7a93d088025943\n"
    },
    {
      "commit": "42ddc18d108f789705ad4eb697ce9599ad322507",
      "tree": "53ed2c03a53112f6bfd515a6d03b02dfed0cc9e9",
      "parents": [
        "f926d71b8ef2790da067550144860705c1a61fe5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 21 09:49:08 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 21 10:39:21 2014 -0800"
      },
      "message": "Frameworks/base: Unused parameters in hwui\n\nRemove Clang cutout for unused parameters. Fix warnings.\n\nRemove Clang cutout for deprecated Skia function usage. Has been\nfixed in the L push.\n\nChange-Id: I7ea073ff67127cc1e14e798b655e2c50615fe8e7\n"
    },
    {
      "commit": "27eaec23881f9564f98b484765d000822de5fdc3",
      "tree": "2b958bb768b18ec0cff74e3b1e5949ba3b81f30b",
      "parents": [
        "bee20cb560d37d23f2037c210152f9c44246ba8d",
        "842697a3602204036e991cfea8b74da3df6e7f14"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Nov 18 21:37:59 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 18 21:37:59 2014 +0000"
      },
      "message": "am 842697a3: am decc26df: am f0f68117: Merge \"Trace some interesting events\" into lmp-mr1-dev\n\n* commit \u0027842697a3602204036e991cfea8b74da3df6e7f14\u0027:\n  Trace some interesting events\n"
    },
    {
      "commit": "fbc8df03e498baf47ff1a5e05e182f1bcd60c770",
      "tree": "de74f95227f7285e812ad4a0c009e697fcca7d6a",
      "parents": [
        "b3ec64e1005c82d41b6d1a1d86b6933fd25d87d2"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Nov 14 16:18:41 2014 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Nov 17 10:18:31 2014 -0800"
      },
      "message": "Trace some interesting events\n\nBug: 18337099\nChange-Id: Ie2e60da2b9f06e0368061c944d8123ab6903355c\n"
    },
    {
      "commit": "e19093cad8e67cf1db98157d0246d0141b19f808",
      "tree": "e1419d670b0ae3ecff9c7276c0b8e40bb77ed1b2",
      "parents": [
        "09f5ca4eb607088626fd9a088f4171e76a493995",
        "f1923c368c5c08a477b9f94dea6a499798d91d4f"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Nov 07 23:01:00 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 07 23:01:00 2014 +0000"
      },
      "message": "am f1923c36: am 8dda03a0: am ca93f69c: Merge \"Have an actual fallback if the surface is lost\" into lmp-mr1-dev\n\n* commit \u0027f1923c368c5c08a477b9f94dea6a499798d91d4f\u0027:\n  Have an actual fallback if the surface is lost\n"
    },
    {
      "commit": "aa95a88327d9a3ac8a4a00b065b78ac0f28b3a19",
      "tree": "1e2e65ec4a7d28ea3b0a253be0d31eaf397dd005",
      "parents": [
        "b9744c1c1f5e8cc936da7f1832665f77ad5bb18f"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Nov 07 11:02:07 2014 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Nov 07 11:02:07 2014 -0800"
      },
      "message": "Have an actual fallback if the surface is lost\n\nBug: 17516789\n\nThis will force a relayout/reinitialize pass if the Surface\nis lost mid-render instead of crashing on the next frame\n\nChange-Id: If08bfa16f740728fa7c05904fa11e26f07b81e2e\n"
    },
    {
      "commit": "107843de4507b3511006cb9c77b8d0364374385a",
      "tree": "02b2f6181dbd8665638b174c2819f289a40551fd",
      "parents": [
        "daccecb263cad36b55dd84e25709d543ee887202"
      ],
      "author": {
        "name": "Tom Hudson",
        "email": "tomhudson@google.com",
        "time": "Mon Sep 08 11:26:26 2014 -0400"
      },
      "committer": {
        "name": "Tom Hudson",
        "email": "tomhudson@google.com",
        "time": "Tue Nov 04 15:49:44 2014 -0500"
      },
      "message": "Remove status return from all uirenderer::Renderer functions\n\nThis moves the interface closer to android::Canvas. The only use of\nreturn values was in the OpenGLRenderer subclass; that is replaced\nwith an internal dirty flag: returned from finish(), checked by\nCanvasContext.\n\nThis is part of a series of CLs to refactor the Graphics JNI bindings.\n\nBUG:15672762\nR\u003ddjsollen@google.com,ccraik@google.com\n\nChange-Id: Ifd533eb8839a254b0d3a5d04fc5a2905afdfc89e\n"
    },
    {
      "commit": "0e89e2b7bcb2c035e8cee77f93120e7c5617f8d2",
      "tree": "8fcd1f768f08fbeb2cd13425a2bf15b7670428f2",
      "parents": [
        "141823ec6313d9545b8354ea1e3e017a1da3cfa8"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Oct 31 14:49:06 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Oct 31 15:30:10 2014 -0700"
      },
      "message": "Layer changes\n\nBug: 17208461\n\n* Switch Layer to be VirtualLightRefBase instead of\n  Caches\u0027 side-channel ref-counting\n* Include active layers in gfxinfo dump\n* Run gfxinfo dump on the correct thread\n* Dump gfxinfo on Layer creation failure\n\nChange-Id: I28d195699e2334518e215ab28c7a17355aee9678\n"
    },
    {
      "commit": "1125d1fa92ab9f3b8315bbfb72e038b62dfd454b",
      "tree": "b4a292e191bc815bb658355f879178706ed3f3e9",
      "parents": [
        "9b67a1a232dc0e1cda346271c3a9d118228001ee"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Oct 23 11:02:19 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Oct 23 13:59:47 2014 -0700"
      },
      "message": "Add some free zoom to lockHardwareCanvas\n\nBug: 18099195\n\nDon\u0027t use EGL_SWAP_BUFFER_PRESERVED on surfaces that will\nnever benefit. Also clean up some confusing naming\n\nChange-Id: I674ca64e0464a3282cff79e5ecd350d08f47c014\n"
    },
    {
      "commit": "786afcb3eec18315ec54987a08814ff28f13d09f",
      "tree": "17a0b148ab9591401c091414d78d6bfd1fdfd14a",
      "parents": [
        "b7af00f2b14e9f8333e3518aa81a15502858ea11"
      ],
      "author": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Thu Sep 25 02:41:29 2014 +0200"
      },
      "committer": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Wed Oct 08 18:30:54 2014 +0000"
      },
      "message": "Trim graphics memory when closing the shade\n\nGraphics memory usually gets trimmed in applications when the\nactivity goes into the background. We use quite a lot of graphics\nmemory when the shade/lockscreen is open, and some of them never gets\nfreed unless the recents activity is closed, because we don\u0027t have\nthese activity-trimming-heuristics for the shade. This change\nproactively trims the graphics memory when the shade gets closed or\nwhen the lockscreen is hidden, to emulate the same heuristics as for\nactivities.\n\nThis change also adds trimMemory on RenderThread to systrace to\nverify that no jank is introduced with this change.\n\nThis change immediately saves around 10-30 MB on an xxhdpi device\nafter the shade is closed.\n\nBug: 17581375\nChange-Id: I4fb622efb51815fe08187be97ba15d012d4de5d4\n"
    },
    {
      "commit": "749906b468912dab7bf69a86e852deac3e80b0cc",
      "tree": "f5b80480964d2472abe257bb5c6273b8e1a57136",
      "parents": [
        "a79caa53405ea3efdd77d59ea7aa6dd64ecf09d3"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Oct 03 15:02:19 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Oct 03 15:02:19 2014 -0700"
      },
      "message": "Cleanup DeferredLayerUpdater\n\nBug: 17765082\n\nDeferredLayerUpdater had fallen behind RT updates. Re-snap to\nlatest expectations, ensuring to call requireGlContext() prior\nto detachSurfaceTexture to avoid leaking SurfaceTextures\n\nChange-Id: Ic65fb9831e5284f658866da8da9ad5af1d227699\n"
    },
    {
      "commit": "651486d0186755f30f08d17126a61bf7127cba96",
      "tree": "9652f71d7957cd74be6218b53d8efc10daa7dce3",
      "parents": [
        "ccfa1a979901f2b459da736e0ad7f34ae193bb5e",
        "284b24358410cb0200e525a5ba36994090c83f20"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Sep 19 15:31:17 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 19 15:31:18 2014 +0000"
      },
      "message": "Merge \"Fix garbage showing up beneath dialogs\" into lmp-dev"
    },
    {
      "commit": "284b24358410cb0200e525a5ba36994090c83f20",
      "tree": "6251ddc72a3e29f68a94159b89539acf90b30a5a",
      "parents": [
        "c1e1550bf489b5fafff70154232c24bc5026b7df"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Sep 18 16:05:35 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Sep 18 16:05:35 2014 -0700"
      },
      "message": "Fix garbage showing up beneath dialogs\n\nbug:17463894\n\nFixes the setViewport method to immediately affect the return values\nof getViewportWidth/Height methods.\n\nAlso works around tiling extension issues observed on first frame\nafter window resize by disabling tiling for that frame.\n\nChange-Id: Ie172d572d20d74a1be9cc58ad389af2cffa0e4b6\n"
    }
  ],
  "next": "2cdbc7d2283aae3d77b12c8fdbba8ca4bd3db5ea"
}
