)]}'
{
  "log": [
    {
      "commit": "cc6080011d6e7c7ab219d6c4f7eabc99574dca87",
      "tree": "288e02e5121d92d744df5f384cffa5a9468a5b63",
      "parents": [
        "cc3ff95870405880e3f4e48146c78ad45eff0bc0",
        "257fdaecb53fdec10dbe187ec523641da21b55cb"
      ],
      "author": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Fri Apr 09 22:10:16 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 09 22:10:16 2021 +0000"
      },
      "message": "Merge \"SurfaceFlinger: Remove reparentChildren\" into sc-dev"
    },
    {
      "commit": "a9a65fc0cda53e903f68a3c9404801e67e3fd74c",
      "tree": "ebaaa4db856b52d1367c97162ddbf115de85526b",
      "parents": [
        "3149c46550e78358fd8fd2c4089d84921263e2ab",
        "1014c4bf14f5c250b78d7e917fb59aaa9b0d9b0a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Apr 09 07:34:03 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 09 07:34:03 2021 +0000"
      },
      "message": "Merge \"Revert \"Remove setFrame from BufferStateLayer\"\" into sc-dev"
    },
    {
      "commit": "257fdaecb53fdec10dbe187ec523641da21b55cb",
      "tree": "d8b2ebe397742d8ea8f32a728dba57fa6bfc71ec",
      "parents": [
        "9432a357af0f0ff4a83d1f9db646450cf162d616"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Thu Apr 08 17:30:52 2021 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Thu Apr 08 17:32:19 2021 -0700"
      },
      "message": "SurfaceFlinger: Remove reparentChildren\n\nNo callers left outside of tests.\n\nBug: 161937501\nTest: Existing tests pass\nChange-Id: Id5c2b68d1be05fce9f698813d83044b02bb2764d\n"
    },
    {
      "commit": "2df6be75f3404b7d9a44851261df6bbe942335aa",
      "tree": "bfd949ead80d82d2b8abab90a7e70e8712a33744",
      "parents": [
        "5ea461caa65d5fd21ae1cf9f2125481b5b3189af",
        "e163dbc742f7f542765f2ce3ea0d4bd5fec7a0b7"
      ],
      "author": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Thu Apr 08 19:23:09 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 08 19:23:09 2021 +0000"
      },
      "message": "Merge \"SurfaceFlinger: Peek in current state for transform hint\" into sc-dev"
    },
    {
      "commit": "1014c4bf14f5c250b78d7e917fb59aaa9b0d9b0a",
      "tree": "3681d2c2dec4b3a9357c8a7a77fcf85358a113e4",
      "parents": [
        "9a93ea66bb7116b8821877a69991ae94557b1303"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Apr 08 12:30:21 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Apr 08 12:30:21 2021 +0000"
      },
      "message": "Revert \"Remove setFrame from BufferStateLayer\"\n\nRevert \"Update tests to reflect the new behavior for setGeometry\"\n\nRevert submission 13843937-sc_remove_set_frame\n\nReason for revert: Candidate CL for b/184807094\nReverted Changes:\nIffbd955a3:Remove setFrame\nI27f17bc61:Update tests to reflect the new behavior for setGe...\nI5720276c1:Remove setFrame from surface_control setGeometry\nI32ee0e3e4:Remove setFrame from BufferStateLayer\n\nBug: 184807094\nChange-Id: I8330f374c50c76d8c2e70b79815bc2bc32b89480\n"
    },
    {
      "commit": "e163dbc742f7f542765f2ce3ea0d4bd5fec7a0b7",
      "tree": "560164cee70d4772486210f3da78ff2aa4b8a608",
      "parents": [
        "a7e6c7c5940cd4b04b499990fede0bbcd8fcd08e"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Apr 07 13:12:36 2021 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Apr 07 13:12:36 2021 -0700"
      },
      "message": "SurfaceFlinger: Peek in current state for transform hint\n\nImagine a sequence like this:\n1. Apply transaction to rotate display\n2. Create surface\n3. Transaction to rotate display processed\n\nFrom a client perspective we executed 2 after 1 and would expect it\nto observe the new transform hint, but it may not due so\ndue to the waiting for current-\u003edrawing state swap. Since we hold\nthe lock on the binder thread we can peek in the current state and\nreturn the most recent hint.\n\nBug: 184584284\nTest: Existing tests pass\nChange-Id: Ic4927f517757c3c3dcfc1570e66b40ed370496de\n"
    },
    {
      "commit": "33c9fe895947e7883f71c36ccc65cea910137dd0",
      "tree": "7c327e9ffb5e4f6d3b7a79aea27bd2722ed5626f",
      "parents": [
        "b16fa8e49508388184bbf1efff2092a036a54aa6",
        "3425788949be2e8bb30617f58fa791e3fc58d51e"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Wed Apr 07 19:56:01 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 07 19:56:01 2021 +0000"
      },
      "message": "Merge \"Revert \"Increase performance for screenshots by pre-loading the buffer\"\" into sc-dev"
    },
    {
      "commit": "b16fa8e49508388184bbf1efff2092a036a54aa6",
      "tree": "554e7ad9ba3c0d701c3403e47e6717449759749d",
      "parents": [
        "0de23a9eafae2db42781b6db6994c7d52621e7a9",
        "9a93ea66bb7116b8821877a69991ae94557b1303"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Wed Apr 07 18:56:48 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 07 18:56:48 2021 +0000"
      },
      "message": "Merge \"Remove setFrame from BufferStateLayer\" into sc-dev"
    },
    {
      "commit": "3425788949be2e8bb30617f58fa791e3fc58d51e",
      "tree": "7909183d1a52f4b39d00e649b7ce2d08026813ce",
      "parents": [
        "0de23a9eafae2db42781b6db6994c7d52621e7a9"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Tue Apr 06 18:32:34 2021 +0000"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Wed Apr 07 17:37:11 2021 +0000"
      },
      "message": "Revert \"Increase performance for screenshots by pre-loading the buffer\"\n\nThis reverts commit 957f7b377c39f214e61d6a8bac3a151fb63c1e77.\n\nReason for revert: memory leak (see b/184564947)\n\nBug: 184564947\nChange-Id: I0ac8a2cdc33f83a5b2315232177b5b1d7bd35bbe\n"
    },
    {
      "commit": "713cf6b372cb0d8024f5ece282ac50d8a712f908",
      "tree": "b4f78d7b653a5eabd1751ea4f3ca304e2ead4711",
      "parents": [
        "58bdc02200d5ec04535d01e1ea9c74d7279082ef",
        "83df034961b4407dc9bdf41e560dd27728907b34"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Apr 06 23:37:16 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 06 23:37:16 2021 +0000"
      },
      "message": "Merge \"Clean up tracking of layers with buffers\" into sc-dev"
    },
    {
      "commit": "754c4cb0f03c26fb95785f21e89cddc4f3c0a5d2",
      "tree": "bb197254b3df0fe95c0de0a9f51c431a806f7973",
      "parents": [
        "b19cc001167bd3c7417330cb021539541e8e1d4f",
        "bdda8f08e38620b071d1c77e8345b141f7fcedfe"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Apr 06 22:49:37 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 06 22:49:37 2021 +0000"
      },
      "message": "Merge \"SF: remove wp\u003cLayer\u003e from LayerHistory\" into sc-dev"
    },
    {
      "commit": "87f1e3fe07ac72cb6e8d94fe0ccf551bbcc5b2f2",
      "tree": "2cd5662e2d2d37cbd639cf54dc49bcc8b007ec7c",
      "parents": [
        "ce40b1fb8aae1b242f1164dfb3f844e02081252d",
        "6c1b7aca75e3fb0d45789b15007202493de6bc3d"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Apr 06 04:52:18 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 06 04:52:18 2021 +0000"
      },
      "message": "Merge \"SF: use FenceTime when possible\" into sc-dev"
    },
    {
      "commit": "bdda8f08e38620b071d1c77e8345b141f7fcedfe",
      "tree": "f14160f18807dbc693a2d268d4cc5fd68c322d43",
      "parents": [
        "6c1b7aca75e3fb0d45789b15007202493de6bc3d"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Apr 01 16:06:11 2021 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Apr 06 01:21:30 2021 +0000"
      },
      "message": "SF: remove wp\u003cLayer\u003e from LayerHistory\n\nwp::promote has a significant performace impact. Instead we maintain\na copy of the relevant layer information in LayerInfo.\n\nThis shows reduction in simpleperf for the main thread\n3.07% -\u003e 0.81%\n\nTest: simpleperf for PIP + Notification shade expansion\nTest: atest SetFrameRateTest\nBug: 169873384\nChange-Id: Ib1414a2db73a4c30a26379a0ba8ba9e639f920ce\n"
    },
    {
      "commit": "6c1b7aca75e3fb0d45789b15007202493de6bc3d",
      "tree": "33e2216ceb207348dad96465d653082b487547ec",
      "parents": [
        "d043c248649e8e9b51c73b6d3c02257882149dcc"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Mar 31 16:56:03 2021 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Apr 02 22:30:12 2021 +0000"
      },
      "message": "SF: use FenceTime when possible\n\nFence::getSignalTime is calling a system call everytime,\nwhere FenceTime caches the signal time.\n\nThis shows reduction in simpleperf for the main thread\n2.23% -\u003e 1.25%\nTest: simpleperf for PIP + Notification shade expansion\nBug: 184378996\n\nChange-Id: I182db2ddfcb7fdbde758f5d87357a16e60c1bb07\n"
    },
    {
      "commit": "b3b2ec1d353b2389e5b5ebb5ec387644b295a1f8",
      "tree": "2806eec3afa07949a16724d49f97e5ad69b189a9",
      "parents": [
        "7efb56ce5a1264e42849b622cd72fb91d05c6ea6",
        "8827090d3e52acc2e52e83160dbbda11bc3caf2f"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Apr 02 20:21:54 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 02 20:21:54 2021 +0000"
      },
      "message": "Merge \"HDR layer info listener\" into sc-dev"
    },
    {
      "commit": "f7abc6e08107d784f51c5e257401bc677f76f5d4",
      "tree": "d4b9672ccde664f7df9cc02d37bc25ea612154a2",
      "parents": [
        "357e39a7699dc7bf04b655b3a84ad13f9f2f4fa6",
        "c4a05e18097f6109abde0e49e57ed929c087ba3e"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Fri Apr 02 12:12:11 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 02 12:12:11 2021 +0000"
      },
      "message": "Merge \"Cleanup initialization of GrContext.\" into sc-dev"
    },
    {
      "commit": "c4a05e18097f6109abde0e49e57ed929c087ba3e",
      "tree": "0f2183cb2cc019137ca07c6857bc4c6a65110264",
      "parents": [
        "7f56cf876a74bd778f38c6d1dab6632f010cf6f8"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Wed Mar 24 16:45:20 2021 -0400"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Thu Apr 01 17:06:00 2021 -0400"
      },
      "message": "Cleanup initialization of GrContext.\n\nUpdate GrContext options and setup the cache sizes to be based on\nthe size of the display and not the current default value of 255MB.\n\nTest: atest librenderengine_test\nBug: 183391755\nChange-Id: I5be8d6fc54c31f0e2d1c44968284ad772866d6ab\n"
    },
    {
      "commit": "1592f2b1d0d7d7bc86d433f2459c292aeb1f850d",
      "tree": "3570c892d5e7783e587e0dc7d6802016a0497f94",
      "parents": [
        "53dc121e142998fb085b64400d1dba9e43c1ca0a",
        "ddf9b5c4248c40dccff5b55c47a5125709f1109c"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Apr 01 16:28:32 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 01 16:28:32 2021 +0000"
      },
      "message": "Merge \"Check for buffer changes explicitly instead of relying on acquire fence changes\" into sc-dev"
    },
    {
      "commit": "8827090d3e52acc2e52e83160dbbda11bc3caf2f",
      "tree": "baf3f3a7a429596010906e4f071d16f16cd29c4f",
      "parents": [
        "9b84761b3845809f14645cd7576d100e9cc59b36"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Mar 18 11:27:35 2021 -0400"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Mar 31 14:27:47 2021 -0400"
      },
      "message": "HDR layer info listener\n\nBug: 182312559\nTest: SilkFX\u0027s layer listener\n\nChange-Id: Iaaf5065f1adc871ce2890840e19756293dd21871\n"
    },
    {
      "commit": "75ba8bcd4209377ddd32b3e23e89b7ad9c382a9e",
      "tree": "d2a5274d70ce0053e76c6b43086bff02f0d31099",
      "parents": [
        "7f56cf876a74bd778f38c6d1dab6632f010cf6f8",
        "c5986778d0d6c7ab3f96fafb1b84887e901ed92b"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Wed Mar 31 14:30:26 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 31 14:30:26 2021 +0000"
      },
      "message": "Merge \"setFrameRate: Make shouldBeSeamless an enum\" into sc-dev"
    },
    {
      "commit": "83df034961b4407dc9bdf41e560dd27728907b34",
      "tree": "8cbe56e3eb1afea443ae6b33f0e2e5c3f72ac2f5",
      "parents": [
        "ddf9b5c4248c40dccff5b55c47a5125709f1109c"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Mar 30 11:50:44 2021 -0700"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Mar 30 14:32:30 2021 -0700"
      },
      "message": "Clean up tracking of layers with buffers\n\nThe function to check if the transaction is ready to be applied\nshould not modify any state. Instead keep track of layers with\nready to be presented outside the check.\n\nBug: 184063141\nTest: atest SurfaceFlinger_test ASurfaceControlTest\nChange-Id: I671eabb36195b11c66a1aeefadc78c3d194caeca\n"
    },
    {
      "commit": "ddf9b5c4248c40dccff5b55c47a5125709f1109c",
      "tree": "c08aecbe6a41d2b5ebcc8f431ba53575702c2f72",
      "parents": [
        "345c3c1be16ebfe3f1d0e823f5ddf1f1a7c35c70"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Mon Mar 29 18:53:41 2021 -0700"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Mar 30 14:32:19 2021 -0700"
      },
      "message": "Check for buffer changes explicitly instead of relying on acquire fence changes\n\nBug: 183997574\nTest: atest ASurfaceControlTest\nChange-Id: I4eabec13faa09b3d1f61d62e637b83baa720797d\n"
    },
    {
      "commit": "9a93ea66bb7116b8821877a69991ae94557b1303",
      "tree": "40a457bee0e057406fb8b35ad418383c909812e0",
      "parents": [
        "9fc9513410b4b3e6889f5b201e5235ec062bddcd"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Thu Mar 11 16:44:42 2021 -0600"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Tue Mar 30 15:53:01 2021 -0500"
      },
      "message": "Remove setFrame from BufferStateLayer\n\nReplace setFrame with setCrop, setMatrix, and setPosition\n\nTest: SurfaceFlinger_tests\nTest: ASurfaceControlTest\nBug: 170765639\nChange-Id: I32ee0e3e48e5171d99a5f5af0b7583165d4dd9f9\n"
    },
    {
      "commit": "0b5c7df56c3d5fae0f9e414446b6c79bab064415",
      "tree": "c58e8837e8fdd24248526b611ec0a56faecdfa67",
      "parents": [
        "d44d3beb136966f0281dd88e46082d4dbba9a875",
        "957f7b377c39f214e61d6a8bac3a151fb63c1e77"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Tue Mar 30 14:22:37 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 30 14:22:37 2021 +0000"
      },
      "message": "Merge \"Increase performance for screenshots by pre-loading the buffer\" into sc-dev"
    },
    {
      "commit": "7061fd1bd98293517e4c7357ec5bd5487d678c93",
      "tree": "023cb837bc1f12a481c46336e7ed90851d3d431d",
      "parents": [
        "4fd10d8d132754131911593ebde6281931e5f54b"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 22 12:55:39 2021 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 29 20:50:20 2021 +0000"
      },
      "message": "SF: add trace for unsignaled fence in transactionIsReadyToBeApplied\n\nBug: 182587984\nTest: systrace\nChange-Id: I29dd11951ea233fef982b6fc9021f34f86f021da\n"
    },
    {
      "commit": "980109ad369b2543516ae29fbf568e7c9a530aa9",
      "tree": "34c12f13e3c46fe0272d240f9abf139d1a4c9673",
      "parents": [
        "df537ed60193430aa9d8451be828060d23b28b63",
        "49ad4135caa9c11015eeb82b3afe0ab923999aa3"
      ],
      "author": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Sun Mar 28 12:25:33 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Mar 28 12:25:33 2021 +0000"
      },
      "message": "Merge \"Hdr format settings [Backend]\" into sc-dev"
    },
    {
      "commit": "49ad4135caa9c11015eeb82b3afe0ab923999aa3",
      "tree": "b73c9005339ff5d5cea99ed33051425782d91559",
      "parents": [
        "796cdab0267173c873f508a6cefeddf8d2ff7d14"
      ],
      "author": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Fri Jan 08 11:49:56 2021 +0100"
      },
      "committer": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Thu Mar 25 12:42:37 2021 +0000"
      },
      "message": "Hdr format settings [Backend]\n\nAdded new API to SurfaceControl to override the HDR formats supported by\ndevice in SurfaceFlinger. This API is used in the CTS Tests to verify\nHDR capabilities and enabling/disabling of HDR formats.\n\nBug: 172905874\nTest: atest CtsDisplayTestCases\nChange-Id: Icb13cdd638d315c0e23ece8aa61242470404a428\nMerged-In: Icb13cdd638d315c0e23ece8aa61242470404a428\n"
    },
    {
      "commit": "a616da92502226b3090fd83a186549f1a225a82b",
      "tree": "d156d8d166240588aff555e28e9c18c86d8a9fbf",
      "parents": [
        "2fb97b3a17feafd3d8de3cc35405815cf5192473",
        "b6a2fa19d91c93f06790507d44fbbaf2484021f8"
      ],
      "author": {
        "name": "Adithya Srinivasan",
        "email": "adsrini@google.com",
        "time": "Wed Mar 24 22:29:13 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 24 22:29:13 2021 +0000"
      },
      "message": "Merge \"Add Gpu composition info to FrameTimeline\" into sc-dev"
    },
    {
      "commit": "957f7b377c39f214e61d6a8bac3a151fb63c1e77",
      "tree": "076373c8b29e0f90a6e7646005cb51b0a3fb8dd7",
      "parents": [
        "a8f89293fe6e2622d4e4882c4377fbd64aacb01d"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Fri Mar 19 15:42:19 2021 -0400"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Wed Mar 24 16:58:46 2021 -0400"
      },
      "message": "Increase performance for screenshots by pre-loading the buffer\n\nWhen running with a threaded renderer the output buffer will now be\nadded to the cache when it is created to avoid any stalls putting\nthe buffer into an SkSurface.\n\nTest: perfetto tracing and librenderengine_test\nBug: 181028875\nChange-Id: Ie5f3f61b9cab2411a86841ca87010b3b78853690\n"
    },
    {
      "commit": "c5986778d0d6c7ab3f96fafb1b84887e901ed92b",
      "tree": "8e99206a5ad1852ac86affa3e35ac51f1ba4206f",
      "parents": [
        "3b1f7bcf8fd0ca2458eb26ec31a1bddf4bf7fd43"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Tue Mar 16 16:09:49 2021 +0100"
      },
      "committer": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Wed Mar 24 13:19:07 2021 +0100"
      },
      "message": "setFrameRate: Make shouldBeSeamless an enum\n\nChange the shouldBeSeamless parameter to an enum\nin order to make the API easier to understand.\nThis changes\n - SurfaceControl.setFrameRate\n - Surface.setFrameRate\n - ANativeWindow_setFrameRateWithChangeStrategy\n - ASurfaceTransaction_setFrameRateWithChangeStrategy\n\nBug: 179116474\nTest: atest SetFrameRateTest\nChange-Id: I28a8863ea77101f90b878fbda5f00d98e075b7cc\n"
    },
    {
      "commit": "b552167471c48a22eec834b6c0ad0d5d623ab4e5",
      "tree": "fb35edad13fdd263f4db6e786cfb6ad73b48000b",
      "parents": [
        "9d52f998792fae5c7f061c093e197f14c6361758",
        "8db101095526c49a58fd54bfb9d3501ea5351027"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Mar 23 17:11:28 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 23 17:11:28 2021 +0000"
      },
      "message": "Merge \"SurfaceFlinger: remove SurfaceControl level vsyncId setting\" into sc-dev"
    },
    {
      "commit": "b6a2fa19d91c93f06790507d44fbbaf2484021f8",
      "tree": "ca2ce579f1970ba0a15c3ab37bce9b57307d7a3e",
      "parents": [
        "f0ca8651c21abc18f3fba893e78afab93f61a58c"
      ],
      "author": {
        "name": "Adithya Srinivasan",
        "email": "adsrini@google.com",
        "time": "Sat Mar 13 00:23:09 2021 +0000"
      },
      "committer": {
        "name": "Adithya Srinivasan",
        "email": "adsrini@google.com",
        "time": "Tue Mar 23 01:38:14 2021 +0000"
      },
      "message": "Add Gpu composition info to FrameTimeline\n\nPost composition, update the Display and SurfaceFrames that were\ncomposited by the GPU.\n\nBug: 169876734\nTest: None\n\nChange-Id: Iad9c6e9714b28a56bfdcc32e514ab180850536b1\n"
    },
    {
      "commit": "fa8dc0f665e708ffcaedaa2837ecc677cf4c6459",
      "tree": "baba89a93f7a70e59cd9d9a60541c1608afde680",
      "parents": [
        "b05e90288e6e0179bd06c33bd9cadc349eb2879b",
        "debd1cbcd488becc629293cfcc4fc5b2ee4ef8b2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 22 19:39:46 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 22 19:39:46 2021 +0000"
      },
      "message": "Merge \"Remove legacy disable triple buffering config\" into sc-dev"
    },
    {
      "commit": "f9bd241320d521d8fc7dad00262efc1479a57514",
      "tree": "041110eb1410b946d992fc6482c76ef835f25441",
      "parents": [
        "81a9915ec7dffe4e553c1a9ccf7a58d994ba3cc5"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Mar 19 12:50:14 2021 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Mar 19 19:54:49 2021 +0000"
      },
      "message": "SF: disable frame rate override by default\n\nBug: 176940105\nTest: atest FrameRateOverrideHostTest\nChange-Id: I576821aafb161fe41abbc778c0635eae77e5f37c\n"
    },
    {
      "commit": "81a9915ec7dffe4e553c1a9ccf7a58d994ba3cc5",
      "tree": "9e962309f49c7aa88458b86a2e75b6195612aa65",
      "parents": [
        "492ff41f26fda887c1facbfe6d28d10f0782d800",
        "8cbd3075e57963c7bfc2e863cca3d7d2176e3e73"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Mar 19 17:39:20 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 19 17:39:20 2021 +0000"
      },
      "message": "Merge changes from topic \"eEarlyWakeup_remove\" into sc-dev\n\n* changes:\n  SF: rename ExplicitEarlyWakeup -\u003e EarlyWakeup\n  SurfaceFlinger: remove ISurfaceComposer::eEarlyWakeup\n"
    },
    {
      "commit": "112b272ba44409e27d38ea3b3830314f39be4118",
      "tree": "ab99e5eb8243b1c0e0c0ba255fffeaf8740fa168",
      "parents": [
        "d5ecb64ef43ea1e6fb85c1abe2bd9d679bc3df9b",
        "bb100afd74c97633c0e57861bb6d2c7c6bf2bbde"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 19 15:39:19 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 19 15:39:19 2021 +0000"
      },
      "message": "Merge \"SF: add vsync id to onMessageReceived trace\" into sc-dev"
    },
    {
      "commit": "8db101095526c49a58fd54bfb9d3501ea5351027",
      "tree": "16d44170fbaf3a25181ecbb74cb632654845df3a",
      "parents": [
        "10bc3ecd4717936f37e7f6e714edcfc0300d0801"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 15 17:19:23 2021 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Mar 18 17:53:29 2021 -0700"
      },
      "message": "SurfaceFlinger: remove SurfaceControl level vsyncId setting\n\nFrameTimelineInfo can be set on the entire transaction, or for an\nindividual SurfaceControl. Later in the code the FrameTimelineInfo\nis unified based on the most recent vsyncId. For this reason we are\nremoving the setting of a FrameTimelineInfo on a SurfaceControl and\ninstead we use the transaction\u0027s one.\n\nTest: adb shell /data/nativetest64/SurfaceFlinger_test/SurfaceFlinger_test\nBug: 181978893\nBug: 169901895\nChange-Id: Id4a8e46d57fbda66f6d478be82313482053dce20\n"
    },
    {
      "commit": "bb100afd74c97633c0e57861bb6d2c7c6bf2bbde",
      "tree": "e90842e86a6d6cea1d14b66693b640359c194515",
      "parents": [
        "4f4734e11c4872107c074976facafc644be78e22"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Mar 18 11:48:43 2021 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Mar 18 11:49:56 2021 -0700"
      },
      "message": "SF: add vsync id to onMessageReceived trace\n\nTest: capture a systrace\nBug: 170914689\nChange-Id: I4e59478caedb9f47e276c59fbab3e7cede9c7369\n"
    },
    {
      "commit": "debd1cbcd488becc629293cfcc4fc5b2ee4ef8b2",
      "tree": "2d67513c486a69c7525de3080534d81543e98db6",
      "parents": [
        "2bbc3a88bd653c050ea270b6456747b40a44c5b3"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Mar 16 10:06:01 2021 -0700"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Mar 18 18:33:22 2021 +0000"
      },
      "message": "Remove legacy disable triple buffering config\n\nThe config changes the dequeue limit of BQ (setMaxDequeuedBufferCount) from 2 to 1,  decreasing the default size of the queue from (3 to 2).\nSome of the motivations behind this change include:\n- not applicable in most scenarios since producers in the system override this\n- breaks async mode, not well tested in other scenarios\n- simplifying some of the implementation and removes a configuration/flag.\n\nClients can still manually call setMaxDequeuedBufferCount if they wish.\n\nTest: presubmit\nFixes: 182314340\nChange-Id: Iea88e8a795b91ff325610cfb1eefbcfe6e434841\n"
    },
    {
      "commit": "1506b181085e1f2156283d0e7b62fe94a918427f",
      "tree": "e712ebf2d2f90c5c76600b29f9637ddb1955573d",
      "parents": [
        "3fabf687ee63461d1aad186ae540156aa7765b25"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Mon Feb 22 14:35:15 2021 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Mar 17 15:58:29 2021 +0000"
      },
      "message": "Introduce release buffer callback for BufferStateLayer\n\nCurrently BLAST clients use the TransactionCompleted callbacks to\ndetermine when to release buffers. The TransactionCompleted callback\nis overloaded. For transactions without buffers, the callback is\ncalled when the transaction is applied on the server. If the\nTransaction contains one or more buffers, the callback is called when\nall the buffers are latched and ready to be presented. If we have\nmultiple buffers on multiple transactions, where one or more buffers\nmaybe dropped, the pending callbacks are called together. This may\ndelay signaling the client when a buffer can be released.\n\nTo fix this, we introduce a new buffer release callback that is\ncalled as soon as a buffer is dropped by the server or when a new\nbuffer has been latched and the buffer will no longer be presented.\nThis new callback provides a graphic bufferid to identify the buffer\nthat can be released and a release fence to wait on.\n\nBlastBufferQueue has been switched to use this new callback. Other\nBLAST users continue to use the existing callback.\n\nTest: go/wm-smoke\nTest: atest ReleaseBufferCallbackTest\nBug: 178385281\n\nChange-Id: Idd88e4994e543443198a5a8cfa0e3f5f67d5d482\n"
    },
    {
      "commit": "3fabf687ee63461d1aad186ae540156aa7765b25",
      "tree": "b79e99d05e49fe196e2ce631331a9388e884ce8e",
      "parents": [
        "b6d93924dcf5777376454212c2d5964e7fb89e98",
        "22be6961e9d4579e926124c5b972c62a45da2451"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Mar 17 02:01:53 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 17 02:01:53 2021 +0000"
      },
      "message": "Merge \"Expand setBrightness to take BrightnessInfo object\" into sc-dev"
    },
    {
      "commit": "2bbc3a88bd653c050ea270b6456747b40a44c5b3",
      "tree": "bb35b9c3c8b44daf3929d5f61f00263579242344",
      "parents": [
        "c6465a548630238bdf71a1aa3ebdb4ede7e016d6",
        "25714500c80a7c4efa5cd82ccd914a57bc5d51e6"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Tue Mar 16 13:52:44 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 16 13:52:44 2021 +0000"
      },
      "message": "Merge \"Rename crop_legacy to just crop\" into sc-dev"
    },
    {
      "commit": "c6465a548630238bdf71a1aa3ebdb4ede7e016d6",
      "tree": "499331b96a356fdb3f9db0f1b4989f8969832898",
      "parents": [
        "ead2fee4d9f20d9175c57170181bbd0b9571f60e",
        "0c268c7a42a9aea410e6831e6e3dd3bd6b0c5b92"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Tue Mar 16 13:00:49 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 16 13:00:49 2021 +0000"
      },
      "message": "Merge \"SF: Don\u0027t override active mode with desired mode\" into sc-dev"
    },
    {
      "commit": "8cbd3075e57963c7bfc2e863cca3d7d2176e3e73",
      "tree": "29f2c19742ce4a9d6248b459dbb0a748f680e59f",
      "parents": [
        "67fba0fd7f7a83ceb8a98ea968050d18113026af"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 15 16:39:06 2021 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 15 16:45:15 2021 -0700"
      },
      "message": "SF: rename ExplicitEarlyWakeup -\u003e EarlyWakeup\n\nBug: 159125966\nTest: build\nChange-Id: I3ab95491ac5fe64b0dc56290ad05bbaf7b8e5009\n"
    },
    {
      "commit": "67fba0fd7f7a83ceb8a98ea968050d18113026af",
      "tree": "d5d6ad6f9519185a048314678a9388665eaf7741",
      "parents": [
        "99ebe3f9f63602d22d6f1028b2996bac6665dd07"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 15 16:13:36 2021 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 15 16:45:11 2021 -0700"
      },
      "message": "SurfaceFlinger: remove ISurfaceComposer::eEarlyWakeup\n\nThis flag is deprecated.\n\nTest: build\nBug: 159125966\nChange-Id: I7422ba741a25c2247097cd4530dd84da50f02fe1\n"
    },
    {
      "commit": "858944dfda6958620d9979adc38a23a98ffa1061",
      "tree": "3bff182bcaec74c40a6eb03f5b81819d2f6ebe84",
      "parents": [
        "b5ecae7bb0b9a260045752ecb16c011471b88988",
        "5690bdaa18610454b44da3ff3f31e6dc6d6ed849"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 15 18:11:22 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 15 18:11:22 2021 +0000"
      },
      "message": "Merge \"SF: check isVsyncValid based on the transaction submitter\" into sc-dev"
    },
    {
      "commit": "b5ecae7bb0b9a260045752ecb16c011471b88988",
      "tree": "e1e6e3e6bf2b593a49a1c4a3172f7f5af36b5eee",
      "parents": [
        "49c01d0ba280ec49cbccea8e1672aa975a3d307f",
        "c7900120feb6eb95991c66c63a21653f266ec337"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 15 18:11:13 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 15 18:11:13 2021 +0000"
      },
      "message": "Merge \"SF: avoid calling pendingBuffers.insert twice\" into sc-dev"
    },
    {
      "commit": "49c01d0ba280ec49cbccea8e1672aa975a3d307f",
      "tree": "d5868a91f007c0fa34e241866804a6b01455432d",
      "parents": [
        "fcddc8eaf7d0ac5328c278ea7a5faf3a39433287",
        "2f43b20dcfd50faec4dc6f55ed55471f4bc7db99"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 15 18:11:03 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 15 18:11:03 2021 +0000"
      },
      "message": "Merge \"SF: add traces to transactionIsReadyToBeApplied\" into sc-dev"
    },
    {
      "commit": "fcddc8eaf7d0ac5328c278ea7a5faf3a39433287",
      "tree": "14c42ae52839760508ab1516fafd3b3f908e028a",
      "parents": [
        "f5b97a8b0e0cb0e688905a5398f12949c836a190",
        "d1b485397f4cd538e6ec29cb449f90051a84eaec"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 15 18:10:46 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 15 18:10:46 2021 +0000"
      },
      "message": "Merge \"SurfaceFlinger: run refresh  directly after invalidate\" into sc-dev"
    },
    {
      "commit": "d1b485397f4cd538e6ec29cb449f90051a84eaec",
      "tree": "f575e879b18ecad1b12a131e72aba6c460124f64",
      "parents": [
        "9e49451732117c5a9fde142b4cb571f50eb79662"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Mar 10 16:05:16 2021 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 15 18:10:28 2021 +0000"
      },
      "message": "SurfaceFlinger: run refresh  directly after invalidate\n\nRun the refresh immediately after invalidate as there is no point going\nthru the message queue again, and to ensure that we actually refresh\nthe screen instead of handling other messages that were queued us already\nn the MessageQueue.\n\nBug: 182214053\nTest: SF unit tests\nTest: Launch an app and observe syatraces\nChange-Id: Iff647415d46c4b155b20b60b9e7cc07253339100\n"
    },
    {
      "commit": "25714500c80a7c4efa5cd82ccd914a57bc5d51e6",
      "tree": "c3dd39356b17acb77c166c943478118033f3d30d",
      "parents": [
        "f5b97a8b0e0cb0e688905a5398f12949c836a190"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Thu Feb 11 10:01:08 2021 -0800"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Mar 15 10:49:31 2021 -0500"
      },
      "message": "Rename crop_legacy to just crop\n\ncrop_legacy and crop should do the same thing so there\u0027s no need for two\nseparate requests.\n\nTest: go/wm-smoke\nTest: SurfaceFlinger_test\nBug: 170765639\n\nChange-Id: I74a740d06d15f7cde9775557e65ad1e3a508bd61\n"
    },
    {
      "commit": "132bfbf52787161f465528c60c58ef595ffd8d15",
      "tree": "d0cf0a9c2ca170fd26e37b26b155147a73657ed5",
      "parents": [
        "88682d4f8aa73ff7b1baceee4b9e252f97f0eb1f",
        "f1b7c7be8130bd86c827a2acc05fa4aa58344e52"
      ],
      "author": {
        "name": "Arthur Hung",
        "email": "arthurhung@google.com",
        "time": "Mon Mar 15 01:36:38 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 15 01:36:38 2021 +0000"
      },
      "message": "Merge \"Prevent waiting synchronous case if transaction applied first\" into sc-dev"
    },
    {
      "commit": "5690bdaa18610454b44da3ff3f31e6dc6d6ed849",
      "tree": "7daddbaab53fc3af5e4866a71db7d9d0b92482d9",
      "parents": [
        "c7900120feb6eb95991c66c63a21653f266ec337"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Mar 12 15:01:18 2021 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Mar 12 15:01:32 2021 -0800"
      },
      "message": "SF: check isVsyncValid based on the transaction submitter\n\nisVsyncValid is used to throttle applications to a lower frame rate than\nthe display refresh rate. With the current implementation of BlastSync\nwe may get a single transaction that contains layers from different\napplications, we may cause to throttle unindended applications\n(such as SystemUI). Instead, we are checking the transaction submitter\nfor whether we should throttle the transaction or not.\n\nBug: 182587984\nTest: atest FrameRateOverrideHostTest\nChange-Id: I7dd0c4c1ac945d6142afcdc8ba62c5a48a6dbb00\n"
    },
    {
      "commit": "c7900120feb6eb95991c66c63a21653f266ec337",
      "tree": "300f00cf524b4ac4a68586e5ac2e9ed7e1f82601",
      "parents": [
        "2f43b20dcfd50faec4dc6f55ed55471f4bc7db99"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Mar 12 13:51:01 2021 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Mar 12 13:52:10 2021 -0800"
      },
      "message": "SF: avoid calling pendingBuffers.insert twice\n\nag/13806579 accidently added another call to pendingBuffers.insert which\nis incorrect.\n\nBug: 181978893\nTest: SF unit tests\nChange-Id: I3e7df528f8dcb1ccd8c5a83c51b23b8433a049d3\n"
    },
    {
      "commit": "2f43b20dcfd50faec4dc6f55ed55471f4bc7db99",
      "tree": "cac82e02e776a6302ed890aea429209ac3bc8920",
      "parents": [
        "30c6ac31bd18b9ea045cf39b125a5fb145300248"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Mar 12 12:34:52 2021 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Mar 12 12:35:08 2021 -0800"
      },
      "message": "SF: add traces to transactionIsReadyToBeApplied\n\nAdd more trace points to understand why a transaction is not ready\nto be applied.\n\nBug: 182587984\nTest: systrace\nChange-Id: I78faf93cd0f360fb4939445a02f7cbc1843c307f\n"
    },
    {
      "commit": "c04b9206d9942fbff1642eea1599f68743dced6b",
      "tree": "2c79f6f654da95c2374c7a86b183086e2ac62131",
      "parents": [
        "f73e801e72b6548e22dac668fe958dbe3445e781",
        "79bf8a9d9ca8ead36032cf7546b900d196f99c88"
      ],
      "author": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Fri Mar 12 20:21:32 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 12 20:21:32 2021 +0000"
      },
      "message": "Merge changes I0b1cb7ac,I1a5eb572 into sc-dev\n\n* changes:\n  SurfaceFlinger: Check both queues in transactionFlushNeeded\n  BufferStateLayer: shouldPresentNow is always true\n"
    },
    {
      "commit": "22be6961e9d4579e926124c5b972c62a45da2451",
      "tree": "fca673d7ef87947c9ab33bd216160551022c7530",
      "parents": [
        "9281250cbb191a3862bad5b1b740f2e0031c887d"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Mar 10 12:59:54 2021 -0500"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Mar 12 13:34:22 2021 -0500"
      },
      "message": "Expand setBrightness to take BrightnessInfo object\n\nPass SDR \u0026 HDR brightness independently along with\ncalibrated nits value\n\nBug: 182312559\nTest: builds \u0026 boots\n\nChange-Id: If6119c06a30c8f709e1f3982da035a9e088c4e87\n"
    },
    {
      "commit": "f1b7c7be8130bd86c827a2acc05fa4aa58344e52",
      "tree": "4b92c4af3af7d2489097babd3f8ad74515086d92",
      "parents": [
        "870da0041ca5ef9f2c4c54ff5282acf95373ed5e"
      ],
      "author": {
        "name": "arthurhung",
        "email": "arthurhung@google.com",
        "time": "Wed Mar 03 17:42:23 2021 +0800"
      },
      "committer": {
        "name": "arthurhung",
        "email": "arthurhung@google.com",
        "time": "Fri Mar 12 20:04:42 2021 +0800"
      },
      "message": "Prevent waiting synchronous case if transaction applied first\n\nCurrently, transaction would be queued and apply in the main thread,\nif a given transaction would wish to apply synchronously. We may wait\nit in binder thread until the transaction has been applied, but if\n\u0027applyTransactionState\u0027 comes first, it would cause redundant waiting.\n\nTo prevent this, we use the CountDownLatch in transaction to wait the\nsynchronous state, it will wait until transactions applied and committed.\n\nBug: 181480169\nTest: libsurfaceflinger_unittest SurfaceFlinger_test libgui_test\nChange-Id: I1fe56296810cdeadeae5b37ae9b4bd00d9e689c3\n"
    },
    {
      "commit": "79bf8a9d9ca8ead36032cf7546b900d196f99c88",
      "tree": "917b8bf0892138d1531b3cb372f45680aaf450b0",
      "parents": [
        "6a5dc1fa8128964a102ae3d7ec460127b0bcf8fc"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Thu Mar 11 16:24:28 2021 -0800"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Thu Mar 11 16:45:37 2021 -0800"
      },
      "message": "SurfaceFlinger: Check both queues in transactionFlushNeeded\n\ntransactionFlushNeeded is called from handleMessageTransaction to\ndeal with an edge case in timing. First note that we are not holding\nthe state lock in handleMessageTransaction, and so a binder thread\ncould be adding transactions to the queue. If a Binder thread\nadds a transaction to the queue in-between the calls to\nflushTransactionQueues and handleTransaction then its\naddition of the eTransactionFlushNeeded flag will be cleared out\nwhen handleTransaction consumes eTransactionMask. The code in\nthe transactionFlushNeeded conditional was added to handle this\ncondition, but transactionFlushNeeded was only checking the\npending transaction queue. If there were a a transaction added\nto the mTransactionQueue (binder thread-\u003emain thread communication\nqueue) during this interval, we wouldn\u0027t pick it up from\ntransactionFlushNeeded and we wouldn\u0027t reapply the flag. Recent\nchanges seem to have agitated this condition and we are receiving\na lot of dogfood bugs, so deploying this as a hopeful quick fix. A\nfollow-up CL will rework this brittle flag system with something\neasier do understand.\n\nBug: 180194022\nTest: Existing tests pass\nChange-Id: I0b1cb7acf7576e38ea076c7f3b921cbce25775bc\n"
    },
    {
      "commit": "0c268c7a42a9aea410e6831e6e3dd3bd6b0c5b92",
      "tree": "86a90c8f9647bf97d64b7cc8c8e3e572f67acd47",
      "parents": [
        "06c667b0963e48a682e8528b976ad9ed25c9cc2c"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Wed Mar 10 18:22:46 2021 +0100"
      },
      "committer": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Thu Mar 11 16:06:33 2021 +0100"
      },
      "message": "SF: Don\u0027t override active mode with desired mode\n\ngetDynamicDisplayInfo().activeDisplayModeId should\nnot return the upcoming mode if we are in the process\nof a mode change.\n\nBug: 180090041\nTest: presubmit\nTest: atest DisplayTest\nChange-Id: I8b2b80f5ce1f57e4652d8794fd40a1f78715af6f\n"
    },
    {
      "commit": "cf69b996705e8cf02fe0880ce4f0ebf562fc2cff",
      "tree": "b6f401e47b8eda97028921a996f4a0eea24e5129",
      "parents": [
        "9e49451732117c5a9fde142b4cb571f50eb79662",
        "29d16cb549098b01d88b09457a97c48f9028c56a"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Mar 09 02:11:05 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 09 02:11:05 2021 +0000"
      },
      "message": "Merge changes Ie6cff82f,I0f95f2a3 into sc-dev\n\n* changes:\n  SurfaceFlinger: check transaction timings even if it doesn\u0027t have a buffer\n  SurfaceFlinger: get nextPredictedPresentTime directly from frame timeline\n"
    },
    {
      "commit": "29d16cb549098b01d88b09457a97c48f9028c56a",
      "tree": "cc723c49d0979e33a4c648118bc6348feff28983",
      "parents": [
        "43752eba5a28f2b923cded40b3d6e6d1db968a08"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 08 13:19:21 2021 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 08 13:20:04 2021 -0800"
      },
      "message": "SurfaceFlinger: check transaction timings even if it doesn\u0027t have a buffer\n\nBufferless transactions should also not be applied if they are considered\nearly.\n\nBug: 181978893\nTest: launch an app and observe systraces\nTest: adb shell /data/nativetest64/SurfaceFlinger_test/SurfaceFlinger_test\nChange-Id: Ie6cff82f8316c1a299d4c9f151eaf637cb60e154\n"
    },
    {
      "commit": "43752eba5a28f2b923cded40b3d6e6d1db968a08",
      "tree": "4f414bd159073a34b5c49109e568e96380dbb947",
      "parents": [
        "a170ec6a87f2720eb9846ea75cd9807db54b12ad"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Mar 04 16:24:25 2021 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 08 13:18:56 2021 -0800"
      },
      "message": "SurfaceFlinger: get nextPredictedPresentTime directly from frame timeline\n\nag/13715677 moved the call to check whether a frame is early or not\nbefore a transaction is applied.\nThis created a bug in BufferStateLayer::nextPredictedPresentTime since\nit is checking the drawing state surface frame, which is not valid since\nthe transaction is not applied yet. This CL is fixing this by pasing the\nvsync id itself, and getting the expected present time base on that\nvsync id.\n\nChange-Id: I0f95f2a3a2efff921964a6fb5f9b50e0fcc65a85\nTest: launch an app and observe systraces\nBug: 181978893\n"
    },
    {
      "commit": "a9a68a69e441823524c8766f529a3a54328dad53",
      "tree": "00adf36934f0b508a60f2d740f2ebace38c2de6f",
      "parents": [
        "a170ec6a87f2720eb9846ea75cd9807db54b12ad"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Thu Mar 04 19:14:50 2021 -0800"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Fri Mar 05 19:10:57 2021 -0800"
      },
      "message": "Support task ID for fps listener rather than SurfaceControl.\n\nBug: 174956756\nTest: e2e test with dashboard cls\nChange-Id: I841af53ac820a91d270a75c5cc0ca258df0a3945\n"
    },
    {
      "commit": "44b26bda8ddfd868d4a89ddb943cb636d7ebba70",
      "tree": "73f907f1c02aca291fb08ddbc5bbc9698aae9e88",
      "parents": [
        "24939d6c4aba8452e6880b8b5b9c1bb283863713",
        "d3b5c5dbfcb6d731544e73d8df6a32bf942db764"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Wed Mar 03 13:17:24 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 03 13:17:24 2021 +0000"
      },
      "message": "Merge \"SF: Requery display modes if the active mode is not supported\" into sc-dev"
    },
    {
      "commit": "24939d6c4aba8452e6880b8b5b9c1bb283863713",
      "tree": "a948ae27f5754d0f5399845a9cd794964ed4e67a",
      "parents": [
        "ef300c1454b17b529a1e1d7b39a4ff77f5365009",
        "f22e6acbb450853a4535b1628927aa93f799c53f"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Wed Mar 03 13:17:12 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 03 13:17:12 2021 +0000"
      },
      "message": "Merge \"SF: Sequential display mode IDs\" into sc-dev"
    },
    {
      "commit": "9d517aa65734200f82bf8e079a216d738a367f77",
      "tree": "17439314883dd329bb88b90d58b25703838b4056",
      "parents": [
        "8503741e01bc6464974eec29690766860ee4ff69",
        "8eda69eb5657d1d6c519c20b1bf9e11e6f775851"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Mar 02 21:45:03 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 02 21:45:03 2021 +0000"
      },
      "message": "Merge \"Update pending buffer counts immediately\" into sc-dev"
    },
    {
      "commit": "d3b5c5dbfcb6d731544e73d8df6a32bf942db764",
      "tree": "9ddd35230c3ff3dfca10be59af6ae142a633ff9a",
      "parents": [
        "f22e6acbb450853a4535b1628927aa93f799c53f"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Thu Feb 11 18:26:14 2021 +0100"
      },
      "committer": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Tue Mar 02 15:12:37 2021 +0100"
      },
      "message": "SF: Requery display modes if the active mode is not supported\n\nSome TV devices send two hotplug events immediately one after another\nduring startup. Because we query the active display mode\nand the supported modes in two separete calls to HWC it\u0027s possible\nto get an active mode, which is not in the list of supported modes.\n\nIf this happens we requery the display modes up to 3 times. If the\nproblem still persists we throw a fatal error.\n\nBug: 175678215\nBug: 159590486\nTest: check that device boots\nTest: plug HDMI out and it\nChange-Id: I94dbadac4eb75ed659ede6299df0c3459ed6c74e\n"
    },
    {
      "commit": "f22e6acbb450853a4535b1628927aa93f799c53f",
      "tree": "ed585c6765219a0350117e85c18497c1b9fc526c",
      "parents": [
        "6025467214c00568a5f903a1c82810c5dfef35be"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Wed Feb 10 20:45:15 2021 +0100"
      },
      "committer": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Tue Mar 02 15:12:37 2021 +0100"
      },
      "message": "SF: Sequential display mode IDs\n\nIf the supported display modes differ after a hotplug\nassing the new modes new IDs. This way the old IDs will\nself invalidate.\n\nThis breaks the assumption that the modes IDs are\nequivalent to indices in the array of supported modes.\n\nBug: 159590486\nTest: manually 0. device boots in 60hz mode\n               1. switch to 50hz from app\n               2. disconnect display\n               3. reconnect display\n      dumpsys SurfaceFlinger after each step to\n      verify mode IDs change as expected\nChange-Id: I44c90e8151f31e998b43649dad73c51d6948195d\n"
    },
    {
      "commit": "e560d0c034662246f6c2d43a5ca0076c6aa2749a",
      "tree": "a979d70f21417c380b223ef664469dc407aaebb0",
      "parents": [
        "8603b1ef257259e07dd6bff0f18f85823103d1a8",
        "c8957ee4196b0332259653aa7d83b6a3ea06d61b"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Tue Mar 02 01:07:34 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 02 01:07:34 2021 +0000"
      },
      "message": "Merge \"Change fps listener permission to allow systemui to use it.\" into sc-dev"
    },
    {
      "commit": "8603b1ef257259e07dd6bff0f18f85823103d1a8",
      "tree": "2346681c998425246c8b461f6dcd56c7eec1d5f3",
      "parents": [
        "86d048d6f0d02e568fd1f1360d13db2b3fc9d049",
        "b9df47065133f77291c8d13445cb259ebf4af3a2"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Mar 02 00:25:31 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 02 00:25:31 2021 +0000"
      },
      "message": "Merge \"Sever the link to inputflinger when system_server crashes\" into sc-dev"
    },
    {
      "commit": "c8957ee4196b0332259653aa7d83b6a3ea06d61b",
      "tree": "130794d9415a3a9bd85b6cf327d133e874c1a105",
      "parents": [
        "8f751f897e5054f5fcbe7c170df9755cb67e041d"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Mon Mar 01 14:33:19 2021 -0800"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Mon Mar 01 14:33:19 2021 -0800"
      },
      "message": "Change fps listener permission to allow systemui to use it.\n\nRequire READ_FRAME_BUFFER permission instead of ACCESS_SURFACE_FLINGER,\nso that systemui is allowed to listen to FPS measurements.\n\nStrictly speaking, the fps listener does not require as strict of\npermissions as screenshots because there\u0027s no on-screen content, but\nsystemui is already requesting this permission, and we probably don\u0027t\nwant arbitrary apps to backdoor into this api.\n\nBug: 174956756\nTest: end to end integration test to check that systemui does not crash\nwhen registering the listener.\n\nChange-Id: I9149618950988250ae2649ac5242d5165b5037db\n"
    },
    {
      "commit": "cd5e6384eb9d51ea6a1907952ebd3a395f0b2b39",
      "tree": "7780e4bf5540b7348f6647aaff1e5e01e75487cc",
      "parents": [
        "8f751f897e5054f5fcbe7c170df9755cb67e041d",
        "a7cda15da4b51387c322e45bc4c28122642836d3"
      ],
      "author": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Mon Mar 01 20:41:01 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 01 20:41:01 2021 +0000"
      },
      "message": "Merge \"SurfaceFlinger: Check frameIsEarly earlier\" into sc-dev"
    },
    {
      "commit": "b9df47065133f77291c8d13445cb259ebf4af3a2",
      "tree": "1042f72ac5b22676e0065cf3beddbaa0f6adc904",
      "parents": [
        "a8bad0e28a3ba92eed11b75d1e18f00b79f70efa"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Mon Mar 01 11:53:15 2021 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Mon Mar 01 20:11:30 2021 +0000"
      },
      "message": "Sever the link to inputflinger when system_server crashes\n\nWhen system_server and inputflinger goes down, we want to clear the\nreference to the inputflinger service. This prevent SF making any\ninvalid binder calls to input. Instead the input commands will be queued up\nand sent when system_server recovers via SurfaceFlinger::bootFinished\nsignal.\n\nTest: adb shell su root kill `pid system_server` \u0026 check we have a focused window when the server recovers\nFixes: 181246754\nBug: 171130500\nChange-Id: Id9091a29b651e4ceece30c3b81b9708262132787\n"
    },
    {
      "commit": "a7cda15da4b51387c322e45bc4c28122642836d3",
      "tree": "04bcb55014064577ba1a7095e3f629b0abb05246",
      "parents": [
        "d2bed277967c45e19f2310d5c20be46235a08d78"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Fri Feb 26 17:49:41 2021 -0800"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Fri Feb 26 17:49:41 2021 -0800"
      },
      "message": "SurfaceFlinger: Check frameIsEarly earlier\n\nIf we allow the transaction to apply but then later delay\nthe buffer we may end up \u0027splitting a transaction\u0027 applying\npart of it without applying an included buffer.\n\nBug: 179712630\nTest: Existing tests pass\nChange-Id: Ia54ba0f9b34a7b676af95418181c2e0f0b807b25\n"
    },
    {
      "commit": "53c4e8aa7c347f8e187090effd15ba7d803b110a",
      "tree": "699dacdc15543fd313bc5f0196418ce8db3a29ca",
      "parents": [
        "d2bed277967c45e19f2310d5c20be46235a08d78",
        "0d995106c0fb4480ac1de5f58667d918fa9aea62"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Fri Feb 26 23:32:32 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 26 23:32:32 2021 +0000"
      },
      "message": "Merge \"Dispatch texture destruction off of render thread for screenshots\" into sc-dev"
    },
    {
      "commit": "0d995106c0fb4480ac1de5f58667d918fa9aea62",
      "tree": "fdac62f05e2462c9170981ec9b80dbf6ea75a6f2",
      "parents": [
        "ec1691271f4732807a21fd678bfddb3c7b25c3ae"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Wed Feb 24 16:53:38 2021 -0800"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Fri Feb 26 11:24:33 2021 -0800"
      },
      "message": "Dispatch texture destruction off of render thread for screenshots\n\nThis is only enabled when the skia threaded variant renderengine is\nenabled. This essentially defers texture deletion until after\ndrawLayers() is invoked, which shaves off time from the main SF thread.\n\nBug: 179959621\nBug: 180767535\nTest: perfetto trace\nChange-Id: I333091d8792fdd0dc01076c73af2956da9ee73df\n"
    },
    {
      "commit": "8eda69eb5657d1d6c519c20b1bf9e11e6f775851",
      "tree": "1a9f47e626809f7300309d08db51c2f39307de44",
      "parents": [
        "d2bed277967c45e19f2310d5c20be46235a08d78"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri Feb 26 10:42:10 2021 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri Feb 26 10:42:10 2021 -0800"
      },
      "message": "Update pending buffer counts immediately\n\nIncrement any buffer updates in the binder thread so systrace\nhas an accurate idea of when the buffers arrived on the server.\nThe buffer count will continue to be dropped when the buffers\nare dropped or latched in the main thread.\n\nTest: capture systrace and check pending buffer counts\nChange-Id: Ided1d60197db29cd490691d515443acaab864a48\n"
    },
    {
      "commit": "c738a17f1fd264c1256b7c7b301d321387dfd360",
      "tree": "1155f49e82cd0613c4ecad8b94fdddf82d614dcb",
      "parents": [
        "2740bf14f8625fccb49c4a8cdcfc63a052bfb0ba",
        "e46243a906d09b2d404e2e2e2e5d44370e903eaf"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Feb 26 06:39:56 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 26 06:39:56 2021 +0000"
      },
      "message": "Merge \"SurfaceFlinger: mExpectedPresentTime should not be updated outside the main thread\" into sc-dev"
    },
    {
      "commit": "e46243a906d09b2d404e2e2e2e5d44370e903eaf",
      "tree": "8fa83cd3ef6173be8bbd83cd2bd0cbbf68c60c01",
      "parents": [
        "e28d8aba519a41f9d1d2b04ff0fa8471a0cbee03"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Feb 23 19:33:49 2021 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Feb 25 15:42:19 2021 -0800"
      },
      "message": "SurfaceFlinger: mExpectedPresentTime should not be updated outside the\nmain thread\n\nmExpectedPresentTime should be set only by the main thread when\ncomposition starts as it is used throughout the composition stage,\nand updates to this variable may cause SF to use inconsistent values\nfor determining the expected present time.\n\nTest: Run TouchLatency app and observe systraces\nTest: Expand notification shade and observe systraces\nBug: 178148035\nChange-Id: Ie221d7e1fb0b0965460af773d3ecf0b06b5c5d7a\n"
    },
    {
      "commit": "9dce082f0b490876293c3924a3c18405b17e7d01",
      "tree": "6b194821c0b272ebfe89f054eed4d81d3e837e88",
      "parents": [
        "79e26e175fe62e1dc31a6f587a3a9f999db59db2",
        "269dc4d22ad689f96864039d009e336dab2842e6"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Feb 25 19:48:19 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 25 19:48:19 2021 +0000"
      },
      "message": "Merge changes from topic \"sf_planner\" into sc-dev\n\n* changes:\n  SF: Add initial Planner infrastructure\n  SF: add a sysprop to control layer caching\n"
    },
    {
      "commit": "dde1abd1f9551588b69825295005cc8482bbef06",
      "tree": "47ecb335ace0cde9f0d6c8b43715d41d5e13e6f6",
      "parents": [
        "e28d8aba519a41f9d1d2b04ff0fa8471a0cbee03",
        "adebf5c63121f7986b2ee609ed4b6904e5290285"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Wed Feb 24 22:41:10 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 24 22:41:10 2021 +0000"
      },
      "message": "Merge \"Support streaming fps updates for a layer subtree to sysui via listener.\" into sc-dev"
    },
    {
      "commit": "269dc4d22ad689f96864039d009e336dab2842e6",
      "tree": "87b46fefa6181d6f577a500c2c00ad8d21d2d6b7",
      "parents": [
        "9c87defdde0d2016f8a8daebccfa31879e872306"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Fri Jan 15 15:07:43 2021 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Feb 24 11:32:41 2021 -0800"
      },
      "message": "SF: Add initial Planner infrastructure\n\nAdds infrastructure for the SF Planner, which will support layer\ncaching/flattening and composition strategy prediction.\n\nBug: 158790260\nTest: atest libcompositionengine_test libsurfaceflinger_unittest\nChange-Id: I0d3027cea073fe25f269f3d5e83fe621dfbe7b2b\n"
    },
    {
      "commit": "6c8199f3c6ef0c321eca1051489dca0af6be6ca7",
      "tree": "9e25b0c425e72870e450d7753ff4f783f7529380",
      "parents": [
        "c1c4499c0f4349520a6a025588bf7cb96a3dfcdf",
        "24e3bbaf310320392cd44068163daee192690166"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Feb 24 18:14:08 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 24 18:14:08 2021 +0000"
      },
      "message": "Merge \"Check for any permissions before holding any sf locks\" into sc-dev"
    },
    {
      "commit": "24e3bbaf310320392cd44068163daee192690166",
      "tree": "e75d395c01d4f0f1a56e686b44281836f3890c77",
      "parents": [
        "a8109d468ad5beb766e385ae213398ad0c97c23b"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Feb 23 14:19:36 2021 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Feb 23 14:24:09 2021 -0800"
      },
      "message": "Check for any permissions before holding any sf locks\n\nAlso fixes an incorrect permissions check in setClientState to\ncheck a cached value since it is now called on the main thread.\n\nTest: presubmit tests\nFixes: 180180131\n\nChange-Id: I87f2dc0683780166fec8738265c74d8d706a8575\n"
    },
    {
      "commit": "329808e195760ea0b1984b7878693da457837a55",
      "tree": "d3f7bf604fb274370a02025399188a7441995719",
      "parents": [
        "7dc57eff26cb36da4e7e92e74217855d40a9d56a",
        "b173f7599a8f93786342d27167facf7eae02845e"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Tue Feb 23 18:54:18 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 23 18:54:18 2021 +0000"
      },
      "message": "Merge \"SF: Move ALLM and GameContentType to DynamicDisplayInfo\" into sc-dev"
    },
    {
      "commit": "adebf5c63121f7986b2ee609ed4b6904e5290285",
      "tree": "f53553e3e66657f270a208f9555023b24a8a0e87",
      "parents": [
        "ec1691271f4732807a21fd678bfddb3c7b25c3ae"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Tue Jan 05 12:57:36 2021 -0800"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Tue Feb 23 10:31:31 2021 -0800"
      },
      "message": "Support streaming fps updates for a layer subtree to sysui via listener.\n\nThe supported flow is:\n* A binder listener is registered with SurfaceFlinger that is associated\nwith a task\u0027s SurfaceControl.\n* Every frame, for every listener that is registered, the fps for each\nlayer subtree is computed and reported back to each listener via\nonFpsUpdated.\n* Fps for the layer subtree is computed via FrameTimeline: the layer IDs\nfor the subtree are gathered into a set, and FrameTimeline internally\nfinds all DisplayFrames containing at least one layer, then obtains the\npresent time for each of those frames, then computes the aggregated fps\nfrom those frames. Pragmatically, this should correspond with the last\nhalf second of activity for high refresh rate devices.\n\nNo heuristics are used to select the \"correct\" layer from the layer\nsubtree. If a game is rendering to two layers at a cadence of 30fps but\noffset by one 60hz vsync, then the reported fps will be 60fps because\nboth layers will be counted on the same linear timeline.\n\nNo rate limiting is applied in this patch either. The caller is able to\nhack in rate-limiting by immediately unregistering the listener after a\nFPS callback is dispatched, and then reregistered. Architecturally, it\nis not hard to add in rate-limiting at the SurfaceFlinger level, but\nthat can be added in a follow-up patch since this patch is already\nlarge.\n\nBug: 174956756\nTest: libsurfaceflinger_unittest\nTest: E2E verification with custom listener outputting to logcat\nChange-Id: I792bc19cad18b6aee6c6e644bca9da40a0f15099\n"
    },
    {
      "commit": "b173f7599a8f93786342d27167facf7eae02845e",
      "tree": "f13d93cfb55b70020880b458b778df40d219ab89",
      "parents": [
        "228f46b5b9c3eac674aceb579a718cd459165f2e"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Tue Feb 16 19:38:36 2021 +0100"
      },
      "committer": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Tue Feb 23 13:13:58 2021 +0100"
      },
      "message": "SF: Move ALLM and GameContentType to DynamicDisplayInfo\n\nALLM and Game content type support may change after a hotplug,\nfor that reason we move them to DynamicDisplayInfo.\n\nBug: 180108954\nTest: flash a device and manually test that the values are\n   properly piped to DisplayManager\nChange-Id: I05810c620b241e204d2c01618bb8a4069c41d32d\n"
    },
    {
      "commit": "4ab66f469c72a352fe78656cf8faa7c2a118a7ce",
      "tree": "c6cf6511bcdf385c0bf168a28a9359854b631a8f",
      "parents": [
        "a8109d468ad5beb766e385ae213398ad0c97c23b",
        "beba6f0a81de3145552713c2aee75c34fa0a8cdb"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 23 01:32:32 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 23 01:32:32 2021 +0000"
      },
      "message": "Merge \"SurfaceFlinger: Add ClientCache dumps\" into sc-dev"
    },
    {
      "commit": "af9b2ae5602aafa7e7db9bb50f770c5bf5af580e",
      "tree": "621c6f877deba567dce061a0d04dc9165691ef99",
      "parents": [
        "8a6910f1b7b3cd7ae3cf0dc79d45484911c25b70",
        "228f46b5b9c3eac674aceb579a718cd459165f2e"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Mon Feb 22 18:28:27 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 22 18:28:27 2021 +0000"
      },
      "message": "Merge \"Introduce DynamicDisplayInfo\" into sc-dev"
    },
    {
      "commit": "228f46b5b9c3eac674aceb579a718cd459165f2e",
      "tree": "593f9b053f2e8371e8b1bfd4eaad11894b70e3c4",
      "parents": [
        "8c9d2483cad988a5e84ad8c3108f8143cd9cbf3a"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Thu Jan 28 21:11:45 2021 +0100"
      },
      "committer": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Mon Feb 22 16:44:08 2021 +0100"
      },
      "message": "Introduce DynamicDisplayInfo\n\nIn this CL we introduce the getDynamicDisplayInfo call\non ISurfaceComposer which replaces the existing\n - getDisplayModes\n - getActiveDisplayMode\n - getColorModes\n - getActiveColorMode\n - getHdrCapabilities\n\nThis way all display properties can be queried atomically.\n\nThe current DisplayInfo class is moved to the androd::ui\nnamespace and it\u0027s renamed to StaticDisplayInfo.\n\nui::DisplayMode is now LightFlattenable and the mode ID is\nint32_t instead of size_t in order to prevent serialization\nproblems.\n\nAdditionally we add the ID field to ui::DisplayMode. This\nway we no longer need the supported display IDs to be\nfrom 0 to N-1.\n\nBug: 159590486\nBug: 180539476\nTest: presubmit, manually test that device boots\nChange-Id: I52b170913ce47cb5df2e8417e6cc95d395df1fda\n"
    },
    {
      "commit": "2db024a2f71ab8df0ba41a4a739b2f84cc216222",
      "tree": "f09924fd040a274f23466a9cb6593d496adf0142",
      "parents": [
        "85d57a85ecb0be9ab1edc05ce5c66f9c8e6a49b0",
        "2b9fc2534e3d501b3481c325cc3faa4f74a85029"
      ],
      "author": {
        "name": "Evan Rosky",
        "email": "erosky@google.com",
        "time": "Sat Feb 20 01:46:25 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 20 01:46:25 2021 +0000"
      },
      "message": "Merge \"Unrotate inputwindows into rotation display grew-up in\" into sc-dev"
    },
    {
      "commit": "2b9fc2534e3d501b3481c325cc3faa4f74a85029",
      "tree": "663bf27f1ffdbdbda49f484bb908a1c5fdb71fb3",
      "parents": [
        "021885b03abe889a724412a45457ee4ae002e0d4"
      ],
      "author": {
        "name": "[1;3C",
        "email": "erosky@google.com",
        "time": "Thu Feb 04 16:16:50 2021 -0800"
      },
      "committer": {
        "name": "Evan Rosky",
        "email": "erosky@google.com",
        "time": "Wed Feb 17 17:55:59 2021 -0800"
      },
      "message": "Unrotate inputwindows into rotation display grew-up in\n\nThis way inputflinger internally works within one coordinate\nspace at all times and only transforms coordinates for dispatch\nto targets\n\nThis is behind a flag:\n   adb shell setprop persist.debug.per_window_input_rotation 1\n\nBug: 179274888\nTest: phone should work as before\nChange-Id: I503f9beea9863193801aa6422a416382374e48c8\n"
    },
    {
      "commit": "beba6f0a81de3145552713c2aee75c34fa0a8cdb",
      "tree": "f9b3dc0b0f7711dd59935b7591e6b4db3dbaaaf1",
      "parents": [
        "7381d4840a469be409390009c2aa1b11b1d7edf1"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Feb 10 21:06:27 2021 -0800"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Tue Feb 16 14:40:30 2021 -0800"
      },
      "message": "SurfaceFlinger: Add ClientCache dumps\n\nCan be useful in debugging buffer leaks.\n\nBug: 176691195\nTest: Existing tests pass\nChange-Id: I8b318f272a7da3dde76d9153b21ced94127f0d8b\n"
    },
    {
      "commit": "7013b6f31163d9850fffec36f9dfc1ea61877a42",
      "tree": "69804a26549039836f316755038b4b34e5a5c4d9",
      "parents": [
        "e06403fa179494d6c5cafd0b4ffce767413eb14c"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Fri Feb 12 11:16:54 2021 -0800"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Fri Feb 12 11:32:58 2021 -0800"
      },
      "message": "Check status codes of GraphicBuffers on allocation\n\nWe\u0027re getting reports of buffers transiently missing usage bits when\nallocated from SurfaceFlinger causing strange issues. Fatal logging when\nthere is an allocation error will hopefully aid in triaging future bug\nreports.\n\nBug: 157562905\nBug: 179786581\nTest: build, boots\nChange-Id: I715295c0b6b3450e71181d93391dd99616f89d26\n"
    },
    {
      "commit": "e06403fa179494d6c5cafd0b4ffce767413eb14c",
      "tree": "ad831a7b59787328f5283b164a4ebd98e72da460",
      "parents": [
        "3c18744b3b5f8e5700ab90877ca41bedfc721349",
        "363faf0f14c25316109fce22a7effd577216fbc6"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Thu Feb 11 19:31:44 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 11 19:31:44 2021 +0000"
      },
      "message": "Merge changes Ic348cf9f,Icfd4cecf into sc-dev\n\n* changes:\n  Add deadline histograms into timestats\n  Plumb refresh and render rates into shared timeline\n"
    },
    {
      "commit": "1c69780efbb60608767a28a0887f2cb548fa2002",
      "tree": "e3ac9f7ffebbd3d4ba24921f73311a09ddbf2ec8",
      "parents": [
        "70091d6660ae38137971ebed061c3aedad775937",
        "cdb4ed7743f5abfa4e9a785b14a50ca25c906f3f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 10 05:42:36 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 10 05:42:36 2021 +0000"
      },
      "message": "Merge \"Add plumbing for sending stretch effect to SF\" into sc-dev"
    },
    {
      "commit": "d486b821b2534d73fcdb33c0456f441fd9b6f6f3",
      "tree": "06c605fe6fe4792e199543cee2397c25a5259a65",
      "parents": [
        "42c3aefc765bc1aba9aad9be0cd2afa1c33862f3",
        "564f9deb6d5c9ee27bd6a84f7c6e4544ad9e174a"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Feb 09 22:28:39 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 09 22:28:39 2021 +0000"
      },
      "message": "Merge \"SurfaceFlinger: expose vsync id extra buffers\" into sc-dev"
    },
    {
      "commit": "7d436ecfc55ebf0ff69caa8d05a8f4eb63fb72f4",
      "tree": "644b186f7d1c645614bc916a5db8123a311856f8",
      "parents": [
        "4cd01842d4b1ba10eed64fd947c03b53c4fe3105"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Wed Jan 27 20:40:50 2021 -0800"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Tue Feb 09 09:18:15 2021 -0800"
      },
      "message": "Plumb refresh and render rates into shared timeline\n\n* Make the overridden frame rate from the Scheduler public so that\nSurfaceFlinger can access it for each uid.\n* Add the display refresh rate on each display frame\n* Add the application rendering rate on each SurfaceFrame created\n* If there is no application rendering rate, then set it to the display\nrefresh rate.\n* Plumb all those metrics into TimeStats.\n* Change global metrics to increment for every SurfaceFrame instead of\nevery DisplayFrame, so that the rendering rate dimension can be\naccurately captured.\n\nBug: 172937287\nTest: builds, boots, timestats dump\nChange-Id: Icfd4cecfdfa5d6c434661cab91c624eb08e8baea\n"
    },
    {
      "commit": "cdb4ed7743f5abfa4e9a785b14a50ca25c906f3f",
      "tree": "8bf8137c4876131f2605515811ae76da60864462",
      "parents": [
        "e5d7b701a35e9b94383d9924ce1b1ee15de1c43f"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Feb 04 13:39:33 2021 -0500"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Feb 08 18:19:47 2021 -0500"
      },
      "message": "Add plumbing for sending stretch effect to SF\n\nBug: 179047472\nTest: builds \u0026 boots, doesn\u0027t do anything yet\nChange-Id: Ib8cccdde518f0591c2f2ee3416684442f37a1e06\n"
    }
  ],
  "next": "4cd01842d4b1ba10eed64fd947c03b53c4fe3105"
}
