)]}'
{
  "commit": "c5b74472e754407e9d46f634be4a34b1ee55e7fc",
  "tree": "1647433d2f03f005e57e7fb75f8ba9a0e0e28256",
  "parents": [
    "6d336d3ab6c7dd42c5345f68efe0756a7a346ac2"
  ],
  "author": {
    "name": "Michael Ludwig",
    "email": "michaelludwig@google.com",
    "time": "Thu May 13 12:02:23 2021 -0400"
  },
  "committer": {
    "name": "Brian Salomon",
    "email": "bsalomon@google.com",
    "time": "Fri Aug 20 19:17:05 2021 +0000"
  },
  "message": "[M90-LTS] Fix overdraw from unstable perspective math\n\nThere were two issues leading to the corruption seen in the linked\nchromium issue.\n\n1. The draw\u0027s bounds were calculated based on the quad being clipped\nto w\u003e\u003d epsilon, which is what happens when the AA inset/outset is done.\nBut for non-aa quads, the fillrect and texture ops did no clipping,\nassuming that the GPU would be sufficient. However, this can produce\nnon-aa draws that exceed the calculated bounds, misleading the clip\nstack into incorrectly removing the scissor, etc.\n2. Precision issues within CropToRect meant some perspective quads\u0027\nbarycentric coordinates would become degenerate and compute to (0,0,1),\nmaking it appear as if the render target/scissor were contained within\nit. This meant we\u0027d turn it into a rectangular clear.\n\nThese changes appear to address the corruption on Linux and Windows, but\nthere are still rendering artifacts from poor aa inset/outset\ncalculations. These artifacts are at least limited to the clip properly.\nA better rendering method that does not rely on line intersections\nwill address these artifacts, but this CL is a reasonable temporary\nmitigation.\n\nBug: chromium:1204347\nChange-Id: I3c67d4efe70313ae7c98abc0a57b5b047c83890d\nReviewed-on: https://skia-review.googlesource.com/c/skia/+/407821\nCommit-Queue: Michael Ludwig \u003cmichaelludwig@google.com\u003e\n(cherry picked from commit 65299907634abe53e697cef25df72f2c11cdabd8)\nReviewed-on: https://skia-review.googlesource.com/c/skia/+/435636\nReviewed-by: Artem Sumaneev \u003casumaneev@google.com\u003e\nReviewed-by: Brian Salomon \u003cbsalomon@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5d3536190286cb45463db111ffaa6ca770779dba",
      "old_mode": 33188,
      "old_path": "src/gpu/geometry/GrQuadUtils.cpp",
      "new_id": "621044c9310770d4d7ef3c0f4bcce0637cab9b15",
      "new_mode": 33188,
      "new_path": "src/gpu/geometry/GrQuadUtils.cpp"
    },
    {
      "type": "modify",
      "old_id": "cee66c885c46c32681e7b4a7f4c830919c51f519",
      "old_mode": 33188,
      "old_path": "src/gpu/ops/GrFillRectOp.cpp",
      "new_id": "6429736fb8a26dc7fa51154c0eaf8c4be6cd12c9",
      "new_mode": 33188,
      "new_path": "src/gpu/ops/GrFillRectOp.cpp"
    },
    {
      "type": "modify",
      "old_id": "c27a8b6bb094eb48deeab816e61f1ba20397b7b7",
      "old_mode": 33188,
      "old_path": "src/gpu/ops/GrTextureOp.cpp",
      "new_id": "76f9a44e0fca91a14b7bbbbc65a3f828a78b3093",
      "new_mode": 33188,
      "new_path": "src/gpu/ops/GrTextureOp.cpp"
    },
    {
      "type": "modify",
      "old_id": "0b65df4ba6fe334c34bc4e1a396bc8bafe5c87b3",
      "old_mode": 33188,
      "old_path": "tests/GrQuadCropTest.cpp",
      "new_id": "2807632fb99b9699c71cb4a96598904890ed24c8",
      "new_mode": 33188,
      "new_path": "tests/GrQuadCropTest.cpp"
    }
  ]
}
