Reland "[graphics] Convert vulkan_loader to components v2"

This is a reland of 726799ac9e458af49c502e8c78a0bdbd11d81011

Original change's description:
> [graphics] Convert vulkan_loader to components v2
>
> This is the first step in loading Vulkan ICDs from packages. After this
> we can modify the loader to launch V2 components that will provide the
> ICD.
>
> Also add the vulkan_loader package to the base packages in core.gni to
> ensure that it will be found properly - it seems like universe packages
> aren't resolved.
>
> Bug: 13078
>
> Change-Id: Ib2f403b7e920dc431a346d8ad8b336f3275b016a
> Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/487139
> Reviewed-by: Bryan Henry <bryanhenry@google.com>
> Reviewed-by: Gary Bressler <geb@google.com>
> Reviewed-by: Craig Stout <cstout@google.com>
> Commit-Queue: John Bauman <jbauman@google.com>

Bug: 74185
Bug: 13078
Change-Id: Iac259feb144a9fc922efd44a4a9ad7bdf7df4bb9
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/513280
Commit-Queue: John Bauman <jbauman@google.com>
Reviewed-by: Bryan Henry <bryanhenry@google.com>
Reviewed-by: Craig Stout <cstout@google.com>
diff --git a/src/graphics/bin/vulkan_loader/BUILD.gn b/src/graphics/bin/vulkan_loader/BUILD.gn
index 25a5997..e5bc6c1 100644
--- a/src/graphics/bin/vulkan_loader/BUILD.gn
+++ b/src/graphics/bin/vulkan_loader/BUILD.gn
@@ -24,7 +24,7 @@
 fuchsia_component("vulkan_loader_cmp") {
   component_name = "vulkan_loader"
   deps = [ ":bin" ]
-  manifest = "meta/vulkan_loader.cmx"
+  manifest = "meta/vulkan_loader.cml"
 }
 
 fuchsia_package("vulkan_loader") {
diff --git a/src/graphics/bin/vulkan_loader/meta/vulkan_loader.cml b/src/graphics/bin/vulkan_loader/meta/vulkan_loader.cml
new file mode 100644
index 0000000..18e2a11
--- /dev/null
+++ b/src/graphics/bin/vulkan_loader/meta/vulkan_loader.cml
@@ -0,0 +1,25 @@
+{
+    include: [ "sdk/lib/diagnostics/syslog/client.shard.cml" ],
+    program: {
+        runner: "elf",
+        binary: "bin/vulkan_loader",
+    },
+    capabilities: [
+        {
+            protocol: [ "fuchsia.vulkan.loader.Loader" ],
+        },
+    ],
+    use: [
+        {
+            directory: "system-lib",
+            rights: [ "rx*" ],
+            path: "/system/lib",
+        },
+    ],
+    expose: [
+        {
+            protocol: "fuchsia.vulkan.loader.Loader",
+            from: "self",
+        },
+    ],
+}
diff --git a/src/graphics/bin/vulkan_loader/meta/vulkan_loader.cmx b/src/graphics/bin/vulkan_loader/meta/vulkan_loader.cmx
deleted file mode 100644
index 808684a..0000000
--- a/src/graphics/bin/vulkan_loader/meta/vulkan_loader.cmx
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-    "include": [
-        "sdk/lib/diagnostics/syslog/client.shard.cmx"
-    ],
-    "program": {
-        "binary": "bin/vulkan_loader"
-    },
-    "sandbox": {
-        "system": [
-            "lib"
-        ]
-    }
-}
diff --git a/src/security/policy/component_manager_policy.json5 b/src/security/policy/component_manager_policy.json5
index eaf23b0..c2e3a33 100644
--- a/src/security/policy/component_manager_policy.json5
+++ b/src/security/policy/component_manager_policy.json5
@@ -225,6 +225,7 @@
                     "/bootstrap/netsvc",
                     "/core",
                     "/core/appmgr",
+                    "/core/vulkan_loader",
                 ],
             },
             {
diff --git a/src/sys/appmgr/meta/appmgr.cml b/src/sys/appmgr/meta/appmgr.cml
index 88b550b..20cb08d 100644
--- a/src/sys/appmgr/meta/appmgr.cml
+++ b/src/sys/appmgr/meta/appmgr.cml
@@ -366,6 +366,10 @@
             protocol: "fuchsia.stash.SecureStore",
             path: "/svc_for_sys/fuchsia.stash.SecureStore",
         },
+        {
+            protocol: "fuchsia.vulkan.loader.Loader",
+            path: "/svc_for_sys/fuchsia.vulkan.loader.Loader",
+        },
 
         // From archivist
         {
diff --git a/src/sys/core/meta/core.cml b/src/sys/core/meta/core.cml
index 9567c8b..56934aa 100644
--- a/src/sys/core/meta/core.cml
+++ b/src/sys/core/meta/core.cml
@@ -115,6 +115,10 @@
         {
             name: "soundplayer",
             url: "fuchsia-pkg://fuchsia.com/soundplayer#meta/soundplayer.cm",
+        },
+        {
+            name: "vulkan_loader",
+            url: "fuchsia-pkg://fuchsia.com/vulkan_loader#meta/vulkan_loader.cm",
             environment: "#universe-resolver-env",
         },
     ],
@@ -398,6 +402,7 @@
                 "#temperature-logger",
                 "#test_manager",
                 "#universe-resolver",
+                "#vulkan_loader",
             ],
         },
         {
@@ -823,6 +828,18 @@
             to: [ "#soundplayer" ],
             dependency: "weak_for_migration",
         },
+        {
+            protocol: [ "fuchsia.vulkan.loader.Loader" ],
+            from: "#vulkan_loader",
+            to: [ "#appmgr" ],
+        },
+        {
+            directory: "system",
+            from: "parent",
+            as: "system-lib",
+            to: [ "#vulkan_loader" ],
+            subdir: "lib",
+        },
     ],
     expose: [
         // Non-zircon services for svchost
diff --git a/src/sys/sysmgr/config/services.config b/src/sys/sysmgr/config/services.config
index d811bc9..e01554f 100644
--- a/src/sys/sysmgr/config/services.config
+++ b/src/sys/sysmgr/config/services.config
@@ -87,8 +87,7 @@
     "fuchsia.ui.scenic.Scenic": "fuchsia-pkg://fuchsia.com/scenic#meta/scenic.cmx",
     "fuchsia.ui.scenic.internal.Snapshot": "fuchsia-pkg://fuchsia.com/scenic#meta/scenic.cmx",
     "fuchsia.ui.text.TextInputContextLegacy": "fuchsia-pkg://fuchsia.com/ime_service#meta/ime_service.cmx",
-    "fuchsia.virtualization.Manager": "fuchsia-pkg://fuchsia.com/guest_manager#meta/guest_manager.cmx",
-    "fuchsia.vulkan.loader.Loader": "fuchsia-pkg://fuchsia.com/vulkan_loader#meta/vulkan_loader.cmx"
+    "fuchsia.virtualization.Manager": "fuchsia-pkg://fuchsia.com/guest_manager#meta/guest_manager.cmx"
   },
   "optional_services": [
     "fuchsia.ui.activity.Provider",