)]}'
{
  "commit": "d8b1d6bb57486c5accbbf3d50127dff8a71280a5",
  "tree": "f69408355a2c2ebf973f08731bd8e127b933da64",
  "parents": [
    "43b8568139325659c82fa4c539cd8bd3c20afba3"
  ],
  "author": {
    "name": "Behdad Esfahbod",
    "email": "behdad@behdad.org",
    "time": "Fri Apr 17 14:09:34 2026 -0600"
  },
  "committer": {
    "name": "Behdad Esfahbod",
    "email": "behdad@behdad.org",
    "time": "Fri Apr 17 14:09:34 2026 -0600"
  },
  "message": "[gpu] Return edge coverage from hb_gpu_paint(); apply stem darkening and gamma to it\n\nhb_gpu_paint() now takes an out float coverage parameter that\nreceives the maximum slug coverage across all paint layers.\nThis lets the caller apply stem darkening and gamma correction\nto edge antialiasing only, without distorting interior paint\ncolors (gradients, semi-transparent layers).\n\nThe demo shaders (GLSL, MSL, HLSL, WGSL) use the new parameter\nto share a single coverage-correction block between draw and\npaint paths.  Also fixes the blend func to GL_ONE for correct\npremultiplied compositing.\n\nAssisted-by: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d13fcd54b0d8464bf6d65038384dd876ffef0d30",
      "old_mode": 33188,
      "old_path": "src/hb-gpu-paint-fragment-glsl.hh",
      "new_id": "c6d00aef0d2075a20aceba4c5e86d92a38cecbe5",
      "new_mode": 33188,
      "new_path": "src/hb-gpu-paint-fragment-glsl.hh"
    },
    {
      "type": "modify",
      "old_id": "c11f6529203bbafbe604dae98e92ca6960471245",
      "old_mode": 33188,
      "old_path": "src/hb-gpu-paint-fragment-hlsl.hh",
      "new_id": "844782f4d6bbb7f7302efac49602395d8a95499f",
      "new_mode": 33188,
      "new_path": "src/hb-gpu-paint-fragment-hlsl.hh"
    },
    {
      "type": "modify",
      "old_id": "e57c0ae779647f4bab6c59e5cde53d66bf2e6dc0",
      "old_mode": 33188,
      "old_path": "src/hb-gpu-paint-fragment-msl.hh",
      "new_id": "dcffcfd031f481d18a3f9fd43d8377846d805ac7",
      "new_mode": 33188,
      "new_path": "src/hb-gpu-paint-fragment-msl.hh"
    },
    {
      "type": "modify",
      "old_id": "271780216fc78dabb3195ef686f7bcf79248f79b",
      "old_mode": 33188,
      "old_path": "src/hb-gpu-paint-fragment-wgsl.hh",
      "new_id": "0dd70aaecb6069e4b5636d48916548a6a3bd59be",
      "new_mode": 33188,
      "new_path": "src/hb-gpu-paint-fragment-wgsl.hh"
    },
    {
      "type": "modify",
      "old_id": "9ab728601d29e4b67e0c8ce376c772b5d9bf80b0",
      "old_mode": 33188,
      "old_path": "src/hb-gpu-paint-fragment.glsl",
      "new_id": "37fa00f94ece06b58c8492441a4d10659b04964d",
      "new_mode": 33188,
      "new_path": "src/hb-gpu-paint-fragment.glsl"
    },
    {
      "type": "modify",
      "old_id": "a82ec2712d175648844eeef1fdd0197a3a88b06c",
      "old_mode": 33188,
      "old_path": "src/hb-gpu-paint-fragment.hlsl",
      "new_id": "4a0da605860c96c68d5b18fe7ab7aad1e7a02c6a",
      "new_mode": 33188,
      "new_path": "src/hb-gpu-paint-fragment.hlsl"
    },
    {
      "type": "modify",
      "old_id": "624c81853f3a8f7e42139500351265e8e2227f74",
      "old_mode": 33188,
      "old_path": "src/hb-gpu-paint-fragment.msl",
      "new_id": "6829d12ad2ef7a63ed9bc86872344cf0adfc4b36",
      "new_mode": 33188,
      "new_path": "src/hb-gpu-paint-fragment.msl"
    },
    {
      "type": "modify",
      "old_id": "d290ab49285456ff26a1b7976bfc215a8c3edc92",
      "old_mode": 33188,
      "old_path": "src/hb-gpu-paint-fragment.wgsl",
      "new_id": "6e462e9bbf48dce0f473f95e74a6cae0c608e311",
      "new_mode": 33188,
      "new_path": "src/hb-gpu-paint-fragment.wgsl"
    },
    {
      "type": "modify",
      "old_id": "d69e96b4198afe6108df848ad0e59aab914b6c8f",
      "old_mode": 33188,
      "old_path": "util/gpu/demo-fragment-glsl.hh",
      "new_id": "b251bcba718708ed4069fdd980ae00d2ba44103e",
      "new_mode": 33188,
      "new_path": "util/gpu/demo-fragment-glsl.hh"
    },
    {
      "type": "modify",
      "old_id": "77fb9346688a83cf0784272dbd489754bc97e7f5",
      "old_mode": 33188,
      "old_path": "util/gpu/demo-fragment.glsl",
      "new_id": "98733616e7d3f2b1488faa443c03eabe65efd2cb",
      "new_mode": 33188,
      "new_path": "util/gpu/demo-fragment.glsl"
    },
    {
      "type": "modify",
      "old_id": "4467f7f97a7f41029cabdcead14c963489518adb",
      "old_mode": 33188,
      "old_path": "util/gpu/demo-shader-hlsl.hh",
      "new_id": "24886de9f60b7972ce861faac08aa8fd7616c255",
      "new_mode": 33188,
      "new_path": "util/gpu/demo-shader-hlsl.hh"
    },
    {
      "type": "modify",
      "old_id": "63e0b3a07145cf397ef85d0a8619b2cdec84f9cc",
      "old_mode": 33188,
      "old_path": "util/gpu/demo-shader-msl.hh",
      "new_id": "8378320d0186c38bc42bf807e26408c118f9611f",
      "new_mode": 33188,
      "new_path": "util/gpu/demo-shader-msl.hh"
    },
    {
      "type": "modify",
      "old_id": "ada3dc5db649b790d1bd56a42342152164a354a2",
      "old_mode": 33188,
      "old_path": "util/gpu/demo-shader-wgsl.hh",
      "new_id": "267a5f453763708c741ec0e734f726c1b57a9ea8",
      "new_mode": 33188,
      "new_path": "util/gpu/demo-shader-wgsl.hh"
    },
    {
      "type": "modify",
      "old_id": "d9a69ebe966b9b0f489e8fc736890b8f4ab81a44",
      "old_mode": 33188,
      "old_path": "util/gpu/demo-shader.hlsl",
      "new_id": "08da0b6df2195888a8b452e75a0edf93a87c8aea",
      "new_mode": 33188,
      "new_path": "util/gpu/demo-shader.hlsl"
    },
    {
      "type": "modify",
      "old_id": "d5e7d721788a6428d91438af58bea9a5360cea40",
      "old_mode": 33188,
      "old_path": "util/gpu/demo-shader.msl",
      "new_id": "3db21739b0785fd4cd3a7151cfa798b9092d4e01",
      "new_mode": 33188,
      "new_path": "util/gpu/demo-shader.msl"
    },
    {
      "type": "modify",
      "old_id": "8cc96ce778bce15298fc8a2feb5dba937e964301",
      "old_mode": 33188,
      "old_path": "util/gpu/demo-shader.wgsl",
      "new_id": "c372e739e479d690a6bebee5f55c7e2f32fd9952",
      "new_mode": 33188,
      "new_path": "util/gpu/demo-shader.wgsl"
    }
  ]
}
