)]}'
{
  "commit": "e8dd3562a802fa84f25bb9b2196119a125f8ee01",
  "tree": "d8025a182d7c40f8602e18eb0d9e54630eef669e",
  "parents": [
    "c6f3101a182aebed1446c17fb6807b251f4dfeca"
  ],
  "author": {
    "name": "Alec Mouri",
    "email": "alecmouri@google.com",
    "time": "Fri Feb 11 14:18:57 2022 -0800"
  },
  "committer": {
    "name": "Alec Mouri",
    "email": "alecmouri@google.com",
    "time": "Thu Feb 24 02:14:33 2022 +0000"
  },
  "message": "Fix dimming flicker when entering layer caching.\n\nCaching does not perform any dimming operations, which means forcing\ncached layers to not dim in composer is not correct. So...dim the cached\nlayers as if they were SDR layers\n\nNote that because caching does not perform any dimming, then this does\nimply that some cached sets may permanently be in GPU composition if the\ndimming ratio is large enough that the DPU cannot dim + dither.\n\nIf we wanted to resolve the power cost of steady-state dimming by a\nlarge ratio, then a future patch would have to teach caching how to dim.\nThat approach would have a few potential difficulties:\n1. Modulating the dimming ratio of cached SDR layers may cause cache\n   evictions when an HDR video comes on screen, since caching will have\n   to recomposite those layers due to the change in dimming ratio, which\n   can be a power regression.\n2. Reusing caching results that take into account dimming may be\n   difficult, since dimming can cause crush at lower grey levels, so\n   brightening a dimmed cached set may cause degradation in image\n   quality.\n\n(1) and (2) aren\u0027t impossible to solve, but would either require changes\nto the composer interface to communicate a dimming ratio capability,\nand/or would introduce complexity into caching to selecttively dim\ncached results based on composer capabilities as well as what is\nexpected to be more efficient. Whereas this patch is pretty\nstraightforward.\n\nBug: 217794675\nTest: HDR test video\nChange-Id: I618a0616f49c6ae3feac5bedbb4f5b0e283f5da7\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3e983f3b20ce93404925d6b665937a8a943cf6a1",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/CompositionEngine/src/OutputLayer.cpp",
      "new_id": "723593d7acc5e587f34cd9292067bd8c6e4ce8fe",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/CompositionEngine/src/OutputLayer.cpp"
    },
    {
      "type": "modify",
      "old_id": "dda0822b1f10c4e577a247a43d11c1ed4deaf6be",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/CompositionEngine/tests/OutputLayerTest.cpp",
      "new_id": "8eb1946b679cfbe8833981a59512f5aa74a76103",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/CompositionEngine/tests/OutputLayerTest.cpp"
    }
  ]
}
