)]}'
{
  "commit": "99c42f5a6508f738383b5f3ab641959231360353",
  "tree": "557bde837cc9308cd42c468727f1e5f513f0418d",
  "parents": [
    "fd301fd5712803d3c538bafc12b42e5555aace82"
  ],
  "author": {
    "name": "April Kallmeyer",
    "email": "ask@chromium.org",
    "time": "Thu Nov 20 16:14:43 2025 -0800"
  },
  "committer": {
    "name": "Pdfium LUCI CQ",
    "email": "pdfium-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Nov 20 16:14:43 2025 -0800"
  },
  "message": "[Skia] Optimize DrawPath() when knockout is on\n\nInstead of calculating geometric union and subtraction of paths which\nmay contain many points, composite the objects in pixel-space using\nblend modes.\n\nThis updates the pdfium_tests hash in DEPS to\nhttps://pdfium-review.googlesource.com/c/pdfium_tests/+/138210\n\nInitially I kept the same structure of doing a union or difference based\non the stroke color and drawing the stroke on the separate layer from\nthe fill. However when I read ISO 32000-1:2008 I realized I could\nsimplify it and make the function more accurately follow the spec.\n\nRendering performance for the pdf in the bug using pdfium_test:\n\n - Before: 68.72s user 0.37s system 99% cpu 1:09.14 total\n - After: 0.52s user 0.12s system 99% cpu 0.645 total\n\nBug: 334774307, 460180742\nChange-Id: I7cc2d264bb06182c69d74dc7fcd04fe285d47256\nReviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/137630\nReviewed-by: Tom Sepez \u003ctsepez@chromium.org\u003e\nCommit-Queue: April Kallmeyer \u003cask@chromium.org\u003e\nReviewed-by: Lei Zhang \u003cthestig@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e66cb1747b892e2f35ff52b6cf9f9ed164e947ad",
      "old_mode": 33188,
      "old_path": "DEPS",
      "new_id": "a363f56461a22c7c505a1dcaedb20244fc2642e2",
      "new_mode": 33188,
      "new_path": "DEPS"
    },
    {
      "type": "modify",
      "old_id": "7a5bae21857b9bf640128d8b22361477e95d1272",
      "old_mode": 33188,
      "old_path": "core/fxge/skia/fx_skia_device.cpp",
      "new_id": "652999703146b04abc74dc6dbc0a79cf880ffc8d",
      "new_mode": 33188,
      "new_path": "core/fxge/skia/fx_skia_device.cpp"
    },
    {
      "type": "modify",
      "old_id": "57e9d788502a60a54fdba4635f91710b63335c28",
      "old_mode": 33188,
      "old_path": "fpdfsdk/fpdf_edit_embeddertest.cpp",
      "new_id": "b78d8bd4fa64856a4ec070a4d945e8f1d1703b9a",
      "new_mode": 33188,
      "new_path": "fpdfsdk/fpdf_edit_embeddertest.cpp"
    },
    {
      "type": "modify",
      "old_id": "2abdb6057dae07529f704fa4cb8ee0c8e978a58b",
      "old_mode": 33188,
      "old_path": "testing/SUPPRESSIONS",
      "new_id": "8c8b44b8f999b633dd4f54c4bec86744bbe0cfe9",
      "new_mode": 33188,
      "new_path": "testing/SUPPRESSIONS"
    },
    {
      "type": "modify",
      "old_id": "db0a0fc21f1be45ee33bfb18c84d0e278bfd2b19",
      "old_mode": 33188,
      "old_path": "testing/SUPPRESSIONS_EXACT_MATCHING",
      "new_id": "023eb637062242cd420596941c641a1f51f14303",
      "new_mode": 33188,
      "new_path": "testing/SUPPRESSIONS_EXACT_MATCHING"
    },
    {
      "type": "modify",
      "old_id": "e6a18270d3afce925e75d7c46ec91cec420b5934",
      "old_mode": 33188,
      "old_path": "testing/resources/pixel/bug_1430333_expected_skia.pdf.0.png",
      "new_id": "509eff5952b84788935bd4bb67607c0755637e86",
      "new_mode": 33188,
      "new_path": "testing/resources/pixel/bug_1430333_expected_skia.pdf.0.png"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2e892d69dadd026010241dbf4cb9c96f8568e13a",
      "new_mode": 33188,
      "new_path": "testing/resources/pixel/bug_1430333_expected_skia_mac.pdf.0.png"
    },
    {
      "type": "delete",
      "old_id": "c0ecfbd6dd2c485210385de927a293a0e9a68863",
      "old_mode": 33188,
      "old_path": "testing/resources/pixel/same_color_knockout_fill_expected_skia.pdf.0.png",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "9034434abb5ce7c253bcb390a2b3e47302f101fa",
      "old_mode": 33188,
      "old_path": "testing/resources/pixel/single_point_paths_expected_skia.pdf.0.png",
      "new_id": "12b05e6be31292a723fe1832b91e8f732c92282e",
      "new_mode": 33188,
      "new_path": "testing/resources/pixel/single_point_paths_expected_skia.pdf.0.png"
    }
  ]
}
