blob: 64500bfc7fca6bbd976a857fe5386ab2cf579ce9 [file] [log] [blame]
# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/buildflag_header.gni")
import("//build/config/dcheck_always_on.gni")
import("//build/config/jumbo.gni")
import("//build/config/ui.gni")
import("//testing/test.gni")
import("//ui/ozone/ozone.gni")
import("features.gni")
# Generate a buildflag header for compile-time checking of Vulkan support.
buildflag_header("buildflags") {
header = "buildflags.h"
flags = [ "ENABLE_VULKAN=$enable_vulkan" ]
}
if (enable_vulkan) {
use_vulkan_xlib = use_x11 || ozone_platform_x11
config("vulkan_config") {
if (use_vulkan_xlib) {
defines = [ "USE_VULKAN_XLIB" ]
}
}
jumbo_component("vulkan") {
output_name = "vulkan_wrapper"
sources = [
"semaphore_handle.cc",
"semaphore_handle.h",
"vulkan_command_buffer.cc",
"vulkan_command_buffer.h",
"vulkan_command_pool.cc",
"vulkan_command_pool.h",
"vulkan_device_queue.cc",
"vulkan_device_queue.h",
"vulkan_export.h",
"vulkan_fence_helper.cc",
"vulkan_fence_helper.h",
"vulkan_function_pointers.cc",
"vulkan_function_pointers.h",
"vulkan_implementation.cc",
"vulkan_implementation.h",
"vulkan_instance.cc",
"vulkan_instance.h",
"vulkan_surface.cc",
"vulkan_surface.h",
"vulkan_swap_chain.cc",
"vulkan_swap_chain.h",
"vulkan_util.cc",
"vulkan_util.h",
]
configs += [ "//build/config:precompiled_headers" ]
public_configs = [ ":vulkan_config" ]
defines = [ "VULKAN_IMPLEMENTATION" ]
if (is_android) {
defines += [ "VK_USE_PLATFORM_ANDROID_KHR" ]
}
all_dependent_configs = [ "//third_party/vulkan:vulkan_config" ]
deps = [
"//base",
"//ui/gfx",
]
public_deps = [
"//gpu/config:vulkan_info",
]
data_deps = []
if (is_posix) {
sources += [
"vulkan_posix_util.cc",
"vulkan_posix_util.h",
]
}
if (is_fuchsia) {
sources += [ "fuchsia/vulkan_fuchsia_ext.h" ]
public_deps += [ "//third_party/fuchsia-sdk/sdk:zx" ]
data_deps += [ "//third_party/fuchsia-sdk:vulkan_base" ]
# VulkanInstance enables validation layer in Debug builds and when DCHECKs
# are enabled in Release builds. In these cases the validation layer
# libraries and configs need to be included in the generated Fuchsia
# package.
if (is_debug || dcheck_always_on) {
data_deps += [ "//third_party/fuchsia-sdk:vulkan_validation" ]
}
}
}
jumbo_static_library("test_support") {
testonly = true
sources = [
"tests/native_window.h",
]
deps = [
"//ui/gfx",
"//ui/gfx:native_widget_types",
]
if (use_x11) {
sources += [ "tests/native_window_x11.cc" ]
deps += [ "//ui/gfx/x" ]
configs += [ "//build/config/linux:x11" ]
}
}
# TODO(cblume): These tests should run on each platform -- crbug.com/858614
if (use_x11) {
test("vulkan_tests") {
sources = [
"tests/basic_vulkan_test.cc",
"tests/basic_vulkan_test.h",
"tests/vulkan_test.cc",
"tests/vulkan_tests_main.cc",
"vulkan_fence_helper_unittest.cc",
]
deps = [
":test_support",
"//base:base",
"//base/test:test_support",
"//components/viz/common:vulkan_context_provider",
"//gpu/vulkan/init",
"//testing/gmock",
"//testing/gtest",
"//ui/gfx",
"//ui/gfx:native_widget_types",
"//ui/gfx/geometry",
]
}
}
}