)]}'
{
  "commit": "4a8ea86713ded9624a0632c8644370cef4b6ef21",
  "tree": "538a7666649e98c978ef2a84d4e4b2e5f497a650",
  "parents": [
    "33b6f7d5e8be35e4a176cd7a19447b469c500d28"
  ],
  "author": {
    "name": "Ihor Buhaiov",
    "email": "freedbrt@gmail.com",
    "time": "Sat Oct 10 19:42:31 2026 +0200"
  },
  "committer": {
    "name": "Jerome Jiang",
    "email": "jianj@google.com",
    "time": "Mon Oct 19 10:29:40 2026 -0700"
  },
  "message": "Remove the per SB exit check in loop filter rows\n\nIn the horizontal pass, av1_thread_loop_filter_rows() locked the shared\njob_mutex for every superblock only to read lf_mt_exit. With row\nmultithreading every worker takes that lock thousands of times per frame\nand the workers wait on each other.\n\nOn error, av1_set_vert_loop_filter_done() now writes LF_SYNC_EXIT into\nthe column counter of every row, under the row mutex, and wakes the\nwaiting workers. sync_read() already holds that mutex, so it reports\nthe exit and the horizontal pass stops. sync_write() keeps the larger\nvalue, so the exit value stays.\n\nThis applies to every multithreaded loop filter run, in the encoder and\nthe decoder. The output does not change.\n\nEncode time saved, screen recordings at RT speed 11 with 64x64\nsuperblocks, aq mode 0 and the loop filter on every frame, median of\npaired runs. 0.0% is within the noise. With the default 128x128\nsuperblocks or when cyclic refresh turns the loop filter off, the\nchange is much smaller.\n\n                              2 thr   4 thr   8 thr  12 thr\n  Apple M3 Pro, macOS\n    2560x1440, active map      0.0%    8.3%   10.7%    7.1%\n    2559x1372, active map      3.5%    6.5%    8.1%    6.9%\n    2560x1440, no map          0.0%    0.0%    4.1%    8.8%\n    2559x1372, no map          0.0%    0.0%    5.4%    8.5%\n  Ryzen 9 5900X, Windows\n    2560x1440, active map      0.0%    0.0%    4.2%    4.6%\n    2559x1372, active map      0.0%    0.0%    3.1%    3.9%\n    2560x1440, no map          0.0%    0.0%    3.5%    4.0%\n    2559x1372, no map          0.0%    0.0%    2.2%    2.4%\n\nChange-Id: I7278541d130e13433ed7cdc2c931332fd183df20\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "dee45b44c2def5ec01cb8a20f3e103d15a51770f",
      "old_mode": 33188,
      "old_path": "av1/common/thread_common.c",
      "new_id": "975c0902f8a0d4306a7470aa4c7b07a9046cd077",
      "new_mode": 33188,
      "new_path": "av1/common/thread_common.c"
    }
  ]
}
