)]}'
{
  "commit": "c95b228e1cf73bf96338e8c8ae0d145553f8f99c",
  "tree": "49de78ba13cb0e1e418d4424f3f09dfa74897e72",
  "parents": [
    "cd38479cd26a153198916541a9f28fe87e300f28"
  ],
  "author": {
    "name": "Alex Gemberg",
    "email": "gemberg67@gmail.com",
    "time": "Tue Aug 04 09:56:15 2026 +1000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Aug 03 23:56:15 2026 +0000"
  },
  "message": "feat: support external textures in WebGL backend (#1792)\n\nAdds external texture sampling to the native WebGL backend, bringing\n`Scene::draw_texture_rects` to parity with wgpu. Introduces\n`WebGlTextureBindings`, validates bindings during paint preparation, and\nswitches bound textures between scheduled strip runs.\n\nExtends the standard `vello_test` harness with `hybrid_reference` so\nhybrid can generate snapshots when CPU rendering is unsupported.\nExternal texture tests now use this shared harness and run against WebGL\nin browsers.\n\nCreated with assistance from GPT-5.6 Sol.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8f433dbcd28d3eed87f88618ca3cd8e37aded457",
      "old_mode": 33188,
      "old_path": "sparse_strips/vello_dev_macros/src/test.rs",
      "new_id": "267cb61eb628e97b850a071475db8bb22c3cfa47",
      "new_mode": 33188,
      "new_path": "sparse_strips/vello_dev_macros/src/test.rs"
    },
    {
      "type": "modify",
      "old_id": "696db54ae1745400bb15a2c630f3d7a22061bb4d",
      "old_mode": 33188,
      "old_path": "sparse_strips/vello_hybrid/CHANGELOG.md",
      "new_id": "128db909d8ec0ecfa6313c4240048ba6f8db7828",
      "new_mode": 33188,
      "new_path": "sparse_strips/vello_hybrid/CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "1a3672c18ac7f6845d94e4c62b1d5a2bb1515bdb",
      "old_mode": 33188,
      "old_path": "sparse_strips/vello_hybrid/examples/native_webgl/src/lib.rs",
      "new_id": "5634208e230256da079950e9e7ee7d7187711b7a",
      "new_mode": 33188,
      "new_path": "sparse_strips/vello_hybrid/examples/native_webgl/src/lib.rs"
    },
    {
      "type": "modify",
      "old_id": "35771709fdcbc4d4d895e8b33d2db0d445efb2ee",
      "old_mode": 33188,
      "old_path": "sparse_strips/vello_hybrid/src/lib.rs",
      "new_id": "0d60e1b723e33b89cb95ae13451a79121334f279",
      "new_mode": 33188,
      "new_path": "sparse_strips/vello_hybrid/src/lib.rs"
    },
    {
      "type": "modify",
      "old_id": "92c40b285463ef3d2fa318d9b1bcb937e559d342",
      "old_mode": 33188,
      "old_path": "sparse_strips/vello_hybrid/src/render/common.rs",
      "new_id": "372382e3b77357e45c107468073ae31867bffd71",
      "new_mode": 33188,
      "new_path": "sparse_strips/vello_hybrid/src/render/common.rs"
    },
    {
      "type": "modify",
      "old_id": "bf89fe25afe64c710bf95a87b602458b1eed9d39",
      "old_mode": 33188,
      "old_path": "sparse_strips/vello_hybrid/src/render/mod.rs",
      "new_id": "62dfc934ae3508f13d667fe62775374f8f5ae2c7",
      "new_mode": 33188,
      "new_path": "sparse_strips/vello_hybrid/src/render/mod.rs"
    },
    {
      "type": "modify",
      "old_id": "b1d608b731045c791d6ce661978216a72a74a062",
      "old_mode": 33188,
      "old_path": "sparse_strips/vello_hybrid/src/render/probe.rs",
      "new_id": "e92ff778428c724cc54e0ae0383e26ce3c1333cb",
      "new_mode": 33188,
      "new_path": "sparse_strips/vello_hybrid/src/render/probe.rs"
    },
    {
      "type": "modify",
      "old_id": "5ed32c347f7ded1eab5ffcfe1ffe326d53dce5b3",
      "old_mode": 33188,
      "old_path": "sparse_strips/vello_hybrid/src/render/webgl.rs",
      "new_id": "fee372c3ce1cfbb6a702614147656534f19e6246",
      "new_mode": 33188,
      "new_path": "sparse_strips/vello_hybrid/src/render/webgl.rs"
    },
    {
      "type": "modify",
      "old_id": "a71825aa1f66d5504e86d8c12b0f868ffa80b674",
      "old_mode": 33188,
      "old_path": "sparse_strips/vello_hybrid/src/render/wgpu.rs",
      "new_id": "ea9ba9aa5c68b175975ab87065b3d14002191ff9",
      "new_mode": 33188,
      "new_path": "sparse_strips/vello_hybrid/src/render/wgpu.rs"
    },
    {
      "type": "modify",
      "old_id": "16b93a8e720cda9ac06b7326db04c9bfc17d3ef3",
      "old_mode": 33188,
      "old_path": "sparse_strips/vello_hybrid/src/scene.rs",
      "new_id": "addf7f734329079bfeb75c7c7aafb4df623920eb",
      "new_mode": 33188,
      "new_path": "sparse_strips/vello_hybrid/src/scene.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8491b613b4264b900cdb7c1cb546ef57f3f72e56",
      "new_mode": 33188,
      "new_path": "sparse_strips/vello_sparse_tests/snapshots/external_texture_opaque_interleaving.png"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cb20bdc62eaebb29e406ae9fe5f90ed66aa4d54b",
      "new_mode": 33188,
      "new_path": "sparse_strips/vello_sparse_tests/snapshots/external_texture_runs_with_opaque_prefix.png"
    },
    {
      "type": "modify",
      "old_id": "c6f2f821a575ef3c2750493c487ea3ffdb1ce6f8",
      "old_mode": 33188,
      "old_path": "sparse_strips/vello_sparse_tests/tests/external_texture.rs",
      "new_id": "e7f262d73c37de5a66b0992eb01f3784f182ff8a",
      "new_mode": 33188,
      "new_path": "sparse_strips/vello_sparse_tests/tests/external_texture.rs"
    },
    {
      "type": "modify",
      "old_id": "d70607f9c42b5f1af7ddcdeb608d67e3dc34747c",
      "old_mode": 33188,
      "old_path": "sparse_strips/vello_sparse_tests/tests/renderer.rs",
      "new_id": "f2f44ca9113b224a4e7a394806020d4fbfa3e01f",
      "new_mode": 33188,
      "new_path": "sparse_strips/vello_sparse_tests/tests/renderer.rs"
    }
  ]
}
