)]}'
{
  "log": [
    {
      "commit": "b0054a2646e2031b9e55230f6e511e00171601f7",
      "tree": "9a12d9a61cadf61990158af8841f2689e3848496",
      "parents": [
        "6c7b36e812413a8fb0ada8e287a648dcedfbb107"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Thu Mar 03 09:03:06 2022 -0800"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Tue Mar 15 14:40:44 2022 -0700"
      },
      "message": "SF: Unify data types for display modes\n\nRemove the RefreshRateConfigs::RefreshRate wrapper around DisplayMode.\nStore DisplayModes as a SmallMap, so that RefreshRateConfigs uses the\nsame data structure for lookup by ID. Use iterators into that map for\nall bookkeeping in RefreshRateConfigs.\n\nBug: 182939859\nBug: 185535769\nTest: libsurfaceflinger_unittest\nChange-Id: I7708fa997089802c45d906b17b7a073f5c82105e\n"
    },
    {
      "commit": "c2f84139f48115bd9552a762e3bdaf4f22c66a11",
      "tree": "9b0db9c0068fca2601a603f040742672a4387dca",
      "parents": [
        "a692e0fd5de2f551b9f6b49b3fb3f21efc7ebbc2"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Mar 09 16:26:43 2022 -0800"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Mar 09 16:33:10 2022 -0800"
      },
      "message": "SurfaceFlinger: Disable early-release on multi displays\n\nThe current logic for handling multiple calls to onLayerDisplayed is\ninsufficient. For example if we did HWC comp followed by GL comp\non a single layer in a single compose cycle, FOLLOWING a previous\ncompose cycle in which we had done the same thing. The first time\nwe would enter the first conditional and clear the fence, but then the second\ntime we would enter the first conditional and keep it. We can\u0027t do this\nthough since the buffer was just used for HWC comp and we can\u0027t early\nrelease it. To simplify things we only allow a single call to\nonLayerDisplayed otherwise we disable the optimization. We can improve\nthis to re-enable the optimization with mirroring in the future\nby tracking the state more carefully.\n\nBug: 221894151\nTest: Run screenrecord and look for glitches\nChange-Id: I73b5adac00d30750d4d79d0cbba9152df638d0e5\n"
    },
    {
      "commit": "bb40968256540c3b892bb9b4385dca655929bb2c",
      "tree": "432f3dd39dc9603582812cc9e8ae5db0e9fdb494",
      "parents": [
        "37ac7569c60dd6d62100aa27a90f1293307a8e1c"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Mar 04 16:03:37 2022 -0500"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Mar 04 17:07:23 2022 -0500"
      },
      "message": "Avoid caching EGL_SINGLE_BUFFER layers\n\nBug: 217776226\nTest: pendemo test app updates\nChange-Id: I6dde657aac1e260b5479d34120e6ca360e2616be\n"
    },
    {
      "commit": "1b700199c9f0d7169fd4598d8efaac2ab80c4a30",
      "tree": "be0088e1b04bc0547a8910ebd17d666fc4600a0a",
      "parents": [
        "c945c1b8c2beda7f2b9041e88c6ddd1657a6afba"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri Feb 04 10:09:47 2022 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri Feb 04 10:11:22 2022 -0800"
      },
      "message": "SF: Remove layer mRefreshPending tracking\n\nThis flag was used to ensure we do not latch a\nsecond buffer without going through the\ncomposition stage. This flag is not needed because\nif we latch a buffer, then we are guaranteed to go\ninto the composition stage.\n\nIncentive for this change: to rebuild the layer state,\nvia layertracegenerator, we invoke the commit stage\nover and over again. This flag prevents us from\nlatching another buffer because the tool does not\ncall composite.\n\nTest: presubmit, also presubmit with fatal log if we ever try\nto latch when mRefreshPending is true (ag/16790650)\n\nBug: 200284593\nChange-Id: I332349865b19ae7a205002167f26f5a2f76688af\n"
    },
    {
      "commit": "9f9dccb229a762c3722a40a9a94638526e71a3f8",
      "tree": "a4d9d70c0a8bd465f726bc289d810b76b5e0bca5",
      "parents": [
        "254054370df069c84e9262ae696eb3b08a78e97f",
        "2c3de224a5bf7ab375aabf21a345c52ce2f9e144"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 02 15:54:45 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Feb 02 15:54:45 2022 +0000"
      },
      "message": "Merge \"When user presses the power key while playing a local video, the surfaceflinger will crash.\" am: 60aac74fbc am: 08aa41473c am: ab5057e8c0 am: 2c3de224a5\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1920360\n\nChange-Id: I620ee0f42b2234802b92cb85506c3fd2e9cc9fbf\n"
    },
    {
      "commit": "2c3de224a5bf7ab375aabf21a345c52ce2f9e144",
      "tree": "e98e3d07f9a9398caef353d16587abd06ce4a48a",
      "parents": [
        "d1347913f109865df620af3ab8ea76f5439ea357",
        "ab5057e8c0f2b5c21cb9196f39fd0ab4e19ecba7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 02 15:39:58 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Feb 02 15:39:58 2022 +0000"
      },
      "message": "Merge \"When user presses the power key while playing a local video, the surfaceflinger will crash.\" am: 60aac74fbc am: 08aa41473c am: ab5057e8c0\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1920360\n\nChange-Id: I31b79cd93828a586bbde7421a166545f4422721a\n"
    },
    {
      "commit": "d37343ba07ce5d46cf4fd7d5facfbe2c06568149",
      "tree": "45ea8c5217397d8b93e8eac5ed4047bf05e67aeb",
      "parents": [
        "30dfc654ec79056b03f4656901a27ab82c3f5e34"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Jan 12 16:18:56 2022 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Jan 18 19:39:31 2022 +0000"
      },
      "message": "SF: Add new fields to transactions proto\n\n- track layer handle removal so layer lifecycle\n  can be recreated accurately when rebuilding layer\n  state\n- track buffer format since it affects opacity\n- track transaction ids to track transactions\n  across the system\n- also fixes relative z tracking\n\nTest: atest TransactionProtoParserTest\nBug: 200284593\nChange-Id: I037e40219f9fee8957051352beeba88681b8cf43\n"
    },
    {
      "commit": "dbbe3854efc2ceb6e0f5c2f0991161f6b7beea39",
      "tree": "67fe2c489cef63dac2179975ed7f1b1be64d7be7",
      "parents": [
        "9f0835e72949f7ed0d7df35960047931a2051a2c"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Jan 12 20:22:11 2022 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Jan 13 08:07:58 2022 -0800"
      },
      "message": "SF: Make ExternalTexture mockable\n\nExpose GraphicBuffer properties via ExternalTexture class. Within\nSurfaceFlinger access the buffer via this proxy interface.\nThis allows us to inject and mock GraphicBuffers as needed.\nSpecifically this will be used to recreate layer state from\ntransaction traces.\n\nTest: compiles\nBug: 200284593\n\nChange-Id: I2e7f6bee28314b70eac477cfadbf9f94c4d70339\n"
    },
    {
      "commit": "5061611b6e0e121dd6dc53c3c778dc8713e1a3dd",
      "tree": "2ed8684ac9904e151081bea889b78099b5160ca8",
      "parents": [
        "26a735ae0f606db67f1a623cd42a644ea902747b"
      ],
      "author": {
        "name": "eric_kuang.rs",
        "email": "eric_kuang.rs@realtek.com",
        "time": "Mon Dec 13 16:47:01 2021 +0800"
      },
      "committer": {
        "name": "eric_kuang.rs",
        "email": "eric_kuang.rs@realtek.com",
        "time": "Thu Jan 06 17:25:31 2022 +0800"
      },
      "message": "When user presses the power key while playing a local video, the surfaceflinger will crash.\n\nThe root cause is both buffer and sidebandstream of Media Player\u0027s SurfaceView are NULL after pressing power key, and then SurfaceFlinger has a nullpointer exception.\n\nChange-Id: Ifd04da2abce29a64750a65e7f1aa9a1ed6536fdf\nBug: 210383977\nTest: manual test.\n"
    },
    {
      "commit": "9a20f72a4af9a8eaabb1064a00769cd7e7625c05",
      "tree": "8c54dcf794eee7a629e6582afb2cf027aed88ddf",
      "parents": [
        "f60ade6b4c52b1f41975ed9506df1dc0b28e8857"
      ],
      "author": {
        "name": "Leon Scroggins",
        "email": "scroggo@google.com",
        "time": "Tue Dec 28 14:43:12 2021 +0000"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Tue Dec 28 11:04:38 2021 -0500"
      },
      "message": "Reland \"Add eLayerIsDisplayDecoration flag\"\n\nThe first time this topic landed, it resulted in b/212402133. We avoid\nrunning into this bug with Ib11d46439db57b90486bad07dd90f2cf0822182a.\n\nOriginal commit message:\n\nWhen this flag is set on a BufferLayer, it should use\nComposition.DISPLAY_DECORATION. The intent is that it will be set to\ntrue once on a SurfaceControl for the ScreenDecorations, and it will\nremain true, regardless of the currently used PixelFormat. When the\nPixelFormat changes (e.g. from A8 to RGBA8888 to accommodate the privacy\ndot), the HWC may change how it treats the layer.\n\nOnly respect the new flag if the caller has the INTERNAL_SYSTEM_WINDOW\npermission.\n\nBug: 193170859\nTest: manual\n\nChange-Id: I92ed7c4fdf09a2133efda4172e2f61f4a198e51b\n"
    },
    {
      "commit": "27609c37d83abfb52b7f448e9cbcce627af93416",
      "tree": "fb3f2a573abb49ab4487109200ea083d1088a078",
      "parents": [
        "c3e9a90b93f05a12bd3e0c1ec57d3a3cd103c0ab"
      ],
      "author": {
        "name": "Leon Scroggins",
        "email": "scroggo@google.com",
        "time": "Thu Dec 23 15:28:46 2021 +0000"
      },
      "committer": {
        "name": "Leon Scroggins",
        "email": "scroggo@google.com",
        "time": "Thu Dec 23 15:28:46 2021 +0000"
      },
      "message": "Revert \"Add eLayerIsDisplayDecoration flag\"\n\nRevert submission 16511727-wm_DISPLAY_DECORATION\n\nReason for revert: b/211835607\nReverted Changes:\nI1da3199ba:Allow changing composition from DISPLAY_DECORATION...\nI1fae74b36:Update documentation for DISPLAY_DECORATION\nI1da03a88f:Add eLayerIsDisplayDecoration flag\nI7f22dfd03:Add/plumb SurfaceControl.DISPLAY_DECORATION\n\nChange-Id: I449e1bb74e0d197661033bf114a25ae6ec04e418\n"
    },
    {
      "commit": "cb93d80da84605849815d95aee1bed00c2f3244d",
      "tree": "7137085591c3a49c500e84c6eccd6bcfbea15a93",
      "parents": [
        "f2869ebfae17122927ad1c4895796efd48879c71"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Mon Dec 13 16:09:54 2021 -0500"
      },
      "committer": {
        "name": "Leon Scroggins",
        "email": "scroggo@google.com",
        "time": "Tue Dec 21 20:44:17 2021 +0000"
      },
      "message": "Add eLayerIsDisplayDecoration flag\n\nWhen this flag is set on a BufferLayer, it should use\nComposition.DISPLAY_DECORATION. The intent is that it will be set to\ntrue once on a SurfaceControl for the ScreenDecorations, and it will\nremain true, regardless of the currently used PixelFormat. When the\nPixelFormat changes (e.g. from A8 to RGBA8888 to accommodate the privacy\ndot), the HWC may change how it treats the layer.\n\nOnly respect the new flag if the caller has the INTERNAL_SYSTEM_WINDOW\npermission.\n\nBug: 193170859\nTest: manual\nChange-Id: I1da03a88fb642fa775c192627f20459cae694951\n"
    },
    {
      "commit": "2e1aa18498c9e7139c17849407d4743074632e9b",
      "tree": "96c4b5b44b75e4aa3cf7edd9d44672f7c8e56e09",
      "parents": [
        "6ddaa7ae121d42d87bf65b9ee2f6a11f4c1825f9"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Dec 01 17:33:12 2021 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Fri Dec 10 13:44:04 2021 -0500"
      },
      "message": "Switch from HIDL Composition type to AIDL\n\nIn preparation for adding a new Composition type which is only in AIDL.\nThis change is almost completely mechanical, and should have no impact\non behavior.\n\nBug: 193170859\nTest: existing tests\n\nChange-Id: I1f923fcc8d8e6dff388493a76e31d435638b5255\n"
    },
    {
      "commit": "4d2588545fe9eee49a1ad5edeb4ff1c33e8081c0",
      "tree": "82c03e11a3828d74a8a299443277d02de34fe784",
      "parents": [
        "e334dd4112538701aeb4cce6b21ab167f91df1ce"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Nov 24 14:40:53 2021 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Mon Dec 06 15:25:51 2021 -0500"
      },
      "message": "Add AHB and Pixel- Formats for R8\n\nAdd AHARDWAREBUFFER_FORMAT_R8_UNORM and PIXEL_FORMAT_R_8. These will be\nused for an alpha 8 buffer representing the screen decorations.\n\nEnum value matches AIDL R_8 in\nI6f6b7f22e76609151a413ca6a6dbf55bd91911dd.\n\nBug: 193170859\nTest: make\nChange-Id: I4846327b29736ee811672801a683deb287342a8e\n"
    },
    {
      "commit": "6bb31e5d20ce9eee579009061d3787816df246c9",
      "tree": "616da6e8784673a5221e73b1f788ebd0150482ef",
      "parents": [
        "772b32776fb14cce1f03ce87676aacaf9f877565",
        "a1fd504439eea3e6c1a70a94e09690ac0ab43ee4"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Mon Nov 29 20:35:51 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Nov 29 20:35:51 2021 +0000"
      },
      "message": "Merge \"SF: Fix duplicate callbacks from mirrored layers\" into sc-v2-dev am: f2cf7639a8 am: a1fd504439\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/16358662\n\nChange-Id: I7e0001d176358f8c21ad54ee0fed10d8fa272aa5\n"
    },
    {
      "commit": "3bb11d07d941a7db96eefd389862fa1d87c810fc",
      "tree": "50e94f389a56a68841a477b898b26f535e569d5d",
      "parents": [
        "3316c9775acab304c5f790b6fa48a576563b7bcc"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri Nov 26 09:24:11 2021 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Mon Nov 29 18:18:02 2021 +0000"
      },
      "message": "SF: Fix duplicate callbacks from mirrored layers\n\nWhen cloning layers, we would also clone the layer\u0027s\ncallback handles which resulted in SF emitting duplicate\ncallbacks.\n\nTest: presubmit\nTest: launcher does not ANR when switching wallpapers with screen recording enabled\nBug: 205922358\n\nChange-Id: Ic0435164f27d9bca7f80fc57d9021a9f544c936f\n"
    },
    {
      "commit": "f5d0ea545aaea01d8d73ad97603619ec3874a2e7",
      "tree": "cd44326adcfa54fe0292c9279e40720b4f9d3c34",
      "parents": [
        "079ec332de6012a59a4bfa4ed9ba967189e0f4da"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Sun Sep 26 17:27:01 2021 -0700"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Fri Nov 19 12:53:03 2021 -0800"
      },
      "message": "SF: Remove manual enum stringification\n\nUpgrade to scoped enums where applicable. Pull GameMode from TimeStats\ninto libgui to plumb it as an enum rather than int32_t.\n\nBug: 185536303\nTest: libsurfaceflinger_unittest\nChange-Id: I81fdd24805757ef953484055ee867684eb94fecf\n"
    },
    {
      "commit": "28bbee8549d76b4e05190039285675ea19755b61",
      "tree": "5fba9876deeced72e85ce5cf1e6044a436b9a611",
      "parents": [
        "2f29049116054171e50a9f8fba0511d4e7720941",
        "c6d2d2b11684f6d306ef0fd12c909b185158e889"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 25 18:21:39 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Oct 25 18:21:39 2021 +0000"
      },
      "message": "Merge \"Revert \"Layer: Use raw pointers for Current/Drawing parent\"\""
    },
    {
      "commit": "c6d2d2b11684f6d306ef0fd12c909b185158e889",
      "tree": "8d69fb19c30e2b146e63d368e4d1268c455d7bf2",
      "parents": [
        "cbdb79a195e6c690e16948a7e7c3abbd36414b17"
      ],
      "author": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Mon Oct 25 16:51:49 2021 +0000"
      },
      "committer": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Mon Oct 25 16:51:49 2021 +0000"
      },
      "message": "Revert \"Layer: Use raw pointers for Current/Drawing parent\"\n\nThis reverts commit cbdb79a195e6c690e16948a7e7c3abbd36414b17.\n\nBug: 203175614\nBug: 203559094\nChange-Id: I5432ad46bfbbe5a009e3fb72ae7ac129263260ce\n"
    },
    {
      "commit": "08a97163caa30c57a8cbad571a358dd97a838e70",
      "tree": "0ef707753dae90219d9555b9b64f15a98808d453",
      "parents": [
        "f0026e6524e3df6b5ee774dde8c5ba52f444169d",
        "fb2ebce32db6506c04ef86a6f262383da2d07af9"
      ],
      "author": {
        "name": "Arthur Hung",
        "email": "arthurhung@google.com",
        "time": "Fri Oct 15 02:38:45 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 15 02:38:45 2021 +0000"
      },
      "message": "Merge \"Check BufferLayer\u0027s alpha value when canReceiveInput\""
    },
    {
      "commit": "c5f9d585efa6ca354f08498ed8787ae1e44a86eb",
      "tree": "2b91d0c7b059f7d9d39039fae7a880be77573b17",
      "parents": [
        "af7dc9edcd7895f811f78ae2d9fd003e4b62572d",
        "e0e0cde7fa7d4dc34fb68c862f4a255d7d3252c7"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Thu Oct 14 23:02:06 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 14 23:02:06 2021 +0000"
      },
      "message": "Merge \"SF: Decouple MessageQueue\""
    },
    {
      "commit": "fb2ebce32db6506c04ef86a6f262383da2d07af9",
      "tree": "9f5a8e60d5b9fb315110a9256f557269da2283e7",
      "parents": [
        "ca9bc644567443ae1973e368a66e1dd15d019d94"
      ],
      "author": {
        "name": "Arthur Hung",
        "email": "arthurhung@google.com",
        "time": "Mon Oct 04 14:08:48 2021 +0000"
      },
      "committer": {
        "name": "Arthur Hung",
        "email": "arthurhung@google.com",
        "time": "Tue Oct 12 00:58:36 2021 +0000"
      },
      "message": "Check BufferLayer\u0027s alpha value when canReceiveInput\n\nFor BufferLayer, the alpha value will affect the final present result.\nHowever, in previous behavior, it only checked the policy flag, that\ncould cause the transparent surface can still recevie the touch if WM\nside didn\u0027t hide the surface properly and the alpha value becomes to 0.\n\nTo fix this, we have to check the alpha value if the buffer is exist.\n\nBug: 201647070\nBug: 200837970\nTest: atest InputSurfacesTest\nTest: adb shell monkey 10000; make sure monkey does not get stuck\nChange-Id: I54090811286654062d613cf1e0a637214d1e8c5d\n"
    },
    {
      "commit": "cbdb79a195e6c690e16948a7e7c3abbd36414b17",
      "tree": "8581393599c44607b26070f85c48a84c7d10ddb7",
      "parents": [
        "9666ac5932806ba3dc1350f984818669414535e4"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Fri Jun 11 16:10:45 2021 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Fri Oct 08 11:48:12 2021 -0700"
      },
      "message": "Layer: Use raw pointers for Current/Drawing parent\n\nWe should only be reading/writing this from the main thread\nand likewise we only delete layers on the main thread and\nso using raw pointers and managing the lifetime from the\nLayer destructor will be safe. This significantly decreases\noverhead in various code that traverses via parent (getAlpha,\nisVisible, etc...).\n\nTest: Existing tests pass. simpleperf\nBug: 186200583\nChange-Id: I45745f7c865177ddfe9105d1440a9fa8f3470823\n"
    },
    {
      "commit": "e0e0cde7fa7d4dc34fb68c862f4a255d7d3252c7",
      "tree": "0339029a664c822c00d900b46cea44a5289033b9",
      "parents": [
        "8373483bae07951f447c7cc6e7babab11e4b6d7a"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Fri Jul 30 10:42:05 2021 -0700"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Thu Oct 07 20:39:01 2021 -0700"
      },
      "message": "SF: Decouple MessageQueue\n\nDefine an ICompositor interface against which MessageQueue (which ought\nto be an implementation detail of Scheduler) is implemented. Change the\nequivocal invalidate/refresh nomenclature to commit/composite. Schedule\nsampling only after composite.\n\nBug: 185535769\nTest: libsurfaceflinger_unittest\nChange-Id: I0c18f312459bae48531449f24f7b53c104fc5812\n"
    },
    {
      "commit": "b4bc092f8772538de5a134a2e025a66b851f6520",
      "tree": "d51222daf1c50866589723035df31049eab4dfbb",
      "parents": [
        "8373483bae07951f447c7cc6e7babab11e4b6d7a",
        "1dc4bfa7abbdab74ad7dd29d3c860583bfe0fd0c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 07 23:29:04 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 07 23:29:04 2021 +0000"
      },
      "message": "Merge \"Remove buffer occupancy stats\""
    },
    {
      "commit": "1dc4bfa7abbdab74ad7dd29d3c860583bfe0fd0c",
      "tree": "ea47984536064be63051d09125bfe657c003dd1f",
      "parents": [
        "f76d573a9908d06131e3ff3ca8fcf397114fdd57"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Fri Oct 01 16:31:08 2021 -0700"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Wed Oct 06 14:09:57 2021 -0700"
      },
      "message": "Remove buffer occupancy stats\n\nThese statistics tracked double and triple buffering rates in\nSurfaceFlinger, both of which are not possible to track in\nBufferStateLayer, nor were these histograms particularly looked at when\nBufferQueueLayer was using this.\n\nBug: 170662799\nBug: 199699421\nTest: builds\nChange-Id: I6c65db1cb4de790e5bf46eaff5dee5f3491a6641\n"
    },
    {
      "commit": "ba4320c070e62f3ef7aea27c04684f5b53c5707d",
      "tree": "2e5a7597f0736c24c0de9f3559f1ffae8a049179",
      "parents": [
        "4eecba7daea5100d69bf8c2d3efbbba222dc8cf5"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed Sep 15 15:20:53 2021 -0500"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Thu Sep 30 12:36:14 2021 -0500"
      },
      "message": "Combine Buffer Properties when calling setBuffer\n\nThere are several properties, like releaseCallback, acquireFence,\nframeNumber, that are tied to the buffer being set. If a new buffer is\nset, all those properties should also be overwritten, rather than\nthrough a separate call.\n\n1. Remove Transaction.setAcquireFence and Transaction.setFrameNumber and\nadded them to the setBuffer as optional\n\n2. Combine all the buffer info into a struct called BufferData that\u0027s\nsent to SF as one. This will also help with merging or overwriting\nbuffer data since the callback, frameNumber, and acquireFence should\nalso be updated.\n\n3. Combine the functions in SF so there\u0027s no longer a separate call to\nBSL to set fence. Instead, send all buffer related data to BSL.setBuffer\n\nTest: SurfaceFlinger_test\nFixes: 200065015\nChange-Id: I53ad12dd105cd4cac6c3a7ecd48279d1b3cd2b8f\n"
    },
    {
      "commit": "9691b9c07fe135b3bd1ea5375daf9aa57ec3b797",
      "tree": "1662159151108512186068c25eff4fd35c70b79c",
      "parents": [
        "fb2f9cf8ced3f8beb2009f7ac2fe1f5bfdb9819e"
      ],
      "author": {
        "name": "baocheng sun",
        "email": "baocheng.sun@amlogic.com",
        "time": "Tue Aug 03 19:27:06 2021 +0800"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Tue Aug 10 16:51:46 2021 -0700"
      },
      "message": "sf: send sideband frame to hwc when recieve a buffer\n\nBug: 186383891\nTest: tunnel and nontunnel playback switch in netflix\n\nChange-Id: Ic6ee886503639e8c6652589217e0aec893ffd681\n"
    },
    {
      "commit": "3f6385de091baf90c54c41a3d5d713b124ea0bfa",
      "tree": "02909ad29e9732ba398edf6f087fc1d1f2dec49e",
      "parents": [
        "fb4c142c32cbdff6775c79c6318e38e9d5d722c2",
        "df3da51f21dd32d47e7cd6aa04967311ecf19a8d"
      ],
      "author": {
        "name": "Sally Qi",
        "email": "sallyqi@google.com",
        "time": "Mon Jul 12 22:31:04 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 12 22:31:04 2021 +0000"
      },
      "message": "Merge \"Remove clearRegion from SurfaceView interface.\""
    },
    {
      "commit": "df3da51f21dd32d47e7cd6aa04967311ecf19a8d",
      "tree": "67409fd72e57822f305c1217ab07563ae622898c",
      "parents": [
        "13b91f2069a88fcabb7328c493dd92b17e30ac86"
      ],
      "author": {
        "name": "Sally Qi",
        "email": "sallyqi@google.com",
        "time": "Thu Jul 08 17:27:02 2021 +0000"
      },
      "committer": {
        "name": "Sally Qi",
        "email": "sallyqi@google.com",
        "time": "Mon Jul 12 17:43:02 2021 +0000"
      },
      "message": "Remove clearRegion from SurfaceView interface.\n\nBug: 181073175\nTest: VtsHalGraphicsComposerV2_2TargetTest \u0026 librenderengine_test passed\nChange-Id: I11f369d26e080ba49c7108957f8cf44c85146021\n"
    },
    {
      "commit": "39d5eeb5829aaf6011ee15e3b5159840dd034236",
      "tree": "1f35bae69f4d56158b37b958acd9f663d22b2685",
      "parents": [
        "ec5caebcd34a3b2187cfdf80fb8fd32faa1497c2"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jul 07 15:49:21 2021 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jul 07 22:50:16 2021 +0000"
      },
      "message": "SF: BufferLayer::onPostComposition display might be nullptr\n\nCheck for nullptr before using display.\n\nTest: SF unit tests\nBug: 187539899\nChange-Id: I21d1ee356f9048790a90657ea0480f4008683885\n"
    },
    {
      "commit": "3efa39426031c57902718c114ed301cc392a41ea",
      "tree": "b21d25fb180380440dbf4b3a7983c0899fb86825",
      "parents": [
        "7825c68effe771516ecfa646e9cf8f9cc269fb6c"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jun 24 19:01:25 2021 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jul 01 20:48:15 2021 +0000"
      },
      "message": "SF: move RefreshRateConfigs to DisplayDevice\n\nMove RefreshRateConfigs to DisplayDevice to be able to maintain\na per-display refresh rate switching policy.\n\nTest: SF unit tests\nTest: refresh rate switching is working on device with\nmore than one display\nBug: 187539899\n\nChange-Id: Ica6a955e8ad0e563a0740f6579b61fc592eb982c\n"
    },
    {
      "commit": "3277faf86d598a2ee1080b0bb4dd476fe1fddba8",
      "tree": "4234f214c82163f62575a7570e0b877506c87475",
      "parents": [
        "438d352932acde680c1038e1827838aca3506845"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed May 19 16:45:23 2021 -0500"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Tue Jun 29 10:56:57 2021 -0500"
      },
      "message": "Renamed and moved InputWindow and related files\n\nIn preparation for the hierarchy listener interface, moved the\nInputWindow structs into libgui and have libinput dependant on libgui.\nAlso renamed InputWindow to exclude Input since it will be used for more\ngeneric purposes.\n\nTest: Builds and flashes\nBug: 188792659\n\nChange-Id: I24262cbc14d409c00273de0024a672394a959e5f\nMerged-In: I24262cbc14d409c00273de0024a672394a959e5f\n"
    },
    {
      "commit": "98318de954ba00293cfd179266f09f266dc1c82b",
      "tree": "8c1c91d3f306c5d5b1300e2971807acafeb83129",
      "parents": [
        "99dbf9141032cb3c1453803b9a732f553b1301fc"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed May 19 16:45:23 2021 -0500"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Jun 28 09:27:55 2021 -0500"
      },
      "message": "Renamed and moved InputWindow and related files\n\nIn preparation for the hierarchy listener interface, moved the\nInputWindow structs into libgui and have libinput dependant on libgui.\nAlso renamed InputWindow to exclude Input since it will be used for more\ngeneric purposes.\n\nTest: Builds and flashes\nBug: 188792659\n\nChange-Id: I24262cbc14d409c00273de0024a672394a959e5f\n"
    },
    {
      "commit": "58069dcb4718032f891d6d17745b519d1af8e27a",
      "tree": "3000315bc21a7658ad46cbd3d6a46f7d56988375",
      "parents": [
        "3acce53a18d77add3743a1496c1f4db061d742a2"
      ],
      "author": {
        "name": "Adithya Srinivasan",
        "email": "adsrini@google.com",
        "time": "Fri Jun 04 20:37:02 2021 +0000"
      },
      "committer": {
        "name": "Adithya Srinivasan",
        "email": "adsrini@google.com",
        "time": "Mon Jun 07 18:47:42 2021 +0000"
      },
      "message": "SF - plumbing game mode for metrics (part 2)\n\nUpdate TimeStats to take in the game mode from layer for all the frames.\n\nBug: 186025682\nTest: statsd_testdrive 10063\nTest: atest libsurfaceflinger_unittest\nChange-Id: If95a8c91940228a8925ae9e4e21656d1b492a2ba\n"
    },
    {
      "commit": "ac09e45ab3aa3799ff071c8fe97ac4ebe5b9ae5c",
      "tree": "da11324df88516c236df3da14080f3868dacb610",
      "parents": [
        "3bbb2aeec278fe698e714bb4eb771cc3b06afa37"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Apr 07 16:35:37 2021 -0400"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Apr 28 16:07:25 2021 -0400"
      },
      "message": "Make sdr white point do a thing\n\nBug: 182312559\nTest: SilkFX prototype changes\n\nChange-Id: Ieca0e4c8e2229d14aac460945702d23759d208e9\n"
    },
    {
      "commit": "a102ff9348cf71ed1fc938e6e1c9fd00963123a5",
      "tree": "4a95a4f8ac8db5a7f30790b6cb1b2afed02b5d49",
      "parents": [
        "af3a22e30f36ed69f52bd8282dcebe5620c19a7a"
      ],
      "author": {
        "name": "yuhui.zhang",
        "email": "yuhui.zhang@mediatek.com",
        "time": "Fri Apr 09 14:45:51 2021 +0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Apr 21 23:09:46 2021 +0000"
      },
      "message": "Fix the secure flag check for blackout layer issue\n\nWhen there is a layer not to be composed on insecure virtual display,\nsurfaceflinger will send a black color layer to render engine to\ncompose instead of the original buffer.\n\nIf render engine supports protected context, but layer does not set\nthe eLayerSecure flag,the layer will not be set to black color layer\nand will be sent to render engine to compose on the insecure display\nbased on current logic, even if the layer buffer usage is protected.\n\nSolution: add buffer usage check for insecure display case.\nTest result: The secure layer buffer will not be sent to render engine\nfor the insecure virtual display to compose, and a black color layer\nwill be sent instead.\n\nBug: 185195873\nTest: By partner\nChange-Id: Iad53411ea642fee3e5b09222760a223b4ada61ad\n"
    },
    {
      "commit": "a90a570e5b35c72bc90bf20572dd989084c4db39",
      "tree": "f50363c7d61cfe9a5e76f376b424cf100d311690",
      "parents": [
        "7f0c9b1f96216f42425415afba5f5daffaafddef"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Fri Apr 16 16:36:21 2021 +0000"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Fri Apr 16 12:02:14 2021 -0700"
      },
      "message": "Revert \"Revert \"Add ExternalTexture class into RenderEngine inte...\"\n\nRevert submission 14199598-revert-14086921-renderengine-external-tex-QJNBWQMQEU\n\nReason for revert: Prepare for relanding\nReverted Changes:\nI01e65a7f4:Revert \"Update WaylandRenderSurface to accomodate ...\nI7d58118c1:Revert \"Update Readback VTS to align with RenderEn...\nI1501890f4:Revert \"Add ExternalTexture class into RenderEngin...\n\nAdded the following fixes:\n1. CachedSet renders to intermediate texture variable rather than\nmTexture directly, since mTexture is not guaranteed to be nonnull.\n2. Add null check when setting new buffer in BLAST.\n\nBug: 185524947\nBug: 180767535\nTest: builds, boots\nTest: librenderengine_test\nChange-Id: I52ea82e24336b496d996bbe3e445db0affe1abb8\n"
    },
    {
      "commit": "98a9c045f84102e5a3a210c514a1a9f7c31b92f8",
      "tree": "9753973abd4258c9c7a11842f03d3e8616d4102a",
      "parents": [
        "f87ec8822d2f47295fade6b5253acc8b39676699",
        "617752fa9590d39930f7bcf46abaea8f2e1e1032"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Fri Apr 16 02:07:02 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 16 02:07:02 2021 +0000"
      },
      "message": "Merge \"Revert \"Add ExternalTexture class into RenderEngine interface\"\" into sc-dev"
    },
    {
      "commit": "617752fa9590d39930f7bcf46abaea8f2e1e1032",
      "tree": "d25b577aaa7a8ffd432c63b9103bc296c6d1f7ed",
      "parents": [
        "2daef3c6ba72f364f9ac3859efc1cf2782fff67f"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Thu Apr 15 16:27:01 2021 +0000"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Thu Apr 15 16:27:01 2021 +0000"
      },
      "message": "Revert \"Add ExternalTexture class into RenderEngine interface\"\n\nRevert submission 14086921-renderengine-external-tex\n\nReason for revert: Potential culprit for b/185361988\nReverted Changes:\nI7796764e2:Update WaylandRenderSurface to accomodate interfac...\nI13904eec4:Update Readback VTS to align with RenderEngine int...\nI222c71e6e:Add ExternalTexture class into RenderEngine interf...\n\nChange-Id: I1501890f4861a3df7ce273f1fe2ccdb275e2632c\n"
    },
    {
      "commit": "0e4c8a4648f7c7e44ebd7ddd7c02302744334df6",
      "tree": "df94b977eff1f9e980c94455f282b03114efb190",
      "parents": [
        "19239b76d798157ce7bab517b5085ae684798cdf",
        "2daef3c6ba72f364f9ac3859efc1cf2782fff67f"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Tue Apr 13 22:47:22 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 13 22:47:22 2021 +0000"
      },
      "message": "Merge \"Add ExternalTexture class into RenderEngine interface\" into sc-dev"
    },
    {
      "commit": "2daef3c6ba72f364f9ac3859efc1cf2782fff67f",
      "tree": "7ccb72649ff6fa7dcaa19aa42e0d7195a5b9def3",
      "parents": [
        "f9932d790474fcf3f10c2085d18f86e672ebec54"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Fri Apr 02 16:29:27 2021 -0700"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Tue Apr 13 11:07:37 2021 -0700"
      },
      "message": "Add ExternalTexture class into RenderEngine interface\n\nExternalTexture is an RAII structure that wraps raw GraphicBuffers that\nare passed into RenderEngine. ExternalTexture\u0027s role is to help with\nmanaging GPU resources of GraphicBuffers by mapping buffers into\ntextures, EGLImages, or AutoBackendTextures depending on the\nRenderEngine backend. Under the hood, mapExternalTextureBuffer and\nunmapExternalTextureBuffer (renamed from cacheExternalTextureBuffer and\nunbindExternalTextureBuffer respectively) are used to help tie\nresource management to the ExternalTexture lifetime.\n\nThe main motivation for this is that currently managing buffer\nlifecycle has historically been errorprone and caused memory leaks, so\nthis improves code health.\n\nAs part of this:\n* mapExternalTextureBuffer and unmapExternalTextureBuffer\nare now protected methods, and are never called outside of RenderEngine\nwith the exception of creating and destroying ExternalTextures.\n* Because GLESRenderEngine\u0027s output buffers are cached differently from\nSkia RenderEngine, if there are output-only buffers then disable the\nmapExternalTextureBuffer calls whenever GLESRenderEngine is used.\n* Custom RAII classes in the Planner and in BufferLayerConsumer are now\nremoved since they\u0027re subsumed by ExternalTexture\n* RenderSurface now controls its own management of ExternalTextures in a\nsmall queue\n* cleanFramebufferCache is now unimplemented for Skia, because\nExternalTextures are now deleted whenever a RenderSurface is deleted.\n\nBug: 180767535\nTest: libsurfaceflinger_unittest\nTest: libcompositionengine_test\nTest: librenderengine_test\nTest: Simulate virtual displays\nTest: Screen reotation\nTest: Movie playback on Google TV\nTest: Force GPU composition\nTest: screenshot\n\nChange-Id: I222c71e6e1c67485cdeac49e2cb829289af9efec\n"
    },
    {
      "commit": "0758e5d1bcf68751b3b847cc542be2ec27f9b816",
      "tree": "274441a6ed22905133ce361a090398deb7529fa8",
      "parents": [
        "b7f378a110e98d05d160e1ecd34386cacd3160e6"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Thu Mar 11 22:15:04 2021 -0800"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Mon Apr 12 21:04:06 2021 -0700"
      },
      "message": "SurfaceFlinger: Remove deferTransactionUntil\n\nThere are no users left\n\nBug: 168505645\nChange-Id: I81725bf3c0ef4704e9da25da9a75854b4f172885\n"
    },
    {
      "commit": "695cb245aea04e530af4a005d21caadb0d719915",
      "tree": "4dd7ae7830d6430bfc65a33f7554277addde74e2",
      "parents": [
        "028d91e371f10df023e0a5c7038b3a7b8543593d",
        "8b9e612e0fd797e7868de435d840eb6d2d756c1b"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Mar 31 01:20:15 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 31 01:20:15 2021 +0000"
      },
      "message": "Merge \"SF: Add setFrameRate vote to TimeStats\" into sc-dev"
    },
    {
      "commit": "8b9e612e0fd797e7868de435d840eb6d2d756c1b",
      "tree": "2f7bed9e9e6a49a027a6442006fba61068d699f4",
      "parents": [
        "4fd10d8d132754131911593ebde6281931e5f54b"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Jan 26 19:11:45 2021 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Mar 30 15:57:07 2021 -0700"
      },
      "message": "SF: Add setFrameRate vote to TimeStats\n\nTest: SF unit tests\nBug: 172939060\nChange-Id: I60ea90c6f31b4bb22f39dea654de14e6c354974c\n"
    },
    {
      "commit": "7a60afbefee3ba58972cb8c4378937a362f9bde9",
      "tree": "983d597f8e5cc5e5e6478eb3012b574cd2889caf",
      "parents": [
        "4fd10d8d132754131911593ebde6281931e5f54b"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 29 13:20:55 2021 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 29 13:23:02 2021 -0700"
      },
      "message": "SF: black out layers that doesn\u0027t have gpu accessible buffer\n\nIf a layer provided a non gpu readable buffer, and that layer needs\nto be composited using the gpu, backout the layer instead of asserting\nin RenderEngine.\n\nFixes: 183950013\nTest: launch the apk attached to the bug and force client composition\nChange-Id: I068d72acf58866150284b3770b7c33da5a3bd3ac\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": "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": "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": "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": "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": "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": "045b70051322dcce2f9519b6113f349ef50d41fa",
      "tree": "948915ac2e8e86af256b97c4793e8bcfbef817c0",
      "parents": [
        "ca5d8908341cdd58936ba179d5e64d98c4db9b92"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Thu Jan 07 16:56:24 2021 +0100"
      },
      "committer": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Tue Feb 02 16:10:30 2021 +0100"
      },
      "message": "SF: Don\u0027t cache display modes in HWComposer\n\nThe display modes should be stored only in DisplayDevice.\nHaving the state also in HWComposer is unnesesary and hard to\nkeep in sync with SF, e.g. during hotplug processing of\ndisplays which can change their supported modes.\n\nAny HWC calls which need to validate their parameters need\nto go through display device. This additinally makes the\ncode more undestandable.\n\nBug: 159590486\nTest: presubmit\nChange-Id: I40b03c09a5fd6092fca0682d602deb70db022fa5\n"
    },
    {
      "commit": "e74432c55a7bd6cc904ecb673ac567e343cfe89b",
      "tree": "b21b32e7595cc7c469dca5ea6f621b3346700f35",
      "parents": [
        "fb70c46f078d8aece9fb0ece522364468f7410ce",
        "205a70eaf13e3331d6412704eadbb97495e0cf96"
      ],
      "author": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Tue Jan 19 20:50:01 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jan 19 20:50:01 2021 +0000"
      },
      "message": "Merge \"SurfaceFlinger: fix no small window displayed in PIP mode of DTVKIT [1/1]\" am: cb8eb2be57 am: 5c1bc9bc86 am: 205a70eaf1\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1537927\n\nMUST ONLY BE SUBMITTED BY AUTOMERGER\n\nChange-Id: I504b91555be57f5a3b6f0d04757ebce136bd9611\n"
    },
    {
      "commit": "dcff00c8a82718f319488ce8548dcd192e841405",
      "tree": "948b2edfafc47abe010e2a135bcbd43c27eb040b",
      "parents": [
        "7ac860e54f520abad2ae87def8c3b4e04f3a3696"
      ],
      "author": {
        "name": "Tianhua Sun",
        "email": "tianhua.sun@amlogic.com",
        "time": "Tue Dec 29 07:20:55 2020 -0500"
      },
      "committer": {
        "name": "jie.yuan",
        "email": "jie.yuan@amlogic.com",
        "time": "Tue Jan 19 17:12:24 2021 +0800"
      },
      "message": "SurfaceFlinger: fix no small window displayed in PIP mode of DTVKIT [1/1]\n\nBug:146758432\nPD#SWPL-39338\n\nProblem:\nDtvkit, no small window displayed in pip mode\n\nSolution:\nporting from I82d81ded\nFor surfaceview of tv sideband, there is no activeBuffer in bufferqueue.\nClientCompostion layer if above it need plug holes for this case.\n\nVerify:\nohm\n\nChange-Id: Id92c3856eb8eb5a14813336f723d30b7a17514b1\nSigned-off-by: Tianhua Sun \u003ctianhua.sun@amlogic.com\u003e\n"
    },
    {
      "commit": "63a3e592e71169909b06843f781f7ea2cd1ff958",
      "tree": "a64d68cf9245a9fdb394c8b9dcda3c2e250c4e67",
      "parents": [
        "ae9bf1e192f93b5ad259f7c13c5b72264d9c57a2"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jan 06 10:47:15 2021 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jan 06 22:34:12 2021 +0000"
      },
      "message": "SurfaceFlinger: Layer::shouldPresentNow should consider early frames\n\nMove the decision whether to latch a buffer or not based on\nthe expected present time (that is whether a frame is considered too\nearly or out of vsync phase) from Layer::latchBuffer to\nLayer::shouldPresentNow as the code assumes that Layer::latchBuffer would\nnot fail based on the expected present.\n\nBug: 176755514\nBug: 176416352\nTest: atest CtsViewTestCases:android.view.cts.ASurfaceControlTest\nTest: atest FrameRateOverrideHostTest\nChange-Id: Ib83bda41c824549011f12fa5414263c8b03032e4\n"
    },
    {
      "commit": "ce4adf1b97be29a65f5b36c345f36651bff1e619",
      "tree": "845518f3e4e278a6cc43307fdd8b3901bfe778c6",
      "parents": [
        "f0c5649f2ed8ca5fba07389908b2491007d50b08"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Dec 15 18:45:12 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Dec 23 22:44:57 2020 +0000"
      },
      "message": "SurfaceFlinger: fix early latching of buffers\n\nUse the FrameTimeline::SurfaceFrame predicted present time\nto avoid latching a buffer too early (i.e. before the time\nSurfaceFlinger planned to latch this buffer when the app requested\na vsync callback).\n\nBug: 169901895\nTest: expand notification shade and observe systrace\nChange-Id: I823546992c89f88c0c29b839ce21c79ff1ffcfbd\n"
    },
    {
      "commit": "0bb6a47f5264571690d57c609f0e945086dba9b1",
      "tree": "f9ab6720e867e1f133360a4515036e15e4f1694f",
      "parents": [
        "9febda8e05bbd924d14682454fdc7a846c38f954"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Oct 12 10:22:13 2020 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Nov 03 10:19:21 2020 -0800"
      },
      "message": "SurfaceFlinger: throttle applications based on uid\n\nAdd the ability for SurfaceFlinger to be able to throttle down to\na divider of the refresh rate (i.e. for 30/45 for 90Hz)\n\nChange-Id: I6bfd6f43ee1f30e771a136c558d8ae9a6d7fbe0f\nTest: Manually via 1039 SF backdoor\nBug: 170502573\nBug: 169270763\nBug: 169271059\n"
    },
    {
      "commit": "e7f79c51ec0d00bc79d9e4f017a56cdb627667bb",
      "tree": "6e56b2749c59007401856ca41dd9299d9073e471",
      "parents": [
        "c88cf4a5a81f89894696623b0560954d162e5217"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Oct 29 14:45:03 2020 -0700"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Oct 29 14:45:03 2020 -0700"
      },
      "message": "Check if the buffer is actually being scaled instead of only checking scaling mode\n\nBufferStateLayers have a default scale to window scaling mode which\nmeans the layers would be set use texture filtering regardless of\nthe buffer size. This was breaking some pixel by pixel screenshot\ncomparison tests. Instead check if the buffer size, after applying\nany buffer transforms, matches the layer size.\n\nTest: android.view.inputmethod.cts.FocusHandlingTest#testNonFocusablePopupWindowDoesNotAffectImeVisibility\nChange-Id: I90b05187a2e22834a99d3690095293fa37118734\n"
    },
    {
      "commit": "916b036726e2e82f769405d25bf6b8248572246c",
      "tree": "b431c4921ae739367dcac4d862c29c83ad765623",
      "parents": [
        "b52d4c4d3a1272a9ca9873f68de41f0cd4823c24"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Tue Oct 06 13:53:03 2020 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Oct 07 16:13:45 2020 -0700"
      },
      "message": "SurfaceControl: Remove setOverrideScalingMode\n\nFollowing recent frameworks/base changes there are no callers.\n\nBug: 161937501\nTest: Existing tests pass\nChange-Id: I1a39d30ebd70a0b0cb430a6d1ae48086c3e1806e\n"
    },
    {
      "commit": "0f10d0db65310f0734394c3809d78a4ee33ea364",
      "tree": "013940f5629ea7eabffad76c0164515a067d2776",
      "parents": [
        "384914ae21897bc2bdfaef8636984437311d44da"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Thu Aug 06 20:04:06 2020 +0200"
      },
      "committer": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Tue Oct 06 11:27:51 2020 +0200"
      },
      "message": "Revert^2 \"[SF] Introduce VirtualDisplayId\"\n\nThis change introduces a new class VirtualDisplayId which is\ninherited by HwcVirtualDisplayId and GpuVirtualDisplayId.\nHwcVirtualDisplayId replaces the current ids assigned to\nvirtual displays backed by HWC. GpuVirtualDisplayIds are random\ngenerated IDs assigned to non HWC virtual displays, which currently\ndon\u0027t have IDs. This way all compositionengine/Display and\nDisplayDevice objects have a DisplayId.\n\nThe logic for ID generation is encapsulated in DisplayIdGenerator.h.\n\nBug: 162916145\nBug: 160679868\nBug: 137375833\nTest: scrcpy on device\nTest: atest DisplayIdGeneratorTest\nTest: atest libsurfaceflinger_unittest\nTest: m WITH_TIDY\u003d1 surfaceflinger\nChange-Id: I6e7247d18e3521978dfd8af2dc7b1d36ccaa7313\n"
    },
    {
      "commit": "2ec5391acfc340c2e195d573cf5a078ff0f280d2",
      "tree": "058e3afc07c6471954253ba070857881d8fe427b",
      "parents": [
        "12d24c504621cc5ff117b41726d734475eb8836c"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Jul 07 16:53:55 2020 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Jul 07 16:54:47 2020 -0700"
      },
      "message": "Remove obsolete debug option\n\nThis is dead code, stop maintaining it\n\nFixes: 159912967\nTest: builds\nChange-Id: Ia453eaf895554adbb2fa9c11c2bc8609e1037ea5\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": "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": "a6bb2bc91914e1af8394f319911cce73b57355bf",
      "tree": "b81442839108f14ad865ba2a9f83b9cdcbb99394",
      "parents": [
        "696b6c83b15397d6c6088f5be58e5f78e998d72b"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Apr 08 11:03:23 2020 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Mon Apr 13 11:42:57 2020 -0700"
      },
      "message": "Buffer(Queue/State)Layer: Consolidate preparePerFrameCompositionState\n\nThe only difference is the BLAST implementation fails when there is\nno cached buffer. While in general we expect cacheBuffers to be called\nby apply() there\u0027s no reason to add more code just to fail here.\nNoticed this while investigating a bug where cacheBuffers wasn\u0027t\ncalled.\n\nBug: 153561718\nTest: Existing tests pass\nChange-Id: If1faae68ef11de3f8b37474abeff14c42af3cd57\n"
    },
    {
      "commit": "5a6d857f3361f46d58314ff45a074157b2600a92",
      "tree": "ea61553b7646cd0aa39995553821da5eafa9355a",
      "parents": [
        "dd543193a946ee8e65211742bfc6f667f906e141"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Mon Mar 23 23:56:15 2020 -0700"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Tue Apr 07 19:53:18 2020 -0700"
      },
      "message": "Fix filtering for screenshotting custom displays.\n\nPreviously, filtering was computed for screenshots by checking if\nfiltering was required for the DisplayDevice itself. That\u0027s correct for\nrendering custom display sizes since we need to upsample to the\nphysical panel, but it\u0027s wrong for screenshotting to an output buffer\nwhere the logical transform does not involve a scale. Instead, we want\nto compare the source crop with the destination buffer size when\ndetermining whether we need to apply linear filtering.\n\nAs part of this, some of the rendering math is now simpler. Rather than\nsetting DisplaySettings::physicalDisplay and DisplaySettings::clip to be\nthe same and explicitly computing the transform matrix in RenderEngine,\nwe instead set DisplaySettings::clip to be the logical viewport. Then\nthe global transform is implicitly applied as part of mapping the output\nin glViewport. This is because if the logical display is smaller than\nthe screen size, with the previous behavior applying the global transform\nwill scale up the layer stack to the physical display size. But if we\nwant pixel-accurate screenshots we will need to downsample back down to\nthe logical display size, which may cause errors. The math simplification\nwill avoid that scenario entirely.\n\nThis also means that screenshot code needs to be adjusted - some callers\npass in a cropping rectangle that assumes the display screenshot is\ncaptured in portrait orientation. Other callers pass in a cropping\nrectangle relative to a particular layer\u0027s coordinate space. For each of\nthose paths, the cropping rectangle must be transformed to the logical\ndisplay space.\n\nThis has also discovered a bug in setting the background fill of the\nscreenshot, which has now been fixed.\n\nBug: 129101431\nTest: adb shell screepcap\nTest: Modify wm size and density, and run\nSurfaceViewTests#testMovingWhiteSurfaceView\nTest: Capture screenshots through vysor\nTest: Capture screenshots on Pixel 3XL with notch hide\nTest: Physically capture screenshots\nTest: Display rotations\nTest: SurfaceFlinger_test\nTest: librenderengine_test\nTest: libsurfaceflinger_unittest\nTest: libcompositionengine_test\n\nChange-Id: I7f4e98d4c5aa53a995fd7da70078a2e5ea43b14f\n"
    },
    {
      "commit": "debadb8a591ee9ed10405f541138828871c7dc49",
      "tree": "0022f31b2ab6ab3b92f9fd1ac17b1ea2c2d28d62",
      "parents": [
        "edbc86de0530ebe4919ce9a84b221f4f32fd67e1"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Thu Mar 26 14:57:24 2020 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Mar 30 19:12:42 2020 -0700"
      },
      "message": "Use pixel format from buffer to determine opacity.\n\nThe format that\u0027s passed into BufferQueueLayer creation is meant to\ndefine what format the buffers should have that are dequeued from the\nconsumer. If the client submits its own buffers, they can have any\npixel format. Therefore, the format from the activeBuffer should be used\nwhen determing opacity since that\u0027s the information about the buffer\nthat will be rendered.\n\nBug: 152162496\nTest: LayerTypeAndRenderTypeTransactionTest#SetBufferFormat\nChange-Id: I4295b837369b8ca8918d8398a29cab133a47cbf7\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": "855c171f5f20f5bfd9daa342f73471e163263a07",
      "tree": "02b56a073c91bb88961c54df44e629ea83497d0b",
      "parents": [
        "2095463ae4d0cc3d2c8420443ea25ab125198d4d",
        "93d5a5e4b7e82e594e539c2e5fee49e5631ce0b7"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sun Feb 16 01:07:45 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Feb 16 01:07:45 2020 +0000"
      },
      "message": "Merge \"Actually finalize frame event history before sending callbacks\""
    },
    {
      "commit": "93d5a5e4b7e82e594e539c2e5fee49e5631ce0b7",
      "tree": "a5506264235db5102ae87c197e77438fe90d041a",
      "parents": [
        "edd6bc95bbc71b94bd1d760c0ce8054cb521835f"
      ],
      "author": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Thu Feb 13 14:50:01 2020 -0800"
      },
      "committer": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Thu Feb 13 14:50:01 2020 -0800"
      },
      "message": "Actually finalize frame event history before sending callbacks\n\nBug: 141939081\nTest: build, boot, libgui_test\nChange-Id: I33f14405ae7bebe28daf87c7fa37e9f27d5b04cd\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": "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": "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": "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": "718f9601c611f657fd872f84f27d5cc9aec533b4",
      "tree": "cf804b09c7c66fbb4b0babf583e3185744847998",
      "parents": [
        "d5e21492de9fa2af0f14fe7a1dddc1e91ec1b69f"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Sat Nov 09 20:01:35 2019 -0800"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Tue Jan 07 12:24:35 2020 -0800"
      },
      "message": "ui: Deduplicate rotation types\n\nIntroduce ui::Rotation, replacing ISurfaceComposer::Rotation as well as\nDISPLAY_ORIENTATION_* and DisplayState::eOrientation* constants.\n\nlibinput has widespread use of int32_t for orientation, so move\nDISPLAY_ORIENTATION_* to input/DisplayViewport.h for now.\n\nBug: 144601064\nTest: go/wm-smoke\nTest: screencap\nChange-Id: Ic4b8494e37c9d79c00d5b4be5eb88585f09efebf\n"
    },
    {
      "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": "1a70eca966bd52868d5599c5100c380d88f86b6d",
      "tree": "9f57e87111f39cb764ea6f1df0722b67956d8504",
      "parents": [
        "37896bbebf702c980f3b9f9fd2dcace7c2316836"
      ],
      "author": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Fri Nov 15 09:33:33 2019 -0800"
      },
      "committer": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Fri Nov 22 09:43:11 2019 -0800"
      },
      "message": "Use max mastering luminance and max content luminance from HdrMetadata.\n\nPreviously we hard coded 1000.0 nits as the max mastering luminance and max\ncontent luminance. However, this causes bad experience especially when the max\ncontent luminance is lower than 1000.0 nits.\n\nBUG: b/141647818\nTest: manual\nChange-Id: I630469a4e3e95b2ca8c776dc1284208397b385ad\n"
    },
    {
      "commit": "b69e076883fb1f11466dabddc7053b213fde84b5",
      "tree": "3dd827f49de9135d43d96bb842e604b7ddf48115",
      "parents": [
        "871023e652a6b24714291dec6da86d883c30bd6c"
      ],
      "author": {
        "name": "Adithya Srinivasan",
        "email": "adsrini@google.com",
        "time": "Mon Nov 11 18:39:53 2019 -0800"
      },
      "committer": {
        "name": "Adithya Srinivasan",
        "email": "adsrini@google.com",
        "time": "Mon Nov 18 12:41:42 2019 -0800"
      },
      "message": "Add trace event for fallback composition\n\nWhen the HWC rejects composition of any layer, it is returned to\nsurfaceflinger and queued to the GPU for doing client composition.\nThis event is important to track as it can show why the GPU is busy at\nthat time.\n\nTest: Set fallback composition in the middle of a GAPID trace from the\ncommandline\nBug: 140236090\n\nChange-Id: Id1cb71f301023743dc9fa6a1396f8a525b5de7bd\n"
    },
    {
      "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": "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": "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": "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": "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": "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": "f83ce183aa13db5e66b5fd5e6bd09de5169373c5",
      "tree": "efc4e8cc8f5fde70a11c2cbfc856649ce3515df6",
      "parents": [
        "7350bb205574f70a2178ff12182f98094443bd57"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Thu Sep 12 14:43:08 2019 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Thu Sep 12 17:34:31 2019 -0700"
      },
      "message": "Corrected drawingTransformMatrix\n\nThe transformMatrix needed to be calculated in prepareClientComposition\nso storing it in BufferInfo was incorrect. Instead, allow the transformMatrix\nto get calculated when prepareClientComposition but avoid using the consumer\nfor BufferQueueLayer.\n\nAlso combined getDrawingTransformMatrix and setFilteringEnabled since\nsetFilteringEnabled was only used to update the transformMatrix before getting\nit. BufferQueueLayers no longer go through the consumer to get the\ntransformMatrix and just directly calculate the matrix using the GLUtils class.\n\nFixes: 140759442\nTest: atest android.view.cts.ASurfaceControlTest\nChange-Id: I09179de275bd905960fb366e45e36fb9874bc0b3\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": "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": "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\""
    },
    {
      "commit": "a2468669661cd9bcd1258ec908716c4b85ef007e",
      "tree": "359500a95d407ae8c72556e636249dd592ff2e0c",
      "parents": [
        "26d03fdb99ed937981fd6f818a034b43c6790402"
      ],
      "author": {
        "name": "Lloyd Pique",
        "email": "lpique@google.com",
        "time": "Thu Mar 07 21:31:06 2019 -0800"
      },
      "committer": {
        "name": "Lloyd Pique",
        "email": "lpique@google.com",
        "time": "Wed Sep 04 19:08:51 2019 -0700"
      },
      "message": "SF: Move layer visibility state to CompositionEngine\n\nThe layer visibility/coverage state was the last bit of\ndisplay-dependent data that had not yet been moved to\nOutputLayerCompositionState. This moves it, and fixes up all references\nto the data to get it in a display-dependent way.\n\nTest: atest libsurfaceflinger_unittest libcompositionengine_test\nBug: 121291683\nChange-Id: Id9f314f05b743212dba3a113df2baeb38fd19eb8\n"
    },
    {
      "commit": "90092f4335b7360b149a57ee759df778e099ff87",
      "tree": "5725e9600ce49c70c3ced8b2d73a6ab70e76ba90",
      "parents": [
        "7fcea26183280ad81d09835c8fabf4fe095e3300"
      ],
      "author": {
        "name": "Mikael Pessa",
        "email": "mikaelpessa@google.com",
        "time": "Mon Aug 26 17:22:04 2019 -0700"
      },
      "committer": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Fri Aug 30 17:46:03 2019 +0000"
      },
      "message": "Refactor: Pull tracing out of TimeStats.\n\nThe tracing in TimeStats ended up having no actual overlap with current\nTimeStats functionality. This CL pulls all tracing related code out\ninto its own class.\n\nTest: atest libsurfaceflinger_unittest and manually inspected traces.\n\nRun trace with:\n{ adb shell perfetto -c - --txt -o /data/misc/perfetto-traces/trace \u003c\u003cEOF\nbuffers: {\n    size_kb: 1280\n}\ndata_sources: {\n    config {\n        name: \"android.surfaceflinger.frame\"\n    }\n}\nduration_ms: 3000\nEOF\n} \u0026\u0026 adb pull /data/misc/perfetto-traces/trace ~/Desktop/trace\n\nFixes: 140298240\nChange-Id: I52d80d46eb8dee8979b02416ab7a758b7e58dfd1\n"
    },
    {
      "commit": "2e1608ff49148a8d99c2e33897fa0e5c3ce532c2",
      "tree": "2ff7a03aa1db3c25e86490396e282135a59aed33",
      "parents": [
        "f0aa9016e99a441e2bc2048ddd55b1437b3f6daa"
      ],
      "author": {
        "name": "Mikael Pessa",
        "email": "mikaelpessa@google.com",
        "time": "Fri Jul 19 11:25:35 2019 -0700"
      },
      "committer": {
        "name": "Mikael Pessa",
        "email": "mikaelpessa@google.com",
        "time": "Wed Aug 28 11:15:25 2019 -0700"
      },
      "message": "Add per-buffer perfetto trace points for SurfaceFlinger frame events\n\nIn order to track how buffers move through the system, we add per-buffer perfetto trace points for SurfaceFlinger.\nThe majority of these were already tracked through TimeStats, so the new tracing was built on top of TimeStats.\n\nTest: atest libsurfaceflinger_unittest\n\nRun trace with:\n{ adb shell perfetto   -c - --txt   -o /data/misc/perfetto-traces/trace \u003c\u003cEOF\nbuffers: {\n    size_kb: 1280\n}\ndata_sources: {\n    config {\n        name: \"android.surfaceflinger.timestats\"\n    }\n}\nduration_ms: 3000\nEOF\n} \u0026\u0026 adb pull /data/misc/perfetto-traces/trace ~/Desktop/trace\n\nChange-Id: Ifb38c64a9966fece735f0ad72438c7c9c5e07baa\n"
    },
    {
      "commit": "49a108cda1eda5ce10b7532bf56482d80ae90afa",
      "tree": "0054605dc27b8a6ac651c2f0341ccceb35bdd518",
      "parents": [
        "c603c81ddb3cbe76aa4742162151792ac0d52d13"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Aug 12 11:23:06 2019 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Thu Aug 15 12:54:05 2019 -0700"
      },
      "message": "Latch and relase buffers for offscreen layers on main thread.\n\nThe current code was calling fakeVsync, which was latching and releasing\nbuffers on a binder thread when a new frame arrived. This was causing a\nrace with the latchBuffer on the main thread. This change calls\nlatchAndReleaseBuffer on the main thread for offscreen layers to ensure\nwe don\u0027t block dequeueBuffer but also don\u0027t race the other latchBuffer\ncall.\n\nFixes: 139118508\nTest: Race was only reproducible in monkey tests\nChange-Id: Ie7d87aa775c215de3fb2322b73849402596cc3fc\n"
    },
    {
      "commit": "688abd459a80ad7ec491eae024c330265f8fcc16",
      "tree": "bc110720f2139a825ad4944f8b55501e464a204b",
      "parents": [
        "1de51596ed15d360b269e109ac20bc82a324564f"
      ],
      "author": {
        "name": "Lloyd Pique",
        "email": "lpique@google.com",
        "time": "Fri Feb 15 15:42:24 2019 -0800"
      },
      "committer": {
        "name": "Lloyd Pique",
        "email": "lpique@google.com",
        "time": "Mon Aug 12 17:46:30 2019 -0700"
      },
      "message": "SF: Move doComposeSurfaces to CompositionEngine\n\nTest: atest libsurfaceflinger_unittest libcompositionengine_test\nBug: 121291683\nChange-Id: Iae3377a5ea018f9ec53c5a76ed6a86620f39b731\n"
    },
    {
      "commit": "f16688fcebb22193b555e24c329155f6f0a2f372",
      "tree": "36fb03c744d1dea638b9337343809dbe50b84616",
      "parents": [
        "d0a92a0dd469f59029f60cc67352564fe5f84e1f"
      ],
      "author": {
        "name": "Lloyd Pique",
        "email": "lpique@google.com",
        "time": "Tue Feb 19 17:47:57 2019 -0800"
      },
      "committer": {
        "name": "Lloyd Pique",
        "email": "lpique@google.com",
        "time": "Thu Aug 01 17:45:11 2019 -0700"
      },
      "message": "SF: Introduce LayerFE::prepareClientComposition\n\nRenames Layer::prepareClientLayer, and alters it to not take a\nRenderArea.\n\nTest: atest libsurfaceflinger_unittest libcompositionengine_test\nBug: 121291683\nChange-Id: I6da6005c2e34e6e44692043cdc7adf9c4aa57cf5\n"
    },
    {
      "commit": "ef4c7148ac5d07963959589c8d3a0097ab18149f",
      "tree": "c6ca6668db57b34be704d24ab0a830f1d3cf68e5",
      "parents": [
        "c6b39156522bad9e546b91c047677b6ac077657e",
        "f527548dd751bd62b1302cf357fdb4840bc115a9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 29 21:56:09 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 29 21:56:09 2019 +0000"
      },
      "message": "Merge \"SF: Move/Refactor Layer::setPerFrameData\""
    },
    {
      "commit": "a8955dd64c0c7fd355a7a3973403c3ba916d6f27",
      "tree": "6b30a3254d5d63ae0658a6a19c96eebb66510895",
      "parents": [
        "654952126842b40699ae0bd8958b2a6eaaeb80d5"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Wed Jul 10 10:19:09 2019 -0700"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Fri Jul 26 10:27:49 2019 -0700"
      },
      "message": "SF: Factor out expected present time computation\n\nCompute expected present time once and pass it to traversed layers\ninstead of calling back into SF for each layer. This will simplify\nsynchronization for per-display refresh.\n\nAlso, recompute on Binder transaction, since the cached value computed\non invalidate may be stale.\n\nBug: 130554049\nBug: 123715322\nTest: go/wm-smoke\nChange-Id: I7153a728360e789dc4f97d2c39c4bdaa14183624\n"
    },
    {
      "commit": "f527548dd751bd62b1302cf357fdb4840bc115a9",
      "tree": "6697f243f1c9cdbc46698e25b2ea8ff56d89ae22",
      "parents": [
        "216aa49fbf5b02ce36ce2de4e3d1728d8b02e14f"
      ],
      "author": {
        "name": "Lloyd Pique",
        "email": "lpique@google.com",
        "time": "Tue Jan 29 18:42:42 2019 -0800"
      },
      "committer": {
        "name": "Lloyd Pique",
        "email": "lpique@google.com",
        "time": "Thu Jul 18 14:02:08 2019 -0700"
      },
      "message": "SF: Move/Refactor Layer::setPerFrameData\n\nMoves functionality out of ColorLayer, BufferLayer, BufferStateLayer and\nBufferQueueLayer related to setting the per-frame data.\n\nInstead each of the front-end classes now implements a minimal function\nto set the per-frame state into the LayerFECompositionState structure.\n\ncompositionengine::OutputLayer now takes care of sending the state to\nthe HWC, and in particular with detecting when client composition needs\nto be forced due to lack of HWC support (though the front-end can also\nset a flag to force client composition for a few things it knows about).\n\nSurfaceFlinger::calculateWorkingSet is also refactored to work with the\nchanges made, and prepare it to be moved over to 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\nBug: 121291683\nChange-Id: I2cb0442f68ec5c5f65f5b4cb418dda4c42e5dc39\n"
    }
  ],
  "next": "e60041e06161e28613b72206e38552e7fc621cbb"
}
