)]}'
{
  "log": [
    {
      "commit": "d2afdfcbc44135e74f6a025d526e3b8fd9739c99",
      "tree": "45ccbcc0744c39ad98e9742244902aad79f179d2",
      "parents": [
        "9f3153648834dfa2222d3b001d0ecd3c4933127d",
        "e0eafa8e477891069538422bc3a1fc865182176d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 04 09:40:49 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 04 09:40:49 2022 +0000"
      },
      "message": "Merge \"CompositionEngine: fix memory leak in unit tests\""
    },
    {
      "commit": "7ae2eac6b2b091afd7830bb9265d66a9c9e866bf",
      "tree": "9ee74b049a489ac3d91addceda85acff0faf84f9",
      "parents": [
        "c00c606060bc3d12096f21620bf3921dda3ff442",
        "4af15ae1f6059c697a37193c8f82846f903f8367"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Feb 03 15:17:27 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 03 15:17:27 2022 +0000"
      },
      "message": "Merge \"SF: Remove \"-fvisibility\u003dhidden\" flag from sf build\""
    },
    {
      "commit": "e0eafa8e477891069538422bc3a1fc865182176d",
      "tree": "b9c97b2d0388e58d988c77e9080db5cdfee394d0",
      "parents": [
        "51ae9d7ef8309c2f9d80f3a04826589039e59b7e"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Feb 02 19:30:47 2022 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Feb 02 19:35:27 2022 -0800"
      },
      "message": "CompositionEngine: fix memory leak in unit tests\n\nLayerFE implements RefBase, and instantiating it on stack\ncauses a memory leak of the shared state.\n\nBug: 198190384\nTest: libcompositionengine_test\nChange-Id: If0f847bdf93359b206f7ce77ded9a8d5feb4e31c\n"
    },
    {
      "commit": "4af15ae1f6059c697a37193c8f82846f903f8367",
      "tree": "c7a1943aacbed5901c1f768a55fcca44f62ab772",
      "parents": [
        "fde595b0ff0dae1f770ab949ed4d1923375a6002"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Feb 02 16:14:54 2022 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Feb 02 16:14:54 2022 -0800"
      },
      "message": "SF: Remove \"-fvisibility\u003dhidden\" flag from sf build\n\nThis flag along with -fwhole-program-vtables may result in ODR violations. See\nbug for more details.\n\nFixes: 217612145\nTest: ag/16761579 no longer repros\nChange-Id: Ic85d934c6e1a3706382a80cf09048b86543208b6\n"
    },
    {
      "commit": "fe423e31c13ebb0e46350651474bd5164d407351",
      "tree": "4bc97aa7fee5bb4fee370975989d9d92912d6469",
      "parents": [
        "9f9dccb229a762c3722a40a9a94638526e71a3f8",
        "16ca297c1c6a5a1b95d463c07d2f6f09e04ef862"
      ],
      "author": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Wed Feb 02 17:14:21 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 02 17:14:21 2022 +0000"
      },
      "message": "Merge \"Correct error handling in getPreferredBootDisplayMode\""
    },
    {
      "commit": "16ca297c1c6a5a1b95d463c07d2f6f09e04ef862",
      "tree": "7eb78a819c93961227ca829d499e208ba718b67c",
      "parents": [
        "a27a21081f4d4b29454acef431d4bbde5cc9a87f"
      ],
      "author": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Tue Feb 01 20:07:03 2022 +0100"
      },
      "committer": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Wed Feb 02 16:52:25 2022 +0000"
      },
      "message": "Correct error handling in getPreferredBootDisplayMode\n\nBug: 217335654\nTest: verified on forrest\nChange-Id: I685a2e3b4f80c0898f778a170a30f882f640adb4\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": "ab5057e8c0f2b5c21cb9196f39fd0ab4e19ecba7",
      "tree": "cf3bdda1f928036664037e970e130ca911c4e9ed",
      "parents": [
        "5838e98c61b0d6cfd4f8825d36ab753d70ee4c25",
        "08aa41473c87aa37ec2fc679e0a4f9108c2aaf49"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 02 15:30:07 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Feb 02 15:30:07 2022 +0000"
      },
      "message": "Merge \"When user presses the power key while playing a local video, the surfaceflinger will crash.\" am: 60aac74fbc am: 08aa41473c\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1920360\n\nChange-Id: I27b3c33dbbbc5d65c7aedd4bd9f5dee4e123828d\n"
    },
    {
      "commit": "60aac74fbc7ae26d82accb3aa017ae3045da9ed0",
      "tree": "d22af95d8e8757eb39ac001033fdf4b317188e72",
      "parents": [
        "433448527019306bebd8c6537de75bb249f6340b",
        "5061611b6e0e121dd6dc53c3c778dc8713e1a3dd"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 02 14:54:57 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 02 14:54:57 2022 +0000"
      },
      "message": "Merge \"When user presses the power key while playing a local video, the surfaceflinger will crash.\""
    },
    {
      "commit": "8d5a43763e4ce489466600678b74ee2ba324a833",
      "tree": "22ea6403e9fbfdae294614d1b2d60d86ed847f33",
      "parents": [
        "c4b5a89b7c336645f5cf5c9114b60900f6a3df6f",
        "3fc5f4b76576f9c0c35933b3d5f832ba08f3507b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 01 22:09:14 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Feb 01 22:09:14 2022 +0000"
      },
      "message": "Merge \"Ensure deferred cleanup when display is off\" am: 5cc75e347f am: bd970d02bc am: 4d22ff3782 am: 3fc5f4b765\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1952223\n\nChange-Id: I9ff741dd575cfa3e9cf83861d31787c9d6a18310\n"
    },
    {
      "commit": "3fc5f4b76576f9c0c35933b3d5f832ba08f3507b",
      "tree": "76de324d638292d2b2e9c83dd7c83a6253a3be06",
      "parents": [
        "f5be7bb70465f364a1e9c12ac8cb110eac9128e3",
        "4d22ff37827670eafb72cfa361dac2f7b807906c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 01 21:55:32 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Feb 01 21:55:32 2022 +0000"
      },
      "message": "Merge \"Ensure deferred cleanup when display is off\" am: 5cc75e347f am: bd970d02bc am: 4d22ff3782\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1952223\n\nChange-Id: If8a085c2e88386527044eeb0af9ac89fa09258d7\n"
    },
    {
      "commit": "4d22ff37827670eafb72cfa361dac2f7b807906c",
      "tree": "189eedb302c3f42fdc3c6ceb73fcc79d2b69a58b",
      "parents": [
        "11ea0f2eeb202d7722dbc30e7721735239464bb7",
        "bd970d02bc3721f9bf37181259e516a730f340cc"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 01 21:44:48 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Feb 01 21:44:48 2022 +0000"
      },
      "message": "Merge \"Ensure deferred cleanup when display is off\" am: 5cc75e347f am: bd970d02bc\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1952223\n\nChange-Id: I65ae8da429a12380143ffc18281e6c58f2be770d\n"
    },
    {
      "commit": "5cc75e347f53b5a06b989a2a69bdba9831c2ec32",
      "tree": "5115c3b735114abd51c97f05a025ddd6cc27b5f2",
      "parents": [
        "0793bb709a812aed1bf59a18351f803b6f1a2763",
        "d9e54691c35c715c096d25e656911f818e1fb706"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 01 21:13:56 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 01 21:13:56 2022 +0000"
      },
      "message": "Merge \"Ensure deferred cleanup when display is off\""
    },
    {
      "commit": "d66080249411f358496dc206cf1d8ee836c43a36",
      "tree": "8e203e71f58341e0d08abcea304f2f719159cd73",
      "parents": [
        "599126ca2f033c17642dfeb0848a7fbd4ca4b60e",
        "8c59b2724c295db6f255220c6bbfc5701111edfb"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 31 22:22:40 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 31 22:22:40 2022 +0000"
      },
      "message": "Merge \"Revert^2 \"Added surfaceflinger_displayhardware_fuzzer\"\""
    },
    {
      "commit": "8c59b2724c295db6f255220c6bbfc5701111edfb",
      "tree": "28a6ace13580b3ea2f9b81938fb290c0e072287c",
      "parents": [
        "624d5609e9fb34442a08fedc6d5e89f34a1ae04a"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Sat Jan 15 00:34:20 2022 +0000"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Mon Jan 31 19:47:17 2022 +0000"
      },
      "message": "Revert^2 \"Added surfaceflinger_displayhardware_fuzzer\"\n\nfdfec1572230a541882a7d4ce2d880994377b91f\n\nChange-Id: Ie108c2f0789dc845e64d623474e4aa4c6bcdca73\n"
    },
    {
      "commit": "f06d1361e03b3e1d9d855867516fbcab75abf459",
      "tree": "51ce32a5d374155ef28e9aba00744c4d7ae24ca5",
      "parents": [
        "89ef52678ed9110ca4fa894cf214ffdb031e9e42",
        "9a0afda7680840a704f179b20f97d5a4a3cf8780"
      ],
      "author": {
        "name": "Leon Scroggins",
        "email": "scroggo@google.com",
        "time": "Mon Jan 31 15:01:23 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 31 15:01:23 2022 +0000"
      },
      "message": "Merge \"Set blockingRegion for DISPLAY_DECORATION layers\""
    },
    {
      "commit": "89ef52678ed9110ca4fa894cf214ffdb031e9e42",
      "tree": "11daf3160f62143ba1876f08453c15d0c24f17f7",
      "parents": [
        "24cb2435d74260618e330436e9b8284457c04e62",
        "c9589c17c0394b8ae9c738a8bdb3daa057ed4f9c"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon Jan 31 11:12:57 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 31 11:12:57 2022 +0000"
      },
      "message": "Merge changes Ia1ed53b6,Ic561e8b3\n\n* changes:\n  SF: Clean up input info calculations\n  SF: Enforce that layers with invalid input bounds are not focusable\n"
    },
    {
      "commit": "9a0afda7680840a704f179b20f97d5a4a3cf8780",
      "tree": "6c3e8b507f7e4969f09645ebbc9e1195fd7b0772",
      "parents": [
        "701625279bbe4e08d7cc638835b098dbccecf00d"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Tue Jan 11 16:53:09 2022 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Fri Jan 28 15:48:47 2022 -0500"
      },
      "message": "Set blockingRegion for DISPLAY_DECORATION layers\n\nDevices that have support for DISPLAY_DECORATION layers may also have\nsupport for a blockingRegion, which will allow the DPU to skip regions\nthat are known to be transparent, in order to save power.\n\nUse the transparentRegionHint to compute the blockingRegion. It may not\nbe accurate for all layers, which is why it is only used for\nDISPLAY_DECORATION layers.\n\nAdd tests.\n\nBug: 212736475\nTest: libcompositionengine_test\nChange-Id: I6c5d29614dc8d65d8481150ce717a440192083a0\n"
    },
    {
      "commit": "588dcee9962de9e843ba55c18b7a46f6fe16b97b",
      "tree": "5c44b920934eba75d193ea959ce2243321d72faf",
      "parents": [
        "2586229ce8d936fdf2923fde35c52b9d25fedf69",
        "646f8ecfa96f04fb001d7edce54123946ab8929f"
      ],
      "author": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Fri Jan 28 20:05:36 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 28 20:05:36 2022 +0000"
      },
      "message": "Merge \"Removing getSystemPreferredDisplayMode and adding it as part of DynamicDisplayInfo\""
    },
    {
      "commit": "e98acad781a583d42aa6d31c6bb806d11dc0d111",
      "tree": "9bdf737ae31c7533db03b3237dbb425deff6a96a",
      "parents": [
        "e713b77b854126703b6ab51e6a603a17c39ce5bf",
        "6fa425a82c0ff753d7bd1b98eef1d70154c54f88"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 28 19:46:30 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 28 19:46:30 2022 +0000"
      },
      "message": "Merge \"SF: Calculate WindowInfo frame correctly for all layers\""
    },
    {
      "commit": "646f8ecfa96f04fb001d7edce54123946ab8929f",
      "tree": "65df7d87cc43acd591f43a3103ddf942bb4939a4",
      "parents": [
        "0054f4122db1b93d617e8a58c604fdba23684256"
      ],
      "author": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Tue Jan 18 14:35:02 2022 +0100"
      },
      "committer": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Fri Jan 28 18:41:22 2022 +0100"
      },
      "message": "Removing getSystemPreferredDisplayMode and adding it as part of\nDynamicDisplayInfo\n\nBug: 209598222\nTest: atest CtsBootDisplayModeTestCases\nTest: atest libcompositionengine_test\nChange-Id: I1ce0a5a3916b14e25212dd1d2fc4f5e82674fcd1\n"
    },
    {
      "commit": "c9589c17c0394b8ae9c738a8bdb3daa057ed4f9c",
      "tree": "ea84bbbfdea1ad63b7e15e70f57454081d3e40a9",
      "parents": [
        "8c2859824db8f602a72ceff458f4374e6faf0a2a"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Wed Sep 22 06:11:43 2021 -0700"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri Jan 28 09:20:51 2022 -0800"
      },
      "message": "SF: Clean up input info calculations\n\nThis CL simplifies the calculation of the input transform and frame for\nLayers.\n\nIt also switches the calculations to use floats rather than intergers\nfor greater precesion when scaling.\n\nBug: 200787840\nBug: 179274888\nTest: atest libgui_test\nChange-Id: Ia1ed53b669caa867e5b98e72d5d71ed615222f8f\n"
    },
    {
      "commit": "8c2859824db8f602a72ceff458f4374e6faf0a2a",
      "tree": "c9c2ccbfef68661940126084da5cffd348ce01f1",
      "parents": [
        "6fa425a82c0ff753d7bd1b98eef1d70154c54f88"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri Jan 28 09:19:39 2022 -0800"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri Jan 28 09:19:39 2022 -0800"
      },
      "message": "SF: Enforce that layers with invalid input bounds are not focusable\n\nBug: 162194035\nTest: atest libgui_test\nChange-Id: Ic561e8b3e52faae28888ef3d323583e09aa278c0\n"
    },
    {
      "commit": "6fa425a82c0ff753d7bd1b98eef1d70154c54f88",
      "tree": "8094f246fb640f61053ae8d73066dd1675d39fd4",
      "parents": [
        "163ccac62a7c185800de10b3f3dccdd57a025ab5"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Dec 16 07:16:04 2021 -0800"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri Jan 28 09:18:22 2022 -0800"
      },
      "message": "SF: Calculate WindowInfo frame correctly for all layers\n\nThe old logic skipped transform calculation using an early return if the\nlayer bounds were invalid. This skipped the calculations which\ntransformed the WindowInfo frame into display space. This also resulted in\ncontainer layers being misconfigured, since they did not have their\ninput bounds calculated correctly.\n\nAllow all layers to have their WindowInfo calculated correctly in\ndisplay space, even if their input bounds happen to be invalid.\n\nBug: 162194035\nTest: atest libgui_test\nTest: manual\nChange-Id: I7b3c361bb9a12adf52586d3a940501e4d8a9e667\n"
    },
    {
      "commit": "ea08cec6382e8b8e92856cabba791b43da535f80",
      "tree": "f98a95e492e6eaed1ce10a72febb6c286c73ccf0",
      "parents": [
        "701625279bbe4e08d7cc638835b098dbccecf00d",
        "b2089a38b63ccdcbacaa3d37eede6c18d921d64b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 27 22:15:39 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 27 22:15:39 2022 +0000"
      },
      "message": "Merge \"Revert^2 \"Added surfaceflinger_fuzzer\"\""
    },
    {
      "commit": "01b867f2d57ada85cfaac84811a853d07867ccbb",
      "tree": "271dcfdddc4e157e48d7717e22d07bd005c18d89",
      "parents": [
        "bc5f68fd1e3c3874a6c0832530254f8f1081fa2e"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Jan 12 16:14:52 2022 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Thu Jan 27 09:05:02 2022 -0500"
      },
      "message": "Omit DISPLAY_DECORATION layers from CachedSets\n\nCaching such a layer defeats hardware optimizations that allow the layer\nto be inexpensive in power and perf.\n\nFixes: 210707794\nTest: libcompositionengine_test\nChange-Id: I1a415f9b21446dbbe60488d66b00a5da231d42c3\n"
    },
    {
      "commit": "05593c3a5f8f7c5d78bb15067c03e348021592f1",
      "tree": "7cbeb08db31b46089af2af3ac995d7f8bdd431c5",
      "parents": [
        "86ce717d57c600cf032aaf837e1c01e88f8ad3a2",
        "e9b1e96808150f52a0532f3bee1a5f48d3e5a3da"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jan 26 18:08:54 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jan 26 18:08:54 2022 +0000"
      },
      "message": "Merge changes Ia14551e0,Idd32600c,I694e2aa5 am: 69ff677626 am: e9b1e96808\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1953900\n\nChange-Id: I8b43f96d6ac6d08320bcd0d5a11c2528cdea21d4\n"
    },
    {
      "commit": "86ce717d57c600cf032aaf837e1c01e88f8ad3a2",
      "tree": "5470526595c2fd918ab53d02a50266d8ed76e994",
      "parents": [
        "99f71443362592ee900182d286271f7493fd29eb",
        "21ce06abe5fb1c4f99af2d81485aff816dd451f0"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jan 26 18:08:53 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jan 26 18:08:53 2022 +0000"
      },
      "message": "SF: give a higher score to frame rates which exact matches am: 03c020873e am: 21ce06abe5\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1953899\n\nChange-Id: I28871b1cbd787ab15d0a9b5b21c7e80ceda2ac53\n"
    },
    {
      "commit": "99f71443362592ee900182d286271f7493fd29eb",
      "tree": "fe0e3cb2ddb14c6001bbb4ac8877c6191b7d68ec",
      "parents": [
        "9a8543c84fe7e34c74204a9573fab4223644f2f1",
        "2d9f9037b02dc0cfbea5679dd428833b9e57d1cc"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Wed Jan 26 18:08:51 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jan 26 18:08:51 2022 +0000"
      },
      "message": "Tune RefreshRateConfigs for fractional refresh rates am: e09237fbc1 am: 2d9f9037b0\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1953898\n\nChange-Id: I1e728825697026ef5f484b931c3ae8aa4e528571\n"
    },
    {
      "commit": "327d6a70ed3a2870159ed48a42afc2107f375808",
      "tree": "21a5deb423e5b20b7936afa778848c45d24cd598",
      "parents": [
        "d4520d56b6a72a899cd65415c9d3bfc7df44c11d",
        "a8626ecd4e7ec237d9fe8066f578944fd10f1045"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 26 16:17:58 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 26 16:17:58 2022 +0000"
      },
      "message": "Merge \"SF: Simplify getBestRefreshRate caching\""
    },
    {
      "commit": "d4520d56b6a72a899cd65415c9d3bfc7df44c11d",
      "tree": "b40740815df3435c7ced3ec391e67f4a3ef86153",
      "parents": [
        "a81824b8306af8e790fa7dbfc6d8ff627913906c",
        "0c2527089f319bf6bb0a93bfd707f700b9640875"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 26 09:04:18 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 26 09:04:18 2022 +0000"
      },
      "message": "Merge \"SF: Clean up RefreshRateConfigs tests\""
    },
    {
      "commit": "b2089a38b63ccdcbacaa3d37eede6c18d921d64b",
      "tree": "481f1ea39f4d088e2bc18e192dcc8d0168f83e8d",
      "parents": [
        "e5eb7deb125553876b664f4301cb5e0c3b545823"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Sat Jan 15 00:34:20 2022 +0000"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Wed Jan 26 03:42:35 2022 +0000"
      },
      "message": "Revert^2 \"Added surfaceflinger_fuzzer\"\n\nb1e4314856cded61f5db5864d0598d1c68ba79b7\n\nChange-Id: I67191c6efd915fa498978f67f4b0ddd154da2b03\n"
    },
    {
      "commit": "cfb660d156fac6bee70b9daf1895c8b0ca906e93",
      "tree": "1b934947d8b611909fe6e271288a9e3cb32de6b6",
      "parents": [
        "e1d187233e664764023c38bfb98069e45c01afdb",
        "1a417af29164258264e68f76e586391a56c53687"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 26 03:04:51 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 26 03:04:51 2022 +0000"
      },
      "message": "Merge changes from topic \"hwc3_idle_timer_control\"\n\n* changes:\n  sf: change the mock method for callback APIs\n  sf: Add basic implementation of onVsyncIdle\n"
    },
    {
      "commit": "a8626ecd4e7ec237d9fe8066f578944fd10f1045",
      "tree": "863fba0ecba674598d849addd9386c301c2bf4d5",
      "parents": [
        "0c2527089f319bf6bb0a93bfd707f700b9640875"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Wed Dec 15 18:13:30 2021 -0800"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Tue Jan 25 18:17:20 2022 -0800"
      },
      "message": "SF: Simplify getBestRefreshRate caching\n\nCache the arguments/result as std::pair by removing the out parameter\nfor GlobalSignals.\n\nBug: 185535769\nTest: libsurfaceflinger_unittest\nChange-Id: Ibfb2aa4ca327b378844554bcd96620f84fc0460a\n"
    },
    {
      "commit": "e1d187233e664764023c38bfb98069e45c01afdb",
      "tree": "25c3af19129720ea841dc78fea7c9ed9b44841fb",
      "parents": [
        "b13f2c8fa7697f53044e035bee498b295f1f2ff4",
        "e5eb7deb125553876b664f4301cb5e0c3b545823"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Wed Jan 26 00:56:08 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 26 00:56:08 2022 +0000"
      },
      "message": "Merge \"Revert^2 \"Group surfaceflinger mock files for use in fuzzers\"\""
    },
    {
      "commit": "0c2527089f319bf6bb0a93bfd707f700b9640875",
      "tree": "bf9659d227502eaf892f5586f2e5c7b5cca14e9a",
      "parents": [
        "b13f2c8fa7697f53044e035bee498b295f1f2ff4"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Mon Dec 20 20:32:09 2021 -0800"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Tue Jan 25 16:47:29 2022 -0800"
      },
      "message": "SF: Clean up RefreshRateConfigs tests\n\nFinish renaming `config` to `mode`, and reduce repetition in preparation\nof RefreshRateConfigs::RefreshRate removal.\n\nBug: 185535769\nBug: 129481165\nTest: libsurfaceflinger_unittest\nChange-Id: I9a87cec76387edbdfaeb31c1f24cff341489e45a\n"
    },
    {
      "commit": "b13f2c8fa7697f53044e035bee498b295f1f2ff4",
      "tree": "dc3fa75467007b376ed2d99533e7f43d3ffebb29",
      "parents": [
        "2e731f8312f96ad230fbfbf7ae04566ea41f9065",
        "de6d7b467e572d384f2bc1bc788259340ebe2f93"
      ],
      "author": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Tue Jan 25 22:08:34 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 25 22:08:34 2022 +0000"
      },
      "message": "Merge \"SurfaceFlinger: Add Transaction#sanitize\""
    },
    {
      "commit": "52fa8e59db5e2298498857dd95cf0c63e61c091a",
      "tree": "e719960ccd953b85bc1f465daba775561bd7151e",
      "parents": [
        "f41c93858add97c4fa948352f26964ae945ca235",
        "3ef084b180f7d1449d9aebec0402a1fc1887ebde"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Jan 25 20:22:59 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jan 25 20:22:59 2022 +0000"
      },
      "message": "SF: adjust kNonExactMatchingPenalty am: 3ef084b180\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/16686200\n\nChange-Id: I4a38a5cc3ffc137d2a8416df596feea803855942\n"
    },
    {
      "commit": "f41c93858add97c4fa948352f26964ae945ca235",
      "tree": "7f8f7fc31606165e275475aa7a53d5d5c12049c2",
      "parents": [
        "9c647ace3c953a7eda3acbacdbbce498ebf68a22",
        "b351245a4d39de4d0cb02dd21f1ccaf4773eeb93"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Jan 25 20:22:57 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jan 25 20:22:57 2022 +0000"
      },
      "message": "SF: give a higher score to frame rates which exact matches am: b351245a4d\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/16667170\n\nChange-Id: I95eded510968b4f06dd423e4976a698ec6cd2dfb\n"
    },
    {
      "commit": "9c647ace3c953a7eda3acbacdbbce498ebf68a22",
      "tree": "5f91b8aa4e0957d7be91579c4bde5902e69bb0c7",
      "parents": [
        "5502d9f7a2ac88aa344a5f296243be5c4e1105ad",
        "e3e68adf683d76a83197ac921b7c2b3632117880"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Tue Jan 25 20:22:55 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jan 25 20:22:55 2022 +0000"
      },
      "message": "Tune RefreshRateConfigs for fractional refresh rates am: e3e68adf68\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/16667169\n\nChange-Id: I6d23995cd8bebb8216d5a09fe4c8e4c35d0f51eb\n"
    },
    {
      "commit": "de6d7b467e572d384f2bc1bc788259340ebe2f93",
      "tree": "1a2dbd6003e5f71449debe31c7cc7975ec829b50",
      "parents": [
        "6db68e1d8390a145bbfeb62e2f392052b1d5868a"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Fri Jan 07 18:23:06 2022 -0800"
      },
      "committer": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Tue Jan 25 18:27:23 2022 +0000"
      },
      "message": "SurfaceFlinger: Add Transaction#sanitize\n\nVarious elements of the Transaction interface require\na permission in order to apply. In particular the setTrustedOverlay\nand setInputWindowInfo fields. These permission checks are\nimplemented by checking the PID and the UID of the process which\nsent the transaction. Unfortunately widespread use of transaction\nmerging makes this inadequate. At the moment\nIWindowSession#finishDrawing seems to be the only boundary on which\ntransactions move from client to system processes, and so we expose\na sanitize method and use it from there to resolve the situation\nin an easily backportable way.\n\nMoving forward it likely make sense to move security sensitive\ninterfaces off of Transaction. Most of the things behind permissions\ncurrently are not truly security sensitive, more of just a request\nnot to use them.\n\nIt was also considered to sanitize transactions at all process\nboundaries through writeToParcel, however this could be disruptive\nas previously permissioned processes (WM and SysUI) could freely\nexchange transactions. As the change needs to be backportable the\nlowest risk option was chosen.\n\nBug: 213644870\nTest: Existing tests pass\nChange-Id: I424f45bc30ea8e56e4c4493203ee0749eabf239c\n"
    },
    {
      "commit": "84218a21b931a6a47aa0e45a6b961642880ad3d3",
      "tree": "74e60ad74a65ead6178d8566ac3c1a7a863cdd65",
      "parents": [
        "a97c991f04d9698a865f8c581aeeec7fb0637804",
        "b21d94e6b46a269e9960118c7c8d61ce984aea3e"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Tue Jan 25 17:40:18 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 25 17:40:18 2022 +0000"
      },
      "message": "Merge \"Supply extra brightness parameters to RenderEngine\""
    },
    {
      "commit": "1a417af29164258264e68f76e586391a56c53687",
      "tree": "01d12230b7411d2d1925f0cf586f2ef382691c62",
      "parents": [
        "3401b5693959d3a3b5f77f2cb60bc2d3518cc598"
      ],
      "author": {
        "name": "Yichi Chen",
        "email": "yichichen@google.com",
        "time": "Fri Jan 21 15:29:52 2022 +0800"
      },
      "committer": {
        "name": "Yichi Chen",
        "email": "yichichen@google.com",
        "time": "Tue Jan 25 21:01:39 2022 +0800"
      },
      "message": "sf: change the mock method for callback APIs\n\nFollowing the change in callback function, the patch changes the mock\nmethods in unit tests and also removes the requirement of calling\nisSupported function since it is not necessary in all implementations.\n\nBug: 194068871\nTest: atest libsurfaceflinger_unittest\nChange-Id: I22dc25b4118878623871b4547c83f4ab51923985\n"
    },
    {
      "commit": "63fcbac38195980a2c6ab6265ce02d525772d0a7",
      "tree": "820ec97e1255e9e6de743d2fe301300ec5599836",
      "parents": [
        "582c98b9be21d1bef49b8a7c8d5138c22c36b3ed",
        "b64a3b46c2870ab7ded787ea317cc84db4e255c3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 24 20:10:35 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 24 20:10:35 2022 +0000"
      },
      "message": "Merge changes I693c514a,Ibfdf403d,Ie260fb09,If07953b4\n\n* changes:\n  SF: Pass timestamps into layer tracing\n  SF: Commit created layers without using transactions\n  SF: Only create a starting entry if there are starting states\n  SF: Allow privileged clients to create layers offscreen\n"
    },
    {
      "commit": "3401b5693959d3a3b5f77f2cb60bc2d3518cc598",
      "tree": "e4d3235a3d6f70b28f190a83a4a17ae0d02172e0",
      "parents": [
        "0054f4122db1b93d617e8a58c604fdba23684256"
      ],
      "author": {
        "name": "Yichi Chen",
        "email": "yichichen@google.com",
        "time": "Mon Jan 17 15:42:35 2022 +0800"
      },
      "committer": {
        "name": "Yichi Chen",
        "email": "yichichen@google.com",
        "time": "Tue Jan 25 00:48:06 2022 +0800"
      },
      "message": "sf: Add basic implementation of onVsyncIdle\n\nTo adopt the new AIDL composer callback API, the patch changes the\narchitecture to pass HWC2::ComposerCallback directly in the\nregisterCallback function. The underlying implementations can use their\nown bridge to adapt with different versions of callback APIs.\n\nBug: 194068871\nTest: atest libsurfaceflinger_unittest\nChange-Id: I08bcf481747f38805fb2527e18293585ede51554\n"
    },
    {
      "commit": "533c2f808d99a2c6fb93accbc1ff103bcb4b6af9",
      "tree": "dd12683de84efc3d0c48b8e3da5ecab4af3465ed",
      "parents": [
        "129a513d957da768aa55f3f536cb1f1af4a6c0bc"
      ],
      "author": {
        "name": "Nataniel Borges",
        "email": "natanieljr@google.com",
        "time": "Fri Jan 21 12:07:02 2022 +0100"
      },
      "committer": {
        "name": "Nataniel Borges",
        "email": "natanieljr@google.com",
        "time": "Sun Jan 23 18:58:43 2022 +0100"
      },
      "message": "Add API for writing SF traces to file\n\nCurrently the API supports only starting or stopping the trace, and writes to file when the trace is stopped. However, in some scenarios we would like to maintain the trace active, and just dump the trace.\n\nBug: 205138504\nTest: all API, check if files are created under /data/misc/wmtrace\nChange-Id: I0102d5f9a96afc159372c5b8ad2261b72f13462f\n"
    },
    {
      "commit": "129a513d957da768aa55f3f536cb1f1af4a6c0bc",
      "tree": "d59ee35af56a4cd5f82849cf06b36cd0d6989995",
      "parents": [
        "51ae9d7ef8309c2f9d80f3a04826589039e59b7e",
        "d0a896595f0aa62b36fdcc5a54214dcefbf46f73"
      ],
      "author": {
        "name": "Tiger Huang",
        "email": "tigerhuang@google.com",
        "time": "Sat Jan 22 08:01:00 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 22 08:01:00 2022 +0000"
      },
      "message": "Merge \"Pipe display install orientation 1/2\""
    },
    {
      "commit": "b1aa60c9bd9e0ede48592b3cce8bfdafe6a06a65",
      "tree": "5dcdce120835acf58cf91d842ed15dcb5f31bd7d",
      "parents": [
        "f1e9f02a8cab0b08b2d425fec01a1f12d4b48670",
        "ff793876a98bc5d75b04e1ea74b3aae37aba0501"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Fri Jan 21 19:42:16 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 21 19:42:16 2022 +0000"
      },
      "message": "Merge \"Move DisplayIdentification parsing to libui\""
    },
    {
      "commit": "f1e9f02a8cab0b08b2d425fec01a1f12d4b48670",
      "tree": "41276ce3789f7f2d8cc60fa58b4123732ab887e3",
      "parents": [
        "bcef9e6899287c0f4fabbf94beeb538c3087bffe",
        "1c595501f628bffc2bc1acaba4d10deb1c749b8d"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Jan 21 19:25:37 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 21 19:25:37 2022 +0000"
      },
      "message": "Merge \"SF: adjust kNonExactMatchingPenalty\""
    },
    {
      "commit": "76ec9fad38902888c169f98941d9784b95bab4aa",
      "tree": "046817446f5c4dd51bb6ddddb835086b78a0e449",
      "parents": [
        "03c020873e4a8c57c585f4c272390bce1f6252ac"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jan 13 21:58:32 2022 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jan 20 20:36:52 2022 -0800"
      },
      "message": "SF: adjust kNonExactMatchingPenalty\n\nGive a higher score to frame rates which exact matches by lowering\nthe scores for other refresh rates, to favor exact (or multiple)\nmatches when there are multiple refresh rate with a close value.\n\nBug: b/190578904\nTest: SF unit tests\nChange-Id: Ia14551e000ee1651a04ab580c4df2afcb2f8edeb\nMerged-In: Ia14551e000ee1651a04ab580c4df2afcb2f8edeb\n"
    },
    {
      "commit": "3ef084b180f7d1449d9aebec0402a1fc1887ebde",
      "tree": "f2639eab9bfbd81590befae74169237207c65748",
      "parents": [
        "b351245a4d39de4d0cb02dd21f1ccaf4773eeb93"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jan 13 21:58:32 2022 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jan 20 20:35:59 2022 -0800"
      },
      "message": "SF: adjust kNonExactMatchingPenalty\n\nGive a higher score to frame rates which exact matches by lowering\nthe scores for other refresh rates, to favor exact (or multiple)\nmatches when there are multiple refresh rate with a close value.\n\nBug: b/190578904\nTest: SF unit tests\nChange-Id: Ia14551e000ee1651a04ab580c4df2afcb2f8edeb\nMerged-In: Ia14551e000ee1651a04ab580c4df2afcb2f8edeb\n"
    },
    {
      "commit": "d0a896595f0aa62b36fdcc5a54214dcefbf46f73",
      "tree": "0e9e92624b449894575f00455809bbfd32949d0a",
      "parents": [
        "f22b3b79abb741f7e44dc359c621592bfba450fe"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Jan 13 12:05:54 2022 -0800"
      },
      "committer": {
        "name": "Tiger Huang",
        "email": "tigerhuang@google.com",
        "time": "Thu Jan 20 11:19:55 2022 +0800"
      },
      "message": "Pipe display install orientation 1/2\n\nThis is a step to move the layout logic to the client side. We won\u0027t\ninvoke IWindowSession#relayout then, and the client should be able to\nset the transform hint on its own.\n\nBug: 161810301\nTest: presubmit\nChange-Id: I541b70fb921e22ab46ccb22391b8ca65eeb3d1a4\n"
    },
    {
      "commit": "686406cd5674ec21f67f34ce2bc6dff675ee526f",
      "tree": "f47d3403b992f32a6685f8c76861fbe43cf203c3",
      "parents": [
        "d4fd4a1affb6b1b118b3fc14c617adad86b253fb",
        "2ae6b6bc57089a726edf6ef7cc8582ec524c736f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 20 01:28:21 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 20 01:28:21 2022 +0000"
      },
      "message": "Merge \"Implement game mode framerate override\""
    },
    {
      "commit": "b64a3b46c2870ab7ded787ea317cc84db4e255c3",
      "tree": "bd80480ccc1ab2a23366a25890c7abc4f48586a9",
      "parents": [
        "0fc7af50fc3402bcf6fdd3c9cedff59fd4c31f61"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Jan 13 15:29:32 2022 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Jan 19 16:58:03 2022 -0800"
      },
      "message": "SF: Pass timestamps into layer tracing\n\nThis will allow us to recreate layer traces that\nreflect the same timeline as the transaction\ntrace.\n\nTest: presubmit\nBug: 200284593\n\nChange-Id: I693c514ae56ed2137ad53b007a6722ba9396ecde\n"
    },
    {
      "commit": "0fc7af50fc3402bcf6fdd3c9cedff59fd4c31f61",
      "tree": "f2f88d96c59d32916c5527afa6fd10c58804e4b2",
      "parents": [
        "b8f2a2d5ada9bed7e430b3a5f64fa79e376ab905"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Jan 13 08:11:34 2022 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Jan 19 16:58:03 2022 -0800"
      },
      "message": "SF: Commit created layers without using transactions\n\nThis solves a couple of issues:\n1. This will remove the need to maintain a transaction\nqueue and a pending transaction queue. If we remove\none of the queues, we have to maintain transactions\nby apply tokens and layer creation transactions will\ncreate an order dependency between apply tokens.\n\n2. For transaction tracing, layer creations are\ntracked at the layer creation binder call. Tracking\ninternal layer creation transactions as well will\ncreate an invalid state since the transaction is\na side effect not a client request.\n\nTest: presubmit\nBug: 200284593\nChange-Id: Ibfdf403dd0129801fcfb4c64229616d48f84fe9b\n"
    },
    {
      "commit": "b8f2a2d5ada9bed7e430b3a5f64fa79e376ab905",
      "tree": "afb8d4133e92a51aefa561d7f4dcfe8a85fcb4be",
      "parents": [
        "858a3b4c8dfa03a5952cad4b0b695ee2cb4c31e8"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Jan 13 08:10:10 2022 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Jan 19 16:58:02 2022 -0800"
      },
      "message": "SF: Only create a starting entry if there are starting states\n\nTest: atest TransactionTracingTest\nBug: 200284593\nChange-Id: Ie260fb094117ec754778f8277602d10df6606fb2\n"
    },
    {
      "commit": "858a3b4c8dfa03a5952cad4b0b695ee2cb4c31e8",
      "tree": "6cd182985b0b775b4cd29bc093ccd644b2f32745",
      "parents": [
        "d4fd4a1affb6b1b118b3fc14c617adad86b253fb"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Jan 12 20:42:28 2022 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Jan 19 16:58:02 2022 -0800"
      },
      "message": "SF: Allow privileged clients to create layers offscreen\n\nIf the caller is privileged and a new layer has a null parent,\nthe new layer will be added to root. When recreating layer\nstate, we create layers as a privileged client so we need to\nspecify if a layer need to be added offscreen.\n\nTest: presubmit\nBug: 200284593\nChange-Id: If07953b401020b115b0e364ff03ac65503bdc0ed\n"
    },
    {
      "commit": "c862a8a71eaaa1b80c95806c58e754c22fba413a",
      "tree": "6f404d1b93e1a507d918feac86644a4151911815",
      "parents": [
        "6223881fead672d44c72c54c615fce5444df8443",
        "4e0d20d43aa955587e468a92a4b0a491b4733f8e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 19 22:36:20 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 19 22:36:20 2022 +0000"
      },
      "message": "Merge \"SF: Set up libscheduler and libscheduler_test\""
    },
    {
      "commit": "1c595501f628bffc2bc1acaba4d10deb1c749b8d",
      "tree": "94ed27726443a643dc1aba533261ea95d443f051",
      "parents": [
        "6e60b14066a4d16652353a2ff7a18dc8e11d0d04"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jan 13 21:58:32 2022 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jan 19 11:16:48 2022 -0800"
      },
      "message": "SF: adjust kNonExactMatchingPenalty\n\nGive a higher score to frame rates which exact matches by lowering\nthe scores for other refresh rates, to favor exact (or multiple)\nmatches when there are multiple refresh rate with a close value.\n\nBug: b/190578904\nTest: SF unit tests\nChange-Id: Ia14551e000ee1651a04ab580c4df2afcb2f8edeb\n"
    },
    {
      "commit": "ff793876a98bc5d75b04e1ea74b3aae37aba0501",
      "tree": "7a953d4f736220b9d1f90038ef18850f465eb119",
      "parents": [
        "d4c6a656d265504207e79fde2fcd988548cf4c37"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Thu Jan 13 17:45:06 2022 -0800"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Wed Jan 19 19:06:07 2022 +0000"
      },
      "message": "Move DisplayIdentification parsing to libui\n\nThis is so that the logic can be shared with VTS, as stable display IDs\nare generated from edid information or port information.\n\nBug: 213493262\nTest: VtsHalGraphicsComposer3_TargetTest\nChange-Id: Id74a2c646558d61bb1a8ae80b038f7108e54e636\n"
    },
    {
      "commit": "d9e54691c35c715c096d25e656911f818e1fb706",
      "tree": "88d9b4d58ccd86028c091ee90dca4b8bf5ed463c",
      "parents": [
        "dd63c88f4e64cae2b7c6bfc73e7f3135266e7a9c"
      ],
      "author": {
        "name": "Lars Svensson",
        "email": "lars.svensson@sony.com",
        "time": "Tue Dec 21 07:41:57 2021 +0100"
      },
      "committer": {
        "name": "Snild Dolkow",
        "email": "snild@sony.com",
        "time": "Wed Jan 19 10:08:47 2022 +0100"
      },
      "message": "Ensure deferred cleanup when display is off\n\nUsing DRM video playback app and wi-fi direct, allocation of\nAutoBackendTexture objects sometimes continue for some time after the\ndisplay is off. Clean-up of these is deferred until postRender() is\ncalled, but only invoked if the display is on. This eventually leads\nto depletion of secure memory resources and a fatal assert.\n\nThis ensures cleanupPostRender() is called regardless of display\nstate.\n\nTest: Play Movies with screen mirroring, repeatedly sleep/wake device\nChange-Id: Ib0d530582e124984ef70f91f6e398f62c2312f4c\n"
    },
    {
      "commit": "b351245a4d39de4d0cb02dd21f1ccaf4773eeb93",
      "tree": "0793177c504c5a9343c4ebff500fc4280543d341",
      "parents": [
        "e3e68adf683d76a83197ac921b7c2b3632117880"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Sep 16 15:58:52 2021 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Jan 18 18:41:22 2022 -0800"
      },
      "message": "SF: give a higher score to frame rates which exact matches\n\nTo avoid cases where devices with very close refresh rates\n(such as 53Hz and 55Hz) gives the same score for these,\nassign a small (0.99) factor to frame rate that are\nnot exact match of a multiple of the refresh rate\n\nTest: atest FrameRateCtsActivity\nTest: atest RefreshRateConfigsTest\nBug: 190578904\nChange-Id: Idd32600ccacc0cad8f44c9d9373e50a333663717\nMerged-In: Idd32600ccacc0cad8f44c9d9373e50a333663717\n"
    },
    {
      "commit": "e3e68adf683d76a83197ac921b7c2b3632117880",
      "tree": "a765cea6d3288afed25175aa49fd651ea0db815d",
      "parents": [
        "f8ce875c134b1e6ce08171c2cb4b4f3232a90b08"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Mon Aug 16 18:20:21 2021 +0200"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Jan 18 18:38:48 2022 -0800"
      },
      "message": "Tune RefreshRateConfigs for fractional refresh rates\n\nThis CL contains several changes in order to tune\nRefrshRateConfigs for fractional refresh rates\n\n1. TV devices support fractional refresh rates which are\nwithin 1/1001 of an integer, for example 59.94 and 60.\nThis change reduces the tolerance we use when\nselecting the best refresh rate, so we can differtiate\nbetween the scores which 59.94 and 60 will get\nwhen a layer requests 60 (or 59.94).\n\n2. Changes the threshold in getFrameRateDivider\nso it can differntiate between 59.94 and 60 fps.\n\n3. Explicitly check if we\u0027re voting for a refresh\nrate in a fractional pair when calculating the\nvote for ExplicitExactOrMultiple. If so, vote with\na contant score.\n\n4. Finally the CL changes some log lines to make\ndebugging easier and adds more comments.\n\nBug: 196404992\nBug: 196191168\nTest: atest libsurfaceflinger_unittest\n      atest MatchContentFrameRateTest SetFrameRateTest\nChange-Id: I694e2aa5b16e9b4e0f6d1e8263b1ac35099605fd\nMerged-In: I694e2aa5b16e9b4e0f6d1e8263b1ac35099605fd\n"
    },
    {
      "commit": "03c020873e4a8c57c585f4c272390bce1f6252ac",
      "tree": "eefe556bb6a5df492a45e7692b6357387ea418e5",
      "parents": [
        "e09237fbc1a3afcd2561f7ecf60349a690c13907"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Sep 16 15:58:52 2021 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Jan 18 18:17:27 2022 -0800"
      },
      "message": "SF: give a higher score to frame rates which exact matches\n\nTo avoid cases where devices with very close refresh rates\n(such as 53Hz and 55Hz) gives the same score for these,\nassign a small (0.99) factor to frame rate that are\nnot exact match of a multiple of the refresh rate\n\nTest: atest FrameRateCtsActivity\nTest: atest RefreshRateConfigsTest\nBug: 190578904\nChange-Id: Idd32600ccacc0cad8f44c9d9373e50a333663717\nMerged-In: Idd32600ccacc0cad8f44c9d9373e50a333663717\n"
    },
    {
      "commit": "e09237fbc1a3afcd2561f7ecf60349a690c13907",
      "tree": "fbab93c48825b917c3248bf2349f2450a2373a60",
      "parents": [
        "897aab34f8c2a421d9ac7fc3bdc8206cbe2573d6"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Mon Aug 16 18:20:21 2021 +0200"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Jan 18 18:17:11 2022 -0800"
      },
      "message": "Tune RefreshRateConfigs for fractional refresh rates\n\nThis CL contains several changes in order to tune\nRefrshRateConfigs for fractional refresh rates\n\n1. TV devices support fractional refresh rates which are\nwithin 1/1001 of an integer, for example 59.94 and 60.\nThis change reduces the tolerance we use when\nselecting the best refresh rate, so we can differtiate\nbetween the scores which 59.94 and 60 will get\nwhen a layer requests 60 (or 59.94).\n\n2. Changes the threshold in getFrameRateDivider\nso it can differntiate between 59.94 and 60 fps.\n\n3. Explicitly check if we\u0027re voting for a refresh\nrate in a fractional pair when calculating the\nvote for ExplicitExactOrMultiple. If so, vote with\na contant score.\n\n4. Finally the CL changes some log lines to make\ndebugging easier and adds more comments.\n\nBug: 196404992\nBug: 196191168\nTest: atest libsurfaceflinger_unittest\n      atest MatchContentFrameRateTest SetFrameRateTest\nChange-Id: I694e2aa5b16e9b4e0f6d1e8263b1ac35099605fd\nMerged-In: I694e2aa5b16e9b4e0f6d1e8263b1ac35099605fd\n"
    },
    {
      "commit": "2ae6b6bc57089a726edf6ef7cc8582ec524c736f",
      "tree": "7d18c1287dbfb46fc6cb71ac085c77c1fab62783",
      "parents": [
        "338ee42d6eb20132ba98cb4dadeb6ff08bcd0b7a"
      ],
      "author": {
        "name": "Andy Yu",
        "email": "chingtangyu@google.com",
        "time": "Thu Nov 18 14:51:06 2021 -0800"
      },
      "committer": {
        "name": "Andy Yu",
        "email": "chingtangyu@google.com",
        "time": "Tue Jan 18 17:46:59 2022 -0800"
      },
      "message": "Implement game mode framerate override\n\nAdd logic for setting throttling framerate requested\nby Game Dashboard interventions.\n\n- Refactored of FrameRateOverrideMappings in Scheduler\n- Have mSupportsFrameRateOverride only guard mFrameRateOverrideByContent\n- Remove logic that disables framerate override when it\u0027s not a divider\n\nBug: b/204322816\nTest: atest FrameRateOverrideHostTest\n\nChange-Id: I1a2caf378cd87ce4830f6fc48332b5df518330cc\n"
    },
    {
      "commit": "26c4976f60930a933590ed046460f369b13a4866",
      "tree": "1b3ae91af5426397532e6affd71e53a9b54399d4",
      "parents": [
        "66ebf74ee5cce89d46cb1c893fd5ae713bb0ee27"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Jan 18 22:58:52 2022 +0000"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Jan 18 22:58:55 2022 +0000"
      },
      "message": "SF: Fix buffer use after move\n\nChange-Id: I5fa81999c1bccb5abc80ca3dd45d7d8da8ddad7b\nTest: presubmit\nBug: 200284593\n"
    },
    {
      "commit": "66ebf74ee5cce89d46cb1c893fd5ae713bb0ee27",
      "tree": "c1df2d4d6d89c3e5eda531372b374fc7d206c945",
      "parents": [
        "a0579e73779da5c9e7a4c7b68a09348023567e18",
        "a84a2200c8935ce130f649e277d3a849c24c618f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 18 22:24:19 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 18 22:24:19 2022 +0000"
      },
      "message": "Merge changes Ib64227a0,I8bfcf23c,I037e4021\n\n* changes:\n  SF: Update static sequence counter when injecting a sequence number\n  SF: Fix transaction trace merging\n  SF: Add new fields to transactions proto\n"
    },
    {
      "commit": "a84a2200c8935ce130f649e277d3a849c24c618f",
      "tree": "0712dd74c43228325762827fb9feda5eeeb759e5",
      "parents": [
        "7b0f18b04e311223b793aa3ae8a9c7aef0a63a90"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Jan 12 20:12:55 2022 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Jan 18 19:59:15 2022 +0000"
      },
      "message": "SF: Update static sequence counter when injecting a sequence number\n\nWhen generating layer trace, layers will be created with a sequence\nnumber. However any supporting layer that is created (when mirroring\nor color layer for blast) will use the static counter to gets its\nsequence number. This might result in layers with duplicate sequence\nnumbers.\n\nFix this by updating the static sequence counter if a sequence number\nis injected.\n\nTest: atest TransactionTracingTest\nBug: 200284593\nChange-Id: Ib64227a088d1cbf76b977604eaeb3b1421af63f5\n"
    },
    {
      "commit": "7b0f18b04e311223b793aa3ae8a9c7aef0a63a90",
      "tree": "7e90bc9ce750e24ebc6377e0ec771f7dffd96196",
      "parents": [
        "d37343ba07ce5d46cf4fd7d5facfbe2c06568149"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Jan 12 16:39:08 2022 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Jan 18 19:59:07 2022 +0000"
      },
      "message": "SF: Fix transaction trace merging\n\nAs entries get purged from the ring buffer, they need to be\nmerged in order to update the starting state. The tracing logic\ntried to update the state directly from proto to be more\nefficient. But this introduced slight changes in behavior.\n\nFix by reusing layerstate merge logic.\n\nTest: atest TransactionProtoParserTest\nBug: 200284593\nChange-Id: I8bfcf23c43fa89f3e5c4e899c5c8942d098bbe7f\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": "4e0d20d43aa955587e468a92a4b0a491b4733f8e",
      "tree": "964c9f064136194a1cb61dc4e87494cb5ae10b79",
      "parents": [
        "bd2fbcb8f8b568882eac6e6cb2839c2915270df7"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Mon Dec 06 11:31:02 2021 -0800"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Fri Jan 14 16:59:38 2022 -0800"
      },
      "message": "SF: Set up libscheduler and libscheduler_test\n\nFix up dependencies to migrate Timer files for starters.\n\nBug: 185535769\nTest: libscheduler_test\nChange-Id: I028cb04f2e355e2096be9efe3c1a80f0dfd75602\n"
    },
    {
      "commit": "46471e6147246d31aaadcd42c2e9bb10ae09d41c",
      "tree": "b4cc46f1acf2cfbd76ed4042d3d0c6e8d2296469",
      "parents": [
        "bd2fbcb8f8b568882eac6e6cb2839c2915270df7"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Fri Jan 14 15:34:03 2022 -0800"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Fri Jan 14 16:35:48 2022 -0800"
      },
      "message": "SF: Use RAII for TransactionTracing\n\nEnsure the thread joins on destruction, which had been suppressed by a\nleak fixed by ag/16613874.\n\nBug: 214486764\nTest: libsurfaceflinger_arc_test\nTest: libsurfaceflinger_unittest\nChange-Id: Ib766735dc51e89d63080dd6b9afe8464da7c1c6a\n"
    },
    {
      "commit": "e5eb7deb125553876b664f4301cb5e0c3b545823",
      "tree": "b753c2e53ea93839e95effa39842a8937b4051e5",
      "parents": [
        "4e5bc2eb04e1c28dbb4bf8f65aea2c8dcbeaa703"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Sat Jan 15 00:34:20 2022 +0000"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Sat Jan 15 00:34:20 2022 +0000"
      },
      "message": "Revert^2 \"Group surfaceflinger mock files for use in fuzzers\"\n\nc1d3d890c34478f33ab2161c22019ab0d17da7ce\n\nChange-Id: I6fc1403d94a9d7479f54e73b0b6349cfd65c483f\n"
    },
    {
      "commit": "b21d94e6b46a269e9960118c7c8d61ce984aea3e",
      "tree": "3b34cb2634b169182c126dcc3601852d0c07f453",
      "parents": [
        "d4c6a656d265504207e79fde2fcd988548cf4c37"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Thu Jan 13 17:44:10 2022 -0800"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Fri Jan 14 14:00:54 2022 -0800"
      },
      "message": "Supply extra brightness parameters to RenderEngine\n\nA future CL will update the HLG-\u003eSDR tonemapping algorithm to consider\ncurrent display brightness, as recommended by BT2100.\n\nIn preparation for this:\n* Fix an issue where maxLuminance was using the current display\nbrightness if supplied from DisplayManager instead of the max luminance\n* Add currentDisplayBrightnessNits to the RenderEngine interface to\nsupport the current brightness\n* Plumb current display brightness all the way to libtonemap, where\nnothing uses it (yet)\n\nBug: 206035964\nTest: libcompositionengine_test\n\nChange-Id: I3e9f0fdb23fbb08c50e4733e5a16bcd20948d750\n"
    },
    {
      "commit": "30dfc654ec79056b03f4656901a27ab82c3f5e34",
      "tree": "1176f956019254c95fead6c7d1fd87549d95436b",
      "parents": [
        "a45a7991c60d6d1447888aec084feda1d950c0ef",
        "5503088c0c5bd295bd2cf3c8947d91af837d887c"
      ],
      "author": {
        "name": "Leon Scroggins",
        "email": "scroggo@google.com",
        "time": "Fri Jan 14 18:04:38 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 14 18:04:38 2022 +0000"
      },
      "message": "Merge \"Update transactions.proto to sync with layer_state_t\""
    },
    {
      "commit": "a45a7991c60d6d1447888aec084feda1d950c0ef",
      "tree": "b82a67856912040284adc2088ec21c2c5313cc64",
      "parents": [
        "106d17f6cb6d87abd789f44c2ea23d54df449ecd",
        "62eff3597b6cabba1052ce86e5caebda2f2a7de5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 14 17:25:09 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 14 17:25:09 2022 +0000"
      },
      "message": "Merge changes I9b36d834,I3141992c\n\n* changes:\n  SF: Delete SchedulerUtils.{h,cpp}\n  FTL: Add variadic concatenation\n"
    },
    {
      "commit": "106d17f6cb6d87abd789f44c2ea23d54df449ecd",
      "tree": "2cebae045fcbc094497aafc49c616dea2de1cc13",
      "parents": [
        "338ee42d6eb20132ba98cb4dadeb6ff08bcd0b7a",
        "dbbe3854efc2ceb6e0f5c2f0991161f6b7beea39"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri Jan 14 17:04:26 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 14 17:04:26 2022 +0000"
      },
      "message": "Merge \"SF: Make ExternalTexture mockable\""
    },
    {
      "commit": "338ee42d6eb20132ba98cb4dadeb6ff08bcd0b7a",
      "tree": "ff0f67ce8a605ac3f71750a6ea709adafb4a3850",
      "parents": [
        "1faa47bdf6cce400f88cde2caf8982bad2fc50f3",
        "7defaf37e6ae4d7ba10d8f36ccb05a29926a5439"
      ],
      "author": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Fri Jan 14 10:39:43 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 14 10:39:43 2022 +0000"
      },
      "message": "Merge \"Add boot time display mode to native framework\""
    },
    {
      "commit": "e4217241a47ca7c103e59902df4e51d4e00ff03d",
      "tree": "0cd4f2aa6c6b68e5284a12c6f03d2f85a221d385",
      "parents": [
        "1b73395fdaf6fed127c4a6bed5d5e8c34964bd98",
        "83bd771ca25844f6f00c7b60e554f6566a7a3222"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 14 03:13:35 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 14 03:13:35 2022 +0000"
      },
      "message": "Merge changes Id23fafaf,I50450881\n\n* changes:\n  SF: Fix UAF due to outliving idle timer\n  SF: Fix leak in unit tests\n"
    },
    {
      "commit": "5503088c0c5bd295bd2cf3c8947d91af837d887c",
      "tree": "650cccd40127cf720df07074e212dc312718385d",
      "parents": [
        "25fd4510cf1dc817eb9ba757b32cc8820ecaae25"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Thu Jan 13 14:28:52 2022 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Thu Jan 13 14:36:09 2022 -0500"
      },
      "message": "Update transactions.proto to sync with layer_state_t\n\nI92ed7c4fdf09a2133efda4172e2f61f4a198e51b added\neLayerIsDisplayDecoration to layer_state_t. Update LayerState to match.\n\nBug: 193170859\nTest: NA\nChange-Id: Ib8e17c71bd1fdd97b881df4251b1b53d33a144e4\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": "d4c6a656d265504207e79fde2fcd988548cf4c37",
      "tree": "d286e172f9e3aa9802ceb7b1734b22dc51f34941",
      "parents": [
        "f261da004a94303bc904971c2242d1294f6dab8a",
        "ae16b80b779db790e100ebe6e9d292b96dc04c9c"
      ],
      "author": {
        "name": "Leon Scroggins",
        "email": "scroggo@google.com",
        "time": "Thu Jan 13 14:40:58 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 13 14:40:58 2022 +0000"
      },
      "message": "Merge \"RegionSamplingListener: Treat empty Rect as BAD_VALUE\""
    },
    {
      "commit": "7defaf37e6ae4d7ba10d8f36ccb05a29926a5439",
      "tree": "92b3234c9a682cbe9fd8127501ec59910ede1bae",
      "parents": [
        "1ca1c61d1e5cb660971e5d786b29efb8fc3fd76a"
      ],
      "author": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Mon Nov 15 11:55:43 2021 +0100"
      },
      "committer": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Thu Jan 13 14:36:33 2022 +0100"
      },
      "message": "Add boot time display mode to native framework\n\nBug: 203520442\nTest: m\nTest: atest libsurfaceflinger_unittest\nTest: atest libgui_test\n\nChange-Id: I61ad0c75576a4e1ee54d657e6906bc5d6c10afaf\n"
    },
    {
      "commit": "f102f55f845786304bd0b73510979b7878ccd725",
      "tree": "a00ffbd02d318a16e2880f533dfaf056bbca86d1",
      "parents": [
        "87bfa727aa9585d4da8d82fd213b1353291187cc",
        "2914a57d755051a3e5f05154d784a08019500946"
      ],
      "author": {
        "name": "Garfield Tan",
        "email": "xutan@google.com",
        "time": "Wed Jan 12 22:03:31 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jan 12 22:03:31 2022 +0000"
      },
      "message": "Skip creating external textures that exceeds size limit am: 2914a57d75\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/16614247\n\nChange-Id: Ifa6362035869e767f65fc91249168ee0898cc009\n"
    },
    {
      "commit": "2914a57d755051a3e5f05154d784a08019500946",
      "tree": "130fe57fec85684b25283cb69ef4aa6f4186376c",
      "parents": [
        "41a8b01966f7400046252733b140cebb45466faf"
      ],
      "author": {
        "name": "Garfield Tan",
        "email": "xutan@google.com",
        "time": "Mon Jul 19 12:02:16 2021 -0700"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Wed Jan 12 18:02:41 2022 +0000"
      },
      "message": "Skip creating external textures that exceeds size limit\n\nSkia always accept an Android buffer and wraps it around with a texture\neven if its size exceeds the limit GL exposes. Therefore let\u0027s skip\ncreating the texture in SurfaceFlinger and outputs an error log to\nlogcat.\n\nI chose to do it in SurfaceFlinger rather than RenderEngine is because\nthe external texture mapping is designed to be asynchronous, so it\u0027d be\nbetter to keep that way. The limit is also exposed out of RenderEngine\nso SurfaceFlinger can check it before creating external textures as\nwell.\n\nBug: 190399306\nBug: 204316511\nTest: The test mentioned in the bug fails instead of crashing\nSurfaceFlinger.\nTest: atest SurfaceFlinger_test\nTest: atest libsurfaceflinger_unittest\n\nChange-Id: I52d253ed5a10f0e4ade372048721913405ed668a\n(cherry picked from commit 9c9c19134593655c36fe70aaa45a91ad4f75e36f)\nMerged-In: I52d253ed5a10f0e4ade372048721913405ed668a\n"
    },
    {
      "commit": "ae16b80b779db790e100ebe6e9d292b96dc04c9c",
      "tree": "7a1afcc0ef5e3c6e443d1326ee2e76a10df08a28",
      "parents": [
        "1df8d38a3029b4f4da1a20a099936b37b510c4d1"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Jan 12 11:42:05 2022 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Jan 12 11:53:28 2022 -0500"
      },
      "message": "RegionSamplingListener: Treat empty Rect as BAD_VALUE\n\nThe Rect will eventually be merged with other listeners to create an\narea of the screen to capture. If the area is empty, this will result in\ntrying to create an empty texture, which will fail and hit a\nLOG_ALWAYS_FATAL.\n\nThis means that mDescriptors will only contain non-empty Rects; if\nmDescriptors is empty, the RegionSamplingThread will not attempt to do a\ncapture.\n\nBug: 206415266\nTest: make\nChange-Id: Ib395a7627feba73bb9e4ca5f38aebd675515e506\n"
    },
    {
      "commit": "481fce3edde0ac27f49213e1403925bf5ca1218e",
      "tree": "7f868892c4b34bc8fc5e912249b1ee11a46a5bd0",
      "parents": [
        "1ca1c61d1e5cb660971e5d786b29efb8fc3fd76a",
        "9f0835e72949f7ed0d7df35960047931a2051a2c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 12 14:25:02 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 12 14:25:02 2022 +0000"
      },
      "message": "Merge \"SF: Make BufferData mockable\""
    },
    {
      "commit": "747e5f771cf64437e82ece745bcd3c864b1eaf06",
      "tree": "02b029fba599f1c44337d7c377988eb6d911c4fc",
      "parents": [
        "93b15db88178c75b4f1e5bff255f45bfbbc74ef4",
        "89d1093444f5bb88d6d222b80b1db44af53ce97c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 12 06:23:24 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jan 12 06:23:24 2022 +0000"
      },
      "message": "Merge \"Do not handle VSync event during resolution switch\" am: 03e4e9d9f5 am: 661fcfbcae am: 89d1093444\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1918376\n\nChange-Id: I34408bc66c18f63e8a34611d9625becc5a2f44f7\n"
    },
    {
      "commit": "03e4e9d9f590b2cb4d342ea573a834fa093f5ee8",
      "tree": "2ab5e4d918eeaeeb046f4f0ca58af5575d30acc8",
      "parents": [
        "5d9e175e821cdffeac39267ef167d83f35c7ce88",
        "57fc3d60dc96e8542b0b1fd89e89dcd402e01460"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 12 05:30:29 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 12 05:30:29 2022 +0000"
      },
      "message": "Merge \"Do not handle VSync event during resolution switch\""
    },
    {
      "commit": "3504ced96944aafc0fc072cbd83b80a5403b1ba0",
      "tree": "d611d91cf798188e6a14a43d4bf834f940f0f491",
      "parents": [
        "bae84b79f81a27fe470c1d1ea69f7dd8352f1088",
        "5793e163152c6737227ff51beac97f5691ff9eac"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 12 02:23:33 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 12 02:23:33 2022 +0000"
      },
      "message": "Merge \"Change power hint rate limiter to use max interval instead of max queue\""
    },
    {
      "commit": "bae84b79f81a27fe470c1d1ea69f7dd8352f1088",
      "tree": "5617049f1c7535f2dd1e014ef253622c4be3af5a",
      "parents": [
        "c66a7aa6109e0979088b9d36c1fe7b570474d698",
        "3a3815a6a6e0e082a6f5bf7827c234315b5e2563"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jan 12 01:55:44 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 12 01:55:44 2022 +0000"
      },
      "message": "Merge \"SF: call the timer\u0027s callback in case of an error\""
    },
    {
      "commit": "c66a7aa6109e0979088b9d36c1fe7b570474d698",
      "tree": "274d5cc95f4bcc79e4936e72f1e52d85f65320aa",
      "parents": [
        "2f412d6f24314e88ec9b858bac90d851f8c51718",
        "6e60b14066a4d16652353a2ff7a18dc8e11d0d04"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jan 12 00:48:46 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 12 00:48:46 2022 +0000"
      },
      "message": "Merge \"SF: pass Color as float to HWC\""
    },
    {
      "commit": "2f412d6f24314e88ec9b858bac90d851f8c51718",
      "tree": "fa6286dab3b57df6d64ce2961e88303cb46452f0",
      "parents": [
        "d211944df1c90bc11d0c8466af6ab136c3f85fbd",
        "f2b8ec47aa656abac8ea5d953e546bb1c1ef2624"
      ],
      "author": {
        "name": "Leon Scroggins",
        "email": "scroggo@google.com",
        "time": "Tue Jan 11 21:29:24 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 11 21:29:24 2022 +0000"
      },
      "message": "Merge \"Fix log statement on failure to setVisibleRegion\""
    },
    {
      "commit": "d211944df1c90bc11d0c8466af6ab136c3f85fbd",
      "tree": "050d2188470782e748015d73025d1a2a2c718bbd",
      "parents": [
        "60814cf80b6db38339b42748599c77ba9bc80e2d",
        "d77d316c1b6e1567be3a1c734662eaffb68a60e0"
      ],
      "author": {
        "name": "Leon Scroggins",
        "email": "scroggo@google.com",
        "time": "Tue Jan 11 21:28:57 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 11 21:28:57 2022 +0000"
      },
      "message": "Merge \"Add HWC2::setBlockingRegion\""
    },
    {
      "commit": "9f0835e72949f7ed0d7df35960047931a2051a2c",
      "tree": "09e39f98f397114dac14a6bd1eeb412770fcb591",
      "parents": [
        "1df8d38a3029b4f4da1a20a099936b37b510c4d1"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri Jan 07 09:33:19 2022 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Jan 11 13:27:20 2022 -0800"
      },
      "message": "SF: Make BufferData mockable\n\nExpose GraphicBuffer properties through the BufferData\nclass so we can inject fake GraphicBuffers in transactions.\nThis is required to recreate layer state from transaction\ntraces without actually allocating buffers.\n\nTest: compiles\nBug: 200284593\nChange-Id: I74036cba1f544cbd045489fa5337d59ae4bdebcb\n"
    },
    {
      "commit": "5793e163152c6737227ff51beac97f5691ff9eac",
      "tree": "503d756d87a91663da81dffe725136c85b103c2f",
      "parents": [
        "08843dfa88678ab317a4f2515f716e8e21c0f349"
      ],
      "author": {
        "name": "Matt Buckley",
        "email": "mattbuckley@google.com",
        "time": "Tue Jan 11 20:35:26 2022 +0000"
      },
      "committer": {
        "name": "Matt Buckley",
        "email": "mattbuckley@google.com",
        "time": "Tue Jan 11 20:57:48 2022 +0000"
      },
      "message": "Change power hint rate limiter to use max interval instead of max queue\n\nUsing a max interval between hints instead of a max queue size to force\nbatches better reflects the need to avoid having our hint session go\nstale as well as the fact that higher refresh rates can accumulate more\nhints before needing to send them.\n\nBug: b/195990840\nTest: manual\nChange-Id: I7cffc75e962c42f50952dd02f5c148d8573ea97e\n"
    },
    {
      "commit": "6e60b14066a4d16652353a2ff7a18dc8e11d0d04",
      "tree": "af61979edfa4cf9429602c7fb10ba8cdb147aa4a",
      "parents": [
        "87f867eb57fa6c681932da914b00df7ac5f0ceef"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jan 06 18:10:35 2022 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Jan 11 10:48:19 2022 -0800"
      },
      "message": "SF: pass Color as float to HWC\n\nIn HWC3 Color is represented as a float [0.0 - 1.0] to be consistent\nacross the stack. SF passes the color as float and it gets translated\nback to uint8_t for HWC2.\n\nBug: 207139550\nTest: atest SurfaceFlinger_test\nChange-Id: I83867eed70bd3baa3292c9cc099d891ba9cc6183\n"
    },
    {
      "commit": "57fc3d60dc96e8542b0b1fd89e89dcd402e01460",
      "tree": "c8e2577ada4237ac3603950601705f34784dc98d",
      "parents": [
        "40c7ef8df88007f1108135f17db1f41c085ef1b8"
      ],
      "author": {
        "name": "yuhui.zhang",
        "email": "yuhui.zhang@mediatek.com",
        "time": "Sat Dec 11 15:23:52 2021 +0800"
      },
      "committer": {
        "name": "Robert Chou",
        "email": "robertchou@google.com",
        "time": "Tue Jan 11 08:48:52 2022 +0000"
      },
      "message": "Do not handle VSync event during resolution switch\n\nWhen there is a resolution switch, SurfaceFlinger will handle as display\nchanges. If the VSync comes before the display is ready, the access to\nthe display will bring exception.\n\nSolution: Add mutex lock between onComposerHalVsync() and\nsetActiveModeInternal().\n\nBug: 210378166\nTest: run cts-on-gsi -m CtsDisplayTestCases\nChange-Id: Ide53b0e5cff3b569593a2ed388d0ea66e0002e9d\nMerged-In: Ide53b0e5cff3b569593a2ed388d0ea66e0002e9d\n"
    }
  ],
  "next": "ea95959e20abfa585ec45c3da79dc40c074972bc"
}
