1# Copyright 2016 The Chromium Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5import("//build/buildflag_header.gni") 6import("//build/config/dcheck_always_on.gni") 7import("//build/config/jumbo.gni") 8import("//build/config/ui.gni") 9import("//testing/test.gni") 10import("//ui/ozone/ozone.gni") 11import("features.gni") 12 13# Generate a buildflag header for compile-time checking of Vulkan support. 14buildflag_header("buildflags") { 15 header = "buildflags.h" 16 flags = [ "ENABLE_VULKAN=$enable_vulkan" ] 17} 18 19if (enable_vulkan) { 20 use_vulkan_xlib = use_x11 || ozone_platform_x11 21 config("vulkan_config") { 22 if (use_vulkan_xlib) { 23 defines = [ "USE_VULKAN_XLIB" ] 24 } 25 if (is_android) { 26 defines = [ "VK_USE_PLATFORM_ANDROID_KHR" ] 27 } 28 if (is_fuchsia) { 29 defines = [ "VK_USE_PLATFORM_FUCHSIA" ] 30 } 31 } 32 33 jumbo_component("vulkan") { 34 output_name = "vulkan_wrapper" 35 36 sources = [ 37 "semaphore_handle.cc", 38 "semaphore_handle.h", 39 "vulkan_command_buffer.cc", 40 "vulkan_command_buffer.h", 41 "vulkan_command_pool.cc", 42 "vulkan_command_pool.h", 43 "vulkan_device_queue.cc", 44 "vulkan_device_queue.h", 45 "vulkan_export.h", 46 "vulkan_fence_helper.cc", 47 "vulkan_fence_helper.h", 48 "vulkan_function_pointers.cc", 49 "vulkan_function_pointers.h", 50 "vulkan_image.cc", 51 "vulkan_image.h", 52 "vulkan_implementation.cc", 53 "vulkan_implementation.h", 54 "vulkan_instance.cc", 55 "vulkan_instance.h", 56 "vulkan_surface.cc", 57 "vulkan_surface.h", 58 "vulkan_swap_chain.cc", 59 "vulkan_swap_chain.h", 60 "vulkan_util.cc", 61 "vulkan_util.h", 62 ] 63 64 configs += [ "//build/config:precompiled_headers" ] 65 public_configs = [ ":vulkan_config" ] 66 67 defines = [ "VULKAN_IMPLEMENTATION" ] 68 69 all_dependent_configs = [ "//third_party/vulkan:vulkan_config" ] 70 71 deps = [ 72 "//base", 73 "//base/util/type_safety", 74 "//gpu/ipc/common:vulkan_ycbcr_info", 75 "//ui/gfx", 76 ] 77 public_deps = [ "//gpu/config:vulkan_info" ] 78 data_deps = [] 79 80 if (is_posix) { 81 sources += [ 82 "vulkan_image_linux.cc", 83 "vulkan_posix_util.cc", 84 "vulkan_posix_util.h", 85 ] 86 } 87 88 if (is_android) { 89 sources += [ "vulkan_image_android.cc" ] 90 } 91 92 if (is_win) { 93 sources += [ "vulkan_image_win.cc" ] 94 } 95 96 if (is_fuchsia) { 97 sources += [ 98 "fuchsia/vulkan_fuchsia_ext.h", 99 "vulkan_image_fuchsia.cc", 100 ] 101 102 public_deps += [ "//third_party/fuchsia-sdk/sdk/pkg/zx" ] 103 104 data_deps += [ "//third_party/fuchsia-sdk:vulkan_base" ] 105 106 # VulkanInstance enables validation layer in Debug builds and when DCHECKs 107 # are enabled in Release builds. In these cases the validation layer 108 # libraries and configs need to be included in the generated Fuchsia 109 # package. 110 if (is_debug || dcheck_always_on) { 111 data_deps += [ "//third_party/fuchsia-sdk:vulkan_validation" ] 112 } 113 } 114 } 115 116 jumbo_static_library("test_support") { 117 testonly = true 118 sources = [ "tests/native_window.h" ] 119 120 deps = [ 121 "//ui/gfx", 122 "//ui/gfx:native_widget_types", 123 ] 124 125 if (use_x11 && !use_ozone) { 126 sources += [ "tests/native_window.cc" ] 127 deps += [ 128 "//ui/platform_window", 129 "//ui/platform_window/x11", 130 ] 131 } 132 133 if (is_win) { 134 sources += [ "tests/native_window_win.cc" ] 135 } 136 137 if (use_ozone) { 138 sources += [ "tests/native_window.cc" ] 139 deps += [ 140 "//ui/ozone", 141 "//ui/platform_window", 142 ] 143 } 144 145 if (is_android) { 146 sources += [ "tests/native_window_android.cc" ] 147 deps += [ 148 "//ui/android:ui_java", 149 "//ui/gl", 150 ] 151 } 152 } 153 154 # TODO(penghuang): support more platforms 155 # https://crbug.com/1065499 156 if (is_android || use_x11 || is_win || use_ozone) { 157 test("vulkan_tests") { 158 sources = [ 159 "tests/basic_vulkan_test.cc", 160 "tests/basic_vulkan_test.h", 161 "tests/vulkan_test.cc", 162 "tests/vulkan_tests_main.cc", 163 "vulkan_fence_helper_unittest.cc", 164 ] 165 166 deps = [ 167 ":test_support", 168 "//base:base", 169 "//base/test:test_support", 170 "//components/viz/common:vulkan_context_provider", 171 "//gpu/vulkan/init", 172 "//testing/gmock", 173 "//testing/gtest", 174 "//ui/events/platform", 175 "//ui/gfx", 176 "//ui/gfx:native_widget_types", 177 "//ui/gfx/geometry", 178 ] 179 180 if (use_x11) { 181 deps += [ "//ui/events/platform/x11" ] 182 } 183 184 if (use_ozone) { 185 deps += [ "//ui/ozone" ] 186 } 187 } 188 } 189} 190