)]}'
{
  "commit": "3424b10d75902fc0eab2253363aa620bb8cdcb25",
  "tree": "20a19f3068ac6c7c6c772f224f9f7c14150fb21b",
  "parents": [
    "dd7bb92b9a7a813ebc2da9fe3f6484c34cc69363"
  ],
  "author": {
    "name": "Nicolas Capens",
    "email": "capn@google.com",
    "time": "Fri Nov 11 13:10:55 2022 -0500"
  },
  "committer": {
    "name": "Nicolas Capens",
    "email": "nicolascapens@google.com",
    "time": "Fri Nov 11 21:20:28 2022 +0000"
  },
  "message": "Rasterize polygon edges from the real endpoint\n\nPreviously the outline rasterizer would start at the y coordinate of the\nfirst endpoint clamped to the scissor rectangle bound. This caused\npotential overflow in a 32-bit multiplication used as part of computing\nthe initial x coordinate, when increasing sub-pixel precision.\n\nThis change makes us start rasterization at the endpoint\u0027s coordinate,\nrounded up to the next integer. This makes the difference between this\ninteger value and the fixed-point endpoint coordinate small and avoid\nthe overflow.\n\nOne consequence of this is that we\u0027re potentially edge-stepping through\nrows outside of the scissor rectangle. While that could be avoided with\nsome extra math to jump over the gap in one go, that would come at an\nextra cost for every polygon, instead of just the ones with parts\noutside of the scissor rectangle.\n\nThat cost could be reduced by detecting when there\u0027s a gap larger than\none pixel, but this is unwarranted complexity since we should work\ntowards using a coverage-based rasterizer instead, which wouldn\u0027t suffer\nfrom this issue in the first place.\n\nBug: b/257337434\nChange-Id: I6ac8a50f2d27ca81b09855ee863423b1b88dbb4e\nReviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/69668\nKokoro-Result: kokoro \u003cnoreply+kokoro@google.com\u003e\nTested-by: Nicolas Capens \u003cnicolascapens@google.com\u003e\nReviewed-by: Alexis Hétu \u003csugoi@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "825ab1746fd92e5573574e3c07c969ba35a5d071",
      "old_mode": 33188,
      "old_path": "src/Pipeline/SetupRoutine.cpp",
      "new_id": "821d35f216cc6840db26e2f9f03899552ce189d5",
      "new_mode": 33188,
      "new_path": "src/Pipeline/SetupRoutine.cpp"
    }
  ]
}
