)]}'
{
  "commit": "b07efcd2ebc28b160b3ef4f5c6d66f8eac976f4b",
  "tree": "cbca4a17987ad44d8738576e1ec09c6679579d8e",
  "parents": [
    "eb694da549836b2f278c709b6348c8e667c56d57"
  ],
  "author": {
    "name": "Lei Zhang",
    "email": "thestig@chromium.org",
    "time": "Tue Nov 10 11:35:08 2026 -0800"
  },
  "committer": {
    "name": "pdfium-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "pdfium-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Tue Nov 10 11:35:08 2026 -0800"
  },
  "message": "Use FX_BGRA_STRUCT\u003cuint8_t\u003e spans inside cfx_scanlinecompositor_hwy.cpp\n\nChange DispatchBgra2Bgra(), DispatchBgra2BgrxForceOpaque(),\nRunBgra2Bgra(), and RunBgra2BgrxForceOpaque() to accept\nFX_BGRA_STRUCT\u003cuint8_t\u003e spans instead of uint8_t spans. This avoids\ncalling fxcrt::reinterpret_span() in CompositeRowBgra2BgraSimd() and\nCompositeRowBgra2BgrxForceOpaqueSimd(), and eliminates the `n4` byte\ncount variable in the SIMD loops. The spans now iterate 1 element at a\ntime, while still providing the same pointers to Highway.\n\nAlso update CompositePixelBgra2Bgra() to operate on\nFX_BGRA_STRUCT\u003cuint8_t\u003e directly instead of packing and unpacking pixels\nwith FXARGB_GetDIB() and FXARGB_SetDIB(), and use fxcrt::Zip() for the\nscalar tail loops in RunBgra2Bgra() and RunBgra2BgrxForceOpaque().\n\nThis CL is partly AI generated.\n\nChange-Id: I9a658158650ed15a1411e5f264c8b8c3e06b3633\nReviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163870\nReviewed-by: Andy Phan \u003candyphan@chromium.org\u003e\nCommit-Queue: Lei Zhang \u003cthestig@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5b47c79deb6bd331ac0c335fcabf8fad522d395f",
      "old_mode": 33188,
      "old_path": "core/fxge/dib/cfx_scanlinecompositor_hwy.cpp",
      "new_id": "59a2fcb64e9d1cb255915c2f7ed1a08cf5ed5b8d",
      "new_mode": 33188,
      "new_path": "core/fxge/dib/cfx_scanlinecompositor_hwy.cpp"
    }
  ]
}
