)]}'
{
  "commit": "e83048e2bbfa055e2d8e109e23bebb3832ca13ff",
  "tree": "59d256df7464bb7d5232fb19a0716f98e1a197f9",
  "parents": [
    "d0a4800e1487cdd65dc9c812ebc39fd2cb0d43b8"
  ],
  "author": {
    "name": "Alexis Hetu",
    "email": "sugoi@google.com",
    "time": "Mon Oct 29 14:56:42 2018 -0400"
  },
  "committer": {
    "name": "Alexis Hétu",
    "email": "sugoi@google.com",
    "time": "Tue Oct 30 11:53:00 2018 +0000"
  },
  "message": "Generate an error when trying to clear an incomplete Framebuffer\n\nCalling ClearBuffer* on an incomplete framebuffer was crashing\nbecause a depth clear assumes 4 bytes per pixel and the type of\nan incomplete framebuffer could be anything, which is potentially\nsmaller than 4 bytes, so memory was written out of bounds.\n\nClearBuffer* now also checks for completeness, just like clear\nalready does.\n\nFrom the OpenGL ES 3.0 spec, section 4.4.4.4\n\"Effects of Framebuffer Completeness on Framebuffer Operations\n\n Attempting to render to or read from a framebuffer which is not\n framebuffer complete will generate an INVALID_FRAMEBUFFER_OPERATION\n error. This means that rendering commands (see section 2.6) ...\n will generate the error INVALID_FRAMEBUFFER_OPERATION if called\n while the framebuffer is not framebuffer complete\"\n\nAnd from the OpenGL ES 3.0 spec, section 2.6 Rendering Commands\n\"GL commands performing rendering into a framebuffer are called\n rendering commands, and include the drawing commands Draw* ...,\n as well as these additional commands:\n• BlitFramebuffer\n• Clear\n• ClearBuffer*\"\n\nBug b/117048995\n\nChange-Id: I01fd2ad2829b4c9e0aac817620f65c789b11356e\nReviewed-on: https://swiftshader-review.googlesource.com/c/22048\nTested-by: Alexis Hétu \u003csugoi@google.com\u003e\nReviewed-by: Nicolas Capens \u003cnicolascapens@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "866912cea57673a021cc4edf011331e4227cd4fd",
      "old_mode": 33188,
      "old_path": "src/OpenGL/libGLESv2/Context.cpp",
      "new_id": "18aa8d9e63274145d55efdb4af877d362421b9c7",
      "new_mode": 33188,
      "new_path": "src/OpenGL/libGLESv2/Context.cpp"
    },
    {
      "type": "modify",
      "old_id": "41d4fb99adff47170a4de249d467dbd9be10f7af",
      "old_mode": 33188,
      "old_path": "tests/GLESUnitTests/unittests.cpp",
      "new_id": "e51bf99c0885a7b6f79733735cd0b8e5566ee88c",
      "new_mode": 33188,
      "new_path": "tests/GLESUnitTests/unittests.cpp"
    }
  ]
}
