# Copyright 2019 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.

# TODO(rosasco): remove
import("//build/test/test_package.gni")

import("//src/graphics/lib/magma/gnbuild/magma.gni")
import("//src/lib/vulkan/layers.gni")
import("//src/sys/build/components.gni")
group("tests") {
  testonly = true

  deps = [
    ":hw_tests",
    "goldfish_benchmark",
    "goldfish_test",
    "vkreadback:linux_arm64",
  ]
}

group("hw_tests") {
  testonly = true

  deps = [
    ":vulkan-tests",
    "../examples/vkproto",
    "../examples/vkproto/cmd-buf-benchmark",
    "../examples/vkproto/test",
    "../examples/vkproto/transaction-elimination-test",
    "benchmark",
    "icd_load",
    "vkreadback",
    "vkvalidation:test-vk-validation",
    "//src/lib/vulkan/tests:image-pipe-swapchain-tests",
  ]
}

protected_libvulkan_envs = []

# Filter out everything that's not astro or sherlock.
foreach(env, magma_libvulkan_hardware_envs) {
  if (env == sherlock_env || env == astro_env) {
    protected_libvulkan_envs += [ env ]
  }
}

test_package("vulkan-tests") {
  deps = [
    "common:vkcontext",
    "vk_timer_query",
    "vkext",
    "vkloop",
    "vkpriority",
  ]
  loadable_modules = vulkan_validation_layers.loadable_modules
  resources = vulkan_validation_layers.resources
  public_deps = vulkan_validation_layers.public_deps

  tests = [
    {
      name = "vkloop"
      environments = magma_libvulkan_hardware_envs
    },
    {
      name = "vkext"
      dest = "vkext_unprotected"
      environments = magma_libvulkan_hardware_envs
      log_settings = {
        max_severity = "ERROR"
      }
    },
    {
      name = "vkext"
      dest = "vkext_protected"
      environments = protected_libvulkan_envs
      log_settings = {
        max_severity = "ERROR"
      }
    },
    {
      name = "vkpriority"

      # No available hardware to run it on; cannot run with an Intel GPU.
      disabled = true
    },
    {
      name = "vk_timer_query_tests"
      environments = magma_libvulkan_arm_hardware_envs
    },
    {
      name = "vkcontext"
      environments = [ aemu_env ] + magma_libvulkan_hardware_envs
    },
  ]

  resources += [
    {
      path = "vkloop/comp.spv"
      dest = "vkloop.spv"
    },
  ]
}
