)]}'
{
  "log": [
    {
      "commit": "caeea929f73849ecbcaf76540a8e2a9066a6eefa",
      "tree": "89436f2400912843dc697519ae853618fc4fe76f",
      "parents": [
        "6191fe5a44bd33681fde9b9c5c6a3fe715850874",
        "0ed31c9457c6d9422969545739a821b242590120"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Apr 17 21:24:20 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 17 21:24:20 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: use intended wake up time when calculating next present time\" into rvc-dev"
    },
    {
      "commit": "07b29771b8f86802b8b5a22a0143f9bb59e11dea",
      "tree": "e3777e6229ca4c9d8b2d62cf2526ef0be565a53d",
      "parents": [
        "2984b7af4f7969cdc02dea6a1722635cc9a432dd",
        "07e5470d2c27a9bc79ddfd9fdbcce5c81550f990"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 17 02:03:29 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 17 02:03:29 2020 +0000"
      },
      "message": "Merge changes I14bb4722,I01f139b3 into rvc-dev\n\n* changes:\n  SurfaceFlinger: add a backdoor to override DisplayManager policy\n  SurfaceFlinger: always consider layers with setFrameRate\n"
    },
    {
      "commit": "89089c9a4b83e8ea4d13b0c589a3b5f7792ef68e",
      "tree": "28e78653b924f4fe501316b8e2f7e4ffc5d7575c",
      "parents": [
        "9305a3840bab852a64e1a78e7ccc4ff361ab8237"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Apr 15 18:24:41 2020 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Apr 16 22:07:47 2020 +0000"
      },
      "message": "SurfaceFlinger: always consider layers with setFrameRate\n\nIf an app called to setFrameRate on a layer, consider it when choosing\nthe refresh rate, even if the layer has posted buffers.\n\nBug: 152411921\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest\nChange-Id: I01f139b34cee01255693ed274225e79d83b0f894\n"
    },
    {
      "commit": "0ed31c9457c6d9422969545739a821b242590120",
      "tree": "ff33a9f4f66a383293b1c8b0d1ef719f2bf366fc",
      "parents": [
        "660628f2fa45af30a3261d3ee72b7194c20b2df9"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Apr 16 11:48:45 2020 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Apr 16 20:53:17 2020 +0000"
      },
      "message": "SurfaceFlinger: use intended wake up time when calculating next present time\n\nIf SurfaceFlinger wakes up too late (due to the main thread being busy)\nit may calculate a wrong presentation time as it is based on the wake up time.\nInstead, cache the intended wake up time and use it as the base time.\n\nChange-Id: I84c37bd5f164fbdef3151c0898d3cea624cea515\nBug: 154199567\nTest: collect systrace for launcher scrolling\n"
    },
    {
      "commit": "e9d809ede9dd5c3b4594916d4d2853dde89669bd",
      "tree": "c2868454354ea8acebb99f89240000d78e6ae2bb",
      "parents": [
        "9bb4cfb009f1317605e8ff090e0ce930e15d4d40"
      ],
      "author": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Tue Apr 14 13:10:48 2020 -0700"
      },
      "committer": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Thu Apr 16 10:28:08 2020 -0700"
      },
      "message": "Remove hwcomposer2.h\n\nPreviously SurfaceFlinger codebase uses hwcomposer2.h, which contains a\nbunch of types that are not versioned. The usage of hwcomposer2.h has\nbeen causing static casting here and there. This patch removes the usage\nof hwcompoer2.h, creates a Hal.h to capture all composer hal stuff that\nthe codebase relies on.\n\nBug: b/77585359\nTest: atest libsurfaceflinger_unittest\nTest: atest SurfaceFlinger_test\nTest: atest libcompositionengine_test\nChange-Id: If9dfeb2a4a2c2f9df0b3ed300bfaca22c463038e\n"
    },
    {
      "commit": "abc2760c6a3b0be88b0cdf0ff4100575992715af",
      "tree": "34f68a077a1a42d6505d23983e187483739149ce",
      "parents": [
        "81ab746c41b355f03eca90849d9d45adea8a3bca"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Apr 08 17:20:29 2020 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Apr 10 16:14:15 2020 -0700"
      },
      "message": "SurfaceFlinger: Consider resolution when switching refresh rate\n\nDo not change refresh rate across configs with multiple resolutions\n\nBug: 150237118\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest\nChange-Id: I9b0f355a72343cf120229b98e6ad082ea75d3080\n"
    },
    {
      "commit": "81ab746c41b355f03eca90849d9d45adea8a3bca",
      "tree": "aa9873412aecded865db6e55b588021cd17191c6",
      "parents": [
        "164a1d8b1eb9b12894e62e76813421d8bd7fd830",
        "7539872015a3f0af9bc5c74eb3c313595db5123b"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Apr 09 01:57:30 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 09 01:57:30 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: Reset VsyncReactor\u0027s timer thread\" into rvc-dev"
    },
    {
      "commit": "7539872015a3f0af9bc5c74eb3c313595db5123b",
      "tree": "81e171a255495c1257847fec54fa842d4b016e62",
      "parents": [
        "2dbf7c97a39db33331c21fbd95d5cfea0947eadd"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Apr 07 14:08:45 2020 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Apr 07 18:29:06 2020 -0700"
      },
      "message": "SurfaceFlinger: Reset VsyncReactor\u0027s timer thread\n\nIf any of the syscalls the timer uses returns an error, reset the timer.\nThis is a workaround for an issue seen where VsyncReactor is not calling\nnew callbacks. In addition this change adds more log prints to help\nidentifying the underlying issue.\n\nBug: 151892277\nTest: simulate an error in syscall and observe timer resets\nChange-Id: I6fd62f9d73f75f32a87d1483cea14f3f1b358507\n"
    },
    {
      "commit": "d407190b3691b8b404143281840b805ee21d7f8f",
      "tree": "6f5ea79535e90f0c42940db76f4ef57d2b368c8d",
      "parents": [
        "4e2936c2d1d9fa231da596c4288a612574a194e8"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Tue Mar 24 16:02:53 2020 -0700"
      },
      "committer": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Mon Apr 06 12:55:16 2020 -0700"
      },
      "message": "Add frame rate flexibility token\n\nAdd support for temporarily relaxing frame rate restrictions in surface\nflinger. This is used by CTS tests to get a consistent device state\nwhile running frame rate tests.\n\nBug: 148033900\n\nTest: - On a Pixel 4, I turned the brightness down and covered the\nambient light sensor, causing the display manager to set a frame rate\nrestriction. I ran the frame rate CTS test without these CLs applied,\nand confirmed the test failed because surface flinger couldn\u0027t switch\nframe rates, as expected. Then I ran the tests with the CLs applied, and\nconfirmed the tests pass.\n\n- I confirmed that, without adopting shell permission identity, the CTS\ntest is denied the request to acquire a frame rate flexibility token. So\nnormal apps won\u0027t be able to access this.\n\nChange-Id: I6685edc4bc07c7888b79a9dd72a90f56b74e7604\n"
    },
    {
      "commit": "e56e17755945d138336f7c45978a4d883173e444",
      "tree": "f927c03bd625cffd82ca6411281981e49d2a5016",
      "parents": [
        "8d8ff36ec0fef1450e7b72c5b03d8507c5f40c27",
        "5b31e5c671773cb5a81e3521204fe8ab0fbaa171"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 25 20:26:34 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 25 20:26:34 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: remove experimental.sf.force_youtube_vote\" into rvc-dev"
    },
    {
      "commit": "8d8ff36ec0fef1450e7b72c5b03d8507c5f40c27",
      "tree": "727ae547644a413dc895f4ec31e6f811e210466f",
      "parents": [
        "afa901925a775b7f97d9b44ce6e7d30174995b0e",
        "60120a06acdefa44b911a6558b2c140cf3713f38"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 25 02:00:17 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 25 02:00:17 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: add a test for unknown offset\" into rvc-dev"
    },
    {
      "commit": "5b31e5c671773cb5a81e3521204fe8ab0fbaa171",
      "tree": "28610c30b62401a1c42be4095d6968063cc45c84",
      "parents": [
        "5e7371cec37711a0a822a7b553a340a4605efc89"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Mar 24 17:05:03 2020 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Mar 24 17:05:03 2020 -0700"
      },
      "message": "SurfaceFlinger: remove experimental.sf.force_youtube_vote\n\nThis was just for development purposes, not needed anymore.\n\nTest: compile\nBug: 146935143\nChange-Id: I404bed7ebc88dfc43ba58baa0a31e30f57ee83ed\n"
    },
    {
      "commit": "5e7371cec37711a0a822a7b553a340a4605efc89",
      "tree": "9795af16bd5c406a13fdf5f7253e94e55d4c8432",
      "parents": [
        "0002e6c4f5205e2b2f091bac99d9bb5f31b6167b"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Mar 24 14:47:24 2020 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Mar 24 15:45:03 2020 -0700"
      },
      "message": "SurfaceFlinger: add debug information when vsync is not generated\n\nPrint debug information about VsyncReactor internal state when\nwe expect a vsync event but it is not generated.\n\nBug: 151892277\nTest: adb shell dumpsys SurfaceFlinger --dispsync\nTest: simulate a missed vsync and observed logcat\nChange-Id: Ia98cb884321d0c25610c4d721f422d9cd05c8c5e\n"
    },
    {
      "commit": "0002e6c4f5205e2b2f091bac99d9bb5f31b6167b",
      "tree": "45ff396c086b00dac30c295a0923b019b3fb82fc",
      "parents": [
        "c993bf449d5942d1988438ddfcb48c861cf3669f",
        "bdb9e6d75bf6c4c73d948d1ada85d74b103b1a1e"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 23 21:51:46 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 23 21:51:46 2020 +0000"
      },
      "message": "Merge \"sf: Construct Phase Offsets for unknown fps\" into rvc-dev"
    },
    {
      "commit": "60120a06acdefa44b911a6558b2c140cf3713f38",
      "tree": "e4fb4b8c2b741a0f80d6ebbf5195c0e4e0b382a5",
      "parents": [
        "bdb9e6d75bf6c4c73d948d1ada85d74b103b1a1e"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 23 11:23:26 2020 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 23 11:25:54 2020 -0700"
      },
      "message": "SurfaceFlinger: add a test for unknown offset\n\nAdd a unit test that tries to get phase offset for a\nrefresh rate that is not part of the boot list.\nThe scenarios simulates an external display hotplug\nwith different refresh rate than the internal one.\n\nBug: 151859083\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest\nChange-Id: I3adee92b91d0c1a337c9a6ffd7431e7b854bbe0d\n"
    },
    {
      "commit": "bdb9e6d75bf6c4c73d948d1ada85d74b103b1a1e",
      "tree": "37cbf9b726bd61844e92f6bf9463ee2c4ffb9671",
      "parents": [
        "8e46e756719b34359cd046621dbabac4c5afde9f"
      ],
      "author": {
        "name": "Sushil Chauhan",
        "email": "sushilchauhan@codeaurora.org",
        "time": "Thu Mar 19 16:15:46 2020 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Mar 19 16:16:23 2020 -0700"
      },
      "message": "sf: Construct Phase Offsets for unknown fps\n\nExternal display can support a Refresh Rate value which doesn\u0027t exist\nin keys of mOffsets map which has been created with RefreshRateConfigs\nof Primary display, based on current design. This is not a fatal error\nscenario. In such a case, construct Phase Offsets with current logic.\n\nCRs-Fixed: 2643508\nBug: 151859083\nTest: boot\nChange-Id: Ib89f0dbc3db6bdd3e41681c31c567890487c453f\n"
    },
    {
      "commit": "dc9cc4def75f0ea1861c4644eeb4a259f09e109b",
      "tree": "e357541d2922a3e2eb8a6aaaf893f86727053ae9",
      "parents": [
        "e636f3fe67b9cff2d9d75f12946ac4d16577e7bd",
        "0049f8bd4c5bf5b6d12e04081a0f4398e4190021"
      ],
      "author": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Wed Mar 18 20:47:03 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 18 20:47:03 2020 +0000"
      },
      "message": "Merge \"SF: increase precision in VSyncPredictor\" into rvc-dev"
    },
    {
      "commit": "8e46e756719b34359cd046621dbabac4c5afde9f",
      "tree": "3c0aa5b97cd02c958e1340d4fd73951402d25ff3",
      "parents": [
        "a4b4999ec508c5ba90ef4eb1bbdb31c74e169fa8",
        "60e42ea45c1819af7f0ee248aeb8d5b0683bf60f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 16 21:40:05 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 16 21:40:05 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: Layer::getFrameRate() with relatives\" into rvc-dev"
    },
    {
      "commit": "60e42ea45c1819af7f0ee248aeb8d5b0683bf60f",
      "tree": "c622aae225bba84954c888aca6d12ce68b67d89f",
      "parents": [
        "104600438dbedd857bbb88291f84759d39b1dc5e"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 09 19:17:31 2020 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 16 11:51:41 2020 -0700"
      },
      "message": "SurfaceFlinger: Layer::getFrameRate() with relatives\n\nIf an app set a framerate on a layer, then getFrameRate() on\nancestors/successors of this layer should return NoVote to allow the\nrefresh rate heuristic to be based on the the actual layers that voted.\n\nBug: 151274728\nTest: Swappy with ANativeWindow_setFrateRate\nChange-Id: Icfdf8e8fd4d92ba520bbc894bb9971b980691518\n"
    },
    {
      "commit": "0049f8bd4c5bf5b6d12e04081a0f4398e4190021",
      "tree": "e50738e45af7abf812f4e3a96d0c9da9d14a413d",
      "parents": [
        "8929001832590afd537f2e06147c039b951d862c"
      ],
      "author": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Wed Mar 11 10:30:11 2020 -0700"
      },
      "committer": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Thu Mar 12 14:53:41 2020 +0000"
      },
      "message": "SF: increase precision in VSyncPredictor\n\nAn issue was observed where the sf-app timeline woke up 1ms later than\nit should have. Issue was tracked down to an imprecision in some of the\nmath in VSyncPredictor, which this issue corrects.\n\nFixes: 151146131\nTest: 2 new unit tests, one of which was from bug\nTest: flash dogfood device with patch\n\nChange-Id: I1994b5b532e292a140d4736c7090b68224f75a02\n"
    },
    {
      "commit": "6a6d06f5bae488786ec7eedcee8a998381251b52",
      "tree": "305114e4d8030d5091fda9aeccfbb0e6ee589e3c",
      "parents": [
        "284c0a5477b91306bf528bad6dedd1c8e8cdd460",
        "5b8afb5ae3d96a7c82920fada3a5f12f3bcc6bdf"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 10 02:03:26 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 10 02:03:26 2020 +0000"
      },
      "message": "Merge changes Icda006de,I3590beeb into rvc-dev\n\n* changes:\n  SurfaceFlinger: treat the desiredRefreshRate of ExplicitDefault as max\n  SurfaceFlinger: no touch boost for layer that explicitly voted\n"
    },
    {
      "commit": "5b8afb5ae3d96a7c82920fada3a5f12f3bcc6bdf",
      "tree": "b763341724c9fdbd9f2923dd3756d72a427b26ef",
      "parents": [
        "6fb599bf5b3a1b33c49dbe97c5afab8901245928"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Mar 06 14:57:26 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 09 17:22:40 2020 -0700"
      },
      "message": "SurfaceFlinger: treat the desiredRefreshRate of ExplicitDefault as max\n\nWhen a an app calls to\nANativeWindow_setFrameRate(..., ANATIVEWINDOW_FRAME_RATE_COMPATIBILITY_DEFAULT)\nit usually uses the frame render time to calculate the desired refresh rate.\nChange the platform side algorithm to consider the desired refresh rate in\nthat case to the highest frame production rate.\n\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest\nBug: 147516364\nBug: 150977265\nChange-Id: Icda006de0aeb22da8244baee936947495f813e1b\n"
    },
    {
      "commit": "6fb599bf5b3a1b33c49dbe97c5afab8901245928",
      "tree": "5419f8b85b8fd2b1447f53ed8817a46dc1901ef3",
      "parents": [
        "104600438dbedd857bbb88291f84759d39b1dc5e"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Mar 05 13:48:22 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 09 17:22:14 2020 -0700"
      },
      "message": "SurfaceFlinger: no touch boost for layer that explicitly voted\n\nAvoid switching to peak refresh rate on touch when we have\nlayers that explicitly voted via setFrateRate() and they occupy \u003e 80%\nof the screen.\n\nTest: App that calls to setFrameRate + touch\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest\nBug: 147516364\nFixes: 150976355\nChange-Id: I3590beeba1c3ff4c9a1b1575a607ef949ca6dd10\n"
    },
    {
      "commit": "f098f119a1854d123f0f82fb22aaec777176c76a",
      "tree": "e97039e4aa048ab62ab1339ba01f107bed62cc78",
      "parents": [
        "c2dbfdc430f82a0d914cf95bd02a098a06d85f78",
        "2e1dd89a34ed859d6105bc4f680f1b0738e2aa0a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 06 01:20:08 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 06 01:20:08 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: delete RefreshRate copy constructor\" into rvc-dev"
    },
    {
      "commit": "2e1dd89a34ed859d6105bc4f680f1b0738e2aa0a",
      "tree": "7165e3d95ad0ff4a01f3c5643a9da968a09be2f2",
      "parents": [
        "104600438dbedd857bbb88291f84759d39b1dc5e"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Mar 05 13:48:36 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Mar 05 22:18:13 2020 +0000"
      },
      "message": "SurfaceFlinger: delete RefreshRate copy constructor\n\nAvoid copying RefreshRate objects\n\nChange-Id: Ic00f14bd03465d163e82ee7f4bf34346f1920ad6\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest\nBug: 150887328\n"
    },
    {
      "commit": "58b48f761f9a785dd2a5413d2f50ba8dd4e36ff1",
      "tree": "68cfd499ff5ec86d8eb7ced23435401a8359c2a9",
      "parents": [
        "59db0a38cc14c27aa44840741338db6e1838e685",
        "13bc0bef0eb7d6d53574c3904e0996591fb6b22b"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Mar 03 20:36:19 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 03 20:36:19 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: add VSYNC-predicted as debug option\" into rvc-dev"
    },
    {
      "commit": "13bc0bef0eb7d6d53574c3904e0996591fb6b22b",
      "tree": "648a6ce43caecceba70f2051bd1fa7bfc526f9b9",
      "parents": [
        "d9eff75a8ffac17a95903a9c4db6994b546cd011"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Feb 27 16:48:20 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 02 15:25:59 2020 -0800"
      },
      "message": "SurfaceFlinger: add VSYNC-predicted as debug option\n\nAdd a trace point for the predicted VSYNC event.\nThis is controlled by debug.sf.show_predicted_vsync (default off)\n\nFixes: 150414668\nTest: adb shell stop \u0026\u0026 adb shell setprop debug.sf.show_predicted_vsync 1 \u0026\u0026 adb shell start\nChange-Id: Idd140dd2cb98c6bdd25197a742084cd5d4debd90\n"
    },
    {
      "commit": "0d73666f60cbf10d0b415d13733a1587962a65c0",
      "tree": "094f7422a9401910b5b45a9609a95fe764b71c1c",
      "parents": [
        "de7156e40ab3ed00971df71187ed028587731d2e"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Feb 28 18:22:30 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Feb 28 18:28:47 2020 -0800"
      },
      "message": "SurfaceFlinger: fix infrequent frames logic\n\nWhile playing video in YouTube, the UI posts sometimes 2 buffers\nvery close to each other, but overall frame rate is very low (~fps).\nFix the infrequent logic to detect this scenario.\n\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest\nBug: 147516364\nChange-Id: Ie821252f793a18bb8830ac6582b9d99ab8b1c8f6\n"
    },
    {
      "commit": "de7156e40ab3ed00971df71187ed028587731d2e",
      "tree": "703970bedb08eafff76783f5c08eff1a14cf5b89",
      "parents": [
        "d9eff75a8ffac17a95903a9c4db6994b546cd011"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Feb 28 17:29:39 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Feb 28 18:28:24 2020 -0800"
      },
      "message": "SurfaceFlinger: getRefreshRateForContentV2 always returns valid config\n\nMake sure getRefreshRateForContentV2 always returns an allowed config.\n\nBug: 150477881\nTest: YouTube video playback\nChange-Id: I2271e4e1b3855875d8bc55d300d33636ca9de3fc\n"
    },
    {
      "commit": "7ed9b006beaf6140f7ede804b533e67c099ff765",
      "tree": "c0b5c648f1978ee5f7581ec0722192acaab6de7e",
      "parents": [
        "56aad88e500d0499e222ddade39dd3057d4faa43",
        "3d367c8b3410968cbe783bb9c8e8542a73a4213e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 27 20:20:32 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 27 20:20:32 2020 +0000"
      },
      "message": "Merge \"SF: Use content detection flag to protect the content detection policy\" into rvc-dev"
    },
    {
      "commit": "3d367c8b3410968cbe783bb9c8e8542a73a4213e",
      "tree": "1a4ac35cc05eb145399692d1fdca3ee806d1ebdf",
      "parents": [
        "57cabaca38fd527acdec5fb92c7c5189214ba2b1"
      ],
      "author": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Tue Feb 25 15:02:01 2020 -0800"
      },
      "committer": {
        "name": "Alistair Delva",
        "email": "adelva@google.com",
        "time": "Thu Feb 27 06:00:25 2020 +0000"
      },
      "message": "SF: Use content detection flag to protect the content detection policy\n\nSomewhere in the process of migration we forgot to include the\nuse_content_detection_for_refresh_rate sysprop flag. This CL guards\nthe content detection policy with this guard.\n\nTest: Turn the flag off. No content detection. Turn the flag on.\n      Observe content detection.\nTest: On Cuttlefish.\nTest: Added unit test in RefreshRateConfigs.\nTest: atest libsurfaceflinger tests\nBug: 150003390\nBug: 150212108\nChange-Id: Icff9ab9ffd3604049dfe36efd5d3939e1d77b091\n"
    },
    {
      "commit": "a09852aa9db21aa375479c7b139b81db5c7822c5",
      "tree": "2d552658e33b4eaf4e6bd0fe05f1e1ae2dd3f88c",
      "parents": [
        "57cabaca38fd527acdec5fb92c7c5189214ba2b1"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Feb 20 14:23:42 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Feb 26 22:08:46 2020 +0000"
      },
      "message": "SurfaceFlinger: update the refresh rate overlay based on kernel idle timer\n\nThe frameworks maintains its own copy of inactivity timer to track the\nkernel idle timer. Update the refresh rate overlay based on that timer.\n\nTest: Enable refresh rate overlay from developer options\nBug: 149710432\nChange-Id: I6c50d64575149317106f72fecdd50cef4e08db6a\n"
    },
    {
      "commit": "0a588706dbd34220a53c0e4f49103005e65a0969",
      "tree": "a678ad4f45ddb8995f8f23187ac3a0fd47dcaa13",
      "parents": [
        "453f2c3e7a99fc1a342319c0419da4a2de2e9a87",
        "62a4cf8c48647de3442808264005e093ab7704f0"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Wed Feb 19 18:53:02 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 19 18:53:02 2020 +0000"
      },
      "message": "Merge \"Add compatibility param to setFrameRate() api\""
    },
    {
      "commit": "5ab2db7006c7af286cf4392680f6efba1a0eec79",
      "tree": "7b873d22293644a30313a63c50c894d74afd457c",
      "parents": [
        "c71963874de512ec4308909fed7bd0bdcdba19a2",
        "4ccdcb4162194f844e1eab73d5cf5dd1650d1295"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 19 05:29:11 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 19 05:29:11 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: allow switching when layers vote to refresh rate\""
    },
    {
      "commit": "62a4cf8c48647de3442808264005e093ab7704f0",
      "tree": "e11edbf1ffcdba13993ecde3fff1f4e4b24a1908",
      "parents": [
        "b0d738af0fe2874416cecac9eb7f931d01a12a31"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Fri Jan 31 12:04:03 2020 -0800"
      },
      "committer": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Tue Feb 18 16:49:54 2020 -0800"
      },
      "message": "Add compatibility param to setFrameRate() api\n\nAdd a compatiblity param to the setFrameRate() api, so the system has\nmore info to decide the device frame rate when there are multiple\ncompeting preferences.\n\nI also changed the plumbing for setFrameRate() to go directly to surface\nflinger, instead of through buffer queue. We\u0027re trying to avoid changes\nto buffer queue code, to avoid disturbing the prebuilts.\n\nBug: 137287430\n\nTest: Added new cts tests to verify behavior of the compatibility param.\n      cts-tradefed run commandAndExit cts-dev --module CtsGraphicsTestCases --test android.graphics.cts.SetFrameRateTest\n\nTest: /data/nativetest64/SurfaceFlinger_test/SurfaceFlinger_test --gtest_filter\u003d\u0027SetFrameRateTest.*\u0027\n\nChange-Id: Ibe75a778fb459d4138a1446c1b38b44798b56a99\n"
    },
    {
      "commit": "4ccdcb4162194f844e1eab73d5cf5dd1650d1295",
      "tree": "a993c0e920d717575895aed47814bcc3f9de2944",
      "parents": [
        "5f0ae0e0ef429e884a08134a405b952085852452"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Feb 11 17:34:34 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Feb 19 00:47:10 2020 +0000"
      },
      "message": "SurfaceFlinger: allow switching when layers vote to refresh rate\n\nThis CL is a refinement of the refresh rate switching algorithm\nto allow refresh rate switching even if some of the layers voted\nexplicitly for a refresh rate.\n\nTest: Run ExoPlayer demo app and scroll the list while playing a video\nBug: 147516364\nChange-Id: Id01ff8477804bba9e859545e20b05eeb1ec0d319\n"
    },
    {
      "commit": "e755d04ebe55ee37ead0fe678970a7720935de7e",
      "tree": "47dc1e5854953a4f9b16698b0097bbad54713a8e",
      "parents": [
        "336e2712936943e9694b4837d1e6d0b916e5e034",
        "bf7632e88a595baa8636ee1f6649ab86dc78cc11"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 13 22:43:05 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 13 22:43:05 2020 +0000"
      },
      "message": "Merge \"SF: correct runaway RegionSamplingThread timer\""
    },
    {
      "commit": "bf7632e88a595baa8636ee1f6649ab86dc78cc11",
      "tree": "5eccf3bae6e7c27b331b2005797f18b334469791",
      "parents": [
        "3847d8b581ab7f07c656a8442b285ed81997fd49"
      ],
      "author": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Thu Feb 13 10:11:53 2020 -0800"
      },
      "committer": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Thu Feb 13 10:35:23 2020 -0800"
      },
      "message": "SF: correct runaway RegionSamplingThread timer\n\nIn some cases, the VSyncReactor timer would keep firing even\nafter the registration was stopped. This was because the\nonDispSyncEvent callback would cancel its timer from within\nits callback, and then VSR would not check if the callback\nhad stopped itself before rescheduling the callback again.\n\nFixes: 149221293\nTest: 1 new unit test\nTest: ensure timerDispatch thread is quiet when display off\nTest: [todo] verify using powerStats procedure in bug.\n\nChange-Id: I5314c8d01de7d125c31488e48c7f2c550d201701\n"
    },
    {
      "commit": "3c28860e9781f19ee11d0270c49cae283dfbc039",
      "tree": "8ce27c278d671b70911cdc07b9cc0c5da1359f90",
      "parents": [
        "612231d21e2c82f4730dad24dab35ebb22144cd2",
        "92fa2f4b7e0d67f0b28e9f775ce4cd094c721da1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 13 01:28:08 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 13 01:28:08 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: make sure VsyncPredictor always maintains a valid slope\""
    },
    {
      "commit": "23e195c2ed1781a69bcbd7274cf437a4475631ee",
      "tree": "b85bc2325a15acac11b4096a7aea52a18ed0171d",
      "parents": [
        "49677c59de3a26329cc24c6c5b5c723833625f2b",
        "717bcb6ec858b16132aa8854120f05536f5a9f91"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 12 02:57:54 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 12 02:57:54 2020 +0000"
      },
      "message": "Merge \"[SfStats] Record vsync event connection count\""
    },
    {
      "commit": "92fa2f4b7e0d67f0b28e9f775ce4cd094c721da1",
      "tree": "1938dcbfab1f2bcf64dab0490bb0c1ff59cb8b48",
      "parents": [
        "34702107fc865f01338f9538d12543b60e07d16f"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Feb 11 15:33:56 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Feb 12 00:09:27 2020 +0000"
      },
      "message": "SurfaceFlinger: make sure VsyncPredictor always maintains a valid slope\n\n - Add a safety check around the predicated vsync period in case\n   the timestamps we got from present fences are incorrect.\n   We suspect this happens when the device is in AOD.\n - Ignore present fences when device is in AOD.\n\nChange-Id: Ib02287cb0b8e693b1f5f384d754c2c3d978024dc\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest\nBug: 149299560\n"
    },
    {
      "commit": "717bcb6ec858b16132aa8854120f05536f5a9f91",
      "tree": "5fbe9289b00d1145cdb28e0f39da6c396c02bee9",
      "parents": [
        "f589aba40b764d730ba3ff40668efc7f3dfd0001"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Mon Feb 10 17:07:19 2020 -0800"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Mon Feb 10 21:07:40 2020 -0800"
      },
      "message": "[SfStats] Record vsync event connection count\n\nBug: 135480141\nTest: ./statsd_testdrive 10062\nChange-Id: I220f0c96935c96afea194ed8ca69922785cf296e\n"
    },
    {
      "commit": "34702107fc865f01338f9538d12543b60e07d16f",
      "tree": "e1b8fcce932acb671960b86974964f5edab6cced",
      "parents": [
        "8c6f9c8fc2aa1d1569552e10360f78495295c0a9"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Feb 10 14:12:05 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Feb 11 02:37:10 2020 +0000"
      },
      "message": "SurfaceFlinger: handle properly layers with Max refresh rate\n\nFix a bug where layers that voted LayerVoteType::Max are ignored if there are\nother layers with a numerical vote.\n\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest\nBug: 147516364\nChange-Id: I177ebbd9fa31544997216d951fe697f06670e0a4\n"
    },
    {
      "commit": "5e4d5b1f92a8847df629d61837cd421cd32e2911",
      "tree": "d6516ce58cfb6d30e1191486f34e77de2b772770",
      "parents": [
        "f3a06711376f8ffaf3a837381188c6cb37c46d30",
        "5dee2f130ef20dd21e413bc97556e2284610cd7a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 10 19:42:43 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 10 19:42:43 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: use vsyncPeriod from HWC\""
    },
    {
      "commit": "5dee2f130ef20dd21e413bc97556e2284610cd7a",
      "tree": "7b4a92c9e1fbea9a5bcd013ccca8d86f30eff270",
      "parents": [
        "11bb5de5f918c3d759c7ccd87bc012182083cfa8"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Feb 05 17:49:47 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Feb 10 10:31:56 2020 -0800"
      },
      "message": "SurfaceFlinger: use vsyncPeriod from HWC\n\nComposer 2.4 onVsync callback provides a vsyncPeriod. Use that period\nin VsyncReactor to know when a vsync transition is done.\n\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest\nBug: 140201379\nChange-Id: Ia255e3b1d722fd1a3e571ec2aeceb1e8569d44d4\n"
    },
    {
      "commit": "3803b8d76a0d66ae42b6dd727658c292b42e63e2",
      "tree": "71187e1b67c48fdcc614c61f03869dc589a1e3b2",
      "parents": [
        "01a43ca0e2c3f9dbfb830bcc3b92012490c787ac"
      ],
      "author": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Mon Feb 03 16:35:46 2020 -0800"
      },
      "committer": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Fri Feb 07 16:26:20 2020 -0800"
      },
      "message": "SF: Flag guard setFrameRate() API\n\n- LayerHistory is now always created\n- Do not use LayerHistory when content detection flag is turned off.\n\nBug: 148428554\nTest: atest CtsGraphicsTestCases:SetFrameRateTest\nTest: Play YouTube video. When content detection flag is off,\n      display runs at 90, otherwise at 60.\nTest: adb shell /data/.../libsurfaceflinger_unittest\nChange-Id: Iab8b79e16a5257c770d9ddd204cfe26d22de83b6\n"
    },
    {
      "commit": "01a43ca0e2c3f9dbfb830bcc3b92012490c787ac",
      "tree": "9b7449a2617aec9e1fac72084a2daf61b60d6a9c",
      "parents": [
        "584b9e6efd2bd573dafeda27df4cab459400c7c7",
        "5d47791e231cdddb2ae933e8b1923c43533c7663"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 07 22:19:48 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 07 22:19:48 2020 +0000"
      },
      "message": "Merge \"SF Crash Bug fix\""
    },
    {
      "commit": "5d47791e231cdddb2ae933e8b1923c43533c7663",
      "tree": "457c6ad757251cc432e4b3ed862d72e746c2d489",
      "parents": [
        "74a2eb62f434fccd0299e9ca7eab614fa5b7d291"
      ],
      "author": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Fri Feb 07 12:02:38 2020 -0800"
      },
      "committer": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Fri Feb 07 12:57:06 2020 -0800"
      },
      "message": "SF Crash Bug fix\n\nThere is a state when Scheduler returns a config which is not allowed\nby the policy. This can happen when policy has changed, and scheduler\ndecided that the next config should be the current config. We fix it\nby returning the current config, if allowed, otherwise the default.\n\nChange-Id: Id49674dc5cf6cc36eb6a48dfec7d007063c1f382\nBug: 149077559\nTest: Turn off all policies. Toggle smoooth display. Doesn\u0027t fail.\nTest: Turn off all polcies. Open Waze. Doesn\u0027t fail.\nTest: Turn off all policies. Open TouchLatency app. Switch between 60/90.\nTest: Turn off all policies. Play youtube video.\nTest: Turn off all policies. Open Chrome. Play video.\n"
    },
    {
      "commit": "e189fc2161a9f3da7bf4e4d9592b699c1e8af8a2",
      "tree": "1e3a4f641c6a5a8c43793b50c417bfb1a7e589da",
      "parents": [
        "90e9861ff6651b4bbc5a196d5289b3a7b2386839",
        "48da0709f8a45ab7a1912535bffd97e6f675f048"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Feb 07 18:34:43 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 07 18:34:43 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: rename use_smart_90_for_video flag\""
    },
    {
      "commit": "3f6a2062120308f02f6feae5591b3c33a21f329f",
      "tree": "73be5067a32afeee35ebdd1862de65862a1a93d7",
      "parents": [
        "9ce0322c142533a48093f859ccbdfa1ec848e496"
      ],
      "author": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Thu Jan 23 15:48:01 2020 -0800"
      },
      "committer": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Thu Feb 06 11:25:52 2020 -0800"
      },
      "message": "SF: Remove refresh_rate_switching flag. With a fix.\n\nag/9294789 introduce a flag to only allow refresh rate switching on the\ndevices that have that flag set to true, because it broke devices that\ndidn\u0027t support multiple refresh rates, and Android TV.\n\nLocalDisplayAdapter sets the refresh rate to default when booting the\nphone, so no need for that in SF anymore.\n\nTest: Turn off Smooth display (see b/148821456), device doesn\u0027t crash.\nTest: Install on devices that doesn\u0027t have multiple refresh rates.\nTest: Run SF unittests.\nTest: Turn on all the flags, and run through set of examples:\n      Video playback stays at 60.\n      Camera stays at 60.\n      Maps play at 60.\n      Low brightness stays at 90.\n      Swappy successfully switches between 60 \u0026 90.\nTest: Turn off all the flags, and rerun the examples from previous.\n      If applications requested the change, the change is honored,\n      otherwise we stay at default (set by DM).\nTest: Ask Android TV team to test the patch.\nBug: 148427603\nBug: 148821456\n\nChange-Id: I5bb964572d93e5cb78d7b75054b900917be563b0\n"
    },
    {
      "commit": "48da0709f8a45ab7a1912535bffd97e6f675f048",
      "tree": "d073dd570ec659e2f5b190997a747d5a108cb851",
      "parents": [
        "11bb5de5f918c3d759c7ccd87bc012182083cfa8"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Feb 04 15:59:25 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Feb 06 11:19:13 2020 -0800"
      },
      "message": "SurfaceFlinger: rename use_smart_90_for_video flag\n\nRename use_smart_90_for_video -\u003e use_content_detection_for_refresh_rate\nto better describe what it controls.\n\nTest: Play video and observe the refresh rate\nChange-Id: I5ae03073bd670d0b3bc7f2861cbf3ec0d28efbe7\n"
    },
    {
      "commit": "10e0205ce2691eb99940de8fb8a7a0c182fb997a",
      "tree": "d9ee64dd5c5211c33c8ca1038de51c6d79e95d0c",
      "parents": [
        "c3a51cb56713c2ccdbb636332af1dfcfa4216f80"
      ],
      "author": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Tue Feb 04 17:16:10 2020 +0000"
      },
      "committer": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Tue Feb 04 18:25:26 2020 +0000"
      },
      "message": "Revert \"Revert \"Revert \"SF: Remove refresh_rate_switching flag.\"\"\"\n\nThis reverts commit aa52b007cb5c96d6124a293ca80c430c7051f7f3.\n\nReason for revert: The original revert cause a failure: b/148821456. So the revert was created. Which caused a build failure b/148835312. Reverting the original change and fixing the test (that caused build failure) with it.\n\nBug: 148835312\nBug: 148821456\nBug: 148835894\nTest: build, install on coral.\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest\nChange-Id: I48964c7c27ef53e8fb03d959ef85ee2ec64e1ed1\n"
    },
    {
      "commit": "c3a51cb56713c2ccdbb636332af1dfcfa4216f80",
      "tree": "3f8f51aab5a0fe91e0ac6d280bf2cc19f39f3b70",
      "parents": [
        "8fabd068ae9e8b235b433f1e939b64d004f8007e",
        "c57f2c39f4ff09dd2128cb46614d9c48451b248e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 04 16:15:23 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 04 16:15:23 2020 +0000"
      },
      "message": "Merge \"SF: enable VSyncReactor\""
    },
    {
      "commit": "8fabd068ae9e8b235b433f1e939b64d004f8007e",
      "tree": "1c7d012390776f24bbacd2fefc5f88bf9c2f41c0",
      "parents": [
        "011eee1c8cd62a29ca015e4ffe62d712f6206a8e",
        "aa52b007cb5c96d6124a293ca80c430c7051f7f3"
      ],
      "author": {
        "name": "Christoffer Quist Adamsen",
        "email": "christofferqa@google.com",
        "time": "Tue Feb 04 13:14:51 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 04 13:14:51 2020 +0000"
      },
      "message": "Merge \"Revert \"Revert \"SF: Remove refresh_rate_switching flag.\"\"\""
    },
    {
      "commit": "aa52b007cb5c96d6124a293ca80c430c7051f7f3",
      "tree": "9f3b28c4f7d87914a5de1174e9c1ef280d75798b",
      "parents": [
        "2a215191be4854fcb4b2836929a955157eae52d1"
      ],
      "author": {
        "name": "Christoffer Quist Adamsen",
        "email": "christofferqa@google.com",
        "time": "Tue Feb 04 12:57:19 2020 +0000"
      },
      "committer": {
        "name": "Christoffer Quist Adamsen",
        "email": "christofferqa@google.com",
        "time": "Tue Feb 04 13:00:23 2020 +0000"
      },
      "message": "Revert \"Revert \"SF: Remove refresh_rate_switching flag.\"\"\n\nThis reverts commit 2a215191be4854fcb4b2836929a955157eae52d1.\n\nReason for revert: Droidcop-triggered revert due to breakage https://android-build.googleplex.com/builds/quarterdeck?branch\u003dgit_master\u0026target\u003dhawk-userdebug\u0026lkgb\u003d6180052\u0026lkbb\u003d6180424\u0026fkbb\u003d6180072, bug b/148835312.\n\nBug: 148835312\nChange-Id: Ie8e5d4c683ab7f10051e355a62941bdb37a196b7\n"
    },
    {
      "commit": "cbedfb959b1ef45fd60c38f0e8909410c54ec66a",
      "tree": "712c53d75b763dbb6086ef4091e4c4240f51f7f2",
      "parents": [
        "cbb331be5dfb4b7bdfcd67ece7c26bc8e7db09f1",
        "2a215191be4854fcb4b2836929a955157eae52d1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 04 03:50:28 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 04 03:50:28 2020 +0000"
      },
      "message": "Merge \"Revert \"SF: Remove refresh_rate_switching flag.\"\""
    },
    {
      "commit": "2a215191be4854fcb4b2836929a955157eae52d1",
      "tree": "3eb2d0dc8ac0de3dda0455797b45e4a1c17ae685",
      "parents": [
        "8c6f3f6bd0c5edce7aa9bfd61b64dd2e7dc43deb"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Feb 04 02:20:50 2020 +0000"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Feb 04 02:20:50 2020 +0000"
      },
      "message": "Revert \"SF: Remove refresh_rate_switching flag.\"\n\nThis reverts commit 8c6f3f6bd0c5edce7aa9bfd61b64dd2e7dc43deb.\n\nReason for revert: Crashes on ToT (b/148822765, b/148821456)\n\nChange-Id: If1bc13b33321727244c3b0f15a0e7b30665d1c43\n"
    },
    {
      "commit": "71c437dcd8b05244a171d477e4dde5ac20be9c4d",
      "tree": "bc37f19a6985c3b48f1842d643336edcb3137a90",
      "parents": [
        "ce172aac0e6b2ed09a2a0911b12986074b3c06f8"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Jan 31 15:56:57 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Feb 04 00:01:18 2020 +0000"
      },
      "message": "SurfaceFlinger: add support for FrameRateCompatibilityType\n\nBug: 147516364\nTest: adb shell /data/nativetest64/SurfaceFlinger_test/SurfaceFlinger_test --gtest_filter\u003d\u0027SetFrameRateTest.*\u0027\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest --gtest_filter\u003d*RefreshRateConfigs*\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest --gtest_filter\u003d*LayerHistory*\nChange-Id: I49272804e25f04e1d7a148a0008551cbc5428011\n"
    },
    {
      "commit": "ce172aac0e6b2ed09a2a0911b12986074b3c06f8",
      "tree": "2a6f202ddd5ba02597cce12b9fb0c08e774cbf5c",
      "parents": [
        "20a6ee25857178a120aa91a3875ad8854c0b4426",
        "a61edcb5190368d9048d9afda1159070a2d26668"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 03 23:58:32 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 03 23:58:32 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: keep LayerInfo history for inactive layers\""
    },
    {
      "commit": "8c6f3f6bd0c5edce7aa9bfd61b64dd2e7dc43deb",
      "tree": "9f3b28c4f7d87914a5de1174e9c1ef280d75798b",
      "parents": [
        "5ca59db02b5338df237faad94e8d6f24f3ab11c7"
      ],
      "author": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Thu Jan 23 15:48:01 2020 -0800"
      },
      "committer": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Fri Jan 31 19:52:02 2020 -0800"
      },
      "message": "SF: Remove refresh_rate_switching flag.\n\nag/9294789 introduce a flag to only allow refresh rate switching on the\ndevices that have that flag set to true, because it broke devices that\ndidn\u0027t support multiple refresh rates, and Android TV.\n\nLocalDisplayAdapter sets the refresh rate to default when booting the\nphone, so no need for that in SF anymore.\n\nTest: Install on devices that doesn\u0027t have multiple refresh rates.\nTest: Run SF unittests.\nTest: Turn on all the flags, and run through set of examples:\n      Video playback stays at 60.\n      Camera stays at 60.\n      Maps play at 60.\n      Low brightness stays at 90.\n      Swappy successfully switches between 60 \u0026 90.\nTest: Turn off all the flags, and rerun the examples from previous.\n      If applications requested the change, the change is honored,\n      otherwise we stay at default (set by DM).\nTest: Ask Android TV team to test the patch.\nBug: 148427603\nChange-Id: I44085e91a74902d102bcf9f1491164cdb50650cc\n"
    },
    {
      "commit": "c57f2c39f4ff09dd2128cb46614d9c48451b248e",
      "tree": "95e4e5512a10ed7ff2f16387e2866e901572116b",
      "parents": [
        "69298c18f21e3460d3b9f032a878a8fa22540517"
      ],
      "author": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Fri Dec 20 16:32:29 2019 -0800"
      },
      "committer": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Fri Jan 31 16:21:53 2020 -0800"
      },
      "message": "SF: enable VSyncReactor\n\nEnable VSyncReactor timing system. This is a vsync timing system\nintended to work with VRR, multiple fixed rates, and typical fixed  rate\ndevices.\n\nSystem can be disabled with\nsetprop debug.sf.vsync_reactor 0; stop; start\n\nTest: go/dispsync2-checks\nFixes: 140302863\n\nChange-Id: I46bb8d55604136cc0eb8b249e465d6ae5470c3f3\n"
    },
    {
      "commit": "a61edcb5190368d9048d9afda1159070a2d26668",
      "tree": "9d8ab565741af2358ae5a4e4aed66f020eb12fcd",
      "parents": [
        "34189ff16408cdbf62e0d2cff9806c56d8b87fc6"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jan 30 18:32:03 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Jan 31 13:45:43 2020 -0800"
      },
      "message": "SurfaceFlinger: keep LayerInfo history for inactive layers\n\nInstead if clearing the history for past layers, keep a timestamp\nthat will be used to filter out the frames which are outdated. This\nallows us to distinguish between frequent vs. infrequent layers when\nwe get a buffer after a long time of inactivity.\n\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest\nBug: 147516364\nChange-Id: Ieb64cf6fc17a306c2db04b734631334af6703e79\n"
    },
    {
      "commit": "a433f5d64ef36150e7a919bdc8b12f5789817257",
      "tree": "5633662d27e0f73de54e4f441e47c07115cb802b",
      "parents": [
        "90f78f210416930618ef127835f572f1622a6a61",
        "f6b77071f8a19026373c06870b88c742da260414"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 31 01:33:25 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 31 01:33:25 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: fix calculation issues with refresh rate selection\""
    },
    {
      "commit": "f6b77071f8a19026373c06870b88c742da260414",
      "tree": "43ba5118dff2ff70420c1fd9dbac15f30e31f13c",
      "parents": [
        "466691bed8140fba59e581600e71cdcb6c64e8bd"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jan 30 14:22:54 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Jan 31 00:03:54 2020 +0000"
      },
      "message": "SurfaceFlinger: fix calculation issues with refresh rate selection\n\n - Initialize BufferQueueCore::mFrameRate\n - Load BufferQueueLayer::mLatchedFrameRate value before using it\n - Fix a bug with LayerInfoV2 where a frequent layer needs to post at least\n   FREQUENT_LAYER_WINDOW_SIZE buffers.\n - Fix casting issues in RefreshRateConfigs\n\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest\nBug: 147516364\nChange-Id: Ie6e93ef2f4dd3a030bfd0dbbf8018d96680d8bb3\n"
    },
    {
      "commit": "69298c18f21e3460d3b9f032a878a8fa22540517",
      "tree": "e2e5cf0236a9665da9dccd50633ae7623ad5bea9",
      "parents": [
        "7a1ddcfc599f243c03e9669e97b0e826dc37e0c8",
        "02d5ed9ba72741ad0d199779128e531d25047372"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 30 20:30:54 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 30 20:30:54 2020 +0000"
      },
      "message": "Merge \"SF: VSR: VSyncTracker can reorients itself\""
    },
    {
      "commit": "02d5ed9ba72741ad0d199779128e531d25047372",
      "tree": "acea095bb8d90c964c347cab95d4afd048275647",
      "parents": [
        "75df83e93a635f0d4f6c8ce2d8470bdb5b50234e"
      ],
      "author": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Mon Jan 27 11:05:46 2020 -0800"
      },
      "committer": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Tue Jan 28 10:58:36 2020 -0800"
      },
      "message": "SF: VSR: VSyncTracker can reorients itself\n\nWhen an incoming timestamp doesnt make sense, VSyncPredictor\nwill now report this out to VSyncReactor (VSR), which will\nturn on HWVsync accordingly. DispSync would turn this on as a normal\ncourse of operations, VSyncReactor only turns this on as an error\nhandling condition (where DispSync could recover better, more info see\nlinked bugs)\n\nBug: 147891587\nBug: 147734678\nBug: 144707443\nTest: 3 new unit\nTest: uibench run with VSR on\n\nChange-Id: Ia554b3262875e01de5cd8e30af99616ff23d2d27\n"
    },
    {
      "commit": "dec1a41ff1feee14fcb12ad4d866efdb0a12449e",
      "tree": "eadf1d33032c6266fb1f144f7738a09d989472bb",
      "parents": [
        "346d6d912abe1fd39e71ff914658df06586a2732"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Jan 24 10:23:50 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Jan 24 10:50:58 2020 -0800"
      },
      "message": "SurfaceFlinger: cleanup conversion issues in Scheduler\n\nBug: 129481165\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest\nChange-Id: Iff995777bd4b8e4f734b995373c8b332192d8d84\n"
    },
    {
      "commit": "9c2cc9d24d98a71e537ec90a81a0f74f18016185",
      "tree": "80f8509beefe98804c20a4a886d79d7cef7dab3f",
      "parents": [
        "2f56c9c4a6a8decfc84cf329ef985c46ff0f03cf",
        "8a82ba66a22238fe59c02a6309ba8bd3dae4f074"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 24 17:26:34 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 24 17:26:34 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: enhance refresh rate selection\""
    },
    {
      "commit": "8a82ba66a22238fe59c02a6309ba8bd3dae4f074",
      "tree": "0ab0962ade34ecd0e09fab57c68d257192db623e",
      "parents": [
        "c34a8a2e960393f434d8307edeb495d0e301c70d"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Jan 17 12:43:17 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jan 23 21:27:14 2020 -0800"
      },
      "message": "SurfaceFlinger: enhance refresh rate selection\n\nEnhance the refresh rate selection algorithm to allow having multiple\nrefresh rate. The new process attaches scores to each one of the available\nrefresh rate and chooses the refresh rate with the highest score.\nThis behavior is currently controlled by the sysprop flag\n\u0027debug.sf.use_content_detection_v2\u0027 and currently turned off.\n\nThis algorithm stills needs some tunings which will be done in\nlayer CLs.\n\nTest: adb shell /data/nativetest64/SurfaceFlinger_test/SurfaceFlinger_test\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest\nTest: go/90hzscenarios manual tests\nBug: 147516364\nFixes: 146068419\nChange-Id: I06e07459e469482799ff80fa54fa8dd311325e0e\n"
    },
    {
      "commit": "3afee20deaf91c96427d327e1554aa5c7fb5a212",
      "tree": "927659299f96ac569401ff230025cef6635c4895",
      "parents": [
        "84a11c3b455ecc88c6e4fcb93783575ce18bad56",
        "dfa3736f553561a2b7ce4480cf42b03ed0bdc651"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 23 21:12:47 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 23 21:12:47 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: fix SFFakeHWC_test\""
    },
    {
      "commit": "abd1a135f2a8c988209c30731d4da3d99788ff00",
      "tree": "a47801e09c5e38070836122ba6fdf020cc6c0fc5",
      "parents": [
        "4620a9f80554b3373109587ca699018c2b1e78a0",
        "ecb1f0d33ca88017aec1161afdeb96245bfb27d2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 23 00:55:49 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 23 00:55:49 2020 +0000"
      },
      "message": "Merge \"SF: add trace points for dispatcher system\""
    },
    {
      "commit": "dfa3736f553561a2b7ce4480cf42b03ed0bdc651",
      "tree": "97afda233226c38ff0b43abaa0f556ec34e60b02",
      "parents": [
        "c34a8a2e960393f434d8307edeb495d0e301c70d"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Jan 21 18:02:39 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jan 22 02:09:21 2020 +0000"
      },
      "message": "SurfaceFlinger: fix SFFakeHWC_test\n\nFew small fixes to make the test pass.\n\nFixes: 147250281\nTest: adb shell data/nativetest64/sffakehwc_test/sffakehwc_test\nChange-Id: I1e2ef20adcdd10a78b621eb1bea21a2d30c22afe\n"
    },
    {
      "commit": "a961e1172646cb0ddad3fab0566693f1732624ad",
      "tree": "ed05bf362f06caf13096ec2a69b75d70530f2980",
      "parents": [
        "0f1badaa92d4fa8820588a0307ea3461217159e3",
        "5988f4809b8138999716dc96bcd1a1bacf1a59be"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 21 23:45:06 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 21 23:45:06 2020 +0000"
      },
      "message": "Merge \"SF: DispSync should sync to activeConfig period\""
    },
    {
      "commit": "ecb1f0d33ca88017aec1161afdeb96245bfb27d2",
      "tree": "2ecb109c8be0d40003d112444c16474f899c8898",
      "parents": [
        "32af59a56d5304ff6281a8ecdb44bc5d331b9a16"
      ],
      "author": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Thu Dec 12 10:47:41 2019 -0800"
      },
      "committer": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Tue Jan 21 13:39:35 2020 -0800"
      },
      "message": "SF: add trace points for dispatcher system\n\nAdds initial tracing points for the dispatcher and predictor vsync\nsignal dispatch system, along with some helper classes to turn traces\non and off based on system properties.\n\nVerbose tracing can be turned on with \u0027setprop debug.sf.vsp_trace 1\u0027\n\nTest: boot with tracepoints on, see intended traces\nBug: 144927823\n\nChange-Id: Ib6764404b77881887f338a41a25daa1d7068dc1f\n"
    },
    {
      "commit": "ca479e9c86aee6b6e4ef50ffdc3abe29eec0fae5",
      "tree": "8c4ea5439c8af279960c0b7f492fb07e758bb666",
      "parents": [
        "6d8a276c39310bf61dfd581d1c6596b5c8207ef0",
        "c3e9e8eaf55b6c5078b6c0b547284a863cf9cbd9"
      ],
      "author": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Tue Jan 21 20:53:35 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 21 20:53:35 2020 +0000"
      },
      "message": "Merge \"SF: VSyncTracker, clear timestamps on beginResync\""
    },
    {
      "commit": "5988f4809b8138999716dc96bcd1a1bacf1a59be",
      "tree": "b5de1b8d84bff510155ab1fb80f24c597a52443d",
      "parents": [
        "32af59a56d5304ff6281a8ecdb44bc5d331b9a16"
      ],
      "author": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Fri Jan 17 09:03:32 2020 -0800"
      },
      "committer": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Tue Jan 21 11:34:10 2020 -0800"
      },
      "message": "SF: DispSync should sync to activeConfig period\n\nHWC@2.4 has the getDisplayVSyncPeriod method added, which was\nbeing queried around rate-change events, and the returned value\nwas sent to the DispSync system as the period to synchronize to.\n\nSome devices will have irregular vsync intervals coming out of certain\npower-saving states, and the HWC was reporting an irregular vsync\nperiod, relative to the activeConfig\u0027s period. This could manifest as\ntransient de-synchronization in DispSync (currently used code), and\nin the VSyncReactor system (switched off) a bad rate would be adopted.\n\nFixes: 147734678\nTest: uibench with VSyncReactor system\nTest: uibench with DispSync system\n\nChange-Id: Ia98b3f09893004b4420487385e0d1653dcfd2d8d\n"
    },
    {
      "commit": "540730af3031eb4b9fbbbbb66fd16075a8baee1e",
      "tree": "590a738906184e056df4fe73075c1b877bda6c30",
      "parents": [
        "6ebe801b66171c904871e086d64bc6fe2b3a087f"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Wed Jan 08 20:12:42 2020 -0800"
      },
      "committer": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Thu Jan 16 22:11:37 2020 -0800"
      },
      "message": "Adding support for the setFrameRate() API to SurfaceFlinger path\n\n- When choosing the max refresh rate in Layer History, check if\nthe layer has the bit set, if so use it.\n- Disable touch boost/choosing config with max refresh rate,\nwhen the layer has framerate set.\n\nTest: Run unit test. Observe logs.\nTest: Extend unit test to 10sec. Tap on screen while it\u0027s running.\n      Observe logs. Tap, should not reset the max refresh rate.\nChange-Id: Ibe2689964c9f92788ace1b08c3521f156cb47524\n"
    },
    {
      "commit": "d12139a2f42da2f91d9a79a4d154416540186638",
      "tree": "f39310cd1cb48024bf4b91030f2e46aa763234be",
      "parents": [
        "92bd250eda0de9b0d3d966f285a8a75fcfd85149",
        "b0dbdaaf3b1a42ab072af9d111d56900b1197af4"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jan 16 22:27:54 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 16 22:27:54 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: Enable -WConversion in Android.bp\""
    },
    {
      "commit": "92bd250eda0de9b0d3d966f285a8a75fcfd85149",
      "tree": "81b6b59e7beaf1d49a4c31f452fbe937e2c1e8d6",
      "parents": [
        "0dbbf7492c2816376129c8751f7e1ddd7c3bdf7f",
        "c84d09b6464242b1809ffb4f7faa5b2632f4a5e0"
      ],
      "author": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Thu Jan 16 21:18:46 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 16 21:18:46 2020 +0000"
      },
      "message": "Merge \"SF Generalization of Refresh Rates: Adding layer priority hint\""
    },
    {
      "commit": "c84d09b6464242b1809ffb4f7faa5b2632f4a5e0",
      "tree": "2657b5eedbf4251670addfc6576c470675fb57f6",
      "parents": [
        "b168232839544cc033bb98e18d3e478afb5ea929"
      ],
      "author": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Sat Nov 02 23:10:29 2019 +0100"
      },
      "committer": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Wed Jan 15 16:36:19 2020 -0800"
      },
      "message": "SF Generalization of Refresh Rates: Adding layer priority hint\n\nTest: Device boots. Observe logs for errors.\nTest: Open Swappy and Chrome in split screen, tap between apps,\n      SF prints the correct priority.\nTest: Open Chrome, play video. SF prints correct priority.\nTest: SF prints the correct priority received.\nBug: 142507166\nChange-Id: I5fa8a857c950db01f42a380a72d098039badc289\n"
    },
    {
      "commit": "0f67b9fa6cae94800ba9d8bbfd5265ae250e8621",
      "tree": "51f34b05c4ec6c77ec130c7e8bbb2025ece006d0",
      "parents": [
        "6900336295265fe501a0b13028a05fd1459a3889",
        "2968afc91bccd62ddb39151bd0d72cba4f809fa1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 15 22:34:06 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 15 22:34:06 2020 +0000"
      },
      "message": "Merge \"SF: VSyncReactor: correct distribute timestamp\""
    },
    {
      "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": "2968afc91bccd62ddb39151bd0d72cba4f809fa1",
      "tree": "88a92c2287462acbef21b74e8bf6e7fd5751ac18",
      "parents": [
        "c095d63733ee40d71c39ba8083e218d568a438ba"
      ],
      "author": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Tue Jan 14 09:48:50 2020 -0800"
      },
      "committer": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Wed Jan 15 10:36:22 2020 -0800"
      },
      "message": "SF: VSyncReactor: correct distribute timestamp\n\nTimestamp being distributed via the choreographer callback was the\nanticipated vsync timestamp. This might make sense in the future, but\nthe correct legacy behavior was to distribute the event timestamp.\n\n(code with problem was flagged off)\n\nTest: correction of 2 unit tests\nTest: boot to home\nTest: uibench scroll, jitter not observed.\n\nFixes: 147487378\n\nChange-Id: I142a6eaf849479dfe5b754db138f55d9e5870afd\n"
    },
    {
      "commit": "c3e9e8eaf55b6c5078b6c0b547284a863cf9cbd9",
      "tree": "07bb4734976985ea3439cd4c76a25e3ee0c1f1bc",
      "parents": [
        "c095d63733ee40d71c39ba8083e218d568a438ba"
      ],
      "author": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Tue Jan 07 09:06:52 2020 -0800"
      },
      "committer": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Tue Jan 14 13:57:42 2020 -0800"
      },
      "message": "SF: VSyncTracker, clear timestamps on beginResync\n\nDispSync would clear its internal model around power events, as the\nvsync timings during power mode changes are not accurate for screen-on\nvsync prediction. DispSync uses the beginResync signal for this, and the\nnew system does the same (although once DispSync is deprecated,\nbegin/endResync should go away too).\n\nFixes: 146050690\nTest: Dogfooding blueline\nTest: 2 new unit tests\nChange-Id: Ie4b607029516dcea0e5d65afca75a7017bf63e12\n"
    },
    {
      "commit": "4991c5978364f1b6e65486d972978c3f63342d34",
      "tree": "85b9a867ab5608d2e9fae2639b361ce7804c2d72",
      "parents": [
        "44825c34dfa1c2ae2d4714dd72d57f49b69c4740",
        "c4cdd3784119d40532fe4b6213652b3f7438e675"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 13 18:25:51 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 13 18:25:51 2020 +0000"
      },
      "message": "Merge \"SF: VSyncReactor ensure period change confirmation\""
    },
    {
      "commit": "e3ed2f91ae8ce539800f2eb3c63a7ff59c646723",
      "tree": "bf80702bfbf03f11758670b62837ed8a540635e2",
      "parents": [
        "eba6c6d23a0425e1d66f0f1e2d2ef37969bc597a"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Jan 06 17:01:28 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Sat Jan 11 00:39:21 2020 +0000"
      },
      "message": "SurfaceFlinger: Make LayerHistory virtual class\n\nThis is a base CL for refresh rate selection algorithm enhancements\nby allowing a different implementation of LayerHistory which will be\ncontrolled by a switch.\n\nTest: watch 24fps video and observe refresh rate at 60Hz\nBug: 147516364\nChange-Id: Ifd12f6683bc96cd5aba04a8960b9235729820b49\n"
    },
    {
      "commit": "c4cdd3784119d40532fe4b6213652b3f7438e675",
      "tree": "36a7ec605e761608b9a0c7b7bb1c1e5a87ffa717",
      "parents": [
        "842e9df6fca52d486e1a593c350b33c9d3d71760"
      ],
      "author": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Thu Jan 09 14:12:02 2020 -0800"
      },
      "committer": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Fri Jan 10 11:43:57 2020 -0800"
      },
      "message": "SF: VSyncReactor ensure period change confirmation\n\n(Code being corrected is flagged off, no production problems)\n\nWhen a period change is happening, system turns on hwvsync and uses\nthe first vsync signal timed at the new vsync rate as confirmation\nthat the rate has indeed changed (and then things like modifying the\noffsets occurs).\n\nIf a presentation fence was added to the VSyncReactor system before\nthe first hwvsync sample arrived, this would result in the period never\nbeing confirmed, and would result in incorrect offsets and period\nestimations, resulting in bad jank scores.\n\nTest: 3 unit tests\nTest: uibench run\nFixes: 147321414\n\nChange-Id: Idbc87529e60333df5180de585dbba3525396562b\n"
    },
    {
      "commit": "828a3e2ba0b98992118e3039b30f535901731e8c",
      "tree": "a87aa8fb6dd9b042dc8510bf84148ba06fdc41fe",
      "parents": [
        "0d4d966e093bbd4cb64d18b4b4bc56ad74774024",
        "090d42c752c3531ad69ec39bb876b1e1ba755a94"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 10 10:41:33 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 10 10:41:33 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: use margin when comparing fps in PhaseOffsets\""
    },
    {
      "commit": "090d42c752c3531ad69ec39bb876b1e1ba755a94",
      "tree": "97b5837b4158e9cf605791a32a32915d1b74fa4c",
      "parents": [
        "e950a4e1e932e95b78e757be811ac8e85993bd47"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jan 08 12:08:11 2020 -0800"
      },
      "committer": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Thu Jan 09 20:04:03 2020 +0100"
      },
      "message": "SurfaceFlinger: use margin when comparing fps in PhaseOffsets\n\nTo avoid any incorrect float equality due to precision errors\nuse 0.01Hz margin.\n\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest\nBug: 147358911\nChange-Id: Ief43eb7b5064b250a6255fd41542640d9c77529d\n"
    },
    {
      "commit": "5a6640e8686ff6ea99664d1b5186535064078a0f",
      "tree": "b579118a3be39a767bd44cd6d95371e69b9eeefe",
      "parents": [
        "ec10463423b53bbb6b23949d3319c16ab8e2e755",
        "72f0d6e0674d948ef74e8bd4b15ce1a428fd3aae"
      ],
      "author": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Wed Jan 08 20:42:31 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 08 20:42:31 2020 +0000"
      },
      "message": "Merge \"SF: Round the min/max checking to the closest int\""
    },
    {
      "commit": "72f0d6e0674d948ef74e8bd4b15ce1a428fd3aae",
      "tree": "4657e9e2ae991a1ad44db26e70ef7ba063f1ab1d",
      "parents": [
        "234fca17effce057b6beaf2d8052583c2c1b04e6"
      ],
      "author": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Mon Jan 06 15:24:47 2020 -0800"
      },
      "committer": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Wed Jan 08 10:14:22 2020 -0800"
      },
      "message": "SF: Round the min/max checking to the closest int\n\nPixel display config is reporting FPS for a given display at 60.000004.\nMake sure to take a small deviation into the account.\n\nTest: manual. open swappy and change between refresh rates.\nTest: manual. open setting and turn smooth display on/off.\nTest: unit.\nChange-Id: I0086c98406a2bd1a9b836fa171b8be14f3152acd\nBug: 147252378\n"
    },
    {
      "commit": "d5e21492de9fa2af0f14fe7a1dddc1e91ec1b69f",
      "tree": "b49056b42f74d857d7ba963d5b89a5d8c27e43ce",
      "parents": [
        "f0d81e840284fdf73b9d409c0142cb15808ff6c1",
        "f77025c8a82cb64b29ece8e2511b447c14202a0e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 07 20:04:36 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 07 20:04:36 2020 +0000"
      },
      "message": "Merge \"SF: VSyncReactor change offsets at correct time\""
    },
    {
      "commit": "c7c1f08fde0ac3b0d52138522ab8347adeb3213c",
      "tree": "34239bcd0e63e698d7b30d1a9ae3a9e5c277c356",
      "parents": [
        "aa05e6c057cb32fdf2d26dfb3745cbac0a1a1351",
        "60aee1c46b52852e140f05748f69e38f4e3de36e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 06 23:19:18 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 06 23:19:18 2020 +0000"
      },
      "message": "Merge \"[AChoreographer] Add refresh rate callback.\""
    },
    {
      "commit": "f77025c8a82cb64b29ece8e2511b447c14202a0e",
      "tree": "be0bd9603f209db84348622a9d16e450f92003b7",
      "parents": [
        "69a2660af076a74435a1e9f38ec7916efe1af6b8"
      ],
      "author": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Wed Dec 18 16:13:24 2019 -0800"
      },
      "committer": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Mon Jan 06 14:59:16 2020 -0800"
      },
      "message": "SF: VSyncReactor change offsets at correct time\n\nThe VRR/MRR timing loop (currently flagged off) was changing\noffsets incorrectly on the first hwvsync signal after initiating\na rate change. With HWC2.3 and prior, the correct strategy for\nDispSync to employ is to enable hwvsync, and await the first observed\nsignal at the new rate. This patch makes the new system apply the\nupdated offsets at the correct time.\n\nFixes: b/146455831\nTest: 2 new, 3 fixed unit tests\nTest: boot on coral with integrated patches, fiddle with rate changes.\n\nChange-Id: Iafae2e5112a5015441405055159538feb6c23a4b\n"
    },
    {
      "commit": "69a2660af076a74435a1e9f38ec7916efe1af6b8",
      "tree": "1655d8ce6f071ccaba8760ecda321171c0d3ae19",
      "parents": [
        "a81d409ce10bc25bd8b3e28f8ef87376d5fa2b5b",
        "00287387eef4ba1847245bfc15ccd94b07a9137c"
      ],
      "author": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Mon Jan 06 19:48:32 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 06 19:48:32 2020 +0000"
      },
      "message": "Merge \"SF: add disabled VRR DispSync impl (VSyncReactor)\""
    },
    {
      "commit": "f7308542d34d0b07ac860e2ea6e2cb601e213a44",
      "tree": "4ffb72bce37719ffdaa7e087268b529a3ad47514",
      "parents": [
        "f02a0a675946eb918dce60928106ddfa4e7da2be",
        "9e16a485b39a9e39191666d56d7d847ee801830f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 02 22:50:39 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 02 22:50:39 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: introduce PhaseOffsetsAsDurations\""
    },
    {
      "commit": "60aee1c46b52852e140f05748f69e38f4e3de36e",
      "tree": "7a29657039f1f8911fdef5689aa39e7fd4f3f6bd",
      "parents": [
        "516de508aa52a0907a496890dc191501481bca7b"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Mon Oct 28 16:18:59 2019 -0700"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Thu Dec 26 10:28:47 2019 -0800"
      },
      "message": "[AChoreographer] Add refresh rate callback.\n\nThis will augment the NDK to respond to display events where the display\nrefresh rate changes. Consumers of this api will include:\n* HWUI, for implementing a policy for determining whether to use\nrender-ahead,\n* Swappy, to potentially replace jumping into Java from native code to\nrespond to display evnets there.\n* Any other native app that would rely on the up-to-date display refresh\nrate.\n\nCurrently however this is not yet exposed to NDK as CTS is not yet\nwritten. Once CTS is written then this will be formally exposed to NDK.\nFor now we\u0027ll leave these as APEX apis to represent incremental\nprogress.\n\nBug: 136262896\nTest: builds\nChange-Id: I66d393f93eb5d681547411e330ef1b8950a35c5d\n"
    },
    {
      "commit": "66b3f67067e3d91d7372f974baf0f8e678270732",
      "tree": "f56bb6cda6557d403f6d2bd363b99b0cd4c501a2",
      "parents": [
        "5cef431daa88349b5ec821f200335bf775c4e5e6",
        "ed3a8cc9a64cb945aed0329f39368b013a9abc00"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Sat Dec 21 01:43:33 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 21 01:43:33 2019 +0000"
      },
      "message": "Merge \"Switch from allowed display configs to refresh rate range\""
    },
    {
      "commit": "00287387eef4ba1847245bfc15ccd94b07a9137c",
      "tree": "27c9fe3605256f660cd9cb56a974af3ceb86fa36",
      "parents": [
        "37c665dc050ab45cf51441fb70dac1004e1336d9"
      ],
      "author": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Tue Nov 19 15:11:55 2019 -0800"
      },
      "committer": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Fri Dec 20 16:37:04 2019 -0800"
      },
      "message": "SF: add disabled VRR DispSync impl (VSyncReactor)\n\nAdds a DispSync implementation called VSyncReactor that\nis built on better tested components that should be\ncapable of evolving with the MRR and VRR plans in R and S.\n\nImplementation is currently disabled, but can be enabled\nby failsafe switch:\n\nENABLE:\nsetprop debug.sf.vsync_reactor 1\nstop;start\n\nDISABLE:\ndebug.sf.vsync_reactor not set, OR\nsetprop debug.sf.vsync_reactor 0\nstop;start\n\nwhile testing is being conducted (still flushing out bugs).\n\nFixes: 140303479\nTest: check that DispSync1.0 is still active\nTest: set property and check that DispSync2.0 turns on\n\nChange-Id: I668e34e8880d0aa08222d1028bc874a2ab6a7339\n"
    },
    {
      "commit": "9e16a485b39a9e39191666d56d7d847ee801830f",
      "tree": "3f9e40c27fe6c0bf04944c7a14fe312e48c24267",
      "parents": [
        "b89b959d28d7b5a83b9b1c6d1b17dbf98c634697"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Dec 03 17:19:41 2019 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Dec 19 18:25:12 2019 -0800"
      },
      "message": "SurfaceFlinger: introduce PhaseOffsetsAsDurations\n\nCurrently we define phase offset for each refresh rate. This works for\n\u003c\u003d 2 refresh rates, but doesn\u0027t scale well. This change is introducing\na new way to calculate phase offsets, which is based on duration. Then,\nbased on the duration and refresh rate, a phase offset is calculated.\n\nThe calculation is captured here: https://docs.google.com/spreadsheets/d/1a_5cVNY3LUAkeg-yL56rYQNwved6Hy-dvEcKSxp6f8k/edit#gid\u003d0\n\nBug: 145561086\nBug: 141329414\nTest: jank tests\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest\nChange-Id: I16aaf7437d30c4b12f955bdaac36582dd100519f\n"
    }
  ],
  "next": "c94ca83964accc75b08060a265abe2a346de1c2d"
}
