)]}'
{
  "commit": "738b80d8a53cba281eae1013069843ffe32f9a29",
  "tree": "78e5d0bc06148f76959d264cba8b44650e5caf94",
  "parents": [
    "5570ea0c2549722f4069add1875743e6c44fc50b"
  ],
  "author": {
    "name": "Mike Klein",
    "email": "mtklein@chromium.org",
    "time": "Fri May 04 13:51:11 2018 -0400"
  },
  "committer": {
    "name": "Skia Commit-Bot",
    "email": "skia-commit-bot@chromium.org",
    "time": "Fri May 04 18:56:13 2018 +0000"
  },
  "message": "Don\u0027t use getDeviceClipBounds() to bound pic ops.\n\nThe values returned by SkCanvas::getDeviceClipBounds() are in the right\nspace, but have extra constraints on them that are not desirable for\nbounding the logical bounds of draw operations:\n\n  - they are integral\n  - they are non-negative\n\nWe\u0027ve been intersecting the bounds of each operation with these bounds,\nwhich means we\u0027re mixing these bogus constraints into the bounds of each\nrecorded operation.  This percolates up to the SkPicutre cull rect too.\n\nThe most egregious way to see the problem is to record a draw op\nentirely in negative space... it\u0027ll come back with empty logical bounds\nrather than its correct (negative-space) bounds.  I\u0027ve added a test\nfor this, and another test I also think should be passing but left\nmaking it so as a follow up.\n\nI\u0027ve had to disable a couple tests asserting clips affect the bounds. :/\n\nA possible follow-up might go back to using the clips to tighten the\nbounds of the ops, just so long as we take the original user bounds and\nmap them with the CTM through to device space ourselves, rather than\nrelying on the recording canvas\u0027 clip stack.  I think this means we\u0027d\nneed to maintain our own stack of device-space float SkRect clip bounds\nwhile calculating these op bounds.\n\nBug: skia:7735\nChange-Id: I6bf15f6b2a9ba4329a4eeae7f9d57aa8729ec1bb\nReviewed-on: https://skia-review.googlesource.com/126002\nCommit-Queue: Mike Klein \u003cmtklein@chromium.org\u003e\nCommit-Queue: Brian Osman \u003cbrianosman@google.com\u003e\nAuto-Submit: Mike Klein \u003cmtklein@chromium.org\u003e\nReviewed-by: Brian Osman \u003cbrianosman@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "89eb8a751a93e6c4d5675c0f9d982c61fd0ce085",
      "old_mode": 33188,
      "old_path": "src/core/SkRecordDraw.cpp",
      "new_id": "37899e89c388727dcef444513d608fac92ef3eec",
      "new_mode": 33188,
      "new_path": "src/core/SkRecordDraw.cpp"
    },
    {
      "type": "modify",
      "old_id": "3c4aff37ff7a02a7740dd110bfd4a936a3d9104b",
      "old_mode": 33188,
      "old_path": "src/core/SkRecorder.cpp",
      "new_id": "41441864ce4b4419bcf9af04fa44d8b254cd63d2",
      "new_mode": 33188,
      "new_path": "src/core/SkRecorder.cpp"
    },
    {
      "type": "modify",
      "old_id": "f1e70b6c88129a2a996230290d9553d8e30e1b26",
      "old_mode": 33188,
      "old_path": "src/core/SkRecords.h",
      "new_id": "67424aca2a4ad046588ee25c478d9cc19b80be17",
      "new_mode": 33188,
      "new_path": "src/core/SkRecords.h"
    },
    {
      "type": "modify",
      "old_id": "6a4cd830c82667c5ae13aaccf84c51a0f7d8e45e",
      "old_mode": 33188,
      "old_path": "tests/PictureBBHTest.cpp",
      "new_id": "f01f0fbe931fd91373d5de03f980cc718d8ec708",
      "new_mode": 33188,
      "new_path": "tests/PictureBBHTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "216865056ad19c045a8a237fb5a7ba3a309636d3",
      "old_mode": 33188,
      "old_path": "tests/RecordDrawTest.cpp",
      "new_id": "de9d2333cd26b043b4cedd2c6345a7b2a4d40336",
      "new_mode": 33188,
      "new_path": "tests/RecordDrawTest.cpp"
    }
  ]
}
