# 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" ] } if (is_android) { defines = [ "VK_USE_PLATFORM_ANDROID_KHR" ] } if (is_fuchsia) { defines = [ "VK_USE_PLATFORM_FUCHSIA" ] } } 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_image.cc", "vulkan_image.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" ] all_dependent_configs = [ "//third_party/vulkan:vulkan_config" ] deps = [ "//base", "//base/util/type_safety", "//gpu/ipc/common:vulkan_ycbcr_info", "//ui/gfx", ] public_deps = [ "//gpu/config:vulkan_info" ] data_deps = [] if (is_posix) { sources += [ "vulkan_image_linux.cc", "vulkan_posix_util.cc", "vulkan_posix_util.h", ] } if (is_android) { sources += [ "vulkan_image_android.cc" ] } if (is_win) { sources += [ "vulkan_image_win.cc" ] } if (is_fuchsia) { sources += [ "fuchsia/vulkan_fuchsia_ext.h", "vulkan_image_fuchsia.cc", ] public_deps += [ "//third_party/fuchsia-sdk/sdk/pkg/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 && !use_ozone) { sources += [ "tests/native_window.cc" ] deps += [ "//ui/platform_window", "//ui/platform_window/x11", ] } if (is_win) { sources += [ "tests/native_window_win.cc" ] } if (use_ozone) { sources += [ "tests/native_window.cc" ] deps += [ "//ui/ozone", "//ui/platform_window", ] } if (is_android) { sources += [ "tests/native_window_android.cc" ] deps += [ "//ui/android:ui_java", "//ui/gl", ] } } # TODO(penghuang): support more platforms # https://crbug.com/1065499 if (is_android || use_x11 || is_win || use_ozone) { 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/events/platform", "//ui/gfx", "//ui/gfx:native_widget_types", "//ui/gfx/geometry", ] if (use_x11) { deps += [ "//ui/events/platform/x11" ] } if (use_ozone) { deps += [ "//ui/ozone" ] } } } }