Run vk_timer_query

This test only works on Mali, so it should be built and run OOT.

Change-Id: I45d1658eb8434842e2f6696063c1e1943af2d62a
Reviewed-on: https://fuchsia-review.googlesource.com/c/drivers/graphics/gpu/+/1009252
Reviewed-by: Craig Stout <cstout@google.com>
Fuchsia-Auto-Submit: John Bauman <jbauman@google.com>
Commit-Queue: Auto-Submit <auto-submit@fuchsia-infra.iam.gserviceaccount.com>
diff --git a/BUILD.bazel b/BUILD.bazel
index 9ef1d03..236032b 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -50,6 +50,7 @@
         "//common/examples/vkproto/transaction-elimination-test",
         "//drivers/msd-arm-mali:integration_tests",
         "//drivers/msd-arm-mali:magma_conformance_tests",
+        "//common/tests/vk_timer_query:vk_timer_query_test",
     ],
 )
 
diff --git a/common/magma/lib/magma_client/test_util/BUILD.bazel b/common/magma/lib/magma_client/test_util/BUILD.bazel
index 2691ce6..61a6a53 100644
--- a/common/magma/lib/magma_client/test_util/BUILD.bazel
+++ b/common/magma/lib/magma_client/test_util/BUILD.bazel
@@ -18,6 +18,7 @@
     hdrs = ["test_device_helper.h"],
     visibility = ["//visibility:public"],
     deps = [
+        "//:includes",
         "@fuchsia_sdk//pkg/driver_component_cpp",
         "@fuchsia_sdk//pkg/magma_client",
         "@fuchsia_sdk//pkg/zx",
diff --git a/common/tests/common/BUILD.bazel b/common/tests/common/BUILD.bazel
new file mode 100644
index 0000000..58fd10b
--- /dev/null
+++ b/common/tests/common/BUILD.bazel
@@ -0,0 +1,18 @@
+# Copyright 2024 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+cc_library(
+    name = "common",
+    srcs = [
+        "utils.cc",
+        "utils.h",
+        "vulkan_context.cc",
+        "vulkan_context.h",
+    ],
+    visibility = ["//visibility:public"],
+    deps = [
+        "//common:vulkan",
+        "@com_google_googletest//:gtest",
+    ],
+)
diff --git a/common/tests/common/utils.cc b/common/tests/common/utils.cc
index 9289d08..c6ec979 100644
--- a/common/tests/common/utils.cc
+++ b/common/tests/common/utils.cc
@@ -4,7 +4,7 @@
 
 #include "utils.h"
 
-#include "src/graphics/tests/common/vulkan_context.h"
+#include "common/tests/common/vulkan_context.h"
 
 VKAPI_ATTR VkBool32 VKAPI_CALL DebugUtilsTestCallback(
     VkDebugUtilsMessageSeverityFlagBitsEXT msg_severity, VkDebugUtilsMessageTypeFlagsEXT msg_types,
diff --git a/common/tests/common/vulkan_context.cc b/common/tests/common/vulkan_context.cc
index 6f9e394..b4a9b59 100644
--- a/common/tests/common/vulkan_context.cc
+++ b/common/tests/common/vulkan_context.cc
@@ -10,7 +10,7 @@
 #include <memory>
 #include <utility>
 
-#include "src/graphics/tests/common/utils.h"
+#include "common/tests/common/utils.h"
 
 #include "vulkan/vulkan.hpp"
 
diff --git a/common/tests/vk_timer_query/BUILD.bazel b/common/tests/vk_timer_query/BUILD.bazel
new file mode 100644
index 0000000..08f8885
--- /dev/null
+++ b/common/tests/vk_timer_query/BUILD.bazel
@@ -0,0 +1,43 @@
+# Copyright 2024 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+load(
+    "@fuchsia_sdk//fuchsia:defs.bzl",
+    "fuchsia_cc_test",
+    "fuchsia_platforms",
+    "fuchsia_test_component",
+    "fuchsia_test_package",
+)
+
+fuchsia_cc_test(
+    name = "vk_timer_query",
+    srcs = ["main.cc"],
+    deps = [
+        "//common/tests/vkreadback",
+        "//drivers/msd-arm-mali:msd-arm-include",
+        "@com_google_googletest//:gtest",
+        "@fuchsia_sdk//fidl/fuchsia.gpu.magma:fuchsia.gpu.magma_cpp_wire",
+        "@fuchsia_sdk//pkg/fdio",
+        "@fuchsia_sdk//pkg/magma_client",
+        "@fuchsia_sdk//pkg/vulkan",
+        "@magma//lib/magma_client/test_util:test_device",
+    ],
+)
+
+fuchsia_test_component(
+    name = "vk_timer_query_test_component",
+    testonly = True,
+    manifest = "meta/vk_timer_query.cml",
+    deps = [":vk_timer_query"],
+)
+
+fuchsia_test_package(
+    name = "vk_timer_query_test",
+    package_name = "vk_timer_query_test",
+    platform = fuchsia_platforms.arm64,
+    test_components = [
+        ":vk_timer_query_test_component",
+    ],
+    test_realm = "/core/testing:system-tests",
+    visibility = ["//visibility:public"],
+)
diff --git a/common/tests/vk_timer_query/main.cc b/common/tests/vk_timer_query/main.cc
index d4b29f9..68e3d0c 100644
--- a/common/tests/vk_timer_query/main.cc
+++ b/common/tests/vk_timer_query/main.cc
@@ -11,15 +11,10 @@
 
 #include <gtest/gtest.h>
 
-#include "../vkreadback/vkreadback.h"
+#include "common/tests/vkreadback/vkreadback.h"
 #include "magma_vendor_queries.h"
-#include "src/lib/fxl/test/test_settings.h"
 
 int main(int argc, char** argv) {
-  if (!fxl::SetTestSettings(argc, argv)) {
-    return EXIT_FAILURE;
-  }
-
   testing::InitGoogleTest(&argc, argv);
   return RUN_ALL_TESTS();
 }
diff --git a/common/tests/vk_timer_query/meta/vk_timer_query.cml b/common/tests/vk_timer_query/meta/vk_timer_query.cml
index 782ae90..98ccdcf 100644
--- a/common/tests/vk_timer_query/meta/vk_timer_query.cml
+++ b/common/tests/vk_timer_query/meta/vk_timer_query.cml
@@ -3,11 +3,11 @@
 // found in the LICENSE file.
 {
     include: [
-        "//src/sys/test_runners/gtest/default.shard.cml",
         "syslog/client.shard.cml",
         "vulkan/client.shard.cml",
     ],
     program: {
+        runner: "gtest_runner",
         binary: "bin/vk_timer_query",
     },
     use: [
@@ -21,4 +21,13 @@
             path: "/tmp",
         },
     ],
+    capabilities: [
+        { protocol: "fuchsia.test.Suite" },
+    ],
+    expose: [
+        {
+            protocol: "fuchsia.test.Suite",
+            from: "self",
+        },
+    ],
 }
diff --git a/common/tests/vkreadback/BUILD.bazel b/common/tests/vkreadback/BUILD.bazel
new file mode 100644
index 0000000..56dd1da
--- /dev/null
+++ b/common/tests/vkreadback/BUILD.bazel
@@ -0,0 +1,18 @@
+# Copyright 2024 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+cc_library(
+    name = "vkreadback",
+    srcs = [
+        "vkreadback.cc",
+        "vkreadback.h",
+    ],
+    visibility = ["//visibility:public"],
+    deps = [
+        "//common/tests/common",
+        "@Vulkan-Headers//:headers",
+        "@com_google_googletest//:gtest",
+        "@fuchsia_sdk//pkg/vulkan",
+    ],
+)
diff --git a/common/tests/vkreadback/vkreadback.cc b/common/tests/vkreadback/vkreadback.cc
index e66eb34..3328b96 100644
--- a/common/tests/vkreadback/vkreadback.cc
+++ b/common/tests/vkreadback/vkreadback.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "src/graphics/tests/vkreadback/vkreadback.h"
+#include "common/tests/vkreadback/vkreadback.h"
 
 #include <array>
 #include <cstddef>
@@ -10,7 +10,7 @@
 #include <limits>
 #include <optional>
 
-#include "src/graphics/tests/common/utils.h"
+#include "common/tests/common/utils.h"
 
 #include <vulkan/vulkan.hpp>
 
@@ -187,6 +187,8 @@
   device_info.setPEnabledExtensionNames(enabled_extension_names);
 
   builder.set_instance_info(instance_info).set_device_info(device_info);
+  // Temporary until validation layers are available in the SDK.
+  builder.set_validation_layers_enabled(false);
 #ifdef __linux__
   // Validation layers not conveniently available yet in virtual Linux
   builder.set_validation_layers_enabled(false);
diff --git a/common/tests/vkreadback/vkreadback.h b/common/tests/vkreadback/vkreadback.h
index c4b4d1d..9689dd7 100644
--- a/common/tests/vkreadback/vkreadback.h
+++ b/common/tests/vkreadback/vkreadback.h
@@ -11,8 +11,8 @@
 
 #include <gtest/gtest.h>
 
-#include "src/graphics/tests/common/utils.h"
-#include "src/graphics/tests/common/vulkan_context.h"
+#include "common/tests/common/utils.h"
+#include "common/tests/common/vulkan_context.h"
 
 #include <vulkan/vulkan.hpp>