)]}'
{
  "log": [
    {
      "commit": "aae5ed5b7ad78f4a6fba62556d875ae95e7f9987",
      "tree": "1d3bbb3903ed342291631ed1c0377182ab235284",
      "parents": [
        "f4facf26144de0efcdb3806e6fc852b5be9c9501"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Jun 26 09:32:43 2020 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Jun 26 12:56:02 2020 -0700"
      },
      "message": "SurfaceFlinger: only focused layers can use appRequestRange\n\nWhen DisplayManager sets the DisplayConfigsSpecs with a policy\nthat the appRequestRange is broader than the primaryRange,\nit means that an app can choose a refresh rate from the\nappRequestRange and not from the primaryRange only if that app\nexplicitly specified a frame rate using setFrameRate API. However,\nto avoid cases where we switch the refresh rate back and forth from\nthe two ranges, we are allowing only applications that their window\nis focused from WindowManager\u0027s perspective to select refresh rate out\nthe primaryRange. This matches the behavior of an application that sets\nthe preferredDisplayModeId.\n\nBug: 144307188\nBug: 159940172\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest\nTest: YouTube in PIP mode while device is restricted by primaryRange\n\nChange-Id: I26a9690210bb5771bd8aae2bff301031617f7c8f\n"
    },
    {
      "commit": "4f6205d3cc80ee763bbd5e25e37599e3e6da0535",
      "tree": "c5ff4d37a6e3d8a2f9b0982b263933cecf4ca30b",
      "parents": [
        "19824afef3b9634b6d94e26da785f5a1e633ea01",
        "d50e741e7c1b2f76ec2a8ac223743068f254055b"
      ],
      "author": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Wed Jun 17 22:54:17 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 17 22:54:17 2020 +0000"
      },
      "message": "Merge \"Do not set eTraversalNeeded w/out wake up\" into rvc-dev"
    },
    {
      "commit": "d50e741e7c1b2f76ec2a8ac223743068f254055b",
      "tree": "e3bb8bc5b2664b6d608d6171907ab57c8d8ad4c6",
      "parents": [
        "c8cdfef832c58b7ddcca8e7debf3c05d19ad6ad8"
      ],
      "author": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Tue Jun 16 17:58:14 2020 -0700"
      },
      "committer": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Wed Jun 17 17:20:27 2020 +0000"
      },
      "message": "Do not set eTraversalNeeded w/out wake up\n\nMultiple layers may set eTraversalNeeded during Layer-\u003edoTransaction.\nIf a prior layer doesn\u0027t wish to wake up SF, setting eTraversalNeeded\nmay block a later layer from triggering a wake-up.  Set\nforce transaction instead to trigger doTransaction at a later\ntime.\n\nBug: 158409746\nTest: build, boot, manual, SurfaceFlinger_test,\nlibsurfaceflinger_unittest\n\nChange-Id: I6a43eb53323073361c5b1ebe87e4ceb8a6d3f120\n"
    },
    {
      "commit": "5dc426e6dd0fb0563b5427434bbfcb0ab4d8a06e",
      "tree": "732ba6585138bfdfc2f520dab67eded504621e7a",
      "parents": [
        "98c34a8cee40b7cebcb266c3cb66891d601ac44b"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Jun 10 14:29:14 2020 -0700"
      },
      "committer": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Mon Jun 15 19:11:51 2020 +0000"
      },
      "message": "SurfaceFlinger-Input: Ignore invisible layers for occlusion detection\n\nFor legacy compatibility reasons, we allow apps to receive input prior\nto submitting their first buffer, and for this reason we check\ncanReceiveInput() to populate InputWindowInfo#visible, rather than\ndirectly calling isVisible(). However, in the case of layers which\ncan\u0027t receive input (!hasInputInfo()) and are exclusively being used\nfor occlusion detection we have no such legacy requirement and so we can just\ndirectly check the visibility value. Obviously this doesn\u0027t\ncause any problems with occlusion detection, since if the layer\nisn\u0027t being drawn it can\u0027t occlude anything. This semantic is\nvery useful as it allows BufferLayers which no buffer drawn to be used\nas ContainerLayers, as we frequently use SurfaceView for.\n\nBug: 157772682\nTest: Existing tests pass.\nChange-Id: Iadcd5d8fc4016ee1f88480a50bb3555797830560\n"
    },
    {
      "commit": "7e5f235d00c03785ff5c7de377886ce694ad0098",
      "tree": "46be3d083df340f07710197d809734f1d0cc6f2e",
      "parents": [
        "e0d9770df147aa47680e8a5373c35d4c8b69e764",
        "68d4dabdb4ef156fab92834fdb6ff7977e2b8d9f"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Tue Jun 09 20:25:36 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 09 20:25:36 2020 +0000"
      },
      "message": "Merge \"Maintain Z order for all layers in offscreen hierarchy\" into rvc-dev"
    },
    {
      "commit": "68d4dabdb4ef156fab92834fdb6ff7977e2b8d9f",
      "tree": "3ebcd88b671b12e4e36a1894ad0a96f4cd268bea",
      "parents": [
        "0bc7c5294bc93815cb33242319ec59c7f62eb2b0"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Jun 08 15:07:32 2020 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Tue Jun 09 09:10:36 2020 -0700"
      },
      "message": "Maintain Z order for all layers in offscreen hierarchy\n\nThere was already code in place to ensure that z order was maintained in\nthe offscreen tree. However, this didn\u0027t work if a layer was moved to become\na child of an offscreen layer. The z order was only maintained beneath\nthe new offscreen layer, not the entire subtree.\n\nThis change uses the root of the offscreen subtree to ensure the z order\nis maintained even when new offscreen layers are added to the subtree.\n\nFixes: 157188227\nTest: IME gets correct relative z\nTest: RelativeZTest.LayerWithRelativeReparentedToOffscreen\nChange-Id: I62553ce245dacd2a8684d8bb02de67f60ddc6774\n"
    },
    {
      "commit": "e0d9770df147aa47680e8a5373c35d4c8b69e764",
      "tree": "cc6405e36270a3f00ad71db0fa6a13f06247c885",
      "parents": [
        "9b89dd7a126790e95f30cf63a58226084b5b6e55",
        "edd1360ad34c0777127b0df700f197ad4619ef66"
      ],
      "author": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Tue Jun 09 16:02:21 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 09 16:02:21 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: Send all BufferedLayers to InputFlinger\" into rvc-dev"
    },
    {
      "commit": "43bccf83214bbbe5558b626cd0755527ae8a5aec",
      "tree": "e70fac63e9921fe91adf71aa98a7c061278fb061",
      "parents": [
        "5bcc8f8a38ed372cb7487abc6fbdb1ffb87e1681"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri Jun 05 10:53:37 2020 -0700"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri Jun 05 12:06:05 2020 -0700"
      },
      "message": "Call Layer::getLayerDebugInfo from the main thread\n\nFixes an issue where drawing state could be accessed from a binder\nthread. The function also mixed current state with drawing state\nincorrectly. The function now only retrieves drawing state.\n\nBug: 150226608\nTest: Steps in bug doesn\u0027t repro\nTest: atest sffakehwc_test\nChange-Id: I5537c53e8214e2785473839d71fd483d1a3219b6\n"
    },
    {
      "commit": "eab7ea0e64a24fc254fa71f0f501c2dc8794ed72",
      "tree": "7f8d80c7a30045ea27f13d0e0e247aa8cf93bd13",
      "parents": [
        "c43da98656bbf1944991b5d3fa415e2a8f2c966c"
      ],
      "author": {
        "name": "Lucas Dupin",
        "email": "dupin@google.com",
        "time": "Wed Jun 03 17:27:28 2020 -0700"
      },
      "committer": {
        "name": "Lucas Dupin",
        "email": "dupin@google.com",
        "time": "Thu Jun 04 11:47:34 2020 -0700"
      },
      "message": "Fix issue where surface corner rounding is ignored\n\nIt\u0027s not correct to only check the diagonal of the transform matrix\nfor scaling. The scale will be distributed across four components\nwhen the layer is rotated.\n\nTest: manual\nTest: atest LayerTypeAndRenderTypeTransaction\nFixes: 147415720\nChange-Id: I140b373efd7fad705d0cd54aa6e86b4142e190e5\n"
    },
    {
      "commit": "c43da98656bbf1944991b5d3fa415e2a8f2c966c",
      "tree": "3d6041a0acef8e07db4ae9a52d6265a705e47e2a",
      "parents": [
        "ab63fa0eb5722b30e4e3f0340f80b9662f6fc494",
        "7ec777d9452c236a546c5811ff31f5800ec7ef58"
      ],
      "author": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Tue Jun 02 20:21:05 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 02 20:21:05 2020 +0000"
      },
      "message": "Merge \"DO NOT MERGE: SurfaceFlinger: Don\u0027t wake for pending transactions.\" into rvc-dev"
    },
    {
      "commit": "d9f4f889297f5b6fe5530fab6131a472522c8736",
      "tree": "3aabdb8605dcc94adab00a03e1481b3fada45342",
      "parents": [
        "3c62656e420c72a7faf0fb51a3e27d2e90e7fe0c",
        "5def733be348e4a37a3c77ed56b952100e2b4850"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 02 03:20:45 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 02 03:20:45 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: record layer history for TX with eAnimation\" into rvc-dev"
    },
    {
      "commit": "7ec777d9452c236a546c5811ff31f5800ec7ef58",
      "tree": "713b79d8752bcab8b450bc347e55a727bda154be",
      "parents": [
        "983e568b3c370659f11fcf76cbd45c61dfd8dc33"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Fri May 29 12:02:51 2020 -0700"
      },
      "committer": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Mon Jun 01 18:44:05 2020 +0000"
      },
      "message": "DO NOT MERGE: SurfaceFlinger: Don\u0027t wake for pending transactions.\n\nWhen we still have pending transactions (e.g. we are waiting on the\nother side of a deferred transaction), we need to set the transaction\nflags on SurfaceFlinger, so SurfaceFlinger will continue to call\ndoTransaction and give us a chance to process them. However when\nwe set the transaction flags, we trigger a wake up! This isn\u0027t\ndesirable, as the frame might have not come in. If the frame did come\nin we will get to INVALIDATE, and from INVALIDATE observe the\ntransaction flags. This means we can set the transaction flags without\nscheduling a wakeup and rely on the incoming frame to eventually wake\nus up. I also considered triggering the transaction processing from\nonFrameAvailable but at that point we are too late in the composition\ncycle.\n\nBug: 157685525\nTest: Existing tests pass\nChange-Id: Ia54bc9f48a80906fc8f21c46debc72fabadd3e07\n"
    },
    {
      "commit": "5def733be348e4a37a3c77ed56b952100e2b4850",
      "tree": "c33837db7ba576ba0135be1eb7c534fbc3c6b115",
      "parents": [
        "983e568b3c370659f11fcf76cbd45c61dfd8dc33"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri May 29 16:13:47 2020 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Jun 01 11:20:23 2020 -0700"
      },
      "message": "SurfaceFlinger: record layer history for TX with eAnimation\n\nIf a transaction is posted with ISurfaceComposer::eAnimation flag,\nrecord it with layer history. Layers with eAnimation are considered\nanimating and will vote for peak refresh rate.\n\nBug: 157695685\nTest: Play 24fps video in YouTube PIP mode with setFrameRate and rotate the device - no jank\nTest: Chrome playing video - no refresh rate switching\nTest: Hide/Show keyboard when inputting text\nTest: Running Hay Day and observing refresh rate\nChange-Id: If62e11b395c44d9e5fd40b74864fefd068953413\n"
    },
    {
      "commit": "c43a23c1491ed1e23a1abc48bba98fff67df46de",
      "tree": "26c296f8fce6af8974d759b4177dfe5fba4666ef",
      "parents": [
        "b74fe1dc23243f74ed6deb3f38457f818d8b5383"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri May 29 14:32:27 2020 -0700"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri May 29 14:38:30 2020 -0700"
      },
      "message": "Add layer flag to allow creating an effect layer without color fill\n\nThis change allows creating an effect layers without a color fill so\nwe can avoid an additional sf transactions when creating effect\nlayers.\n\nFixes: 157646690\nTest: go/wm-smoke\nTest: atest SurfaceFlinger_test\nChange-Id: I3d8a4f4820d7b8fb05daab697c25cff8def612c1\n"
    },
    {
      "commit": "414e8b5cb70123b8e4e530522a1ec6f4febb671c",
      "tree": "60b58546d7981e515a71a2ee4615ac545d74a8b2",
      "parents": [
        "39db2c9b075964d28818f187ba417dc13698b680"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu May 21 15:36:04 2020 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri May 22 00:49:17 2020 +0000"
      },
      "message": "SurfaceFlinger: tree vote for FrameRateCompatibility::ExactOrMultiple\n\nLayers that voted with FrameRateCompatibility::ExactOrMultiple\nwill still allow touch boost as those layers are typically not\ninteractive and therefore touch is probably meant for a different\nlayer. For the same reasoning, we should continue to heuristically\ncalculate frame rate for layers in the same tree.\n\nBug: 157254751\nTest: run Swappy with statistics overlay and observe refresh rate\nTest: run YouTube, play a video, scrolling the recommended videos and observe refresh rate\nChange-Id: I9311512a663eba61dfcae6277a52c077e135a244\n"
    },
    {
      "commit": "edd1360ad34c0777127b0df700f197ad4619ef66",
      "tree": "c71d27e5b0606b4d1d18441e91379ac6e2f0fcda",
      "parents": [
        "9adccca5dd6186173b5049996e55e1d637dc44a6"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Mon Apr 13 17:24:34 2020 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Thu May 14 20:50:52 2020 -0700"
      },
      "message": "SurfaceFlinger: Send all BufferedLayers to InputFlinger\n\nCurrently if an InputWindow is obscured by a window with\nFLAG_NO_INPUT_CHANNEL or a Surface with no window (and input) at all\nthen InputDispatcher will not be aware of the window and it will\nfail to generate FLAG_(PARTIALLY)_OCLUDED for windows underneath. To fix\nthis we make sure we generate an InputWindow for every buffered\nelement on the screen and make them all known to InputDispatcher.\n\nBug: 152064592\nTest: ObscuredInputTests\nChange-Id: I90a813be9b650dceb0a20ffbf33aa27f95d38771\n"
    },
    {
      "commit": "b7251f427b567488e84bedc16e64e7d965c6485c",
      "tree": "99cdc4291fbb4da8b44547ed2be3660881e24904",
      "parents": [
        "942c53703fa4d1dec14d0e68b594c83e5fd30c4f"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Mon Apr 20 17:42:59 2020 -0700"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Tue May 12 14:03:23 2020 -0700"
      },
      "message": "SF: Remove display lookup in Layer classes\n\n1. Remove DisplayDevice in LayerCreationArgs and updateTransformHint.\n2. Pass DisplayDevice to dumping functions instead of calling back into SF.\n\nBug: 123715322\nTest: Print transform hint in ConsumerBase\nChange-Id: If41f3506de10f2799b52a73f7a54969b8ef1e960\n"
    },
    {
      "commit": "6213bd900145b9189c7d87aec8a2714a66c8d057",
      "tree": "ece6beaecbdb66c70ff022b843c55837747e0589",
      "parents": [
        "58dc474b3d5fbc5a34388789bc79b39254f84d73"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri May 08 17:42:25 2020 -0700"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri May 08 17:44:10 2020 -0700"
      },
      "message": "Provide a fixed transform hint if the layer is in a fixed orientation 1/2\n\nThe transform hint is used to prevent allocating a buffer of a\ndifferent size when a layer is rotated. The producer can choose to\nconsume the hint and allocate the buffer with the same size.\n\nProvide the graphic producer a transform hint if the layer and its\nchildren are in an orientation different from the display\u0027s\norientation. The caller is responsible for clearing this transform\nhint if the layer is no longer in a fixed orientation.\n\nBug: 152919661\nTest: atest VulkanPreTransformTest\nTest: confirm with winscope trace, buffers are allocated taking into\naccount the transform hint in fixed orientation scenarios\nTest: go/wm-smoke\n\nChange-Id: Iea9dcf909921802a5be5c44dd61be3274f36bbd8\n"
    },
    {
      "commit": "be23e6a1d7c37409d4d865fe799bd9241ab97403",
      "tree": "2dd387bbde1d86c68b429c756805055e74a94913",
      "parents": [
        "c50b604460d60c84862b08566f35c789ab0457a3"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon May 04 14:51:16 2020 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon May 04 22:12:45 2020 +0000"
      },
      "message": "SurfaceFlinger: add frame rate to dumpsys\n\nPrint frame rate if explicitly set by setFrameRate to dumpsys\n\nBug: 155676501\nTest: adb shell dumpsys SurfaceFlinger\nChange-Id: I1016f8a56921f7f465ca50298f49d05b02be585c\n"
    },
    {
      "commit": "6191fe5a44bd33681fde9b9c5c6a3fe715850874",
      "tree": "d83dc90b1c98d54fa3224f6be7cfcbe2f6cd5984",
      "parents": [
        "7fb1b5a4bbfdcd3b16834ea45c819cb803376af0"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Mon Apr 13 17:11:35 2020 -0700"
      },
      "committer": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Fri Apr 17 19:20:34 2020 +0000"
      },
      "message": "SurfaceFlinger: Rip out Input caching scheme.\n\nA few weeks ago we implemented a scheme where we won\u0027t update\nInputWindowInfo if no windows with InputChannels are updated.\nHowever in preparation for an occlusion detection fix we will be\nsending input windows for all buffered surfaces (regardless of whether\nthey have an InputChannel) to InputDispatcher. This means the caching\nscheme is effectively useless.\n\nBug: 152064592\nTest: Existing tests pass\nChange-Id: I49d0afa9ef6bd620c7632338a5dacca724bd46b8\n"
    },
    {
      "commit": "89089c9a4b83e8ea4d13b0c589a3b5f7792ef68e",
      "tree": "28e78653b924f4fe501316b8e2f7e4ffc5d7575c",
      "parents": [
        "9305a3840bab852a64e1a78e7ccc4ff361ab8237"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Apr 15 18:24:41 2020 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Apr 16 22:07:47 2020 +0000"
      },
      "message": "SurfaceFlinger: always consider layers with setFrameRate\n\nIf an app called to setFrameRate on a layer, consider it when choosing\nthe refresh rate, even if the layer has posted buffers.\n\nBug: 152411921\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest\nChange-Id: I01f139b34cee01255693ed274225e79d83b0f894\n"
    },
    {
      "commit": "60db8c061b2f94b8c36af2ed44ee74aed3a820cf",
      "tree": "70c9e6b4e4afc5efdd8ce7296af342292cacbc83",
      "parents": [
        "6aa156cad417719c6ed9b84a8ed04e5ab7a2bc31"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Apr 02 11:55:16 2020 -0700"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Apr 02 11:57:42 2020 -0700"
      },
      "message": "Fix a long standing locking issue with tracing thread\n\nIf winscope tracing is enabled, the tracing thread will read the drawing\nstate if the visible region changes and writes the state it to a proto.\nThis has a few issues: layer drawing state was being committed without\nholding the tracing lock, layers could be destroyed when\nfinalizePendingOutputLayers (without holding the tracing lock) making\naccess to offscreenlayers invalid, finally we could get miss a trace\nentry or have invalid entries.\n\nThis fix takes the tracing lock while committing the layer drawing\nstates and removes accessing the drawing states which are modified\nlater. It also identifies any missed entries.\n\nIn S, we will look at simplifying the tracing model to store a delta\nof changes per layer.\n\nFixes: b/152010382, b/144918813, b/140854698\n\nTest: w/ hwasan build and winscope enabled atest SurfaceFlinger_test libgui_test\nTest: w/ hwasan build and winscope enabled go/wm-tests\n\nChange-Id: I71c7b8e6567767ef97d82c5ea2e06a82ecc3c17a\n"
    },
    {
      "commit": "2c728339cdbf856c34d93e9418d2a2f4a1cac8aa",
      "tree": "5d06efa08736194b20557a70d9363ea2fa92c5a2",
      "parents": [
        "8e46e756719b34359cd046621dbabac4c5afde9f",
        "4df68ab970391e00f3312d3c832224a04c1a40f9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 17 04:43:47 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 17 04:43:47 2020 +0000"
      },
      "message": "Merge \"Fix touch fails after drag and drop\" into rvc-dev"
    },
    {
      "commit": "8e46e756719b34359cd046621dbabac4c5afde9f",
      "tree": "3c0aa5b97cd02c958e1340d4fd73951402d25ff3",
      "parents": [
        "a4b4999ec508c5ba90ef4eb1bbdb31c74e169fa8",
        "60e42ea45c1819af7f0ee248aeb8d5b0683bf60f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 16 21:40:05 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 16 21:40:05 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: Layer::getFrameRate() with relatives\" into rvc-dev"
    },
    {
      "commit": "60e42ea45c1819af7f0ee248aeb8d5b0683bf60f",
      "tree": "c622aae225bba84954c888aca6d12ce68b67d89f",
      "parents": [
        "104600438dbedd857bbb88291f84759d39b1dc5e"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 09 19:17:31 2020 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 16 11:51:41 2020 -0700"
      },
      "message": "SurfaceFlinger: Layer::getFrameRate() with relatives\n\nIf an app set a framerate on a layer, then getFrameRate() on\nancestors/successors of this layer should return NoVote to allow the\nrefresh rate heuristic to be based on the the actual layers that voted.\n\nBug: 151274728\nTest: Swappy with ANativeWindow_setFrateRate\nChange-Id: Icfdf8e8fd4d92ba520bbc894bb9971b980691518\n"
    },
    {
      "commit": "4df68ab970391e00f3312d3c832224a04c1a40f9",
      "tree": "a403c8bb04bf956199d24a88c29a46334ebf74af",
      "parents": [
        "8929001832590afd537f2e06147c039b951d862c"
      ],
      "author": {
        "name": "Arthur Hung",
        "email": "arthurhung@google.com",
        "time": "Wed Mar 11 18:12:01 2020 +0800"
      },
      "committer": {
        "name": "Arthur Hung",
        "email": "arthurhung@google.com",
        "time": "Wed Mar 11 10:36:05 2020 +0000"
      },
      "message": "Fix touch fails after drag and drop\n\nThe drag surface would reparent to null in the end of drag \u0026 drop.\nBut the deatched layer didn\u0027t dirty the input cause InputFlinger\nwould not receive the latest input windows.\n\n- Dirty input when remove layer from current state.\n\nBug: 151171041\nTest: atest DragDropTest CrossAppDragAndDropTests\nChange-Id: I3cf9b063801260f276eb20b3aa474b4b3e692cfb\n"
    },
    {
      "commit": "a125784e31c6be4441c5f17bed40510a85bd4540",
      "tree": "542bf414e902e18d5211a7a6333b0a8e1e63c053",
      "parents": [
        "104600438dbedd857bbb88291f84759d39b1dc5e"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Fri Jan 31 13:48:28 2020 -0800"
      },
      "committer": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Tue Mar 03 00:47:19 2020 +0000"
      },
      "message": "SurfaceFlinger: Cache updateInputWindows call\n\nThis is a conservative but safe cache. We invalidate it if\nany layer with InputInfo, or any layer whose children/relative-children\nhave input info updates their drawing state. Not all these drawing state\nupdates will result in Input changes, but we can be confident that\nwithout some drawing state change there wont be any Input changes,\nand thus it seems the cache is safe. This will solve the case of\nmoving layers that don\u0027t have any InputInfo assosciated generating\nsetInputWindows calls.\n\nBug: 148675756\nTest: Existing tests pass. go/wm-smoke\nChange-Id: Ie5979b25370c2d5c3d8a55f187fc6fda1cc75b27\n"
    },
    {
      "commit": "d45b96e21fb7a628ee88a699016c76cfd77a752d",
      "tree": "ccb48ac5ae87bc71d689dc1aa02b65af1aaf9280",
      "parents": [
        "44f05ea6c0083b064454355d9d3b6ca83da619b0",
        "6b9e9918b9b56f1d6bf3abbfba32ce661f1f97f6"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 02 22:40:51 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 02 22:40:51 2020 +0000"
      },
      "message": "Merge \"[SurfaceFlinger] Add hwc information to winscope:\" into rvc-dev"
    },
    {
      "commit": "6b9e9918b9b56f1d6bf3abbfba32ce661f1f97f6",
      "tree": "45c8ae86f13f5dd12fb077ad212fb8eae5d9b3eb",
      "parents": [
        "1c7bc86a9b1bdf16b240a96d083102127f036325"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Tue Jan 21 10:50:24 2020 -0800"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Mon Mar 02 12:17:09 2020 -0800"
      },
      "message": "[SurfaceFlinger] Add hwc information to winscope:\n\n* String blob of HWC dump\n* Fill in HWC composition enum\n\nCaveat is that only the primary display information is filled in.\n\nBug: 119443475\nTest: Winscope trace\nChange-Id: I246dc8df5e16388d8e58afeabfe944b158e1a39d\n"
    },
    {
      "commit": "3b653e717315ac19b6800cda747f148615d737a6",
      "tree": "697997ce22b63777585433d5a12f0aa631e71d45",
      "parents": [
        "219643eebd19e550100f317ea52854bde4047d8f"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Mon Feb 24 16:40:50 2020 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Feb 25 18:15:16 2020 +0000"
      },
      "message": "Zero out framenumber when clearing out layer\n\nFixes a bug where the contents of the client composition buffer\nwas not reused because HWC requested clearing the layer. When\nchecking if the composition request changed, the framenumber was\nalways incrementing.\n\nBug: b/146238164\nTest: go/wm-smoke\nTest: adb shell su root dumpsys SurfaceFlinger --timestats -dump -maxlayers 0\nChange-Id: I39029835003b40c7e50acf765b52ee9103ce8303\n"
    },
    {
      "commit": "62a4cf8c48647de3442808264005e093ab7704f0",
      "tree": "e11edbf1ffcdba13993ecde3fff1f4e4b24a1908",
      "parents": [
        "b0d738af0fe2874416cecac9eb7f931d01a12a31"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Fri Jan 31 12:04:03 2020 -0800"
      },
      "committer": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Tue Feb 18 16:49:54 2020 -0800"
      },
      "message": "Add compatibility param to setFrameRate() api\n\nAdd a compatiblity param to the setFrameRate() api, so the system has\nmore info to decide the device frame rate when there are multiple\ncompeting preferences.\n\nI also changed the plumbing for setFrameRate() to go directly to surface\nflinger, instead of through buffer queue. We\u0027re trying to avoid changes\nto buffer queue code, to avoid disturbing the prebuilts.\n\nBug: 137287430\n\nTest: Added new cts tests to verify behavior of the compatibility param.\n      cts-tradefed run commandAndExit cts-dev --module CtsGraphicsTestCases --test android.graphics.cts.SetFrameRateTest\n\nTest: /data/nativetest64/SurfaceFlinger_test/SurfaceFlinger_test --gtest_filter\u003d\u0027SetFrameRateTest.*\u0027\n\nChange-Id: Ibe75a778fb459d4138a1446c1b38b44798b56a99\n"
    },
    {
      "commit": "55a81a2f94c1a308453be6729f89dd6016577558",
      "tree": "9e0828d3b960bffd1d7493741167220166652911",
      "parents": [
        "bb1f866cb31b1a4457b1b9d3eb3ff40db9d7e814",
        "b87d94f61ddf784947cb6fd2d0569d8e568c1822"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 14 18:02:28 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 14 18:02:28 2020 +0000"
      },
      "message": "Merge \"Retrieve a list of composition settings from front end layer\""
    },
    {
      "commit": "4fa5e4a06d0af17ca0c45ce8a301d7622a5f3297",
      "tree": "49c4674d7b124bf7fe22e05462cbaf913cd2211e",
      "parents": [
        "6617ad5c65f93c12aa6ccaaa8896d3a48a4f415f",
        "8d9f836d54548199c397b63e5ab12e7e46d72b19"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 14 01:36:37 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 14 01:36:37 2020 +0000"
      },
      "message": "Merge changes I63f2a34e,I3e95be93\n\n* changes:\n  [sf] Pass metadata to layer during composition\n  [sf] Add support for generic layer metadata to HWComposer and HWC2\n"
    },
    {
      "commit": "8d9f836d54548199c397b63e5ab12e7e46d72b19",
      "tree": "74ae3fc9fcaaa4fac39a0a131eb1e2a5abb98944",
      "parents": [
        "4603f3c2151bf6535048b6a42318c8393826b68f"
      ],
      "author": {
        "name": "Lloyd Pique",
        "email": "lpique@google.com",
        "time": "Tue Feb 11 19:13:09 2020 -0800"
      },
      "committer": {
        "name": "Lloyd Pique",
        "email": "lpique@google.com",
        "time": "Thu Feb 13 13:48:35 2020 -0800"
      },
      "message": "[sf] Pass metadata to layer during composition\n\nAdds the simple bits of code to grab a snapshot of the front-end Layer\ngeneric metadata, storing a copy in LayerFECompositionState, and then\nsending int to the HWC2::Layer along with other \"geometry update\"\nsettings.\n\nAs the metadata stored in the layers uses integer keys, they need to be\ntranslated to name strings. For hard-coded mapping is defined, with a\nTODO left to remove the hard-coded mapping.\n\nA test is added to ensure that the metadata is written by OutputLayer\nwhen present, and that it is not set as part of a \"per-frame\" update.\n\nBug: 139747351\nTest: atest libcompositionengine_test\n\nChange-Id: I63f2a34e1fb70e1aefc5aa7e97ce56b7c2579a29\n"
    },
    {
      "commit": "b87d94f61ddf784947cb6fd2d0569d8e568c1822",
      "tree": "c0f40ea02af3057bb20ca1ba84d475b99bee0652",
      "parents": [
        "fa247b1870da660a722551d6eb944dab1c8f0b53"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Feb 13 09:17:36 2020 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Feb 13 21:04:29 2020 +0000"
      },
      "message": "Retrieve a list of composition settings from front end layer\n\nReplace prepareClientComposition and prepareShadowClientComposition\ncalls with one that provides a list of composition settings in z-order\nto handle layers that renders shadows wihtout any content.\nIf the EffectLayer is called with an invalid color, skip the color fill.\n\nTest: atest libcompositionengine_test\nTest: LayerTransactionTest.SetFlagsSecureEUidSystem\nTest: go/wm-smoke\nChange-Id: Iad16931341fc2e58247f4439a322c0ad1e8750f8\n"
    },
    {
      "commit": "edd6bc95bbc71b94bd1d760c0ce8054cb521835f",
      "tree": "33b3f25fcea1fc228e2a2f528481bad171d1287f",
      "parents": [
        "449befc4e1c7036fdb732cc3140373454afe5982",
        "fa247b1870da660a722551d6eb944dab1c8f0b53"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Feb 13 15:15:09 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 13 15:15:09 2020 +0000"
      },
      "message": "Merge \"Rename ColorLayer to EffectLayer to handle both shadows and color fill\""
    },
    {
      "commit": "fa247b1870da660a722551d6eb944dab1c8f0b53",
      "tree": "49df584b3d3fa63e662690e32e15ef7f538f3e66",
      "parents": [
        "44da297691f11200b65b8f17fb4ad8d0b09d0320"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Feb 11 08:58:26 2020 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Feb 11 08:58:26 2020 -0800"
      },
      "message": "Rename ColorLayer to EffectLayer to handle both shadows and color fill\n\nWe want the ability for a layer to render shadows without any content.\nThis new layer type will be able to combine effects as needed.\n\nTest: presubmit tests (no functional changes)\nTest: go/wm-smoke\nChange-Id: I8663d126a23263a3d7dc799d39a9cf44b3b6e4a0\n"
    },
    {
      "commit": "3803b8d76a0d66ae42b6dd727658c292b42e63e2",
      "tree": "71187e1b67c48fdcc614c61f03869dc589a1e3b2",
      "parents": [
        "01a43ca0e2c3f9dbfb830bcc3b92012490c787ac"
      ],
      "author": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Mon Feb 03 16:35:46 2020 -0800"
      },
      "committer": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Fri Feb 07 16:26:20 2020 -0800"
      },
      "message": "SF: Flag guard setFrameRate() API\n\n- LayerHistory is now always created\n- Do not use LayerHistory when content detection flag is turned off.\n\nBug: 148428554\nTest: atest CtsGraphicsTestCases:SetFrameRateTest\nTest: Play YouTube video. When content detection flag is off,\n      display runs at 90, otherwise at 60.\nTest: adb shell /data/.../libsurfaceflinger_unittest\nChange-Id: Iab8b79e16a5257c770d9ddd204cfe26d22de83b6\n"
    },
    {
      "commit": "da0f906c8cb330dc672ad366d2d8b1c3a0a1c4ec",
      "tree": "76219a255a458acd7f13b8729850b12b42987949",
      "parents": [
        "3729f2c68093c3f8bbeeaff7cd48246a35f0d877",
        "de19665154a7dbb66a4932f43f6499d67bede4b8"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 04 18:49:32 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 04 18:49:32 2020 +0000"
      },
      "message": "Merge \"CE: Remove compositionengine::Layer\""
    },
    {
      "commit": "71c437dcd8b05244a171d477e4dde5ac20be9c4d",
      "tree": "bc37f19a6985c3b48f1842d643336edcb3137a90",
      "parents": [
        "ce172aac0e6b2ed09a2a0911b12986074b3c06f8"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Jan 31 15:56:57 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Feb 04 00:01:18 2020 +0000"
      },
      "message": "SurfaceFlinger: add support for FrameRateCompatibilityType\n\nBug: 147516364\nTest: adb shell /data/nativetest64/SurfaceFlinger_test/SurfaceFlinger_test --gtest_filter\u003d\u0027SetFrameRateTest.*\u0027\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest --gtest_filter\u003d*RefreshRateConfigs*\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest --gtest_filter\u003d*LayerHistory*\nChange-Id: I49272804e25f04e1d7a148a0008551cbc5428011\n"
    },
    {
      "commit": "199495817eb791d0a0745bb2c940b980277330d3",
      "tree": "7edd56ad94a34a81d0713026664cd1e42f27068a",
      "parents": [
        "09384dcb41bc443027028acc7548bf9acc7a1e11",
        "844fa677e7138c4585e562cbaac0734856c301eb"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 30 22:39:07 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 30 22:39:07 2020 +0000"
      },
      "message": "Merge \"Use new traversal function when order doesn\u0027t matter\""
    },
    {
      "commit": "844fa677e7138c4585e562cbaac0734856c301eb",
      "tree": "415fe6aad406a8db3196645dfca5a3c3479f3846",
      "parents": [
        "abd1a135f2a8c988209c30731d4da3d99788ff00"
      ],
      "author": {
        "name": "Edgar Arriaga",
        "email": "edgararriaga@google.com",
        "time": "Thu Jan 16 14:21:42 2020 -0800"
      },
      "committer": {
        "name": "Edgar Arriaga García",
        "email": "edgararriaga@google.com",
        "time": "Thu Jan 30 18:31:23 2020 +0000"
      },
      "message": "Use new traversal function when order doesn\u0027t matter\n\nThe new traversal function just handles traversing children and ignores relative layers. It also doesn\u0027t care about the z order. We continue to use the traverseInZOrder functions\nfor cases when z order matters.\n\nThis optimization reduces total CPU time spent in SurfaceFlinger.\nTotal ~2% savings\n\nThe savings where measured sampling over a 20 second period while TouchLatency\nbouncy ball app was running.\n\nBaseline\nhttps://pprof.corp.google.com/?id\u003d2ec0b6ac8e24e1571a3173c763ecd7e1\u0026focus\u003dLayerVector%3A%3AtraverseInZOrder\n\nOptimized\nhttps://pprof.corp.google.com/?id\u003d23596aeb3e9db163956dc621dd19d7a4\u0026focus\u003dLayerVector%3A%3Atraverse\n\nTest: manual. checked that normal use on the phone did not have graphical corruptions.\nTest: atest SurfaceFlinger_test libcompositionengine_test libsurfaceflinger_unittest\nTest: go/wm-smoke\n\nPort from ag/10112179\n\nChange-Id: I60cc6b58efc0e95c5ccc204830a3d76d2e7633c7\n"
    },
    {
      "commit": "134651af42915b197517602009e57a2f7bce7f6e",
      "tree": "736def60161046582cb4082e5e9cdfe7dc96fa11",
      "parents": [
        "b2a6955c6bc7a59b916cf71347afc9c7e57c54ee"
      ],
      "author": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Tue Jan 28 16:21:22 2020 -0800"
      },
      "committer": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Tue Jan 28 16:22:26 2020 -0800"
      },
      "message": "Move frame number to layer state\n\nIt is logical for BufferStateLayers to store the frame number\nin the layer state along with all other state information\n\nBug: 146345307\nTest: build, boot, libgui_test\nChange-Id: I8bc117bd7601290feb6244e207d09de6de361903\n"
    },
    {
      "commit": "de19665154a7dbb66a4932f43f6499d67bede4b8",
      "tree": "5ca606c562c80fcd2f25f13ef8c18df2c2d36ef6",
      "parents": [
        "77707d96b56ecb7658769f525f8e1a0bf16c14da"
      ],
      "author": {
        "name": "Lloyd Pique",
        "email": "lpique@google.com",
        "time": "Wed Jan 22 17:29:58 2020 -0800"
      },
      "committer": {
        "name": "Lloyd Pique",
        "email": "lpique@google.com",
        "time": "Tue Jan 28 12:46:56 2020 -0800"
      },
      "message": "CE: Remove compositionengine::Layer\n\nThis was a mostly straightforward refactor that restructures the\ninterface between SurfaceFlinger and CompositionEngine.\n\n1) Instead of each SurfaceFlinger Layer creating and owning a\n   compositionengine::Layer, each Layer instead creates and owns a\n   compositionengine::LayerFECompositionState structure. Containing this\n   state structure was the only real purpose for\n   compositionengine::Layer.\n\n2) Use the compositionengine::LayerFE interface in CompositionEngine in\n   place of compositionengine::Layer. This includes passing a\n   std::vector for the layers when SurfaceFlinger calls into\n   CompositionEngine.\n\n3) Alters the LayerFE interface to add the ability to get the state, as\n   well as changing the existing \"latchCompositionState\" calls taking a\n   state reference as the first argument into \"prepareCompositionState\"\n   calls that do not need it, as the target of the call owns the state.\n\n4) Alters the SurfaceFlinger Layer implementations to match the LayerFE\n   interface changes.\n\nTest: atest libcompositionengine_test libsurfaceflinger_unittest\nTest: atest CtsColorModeTestCases\nTest: atest CtsDisplayTestCases\nTest: atest CtsGraphicsTestCases\nTest: atest CtsUiRenderingTestCases\nTest: atest CtsViewTestCases\nTest: atest android.media.cts.EncodeVirtualDisplayWithCompositionTest\nTest: go/wm-smoke\nBug: 144117494\nChange-Id: Id45df7c9cc389c8fd834ba379bc0d6360a984dac\n"
    },
    {
      "commit": "9c2cc9d24d98a71e537ec90a81a0f74f18016185",
      "tree": "80f8509beefe98804c20a4a886d79d7cef7dab3f",
      "parents": [
        "2f56c9c4a6a8decfc84cf329ef985c46ff0f03cf",
        "8a82ba66a22238fe59c02a6309ba8bd3dae4f074"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 24 17:26:34 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 24 17:26:34 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: enhance refresh rate selection\""
    },
    {
      "commit": "8a82ba66a22238fe59c02a6309ba8bd3dae4f074",
      "tree": "0ab0962ade34ecd0e09fab57c68d257192db623e",
      "parents": [
        "c34a8a2e960393f434d8307edeb495d0e301c70d"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Jan 17 12:43:17 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jan 23 21:27:14 2020 -0800"
      },
      "message": "SurfaceFlinger: enhance refresh rate selection\n\nEnhance the refresh rate selection algorithm to allow having multiple\nrefresh rate. The new process attaches scores to each one of the available\nrefresh rate and chooses the refresh rate with the highest score.\nThis behavior is currently controlled by the sysprop flag\n\u0027debug.sf.use_content_detection_v2\u0027 and currently turned off.\n\nThis algorithm stills needs some tunings which will be done in\nlayer CLs.\n\nTest: adb shell /data/nativetest64/SurfaceFlinger_test/SurfaceFlinger_test\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest\nTest: go/90hzscenarios manual tests\nBug: 147516364\nFixes: 146068419\nChange-Id: I06e07459e469482799ff80fa54fa8dd311325e0e\n"
    },
    {
      "commit": "e115808a82877c23c8f42aa12aee5c6cf4942193",
      "tree": "23b90ec370b200c9ddaac72b98bf2756c71fcd51",
      "parents": [
        "4005d6c81a2edd1f07203c39063259e1687fc8bd",
        "de94d0f2c2fb93ffe442ed2985bca00f41894f3f"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Thu Jan 23 19:23:24 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 23 19:23:24 2020 +0000"
      },
      "message": "Merge \"Fix uninitialized variable when creating LayerCreationArgs\""
    },
    {
      "commit": "de94d0f2c2fb93ffe442ed2985bca00f41894f3f",
      "tree": "ddf771faf17b2c20b7d9b44e311b4a88769621f3",
      "parents": [
        "e9899161198418d5a777a87b043484ad4cfcd5ea"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed Jan 22 13:11:25 2020 -0800"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed Jan 22 15:29:30 2020 -0800"
      },
      "message": "Fix uninitialized variable when creating LayerCreationArgs\n\nTest: SurfaceFlinger_test.MirrorLayerTest#MirrorBufferLayer\nFixes: 148143913\nChange-Id: I21929a0408bd4b37d5d6eb0898d2c8e96ef6f694\n"
    },
    {
      "commit": "9b079a2fef76ed1dfa69b158889edd0af5e6e52c",
      "tree": "0072ca6810ee57122aa5b56abf52b18032b0f6f1",
      "parents": [
        "0a4b951a590910bab35f20f03d25316426dbf8ae"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Jan 21 14:36:08 2020 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Jan 21 21:17:50 2020 -0800"
      },
      "message": "Skip client composition requests\n\nKeep track of client compositions requests in CompositionEngine and\nthe buffer used to render the request. If the requests do not change\nand the buffer matches, reuse the buffer instead of going\nto client composition.\n\nCertain layers properties (buffer format, rounded corner or shadows)\nwill force the device to go into GPU or mixed composition. In mixed\ncomposition scenarios, we can avoid redundant client composition\nrequests by reusing the RenderSurface buffers. If the device goes\ninto GPU composition then all the layers will be composited and there\nwill be no performance benefit.\n\nBug: b/136561771, b/144690120\n\nTest: dump SurfaceFlinger --timestats -dump\nTest: manual testing with mixed and gpu composition scenarios\nTest: atest libcompositionengine_test libsurfaceflinger_unittest SurfaceFlinger_test\nChange-Id: I466d5dcded0c9fcfa64bc72fd91dfaddd795f315\n"
    },
    {
      "commit": "19c8f0e4fe37ffa86a7cbc879c23e4da2ff97e1c",
      "tree": "47645400d625fa71de468c6ef510780056da8bcf",
      "parents": [
        "fbb86a6baec5b0e91a94413a629d7a49f000d28b"
      ],
      "author": {
        "name": "Lucas Dupin",
        "email": "dupin@google.com",
        "time": "Mon Nov 25 17:55:44 2019 -0800"
      },
      "committer": {
        "name": "Lucas Dupin",
        "email": "dupin@google.com",
        "time": "Mon Jan 20 12:32:18 2020 -0800"
      },
      "message": "Add support for background blurs\n\nBug: 141640413\nFixes: 146384234\nTest: adb shell setprop debug.sf.disableBlurs 1\nTest: adb shell setprop debug.sf.gaussianBlur 0\nTest: adb shell setprop ro.surface_flinger.supports_background_blur 1\nTest: ./SurfaceFlinger_test --gtest_filter\u003dLayer*Tests/Layer*Test.SetBackgroundBlur*\nTest: ./librenderengine_test --gtest_filter\u003d*BlurBackground*\"\nTest: atest SurfaceFlinger_test:SurfaceInterceptorTest#InterceptBackgroundBlurRadiusUpdateWorks\nChange-Id: I5194c910fe7062f33e70943867012539e6c6626a\n"
    },
    {
      "commit": "f3363964cc3a989e7dd7b15f27923fce90142faa",
      "tree": "3ef3b6d874ba3823d543239d2329c086992a61ae",
      "parents": [
        "2b55c3bf500565beae8058ab694f5e19149e3347",
        "3172e2028b191ed485385f02a443b1f9b0d730f9"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Fri Jan 17 01:09:32 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 17 01:09:32 2020 +0000"
      },
      "message": "Merge \"Add plumbing for upcoming setFrameRate() api\""
    },
    {
      "commit": "d12139a2f42da2f91d9a79a4d154416540186638",
      "tree": "f39310cd1cb48024bf4b91030f2e46aa763234be",
      "parents": [
        "92bd250eda0de9b0d3d966f285a8a75fcfd85149",
        "b0dbdaaf3b1a42ab072af9d111d56900b1197af4"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jan 16 22:27:54 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 16 22:27:54 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: Enable -WConversion in Android.bp\""
    },
    {
      "commit": "3172e2028b191ed485385f02a443b1f9b0d730f9",
      "tree": "d966fcda885b7188cb8b03973e8d6398e03fdaf8",
      "parents": [
        "92bd250eda0de9b0d3d966f285a8a75fcfd85149"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Mon Jan 06 19:25:30 2020 -0800"
      },
      "committer": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Thu Jan 16 14:24:13 2020 -0800"
      },
      "message": "Add plumbing for upcoming setFrameRate() api\n\nAdd plumbing from the app to surface flinger for the\nANativeWindow_setFrameRate() and ASurfaceTransaction_setFrameRate() api\ncalls we\u0027ll be adding soon.\n\nWe don\u0027t do anything in surface flinger with this data yet.\n\nBug: 143912624\n\nTest: Added a new test, SetFrameRateTest.\nChange-Id: I1cab87f3ce5afca4591a39d8e7a42cb1e86a368f\n"
    },
    {
      "commit": "92bd250eda0de9b0d3d966f285a8a75fcfd85149",
      "tree": "81b6b59e7beaf1d49a4c31f452fbe937e2c1e8d6",
      "parents": [
        "0dbbf7492c2816376129c8751f7e1ddd7c3bdf7f",
        "c84d09b6464242b1809ffb4f7faa5b2632f4a5e0"
      ],
      "author": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Thu Jan 16 21:18:46 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 16 21:18:46 2020 +0000"
      },
      "message": "Merge \"SF Generalization of Refresh Rates: Adding layer priority hint\""
    },
    {
      "commit": "c84d09b6464242b1809ffb4f7faa5b2632f4a5e0",
      "tree": "2657b5eedbf4251670addfc6576c470675fb57f6",
      "parents": [
        "b168232839544cc033bb98e18d3e478afb5ea929"
      ],
      "author": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Sat Nov 02 23:10:29 2019 +0100"
      },
      "committer": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Wed Jan 15 16:36:19 2020 -0800"
      },
      "message": "SF Generalization of Refresh Rates: Adding layer priority hint\n\nTest: Device boots. Observe logs for errors.\nTest: Open Swappy and Chrome in split screen, tap between apps,\n      SF prints the correct priority.\nTest: Open Chrome, play video. SF prints correct priority.\nTest: SF prints the correct priority received.\nBug: 142507166\nChange-Id: I5fa8a857c950db01f42a380a72d098039badc289\n"
    },
    {
      "commit": "b0dbdaaf3b1a42ab072af9d111d56900b1197af4",
      "tree": "3563c7be7644cc8fbfc51dbcbbe68db0e71d8533",
      "parents": [
        "902ad99f9862d14bda50d3d63b7c018000b3f527"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Jan 06 16:19:42 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jan 15 21:27:09 2020 +0000"
      },
      "message": "SurfaceFlinger: Enable -WConversion in Android.bp\n\nEnable global -WConversion in Android.bp and turn it off in\nindividual files. This is the first step to enable -WConversion\nin SurfaceFlinger.\n\nTest: boot\nBug: 129481165\nChange-Id: Ia752df39ef380bde71705a32582d618242c466f7\n"
    },
    {
      "commit": "9d4c996b9cd8fd0a978d4b6c60293d638def5cd7",
      "tree": "b9e71464cf0ca049206829b3667c13c8d2f230dc",
      "parents": [
        "31ba2a9632596b7e1de701722e76e24908b2bc0a",
        "6d89e2de826c74957851552ad8d465ccf6d421b2"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Wed Jan 15 18:05:54 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 15 18:05:54 2020 +0000"
      },
      "message": "Merge \"Don\u0027t add offscreen layer twice to proto.\""
    },
    {
      "commit": "6d89e2de826c74957851552ad8d465ccf6d421b2",
      "tree": "dedce69548f25b33ea18d2c66a040b6e86110432",
      "parents": [
        "08f3cb2b8eb777fd5f7fc0245544c051dae5124d"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Tue Jan 14 14:42:01 2020 -0800"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Tue Jan 14 17:50:17 2020 -0800"
      },
      "message": "Don\u0027t add offscreen layer twice to proto.\n\nFixes: 147691800\nTest: Only one offscreen layer per id in dump\nChange-Id: I9c741e87531ec0ed166dd1cdafc0961e243d1c96\n"
    },
    {
      "commit": "b168232839544cc033bb98e18d3e478afb5ea929",
      "tree": "21683291c16b36a9d28e55bed006a3ac921c0483",
      "parents": [
        "5ada2be22e5265c1d1423987770a922820caccbe",
        "08f3cb2b8eb777fd5f7fc0245544c051dae5124d"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Tue Jan 14 17:57:29 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 14 17:57:29 2020 +0000"
      },
      "message": "Merge \"Add layers to proto by traversing children\""
    },
    {
      "commit": "08f3cb2b8eb777fd5f7fc0245544c051dae5124d",
      "tree": "a289a2871f950d82b455b83742ea1bf73d155c10",
      "parents": [
        "838817f1953feb7db7c927333b0abd3979daef41"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Jan 13 13:17:21 2020 -0800"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Jan 13 13:30:07 2020 -0800"
      },
      "message": "Add layers to proto by traversing children\n\nThere are currently some layers that end up missing from the proto dumps\nsince their relativeOf layer has been deleted. That means the layers are\nstill in memory, but not traversable since we skip layers that have a\nrelativeOf when traversing. Instead, we can traverse the children\ndirectly.\n\nTest: Layers will missing relativeOf are adding to proto\nChange-Id: I571ef677de0544dfe7459080cf97ff193e8666e6\n"
    },
    {
      "commit": "7618b235019514a8546e22fe20a74bb34a7b1acd",
      "tree": "07a485d2ad000d73c91cbbd197887ff7e89864e2",
      "parents": [
        "966888df94240830d03d589600a35af2e5385e42"
      ],
      "author": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Thu Jan 09 16:03:08 2020 -0800"
      },
      "committer": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Thu Jan 09 16:07:21 2020 -0800"
      },
      "message": "Force send callbacks when layer is detached\n\nBug: 141706317\nTest: build, boot, ASurfaceControlTest, SurfaceFlinger_test,\nlibsurfaceflinger_unittest, manual\nChange-Id: Ib3566905a2e46cbbf88a1c80300744db03c3b7c7\n"
    },
    {
      "commit": "ddeae26fd12bffb19d6e8dbcb443f78aee244932",
      "tree": "a983bdd38b8ab48d3af5aba0afad3da011afb122",
      "parents": [
        "6f6e23056a9e2c1fc6128d2775ceeee0ac2dd374"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Jan 06 10:31:23 2020 -0800"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Jan 06 11:10:46 2020 -0800"
      },
      "message": "Add ColorSaturation to proto dump\n\nTest: ColorSaturation is in the proto dump\nBug: 140917834\nChange-Id: Ie3bde20f9717a2fe5c1b9a3d316cbed54e512a84\n"
    },
    {
      "commit": "6f6e23056a9e2c1fc6128d2775ceeee0ac2dd374",
      "tree": "9cdf939dbbb05822a8264bdb9e395031e7cadaa0",
      "parents": [
        "0cde87d4578c2cae15758f51d7513c84e926cdb5",
        "af87b3e09141558215e28f84d954590b5e7f2f16"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Fri Dec 27 00:44:46 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 27 00:44:46 2019 +0000"
      },
      "message": "Merge \"Added input support for cloned layers\""
    },
    {
      "commit": "0cde87d4578c2cae15758f51d7513c84e926cdb5",
      "tree": "31d622b266fe4f12ab8021b4c6633a7367d9284f",
      "parents": [
        "032c995d011917b503c6445e553b14f5169727c0",
        "95a1ed40c58a7631abd7a94468e523065cfb33f8"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 26 23:22:51 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 26 23:22:51 2019 +0000"
      },
      "message": "Merge \"Add shadow radius and corner radius crop to sf and transaction trace\""
    },
    {
      "commit": "af87b3e09141558215e28f84d954590b5e7f2f16",
      "tree": "1f19e28978e9b1e9dab840da35ba0ba49a0ed03a",
      "parents": [
        "c41ab321c1361ef9faabeefc78c69d606ef2aceb"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Tue Oct 01 16:59:28 2019 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Thu Dec 26 15:18:03 2019 -0800"
      },
      "message": "Added input support for cloned layers\n\nThis was done with a few changes:\n1. Added a layerId in the input info so the InputInfo objects can be\nuniquely identified as per layer\n2. When setting input info in InputDispatcher, compare InputInfo objects\nusing layer id instead of input token.\n3. Updated the crop region for layers based on the cloned hierarchy so\nthe input is cropped to the correct region.\n\nBug: 140756730\nTest: InputDispatcherMultiWindowSameTokenTests\n\nChange-Id: I980f5d29d091fecb407f5cd6a289615505800927\n"
    },
    {
      "commit": "a483b4aae955319e48fc3837eae58f2049c63f4b",
      "tree": "a10919b0081d010cb3b4eb9daa6f219998735719",
      "parents": [
        "99f9d44fbad410afec4f0e340172f239fc0ed28d"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Dec 12 15:07:52 2019 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri Dec 20 23:22:57 2019 +0000"
      },
      "message": "Draw shadows when the casting layer is occluded or transparent\n\nIgnore transparent region when generating the composition layer for shadows. Client may\nprovide transparent region hints but the shadow should be drawn over the entire layer.\nSolves an issue with YouTube in PiP which sets a transparent region where the\nSurfaceView is shown causing a shadow of incorrect size to be drawn.\n\nDraw shadows even if the layer is completely occluded by another layer. The layer will\nnot be composed in this case causing the shadow to not be drawn either. So extend its\nvisible region by the shadow length so we can check if the shadows will be occluded as\nwell.\n\nBug: 136561771\nTest: atest libcompositionengine_test\nTest: manual tests with pip overriding shadows to be drawn by sf\nChange-Id: I4c6cae1716caebe46119ebd1643d8b5e3eda56c3\n"
    },
    {
      "commit": "95a1ed40c58a7631abd7a94468e523065cfb33f8",
      "tree": "69d4a6d17bf8d27c161753e826f8ddf01f83f254",
      "parents": [
        "e51953694bc0faa329175d8393e70227f4c76276"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri Dec 06 12:25:11 2019 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri Dec 06 12:25:39 2019 -0800"
      },
      "message": "Add shadow radius and corner radius crop to sf and transaction trace\n\nBug: 136561771\n\nTest: capture sf and transaction trace and check in winscope\nTest: atest SurfaceFlinger_test\nChange-Id: Ie2dce153ad8614657b6a2db43cbf7dd4912d8ddf\n"
    },
    {
      "commit": "3a7346ce4f66df02161c730b0dd0265c473a9243",
      "tree": "2916483a65ecff746de4a1b54e5971d9d8f7259e",
      "parents": [
        "08f6eae01d8e0c7a77d933cf0ba2bfe70e779e8b"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Dec 04 08:09:09 2019 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Dec 04 08:10:26 2019 -0800"
      },
      "message": "[Shadows] Create a new composition layer for shadows [6/n]\n\nWhen generating the list of composition layers, generate one to render\nshadows based on the layer settings.\n\nThe function passes in  the display view port to calculate shadow\nposition. When rendering a screenshot, use the layerstack of the\nroot layer to find the display and its viewport since the shadows\non the screenshot have to match how it was rendered on display.\n\nPass in display or target output dataspace so shadows do not have to\ndo any color conversion.\n\nBug: 136561771\nTest: go/wm-smoke\nTest: libcompositionengine_test\nChange-Id: I89795707f054b6a08dabc278d80ed393a0da0a7e\n"
    },
    {
      "commit": "08f6eae01d8e0c7a77d933cf0ba2bfe70e779e8b",
      "tree": "3a9982c600cd6755497cc588d4c883ae99928f99",
      "parents": [
        "a3c5d2326e731dfb3b708001fa639d7a0eaa4c1c"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Nov 26 14:01:39 2019 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Nov 26 14:01:39 2019 -0800"
      },
      "message": "[Shadows] Set shadow settings per layer (5/n)\n\n- Save global shadow settings set by WindowManager\n- Add ShadowSettings to renderengine per layer rendering info\n\nBug: 136561771\nTest: go/wm-smoke\nChange-Id: I89cf84c7e089273ae3edea02e2ac24690055ba47\n"
    },
    {
      "commit": "487340f03dd621406c0e293200d22a1c06a8c4df",
      "tree": "2b1f461cd69ca6338a2d7e948b4434dac7ea231a",
      "parents": [
        "d3df1b3476a0840c16622be619ba5876351a2bb2"
      ],
      "author": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Mon Nov 18 17:42:12 2019 -0800"
      },
      "committer": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Mon Nov 18 17:42:12 2019 -0800"
      },
      "message": "TimeStats: make sure acquire fence is captured\n\nPreviously, if setAcquireFence happens earlier than setPostTime, the\nacquire fence is not recorded in TimeStats which ends up with acquire\ntime being the same with post time. This issue is almost eliminated\nafter a previous refactoring of the order of recording TimeStats and\nEGL throttling logic.\n\nSince acquire fence is already available at post time, this change just\ncaptures that by then to avoid any chance of missing the acquire fence.\n\nBug: 140266250\nTest: atest libsurfaceflinger_unittest:TimeStatsTest\nChange-Id: I90a5ab609afc7054c618273c3af79c9d12d85730\n"
    },
    {
      "commit": "46e9976bf1d03c77ddf282f07f3aea1902cf4da5",
      "tree": "3cadbbcbfd578e69a73bd45d6edfc431e9b3ce53",
      "parents": [
        "607abb64c920d95845611a2410743951e388a47f",
        "1a88c40d5623b61bd66338f5df0e8857d249fa79"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 18 20:16:46 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 18 20:16:46 2019 +0000"
      },
      "message": "Merge \"TimeStats \u0026 FrameTracer: refactor layerID to layerId\""
    },
    {
      "commit": "1a88c40d5623b61bd66338f5df0e8857d249fa79",
      "tree": "8ef9091371afe4f83c38dcb363c8c276f757ed19",
      "parents": [
        "d64198e6ee5be7da197cce0c8dcf62eddc03ee9c"
      ],
      "author": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Mon Nov 18 10:43:58 2019 -0800"
      },
      "committer": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Mon Nov 18 10:43:58 2019 -0800"
      },
      "message": "TimeStats \u0026 FrameTracer: refactor layerID to layerId\n\nTest: build, flash and boot\nTest: atest libsurfaceflinger_unittest\nChange-Id: I297dce08dbaf625b56e1e6d47cffead1de440ab7\n"
    },
    {
      "commit": "f37dcfbe941bb5f0a55aa30ccb7ba9321df6aa24",
      "tree": "eb9819c31fd0c9f9107396bd71d59d23f68926ed",
      "parents": [
        "e6d829d9688dabb230329d1c9b291906a745ad55"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Sat Nov 16 07:37:09 2019 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Sat Nov 16 07:37:09 2019 -0800"
      },
      "message": "Initialize shadowRadius state\n\nThe uninitialized var was causing the device to incorrectly going into glcomp.\n\nFixes: b/144450732\nTest: adb shell am instrument -w -e class android.platform.test.scenario.launcher.FlingAllAppsMicrobenchmark android.platform.test.scenario/androidx.test.runner.AndroidJUnitRunner and capture a systrace\nChange-Id: Ia33a4c8908990cd12fbd5a5ce1664ed96c112832\n"
    },
    {
      "commit": "ed5b8994b95cf00c818867fa427424a5e311352e",
      "tree": "d0e5463175d50796b5b34c9b9fdd70c8f09f8f17",
      "parents": [
        "5d02a1f7cb1fd6ec755b0624ff2258eae4519efb",
        "7584836d4ac4ecc0cf8166491b84533e67f300f2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 14 18:59:53 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 14 18:59:53 2019 +0000"
      },
      "message": "Merge \"SF: Register layers on first strong reference\""
    },
    {
      "commit": "4460616e18cd7b8572cced8245452d4f55c5b0e3",
      "tree": "a7b45a0ccc2ecba3454d9997650919c59445662a",
      "parents": [
        "70d79c01c24d1d215f0a7957135e7c5b69f45241",
        "c97b8dbd9093c7a8cfeedcd7e417f6732cbe24c6"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 12 20:42:12 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 12 20:42:12 2019 +0000"
      },
      "message": "Merge \"[Shadows] Add shadow radius to sf layer state (2/n)\""
    },
    {
      "commit": "7584836d4ac4ecc0cf8166491b84533e67f300f2",
      "tree": "bdba9301c1e934088b25594372afd5f8e4a7169b",
      "parents": [
        "e00dd195c59f5511e64d8ac28de8ed88c5990f3b"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Mon Nov 11 17:57:20 2019 -0800"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Mon Nov 11 23:01:49 2019 -0800"
      },
      "message": "SF: Register layers on first strong reference\n\nIn ag/9549429, LayerHistory stores a wp\u003cLayer\u003e on Layer construction, at\nwhich point RefBase::mStrong is not yet 1. Since wp\u003cT\u003e::promote succeeds\nin that case, LayerHistory may concurrently create a sp\u003cLayer\u003e with sole\nownership on the main thread while checking for expired weak references,\nresulting in premature layer destruction.\n\nBug: 144218964\nTest: None (sporadic crash)\nChange-Id: Ia7c89a090920588b216b719fce36c9f64a126e81\n"
    },
    {
      "commit": "301b1d84f2d51febc71a367dd143327d77112cbd",
      "tree": "2fe95b792ad5b5e7db1759f7b1544e92f2332137",
      "parents": [
        "0be01b4efc148049015e3df39bee7f1ec6f20ba6"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed Nov 06 13:15:09 2019 -0800"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed Nov 06 13:15:09 2019 -0800"
      },
      "message": "Use correct state when calling getZ\n\nWhen calling traverseInZOrder, there\u0027s a call to getZ. Currently\nthe code uses the drawingState but that\u0027s incorrect since sometimes we\ntraverse the currentState. Changed the getZ function so it uses the\ncorrect state.\n\nBug: 143200062\nTest: Builds and runs\nChange-Id: Ifcd9bafbf0906b4f6f8f68f7d20d1a1025cef449\n"
    },
    {
      "commit": "c97b8dbd9093c7a8cfeedcd7e417f6732cbe24c6",
      "tree": "1851287287ac16f9c978542ca0ef08793a6a2a50",
      "parents": [
        "7b3a312f385e1fc8c3694ffeafc18794e96a95f1"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Oct 29 18:19:35 2019 -0700"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Oct 30 01:20:41 2019 +0000"
      },
      "message": "[Shadows] Add shadow radius to sf layer state (2/n)\n\nBug: 136561771\nTest: atest SurfaceFlinger_Test\nChange-Id: Icafe852eaad195163b48b802db2a4b092aa30926\n"
    },
    {
      "commit": "f7a09ed2b7f85378e3043b1ce21617fc0a2bde12",
      "tree": "ddaa3e77c62fef0c63193e3a610c1185caae7cfc",
      "parents": [
        "b74b376735adb894eaff02d82fda0fd5aefb49d2"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Mon Oct 07 13:54:18 2019 -0700"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Mon Oct 28 15:08:15 2019 -0700"
      },
      "message": "SF: Optimize layer history in scheduler\n\nRegister layers with LayerHistory by storing a weak pointer rather than\nallocating a LayerHandle. Query layer visibility when needed instead of\nsynchronizing it to LayerInfo whenever Layer::isVisible is called. Store\nactive/inactive layers in contiguous memory instead of two hash maps for\ncache efficiency, and minimal allocation and run time of operations like\nclearing history. Remove redundant ref-counting, locking, and frequency-\nperiod conversion in LayerInfo. Avoid sleeping in unit tests.\n\nThis is also prework for per-display layer history.\n\nBug: 130554049\nBug: 134772048\nTest: go/wm-smoke with debug.sf.layer_history_trace\nTest: C2/F2 test cases from spreadsheet\nTest: LayerHistoryTest with new test cases\nChange-Id: Ibfcfe46cd76ebd93b916d4a0c737a19e837d4ff1\n"
    },
    {
      "commit": "f8c61c308c4a98618b01fe10178b1e040d321c5b",
      "tree": "8fc8817b6d98d127c54884b9e8e4733bc2668aa7",
      "parents": [
        "bde8a89d57d53c040c91d496a8dc8f54e1c8a994",
        "87a07e42dd60a748cbf82be7e82b07b0326ea469"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 17 21:58:22 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 17 21:58:22 2019 +0000"
      },
      "message": "Merge \"SF: Use std::string for layer names\""
    },
    {
      "commit": "87a07e42dd60a748cbf82be7e82b07b0326ea469",
      "tree": "daa30ac130229a6f27767656aef7df9c839a5219",
      "parents": [
        "a7f850a3fc228713e83c266ae3f8fbec1a183cb5"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Thu Oct 10 20:38:02 2019 -0700"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Mon Oct 14 14:49:24 2019 -0700"
      },
      "message": "SF: Use std::string for layer names\n\nBug: 130554049\nTest: Build\nChange-Id: Id083a85fcb838da4138c39a55b12cf10ff0cdddb\n"
    },
    {
      "commit": "bdb8b8043d0deed732182eca962657b52ccff6f3",
      "tree": "7e9038f48509cac4187d28ab6de3d8e3677adafb",
      "parents": [
        "b92c27b6c019c5b9bf4f8b695535e26e70fd1b1b"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Oct 14 09:17:12 2019 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Oct 14 10:31:44 2019 -0700"
      },
      "message": "Set isRelativeOf flag when calling setZOrderRelativeOf\n\nThe current code sets the isRelativeFlag to true when setRelativeLayer\nis called and false when setLayer is called. However, those two requests\nare only coming from client requests. There are places where zRelativeOf\nis removed for other reasons. Therefore, set isRelativeOf flag when\ncalling setZOrderRelativeOf based on whether relativeOf is null or not.\nThis will ensure it covers all places that zRelativeOf is updated.\n\nFixes: 142534793\nTest: RelativeZTest.LayerAndRelativeRemoved\nChange-Id: I338592f2e2e88598f2d8a4c0957b551da310a4bf\n"
    },
    {
      "commit": "3809d1d616f95442aad5a45628d72a0726b534ec",
      "tree": "9b0b5960c9d43de3cc6c4e56ec2f891e2fa49c26",
      "parents": [
        "2cea3b8add0ed4e5b4ee87a38b6158c9de1e01d5",
        "74b03178292a8fd1e514b8b53d425e8d9c739319"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Tue Oct 01 16:05:22 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 01 16:05:22 2019 +0000"
      },
      "message": "Merge \"[Mirror Layers] Added functions to update mirrored layers info (2/4)\""
    },
    {
      "commit": "74b03178292a8fd1e514b8b53d425e8d9c739319",
      "tree": "c86320b5efa82fbd91f78238f99b31e78b2b6a31",
      "parents": [
        "e2930c4a3f87e37699c7d0c0232d30ea324978f0"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Aug 19 11:09:03 2019 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Sep 30 16:53:04 2019 -0700"
      },
      "message": "[Mirror Layers] Added functions to update mirrored layers info (2/4)\n\nAdded updateMirrorInfo and updateBufferInfoFromClone to ensure the state\nand buffer of the clones are updated properly. updateMirrorInfo is\ncalled when commitTransaction is called to update the drawing state,\nchildren, and relatives. updateBufferInfoFromClone is called in\nhandlePageFlip after the real layer calls latchBuffer to ensure the\ncloned layer gets the updated buffer and buffer info.\n\nTest: No mirror request yet so everything runs normally\nBug: 131622422\nChange-Id: Ic2b1f66cab98175dbdccf90f2f8310c7f19d8cff\n"
    },
    {
      "commit": "321e83c9d5201c36e26a1c42d3fd7e0993efab78",
      "tree": "1a33d34b9ccf321327246975c39b0b4fefdaedb7",
      "parents": [
        "be24e2e38b9a715e727d5d461912698d2cd1e064"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Mon Aug 19 15:49:30 2019 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Mon Sep 30 15:08:37 2019 -0700"
      },
      "message": "BLAST: Handle detached layers.\n\ndetachChildren and mLayerDetached were implemented to avoid geometry updates\nto layers in the cases of animation. For BufferQueue layers buffers are still\nconsumed as normal. This is useful as otherwise the client could get hung\ninevitably waiting on a buffer to return. We recreate this semantic for BufferState\neven though it is a little in-consistent. detachChildren is shortly slated for removal\nby the hierarchy mirroring work so we don\u0027t need to worry about it too much.\n\nBug: 135786080\nTest: Manual\nChange-Id: I86c78fecc921218582918dda1ee7d8ee6c48f922\n"
    },
    {
      "commit": "7398e0598eaa26f62f91581c037c62f8373a2997",
      "tree": "7137afa38b788d0fd1e6b0cfa12727b8d289a891",
      "parents": [
        "4237a95f131bf6d90f620643a21f75d5f7ecfc0e",
        "b4c6e5850f16d045abcb4e3308b7556749a61be0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Sep 26 19:10:23 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 26 19:10:23 2019 +0000"
      },
      "message": "Merge \"[Mirror Layers] Added clone function to layers (1/4)\""
    },
    {
      "commit": "b4c6e5850f16d045abcb4e3308b7556749a61be0",
      "tree": "04389ac878b1b6609976c2388861bd8c2f849784",
      "parents": [
        "04c70c4c49f02e660edda8f24638efdda54f38b6"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Fri Aug 16 14:35:07 2019 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Thu Sep 26 10:04:12 2019 -0700"
      },
      "message": "[Mirror Layers] Added clone function to layers (1/4)\n\nAdded a cloning function to each layer in preparation for mirroring\n\nTest: Nothing to test yet since no calls\nBug: 131622422\nChange-Id: Iba0692b75c4d99841de48f40ed55b3dbccf2b9b9\n"
    },
    {
      "commit": "e5ac40f470e92e8f3a3dbbf58c2f432a816f4486",
      "tree": "bd0f394465e06c88a8434645140c578e26024819",
      "parents": [
        "577b70b5514d79e7477caba264fb0a2ad70620b7"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Tue Sep 24 16:36:55 2019 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed Sep 25 09:55:21 2019 -0700"
      },
      "message": "Added isRelativeOf instead of checking if weak pointer is not null\n\nIf a layer has a relativeOf, it will continue to assume it has a\nrelativeOf even if what it\u0027s relative to is removed. This is because the\nclient never explicitly asked to remove the relative Z.\n\nInstead of relying on whether the weak pointer is non null, this change\nadds a variable isRelativeOf that\u0027s set to true when the client calls\nsetRelativeLayer and false when the client calls setLayer. This is\nclearer than checking whether the weak pointer is still around.\n\nThis is also needed for mirroring since we want to add this same\nbehavior without having to clone weak referenced layers.\n\nBug: 131622422\nTest: go/wm-smoke\nTest: SurfaceFlinger_test\nChange-Id: Ia71b0f660edda9b3a63521d40ca30bfca1d456b9\n"
    },
    {
      "commit": "958be49bdb1a379a507cd1825680ca845fd1a7a0",
      "tree": "84fea823d828289291e0dbf971a973969be749de",
      "parents": [
        "9755fb755c062b406ff5a9310ef6b23b9f1ce5a2"
      ],
      "author": {
        "name": "Lloyd Pique",
        "email": "lpique@google.com",
        "time": "Thu Mar 28 15:34:59 2019 -0700"
      },
      "committer": {
        "name": "Lloyd Pique",
        "email": "lpique@google.com",
        "time": "Wed Sep 18 12:00:22 2019 -0700"
      },
      "message": "SF: Update Layer::setBackgroundColor to use the factory interface\n\nRather than directly creating a ColorLayer, use the factory interface to\ndo so.  This allows an override to be created instead if desired.\n\nTest: atest CtsViewTestCases\nTest: go/wm-smoke\nBug: 121291683\nChange-Id: I53f65f482bc896cb54857d6f268c550fd173f6ff\n"
    },
    {
      "commit": "9755fb755c062b406ff5a9310ef6b23b9f1ce5a2",
      "tree": "5fd3b9205ccf8405306a12497a5d27c722659cab",
      "parents": [
        "862e50c5f17bd6111ca14ca41f4efd3f11ff1917"
      ],
      "author": {
        "name": "Lloyd Pique",
        "email": "lpique@google.com",
        "time": "Tue Mar 26 14:44:40 2019 -0700"
      },
      "committer": {
        "name": "Lloyd Pique",
        "email": "lpique@google.com",
        "time": "Wed Sep 18 12:00:22 2019 -0700"
      },
      "message": "CE: Layers only have FE layer state\n\nRemove the concept of having a compositionengine::Layer having internal\nstate since it was only used to internally store a copy of the\nLayerFECompositionState. Instead switch the Layer interface so only the\nFE state can be obtained. Any internal state will from now on be\nprivate.\n\nDoing this also allows the LayerFECompostionState to be easily extended\nby extended versions of CompositionEngine.\n\nTest: atest libsurfaceflinger_unittest libcompositionengine_test\nTest: atest CtsColorModeTestCases\nTest: atest CtsDisplayTestCases\nTest: atest CtsGraphicsTestCases\nTest: atest CtsUiRenderingTestCases\nTest: atest CtsViewTestCases\nTest: atest android.media.cts.EncodeVirtualDisplayWithCompositionTest\nTest: go/wm-smoke\nBug: 121291683\n\nChange-Id: I689e8714aca46320c87e0cb5ef18fdde93eb7499\n"
    },
    {
      "commit": "5dd64b1ea2b4c3c3580806e3dc0926b655a72a1f",
      "tree": "2c0ba7a0c3a8d1830f70394d02dbea8c464c46b9",
      "parents": [
        "56de7c0e47d3097720b67c5e3a3addcb78569ac1",
        "82353e993cd4889a231a0b2d243dccc98e323395"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 13 20:00:15 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 13 20:00:15 2019 +0000"
      },
      "message": "Merge \"Changed BufferLayer\u0027s canReceiveInput to check if its hidden by policy\""
    },
    {
      "commit": "82353e993cd4889a231a0b2d243dccc98e323395",
      "tree": "6fdf3bf447571686dcdef1cc7cd040b3463b2ccd",
      "parents": [
        "d94d56e3a758bfc25a60ec56e9605d5e9d398f35"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Sep 12 12:38:47 2019 -0700"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Sep 12 12:39:23 2019 -0700"
      },
      "message": "Changed BufferLayer\u0027s canReceiveInput to check if its hidden by policy\n\nWM does not consider window size or alpha value when setting it as the focused window. However, SF\nwill check if the window has a buffer and that its alpha is not 0. Because of this difference,\nInput Dispatcher will not be able to send input to the window while WM thinks the window is\nfocused. This will cause apps to stop responding.\n\nWhile we define what the intended behavior should be, this fix reverts\nto previous behavior in P.\n\nBug: 139494112\nTest: adb shell monkey 10000; make sure monkey does not get stuck\nTest: check test app from can receive input b/140478820\nChange-Id: I4160b49161dd1780713980707a5c911034f414b5\n"
    },
    {
      "commit": "1e0a03cf3d963af0403f18ee1494f557537d605a",
      "tree": "2b186327b51f3d0d2669c69471d23d39c1971d0d",
      "parents": [
        "7d2b2089a5e646551eaed5b3be17898ec0ade17b",
        "d62d30645c41d703a241443de761ab9eaa0c99af"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Sat Sep 07 00:26:18 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Sep 07 00:26:18 2019 +0000"
      },
      "message": "Merge \"Moved info about activeBuffer into bufferInfo (2/2)\""
    },
    {
      "commit": "7d2b2089a5e646551eaed5b3be17898ec0ade17b",
      "tree": "3b4771ad1b4e10854fb958c368d948abe31ff8d2",
      "parents": [
        "fa959a0a0279d8edaf86d78e8fa2096dced9b383",
        "4244e0356083fba0a367b9cb5422cd24d567518a"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Sat Sep 07 00:26:08 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Sep 07 00:26:08 2019 +0000"
      },
      "message": "Merge \"Created bufferInfo to track buffer data in a single place (1/2)\""
    },
    {
      "commit": "fa959a0a0279d8edaf86d78e8fa2096dced9b383",
      "tree": "945712da8d428a11c387a361a4de4041dd431747",
      "parents": [
        "dd3d02688d5656c565b453917fde4a13e3f368ea",
        "c668734cece8d71ead434517e0a4fa9752bd79ce"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 06 21:23:03 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 06 21:23:03 2019 +0000"
      },
      "message": "Merge \"SF: Add ability to get basic geometry\""
    },
    {
      "commit": "f145c01cd14d56964d3a4f4590b771008d1a3f4c",
      "tree": "453cacc360fe8d91638a678c875644e2d3c35691",
      "parents": [
        "1ba4b2517b89874ad08396d3e51abe5d3f967d54",
        "214c89db99f280cd67ca14357c9ee11adce0acce"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Fri Sep 06 20:18:20 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 06 20:18:20 2019 +0000"
      },
      "message": "Merge \"Remove setGeometryAppliesWithResize\""
    },
    {
      "commit": "d62d30645c41d703a241443de761ab9eaa0c99af",
      "tree": "821ef7223cadafd684fac1a7d74359e657ef61a2",
      "parents": [
        "4244e0356083fba0a367b9cb5422cd24d567518a"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed Sep 04 14:48:02 2019 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Fri Sep 06 10:51:54 2019 -0700"
      },
      "message": "Moved info about activeBuffer into bufferInfo (2/2)\n\nThis is in preparation for layer mirroring since mirrored buffer layers\nshould just copy the bufferInfo instead of the entire BufferQueue or\nparts of BufferState\n\nTest: go/wm-smoke\nChange-Id: I48c34141151370d9905c312239883f8374b884b9\n"
    },
    {
      "commit": "4244e0356083fba0a367b9cb5422cd24d567518a",
      "tree": "cf49e695849142a44192c6581b958ce534759932",
      "parents": [
        "4ab80de6ba40c4668956b60c8d8e28bbb6ebbdc9"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed Sep 04 11:27:49 2019 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Fri Sep 06 10:28:23 2019 -0700"
      },
      "message": "Created bufferInfo to track buffer data in a single place (1/2)\n\nThis is in preparation for layer mirroring since mirrored buffer layers\nshould just copy the bufferInfo instead of the entire BufferQueue or\nparts of BufferState\n\nTest: go/wm-smoke\nChange-Id: Iba1be05c4b038f0b678150deed8e673bf1e7710b\n"
    },
    {
      "commit": "c668734cece8d71ead434517e0a4fa9752bd79ce",
      "tree": "449bb20ee4ad3cfc8dfc400185a40a2dd3ded29f",
      "parents": [
        "6c2a8b0b10ac34eabae48945210ecbb8767935f6"
      ],
      "author": {
        "name": "Lloyd Pique",
        "email": "lpique@google.com",
        "time": "Thu Mar 07 21:34:57 2019 -0800"
      },
      "committer": {
        "name": "Lloyd Pique",
        "email": "lpique@google.com",
        "time": "Thu Sep 05 19:04:50 2019 -0700"
      },
      "message": "SF: Add ability to get basic geometry\n\nFor computing the layer visibility, CompositionEngine will need to get\nbasic geometry state for every layer, without getting everything. Add a\nnew request type for the basic geometry state, and modify the existing\ncode in computeVisibleRegions to use it rather than accessing directly\nthrough the front-end layer pointer.\n\nTest: atest libsurfaceflinger_unittest libcompositionengine_test\nTest: go/wm-smoke\nBug: 121291683\nChange-Id: Ie286fe1986a4c383ee390c1f646c7a8a5b8c14f4\n"
    },
    {
      "commit": "6c2a8b0b10ac34eabae48945210ecbb8767935f6",
      "tree": "54a9e6b6e4f929605f1ef0f57693e860b261c123",
      "parents": [
        "e1e10b016fc9ecbd6767c7aba9258cda5a821cf9",
        "a2468669661cd9bcd1258ec908716c4b85ef007e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Sep 05 23:40:39 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 05 23:40:39 2019 +0000"
      },
      "message": "Merge \"SF: Move layer visibility state to CompositionEngine\""
    }
  ],
  "next": "a2468669661cd9bcd1258ec908716c4b85ef007e"
}
