)]}'
{
  "commit": "dbeec53319e72b9ea3ac8c3fd39ac9f4f8c356c0",
  "tree": "e781a0ffb85d61a9ea97fc5419b0603091a545c9",
  "parents": [
    "752b146df7677cb5c8fd591b82b22a2f0b0f83fb"
  ],
  "author": {
    "name": "Jonah Williams",
    "email": "jonahwilliams@google.com",
    "time": "Sun Apr 28 10:22:13 2024 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sun Apr 28 17:22:13 2024 +0000"
  },
  "message": "[Impeller] when creating new pipeline variant block on current thread, re-persist dirty pipeline cache. (#52375)\n\nCurrent diagram of how PSO variants are created (after first bootstrap)\r\n\r\n```\r\nRaster thread.                             Worker Thread\r\n1.  Check Pipeline Cache\r\n2. Pipeline Cache Empty\r\n3. Create Promise\r\n4. Spawn Worker                     -\u003e      Compile Pipeline\r\n5. Block On Future.                       ..                                                    \r\n6.\r\n7. Resolve                          \u003c-      Complete Future\r\n```\r\n\r\nThis is a serialized workload due to blocking on future completion. But performing it on two threads means that we\u0027re also adding in the somewhat random cost of thread scheduling and or getting deprioritized.\r\n\r\nInstead when creating variants, block on the current thread. Now if we knew all the variants we need to create for a frame ahead of time, we could spawn one or more works to creat them more quickly. This would require more work though.\r\n\r\nWhile I\u0027m at it. Update the pipeline cache to persist every 50 frames, if it has added a new shader.\r\n\r\npart of https://github.com/flutter/flutter/issues/129660",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9face9f8d1436daae0ae60557a5e3e2a0bfbd006",
      "old_mode": 33188,
      "old_path": "impeller/entity/contents/content_context.h",
      "new_id": "0d748f323e0084eac6756991aa4a269d6151e790",
      "new_mode": 33188,
      "new_path": "impeller/entity/contents/content_context.h"
    },
    {
      "type": "modify",
      "old_id": "1736397de0553b0fe8c91ea780af53cf4bd8fc1e",
      "old_mode": 33188,
      "old_path": "impeller/entity/contents/content_context_unittests.cc",
      "new_id": "1063b069bbcd4d64202b8a338d3f2f1aae30ba0a",
      "new_mode": 33188,
      "new_path": "impeller/entity/contents/content_context_unittests.cc"
    },
    {
      "type": "modify",
      "old_id": "9077bf6ce4ffd3a9f12dcde874c791a7c45530ee",
      "old_mode": 33188,
      "old_path": "impeller/entity/contents/runtime_effect_contents.cc",
      "new_id": "d28f64e1f291b18d57dd5dc9a5db18f5d971851f",
      "new_mode": 33188,
      "new_path": "impeller/entity/contents/runtime_effect_contents.cc"
    },
    {
      "type": "modify",
      "old_id": "7d71ba3f3c9b151b7b4026a2777ae966f375f4c3",
      "old_mode": 33188,
      "old_path": "impeller/entity/contents/runtime_effect_contents.h",
      "new_id": "3602e82ee3517fc5289847c0807dd5013aefcefd",
      "new_mode": 33188,
      "new_path": "impeller/entity/contents/runtime_effect_contents.h"
    },
    {
      "type": "modify",
      "old_id": "14e395404efa5920c8ee60a3ab7fceba1e9a86a2",
      "old_mode": 33188,
      "old_path": "impeller/renderer/backend/gles/pipeline_library_gles.cc",
      "new_id": "b730f1609ee9533f6df17bf8cdef04c1ab4613e8",
      "new_mode": 33188,
      "new_path": "impeller/renderer/backend/gles/pipeline_library_gles.cc"
    },
    {
      "type": "modify",
      "old_id": "410fcb991a90c0a16a7e4bc991dc130295d9a56d",
      "old_mode": 33188,
      "old_path": "impeller/renderer/backend/gles/pipeline_library_gles.h",
      "new_id": "21bd253bd9226bc3074ff7097f10d17405129a10",
      "new_mode": 33188,
      "new_path": "impeller/renderer/backend/gles/pipeline_library_gles.h"
    },
    {
      "type": "modify",
      "old_id": "7b12ebbd74b90da2b5c78c2ab248485a10ea147a",
      "old_mode": 33188,
      "old_path": "impeller/renderer/backend/metal/pipeline_library_mtl.h",
      "new_id": "401cbcd6d539a757121ec59ea14fd02f4ccfbdb3",
      "new_mode": 33188,
      "new_path": "impeller/renderer/backend/metal/pipeline_library_mtl.h"
    },
    {
      "type": "modify",
      "old_id": "177c54aa6a8d22ee538d0041fc1204ac648e3fbd",
      "old_mode": 33188,
      "old_path": "impeller/renderer/backend/metal/pipeline_library_mtl.mm",
      "new_id": "059862cbdc926decf1de40a1d6adf4797bfab978",
      "new_mode": 33188,
      "new_path": "impeller/renderer/backend/metal/pipeline_library_mtl.mm"
    },
    {
      "type": "modify",
      "old_id": "26ed69f53ba50658ba5bb131e8fdab550e515b26",
      "old_mode": 33188,
      "old_path": "impeller/renderer/backend/vulkan/pipeline_library_vk.cc",
      "new_id": "9d6fc7e21d7f86a888f842b853209f836eec7334",
      "new_mode": 33188,
      "new_path": "impeller/renderer/backend/vulkan/pipeline_library_vk.cc"
    },
    {
      "type": "modify",
      "old_id": "0f3926924e58919afcde79493b90fc258a2bb321",
      "old_mode": 33188,
      "old_path": "impeller/renderer/backend/vulkan/pipeline_library_vk.h",
      "new_id": "e5914963523a49c2a85a761e0d53e6a20669f063",
      "new_mode": 33188,
      "new_path": "impeller/renderer/backend/vulkan/pipeline_library_vk.h"
    },
    {
      "type": "modify",
      "old_id": "a71b4bd97425ce9af27055db6d9bc5d1c625edfc",
      "old_mode": 33188,
      "old_path": "impeller/renderer/pipeline.cc",
      "new_id": "302b62d7360245db05da7cc874edaf9802e9c5de",
      "new_mode": 33188,
      "new_path": "impeller/renderer/pipeline.cc"
    },
    {
      "type": "modify",
      "old_id": "c6b407467c67a79a13194f62454eb69879fa8f57",
      "old_mode": 33188,
      "old_path": "impeller/renderer/pipeline.h",
      "new_id": "b3babc34a853793c4587e08d1bc237ece18f676e",
      "new_mode": 33188,
      "new_path": "impeller/renderer/pipeline.h"
    },
    {
      "type": "modify",
      "old_id": "816d95508a2a9b898ce830c78529d763ce22bbd4",
      "old_mode": 33188,
      "old_path": "impeller/renderer/pipeline_library.cc",
      "new_id": "ef4950b8191d27379f5495be694fbd3b1e34ad2b",
      "new_mode": 33188,
      "new_path": "impeller/renderer/pipeline_library.cc"
    },
    {
      "type": "modify",
      "old_id": "d97861f5dc5d7a4d10e64f054c5d71ef1ba1235d",
      "old_mode": 33188,
      "old_path": "impeller/renderer/pipeline_library.h",
      "new_id": "4803a10550d77c675c3dee6b1f170020332f3a2e",
      "new_mode": 33188,
      "new_path": "impeller/renderer/pipeline_library.h"
    },
    {
      "type": "modify",
      "old_id": "48ff7b8ec9458e694afba6ebf0a0f0c5f9d291c5",
      "old_mode": 33188,
      "old_path": "impeller/scene/scene_context.h",
      "new_id": "1a56ea190506485524674c54bb74769be15b58ad",
      "new_mode": 33188,
      "new_path": "impeller/scene/scene_context.h"
    }
  ]
}
