)]}'
{
  "commit": "bb5fbf9d5a31a4f10cbc6cd21999e17841d1e2f8",
  "tree": "250c576a8c4ed4b2ad5343c2246821d64cb4f21e",
  "parents": [
    "c18e0d8aa266a563b904dbe0294de0baa69886eb"
  ],
  "author": {
    "name": "Kevin Lubick",
    "email": "kjlubick@google.com",
    "time": "Thu Jun 15 16:50:26 2023 -0400"
  },
  "committer": {
    "name": "Kevin Lubick",
    "email": "kjlubick@google.com",
    "time": "Fri Jun 16 13:21:43 2023 +0000"
  },
  "message": "Introduce delegate for Atlas regeneration\n\nI tried a few different things for this (see earlier PS if interested)\nand settled on adding another delegate at the recommendation of\nherb@, which has ended in a relatively clean way to break things up.\n\nThe Ganesh- and Graphite-specific part for GlyphVector (how to\nadd glyphs to the respective atlas) already live in src/gpu/ganesh\nand src/gpu/graphite, so they are only compiled and linked in\nwhen that particular backend is. However, to make either or both\nof them available without ifdefs, I needed a way to call them\nfrom SubRuns without forcing both of them to be there during\nlink-time.\n\nThus, an additional delegate which the Ganesh TextAtlasOp or\nGraphite Device supplies to make the call to the right backend code.\n\nOut of caution, I moved the GPU specific calls to be private\nand then added friends to allow the blessed part in Ganesh/Graphite\nto make the call. This way we don\u0027t have unintentional calls\nto that, which could cause link-time errors or other issues\nsince regenerating the atlas should only be done in a single-threaded\nenvironment due to how it mutates the underlying data.\n\nI also added a way to query the required padding for a given\nAtlasSubRun. This was necessary in an earlier version, and continues\nto exist to document some otherwise magic numbers.\n\nNext step in the ongoing effort to remove #ifdefs from src/text\nwould be looking at how the graphite instancing parts work and\nhow we can decouple that.\n\nChange-Id: I272773ec5bc492994b04171c981f0c079e05961d\nBug: skia:14317\nReviewed-on: https://skia-review.googlesource.com/c/skia/+/711682\nReviewed-by: Herb Derby \u003cherb@google.com\u003e\nCommit-Queue: Kevin Lubick \u003ckjlubick@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2dc3325dd6eaf7964937e9cf1752a3494b276408",
      "old_mode": 33188,
      "old_path": "src/gpu/ganesh/ops/AtlasTextOp.cpp",
      "new_id": "6cf037b93499eac790ff0003c4816771fc7941c2",
      "new_mode": 33188,
      "new_path": "src/gpu/ganesh/ops/AtlasTextOp.cpp"
    },
    {
      "type": "modify",
      "old_id": "a25edbe3132f61d6a052bbc760fba361f07882c6",
      "old_mode": 33188,
      "old_path": "src/gpu/ganesh/text/GrAtlasManager.cpp",
      "new_id": "477ab54bd416a169edfaf0a594f87219cfdda460",
      "new_mode": 33188,
      "new_path": "src/gpu/ganesh/text/GrAtlasManager.cpp"
    },
    {
      "type": "modify",
      "old_id": "dabc30d3f82626a8a504d4b3515fb9a4b69b71d7",
      "old_mode": 33188,
      "old_path": "src/gpu/graphite/Device.cpp",
      "new_id": "209d19a3ae14584831c9d6b597831b14ebca292d",
      "new_mode": 33188,
      "new_path": "src/gpu/graphite/Device.cpp"
    },
    {
      "type": "modify",
      "old_id": "1d7d12c59713d3f45f5bf919ff3cef8c8f4d533c",
      "old_mode": 33188,
      "old_path": "src/gpu/graphite/text/AtlasManager.cpp",
      "new_id": "27f7825b95f5f6a0ae124198135d00c109fa50f0",
      "new_mode": 33188,
      "new_path": "src/gpu/graphite/text/AtlasManager.cpp"
    },
    {
      "type": "modify",
      "old_id": "98d47401631df540afe40309ece07ca4fb69686d",
      "old_mode": 33188,
      "old_path": "src/text/gpu/GlyphVector.h",
      "new_id": "6bb2964f681263357cc1a8e9115feb4d7d294c05",
      "new_mode": 33188,
      "new_path": "src/text/gpu/GlyphVector.h"
    },
    {
      "type": "modify",
      "old_id": "2fc5c6abfd0c5a8d9ab708cb1eb087d065067667",
      "old_mode": 33188,
      "old_path": "src/text/gpu/SubRunContainer.cpp",
      "new_id": "24a57ac264bc8f38dd9b290c11a6aa3e393dc088",
      "new_mode": 33188,
      "new_path": "src/text/gpu/SubRunContainer.cpp"
    },
    {
      "type": "modify",
      "old_id": "d6c20ddf2b319e14779132afc14a63fab6f9e8c9",
      "old_mode": 33188,
      "old_path": "src/text/gpu/SubRunContainer.h",
      "new_id": "af687c3e398706c03f5295cf24c59ae5763d0cc8",
      "new_mode": 33188,
      "new_path": "src/text/gpu/SubRunContainer.h"
    }
  ]
}
