)]}'
{
  "commit": "be0f6aadd9f837fadad1133875dba2b48024198d",
  "tree": "dd30a93aa293997f7bb03082e8ddd707513d8362",
  "parents": [
    "0a7fcfc5278eb2c596c5a42eaf527a4def4ed649"
  ],
  "author": {
    "name": "Jonah Williams",
    "email": "jonahwilliams@google.com",
    "time": "Fri Feb 16 21:37:05 2024 -0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sat Feb 17 05:37:05 2024 +0000"
  },
  "message": "[Impeller] add additional setup method that caches more pipelines, warms internal shader code (#50521)\n\nPart of https://github.com/flutter/flutter/issues/138236\r\n\r\nFixes a number of issues related to startup performance by adding an \"InitializeCommonlyUsedShadersIfNeeded\" method to content context.\r\n\r\nOn the first frame of a flutter application renders, the backend will populate the glyph atlas for the first time. On the Vulkan backend, this executes vkCmdCopyBufferToImage. The first time this runs, Arm Mali drivers will generate an additional shader program. Creates a 1x1 texture and sets the contents to force this code to compile eagerly.\r\n\r\n![image](https://github.com/flutter/engine/assets/8975114/558e7680-77e1-4cec-94d2-17128f4c8865)\r\n\r\nThe first time a render pass is constructed, a shader is complied. This does not seem to depend on the properties of the render pass, so we just create a trivial one and submit it.\r\n\r\n![image](https://github.com/flutter/engine/assets/8975114/4d9c9266-adfb-4d18-84cc-eb60127147ed)\r\n\r\nFinally there are a few missing shader variants. Lets just go ahead a populate that cache a bit more",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "325dc3315547e3063bef124037fae78f0b1b2d1a",
      "old_mode": 33188,
      "old_path": "impeller/aiks/testing/context_spy.cc",
      "new_id": "bb3d528eea14491f27f25de0e971ff1350151a6d",
      "new_mode": 33188,
      "new_path": "impeller/aiks/testing/context_spy.cc"
    },
    {
      "type": "modify",
      "old_id": "1d73fcff072b06a511d22009a311a92d4616b2ab",
      "old_mode": 33188,
      "old_path": "impeller/entity/contents/content_context.cc",
      "new_id": "725dc5baa49aab49298b93b009693fd99a803ea1",
      "new_mode": 33188,
      "new_path": "impeller/entity/contents/content_context.cc"
    },
    {
      "type": "modify",
      "old_id": "64ad969559a7530801441cd053dfe4a7c7b1dc13",
      "old_mode": 33188,
      "old_path": "impeller/entity/contents/content_context.h",
      "new_id": "4b813e9a8d18ea14bfd730af5bb5e83c87591b97",
      "new_mode": 33188,
      "new_path": "impeller/entity/contents/content_context.h"
    },
    {
      "type": "modify",
      "old_id": "ca56680aaf3b0d3b1c37239d4120f1b16ba18453",
      "old_mode": 33188,
      "old_path": "impeller/entity/contents/content_context_unittests.cc",
      "new_id": "aaa71db6a69849a0ae95b408f3c4c44f03158351",
      "new_mode": 33188,
      "new_path": "impeller/entity/contents/content_context_unittests.cc"
    },
    {
      "type": "modify",
      "old_id": "d7708ed14c85a97e41e848c92235bd20fe2fc325",
      "old_mode": 33188,
      "old_path": "impeller/entity/contents/test/recording_render_pass.cc",
      "new_id": "189138135cc7040e047d588807cb9c63779aa37a",
      "new_mode": 33188,
      "new_path": "impeller/entity/contents/test/recording_render_pass.cc"
    },
    {
      "type": "modify",
      "old_id": "146b9fc7c8975749969baf366a262819ae0b2b86",
      "old_mode": 33188,
      "old_path": "impeller/entity/contents/test/recording_render_pass.h",
      "new_id": "12fd10cb8d13a89ad4d6ba55a55691b4d5e4aebd",
      "new_mode": 33188,
      "new_path": "impeller/entity/contents/test/recording_render_pass.h"
    },
    {
      "type": "modify",
      "old_id": "ac0b9a30306164065b7f9b44767cba39cc454b75",
      "old_mode": 33188,
      "old_path": "impeller/entity/contents/tiled_texture_contents_unittests.cc",
      "new_id": "5100a56b03a5e81d3883df20192758d7820024eb",
      "new_mode": 33188,
      "new_path": "impeller/entity/contents/tiled_texture_contents_unittests.cc"
    },
    {
      "type": "modify",
      "old_id": "4222715a28ac5f15ada0206ffa48efd3c5bd59e5",
      "old_mode": 33188,
      "old_path": "impeller/entity/entity_unittests.cc",
      "new_id": "e5a6adca14b7f1b5340055d090ffdd5c814b4515",
      "new_mode": 33188,
      "new_path": "impeller/entity/entity_unittests.cc"
    },
    {
      "type": "modify",
      "old_id": "a28817c2d163254eeb1ea2b54938ddd619b485f4",
      "old_mode": 33188,
      "old_path": "impeller/renderer/shader_library.h",
      "new_id": "1421ea3e0d023afa065573e1f08d025e9d5accfd",
      "new_mode": 33188,
      "new_path": "impeller/renderer/shader_library.h"
    }
  ]
}
