1*8975f5c5SAndroid Build Coastguard Worker# Copyright 2020 The ANGLE Project Authors. All rights reserved. 2*8975f5c5SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*8975f5c5SAndroid Build Coastguard Worker# found in the LICENSE file. 4*8975f5c5SAndroid Build Coastguard Worker 5*8975f5c5SAndroid Build Coastguard Workerimport("//build_overrides/swiftshader.gni") 6*8975f5c5SAndroid Build Coastguard Workerimport("../../../gni/angle.gni") 7*8975f5c5SAndroid Build Coastguard Worker 8*8975f5c5SAndroid Build Coastguard Workerif (angle_use_wayland) { 9*8975f5c5SAndroid Build Coastguard Worker import("//build_overrides/wayland.gni") 10*8975f5c5SAndroid Build Coastguard Worker} 11*8975f5c5SAndroid Build Coastguard Worker 12*8975f5c5SAndroid Build Coastguard Workerdeclare_args() { 13*8975f5c5SAndroid Build Coastguard Worker angle_use_custom_libvulkan = !is_android && !is_fuchsia && !is_ggp 14*8975f5c5SAndroid Build Coastguard Worker 15*8975f5c5SAndroid Build Coastguard Worker # On real CrOS devices, we should use the system Vulkan loader. On the 16*8975f5c5SAndroid Build Coastguard Worker # ChromeOS-for-Linux build, we should use the built libvulkan because the 17*8975f5c5SAndroid Build Coastguard Worker # build is used for MSAN tests. Mixing the non-MSAN system libvulkan with the 18*8975f5c5SAndroid Build Coastguard Worker # MSAN ANGLE build can result in false positives. 19*8975f5c5SAndroid Build Coastguard Worker if (is_chromeos && is_chromeos_device) { 20*8975f5c5SAndroid Build Coastguard Worker angle_use_custom_libvulkan = false 21*8975f5c5SAndroid Build Coastguard Worker } 22*8975f5c5SAndroid Build Coastguard Worker} 23*8975f5c5SAndroid Build Coastguard Worker 24*8975f5c5SAndroid Build Coastguard Workerconfig("angle_libvulkan_config") { 25*8975f5c5SAndroid Build Coastguard Worker if (angle_use_custom_libvulkan) { 26*8975f5c5SAndroid Build Coastguard Worker defines = [ "ANGLE_USE_CUSTOM_LIBVULKAN" ] 27*8975f5c5SAndroid Build Coastguard Worker } 28*8975f5c5SAndroid Build Coastguard Worker} 29*8975f5c5SAndroid Build Coastguard Worker 30*8975f5c5SAndroid Build Coastguard Workerangle_source_set("angle_libvulkan_loader") { 31*8975f5c5SAndroid Build Coastguard Worker public_configs = [ ":angle_libvulkan_config" ] 32*8975f5c5SAndroid Build Coastguard Worker sources = [ 33*8975f5c5SAndroid Build Coastguard Worker "libvulkan_loader.cpp", 34*8975f5c5SAndroid Build Coastguard Worker "libvulkan_loader.h", 35*8975f5c5SAndroid Build Coastguard Worker ] 36*8975f5c5SAndroid Build Coastguard Worker deps = [ "$angle_root:angle_common" ] 37*8975f5c5SAndroid Build Coastguard Worker} 38*8975f5c5SAndroid Build Coastguard Worker 39*8975f5c5SAndroid Build Coastguard Workerif (angle_enable_vulkan || angle_build_vulkan_system_info) { 40*8975f5c5SAndroid Build Coastguard Worker config("angle_vulkan_headers_config") { 41*8975f5c5SAndroid Build Coastguard Worker if (angle_shared_libvulkan) { 42*8975f5c5SAndroid Build Coastguard Worker defines = [ "ANGLE_SHARED_LIBVULKAN=1" ] 43*8975f5c5SAndroid Build Coastguard Worker } 44*8975f5c5SAndroid Build Coastguard Worker if (angle_use_wayland) { 45*8975f5c5SAndroid Build Coastguard Worker include_dirs = [ "$wayland_dir/src" ] 46*8975f5c5SAndroid Build Coastguard Worker } 47*8975f5c5SAndroid Build Coastguard Worker configs = [ "$angle_root:angle_vulkan_wayland_config" ] 48*8975f5c5SAndroid Build Coastguard Worker } 49*8975f5c5SAndroid Build Coastguard Worker 50*8975f5c5SAndroid Build Coastguard Worker angle_source_set("angle_vulkan_headers") { 51*8975f5c5SAndroid Build Coastguard Worker sources = [ "vk_headers.h" ] 52*8975f5c5SAndroid Build Coastguard Worker if (angle_shared_libvulkan) { 53*8975f5c5SAndroid Build Coastguard Worker public_deps = [ "$angle_root/src/third_party/volk:volk" ] 54*8975f5c5SAndroid Build Coastguard Worker } else { 55*8975f5c5SAndroid Build Coastguard Worker public_deps = [ "$angle_vulkan_headers_dir:vulkan_headers" ] 56*8975f5c5SAndroid Build Coastguard Worker } 57*8975f5c5SAndroid Build Coastguard Worker public_configs = [ ":angle_vulkan_headers_config" ] 58*8975f5c5SAndroid Build Coastguard Worker } 59*8975f5c5SAndroid Build Coastguard Worker 60*8975f5c5SAndroid Build Coastguard Worker angle_source_set("angle_vulkan_icd") { 61*8975f5c5SAndroid Build Coastguard Worker sources = [ 62*8975f5c5SAndroid Build Coastguard Worker "vulkan_icd.cpp", 63*8975f5c5SAndroid Build Coastguard Worker "vulkan_icd.h", 64*8975f5c5SAndroid Build Coastguard Worker ] 65*8975f5c5SAndroid Build Coastguard Worker 66*8975f5c5SAndroid Build Coastguard Worker defines = 67*8975f5c5SAndroid Build Coastguard Worker [ "ANGLE_VK_MOCK_ICD_JSON=\"$angle_data_dir/VkICD_mock_icd.json\"" ] 68*8975f5c5SAndroid Build Coastguard Worker 69*8975f5c5SAndroid Build Coastguard Worker # On Fuchsia use validation layer provided by the SDK. 70*8975f5c5SAndroid Build Coastguard Worker if (!is_fuchsia) { 71*8975f5c5SAndroid Build Coastguard Worker defines += [ "ANGLE_VK_LAYERS_DIR=\"$angle_data_dir\"" ] 72*8975f5c5SAndroid Build Coastguard Worker } 73*8975f5c5SAndroid Build Coastguard Worker 74*8975f5c5SAndroid Build Coastguard Worker data_deps = [] 75*8975f5c5SAndroid Build Coastguard Worker 76*8975f5c5SAndroid Build Coastguard Worker if (angle_enable_swiftshader) { 77*8975f5c5SAndroid Build Coastguard Worker import("$swiftshader_dir/src/Vulkan/vulkan.gni") 78*8975f5c5SAndroid Build Coastguard Worker _sws_icd = "./$swiftshader_icd_file_name" 79*8975f5c5SAndroid Build Coastguard Worker if (is_win) { 80*8975f5c5SAndroid Build Coastguard Worker _sws_icd = ".\\\\$swiftshader_icd_file_name" 81*8975f5c5SAndroid Build Coastguard Worker } else if (is_fuchsia) { 82*8975f5c5SAndroid Build Coastguard Worker _sws_icd = "/pkg/$swiftshader_icd_file_name" 83*8975f5c5SAndroid Build Coastguard Worker } 84*8975f5c5SAndroid Build Coastguard Worker 85*8975f5c5SAndroid Build Coastguard Worker defines += [ "ANGLE_VK_SWIFTSHADER_ICD_JSON=\"${_sws_icd}\"" ] 86*8975f5c5SAndroid Build Coastguard Worker 87*8975f5c5SAndroid Build Coastguard Worker data_deps += [ 88*8975f5c5SAndroid Build Coastguard Worker "$swiftshader_dir/src/Vulkan:icd_file", 89*8975f5c5SAndroid Build Coastguard Worker "$swiftshader_dir/src/Vulkan:swiftshader_libvulkan", 90*8975f5c5SAndroid Build Coastguard Worker ] 91*8975f5c5SAndroid Build Coastguard Worker } 92*8975f5c5SAndroid Build Coastguard Worker 93*8975f5c5SAndroid Build Coastguard Worker public_deps = [ 94*8975f5c5SAndroid Build Coastguard Worker ":angle_vulkan_headers", 95*8975f5c5SAndroid Build Coastguard Worker "$angle_root:angle_common", 96*8975f5c5SAndroid Build Coastguard Worker ] 97*8975f5c5SAndroid Build Coastguard Worker 98*8975f5c5SAndroid Build Coastguard Worker configs += [ "$angle_root:angle_no_cfi_icall" ] 99*8975f5c5SAndroid Build Coastguard Worker } 100*8975f5c5SAndroid Build Coastguard Worker} 101*8975f5c5SAndroid Build Coastguard Worker 102*8975f5c5SAndroid Build Coastguard Workerif (angle_enable_vulkan) { 103*8975f5c5SAndroid Build Coastguard Worker group("angle_libvulkan") { 104*8975f5c5SAndroid Build Coastguard Worker public_configs = [ ":angle_libvulkan_config" ] 105*8975f5c5SAndroid Build Coastguard Worker data_deps = [] 106*8975f5c5SAndroid Build Coastguard Worker if (angle_use_custom_libvulkan) { 107*8975f5c5SAndroid Build Coastguard Worker if (angle_shared_libvulkan) { 108*8975f5c5SAndroid Build Coastguard Worker data_deps += [ "$angle_vulkan_loader_dir:libvulkan" ] 109*8975f5c5SAndroid Build Coastguard Worker } else { 110*8975f5c5SAndroid Build Coastguard Worker public_deps = [ "$angle_vulkan_loader_dir:libvulkan" ] 111*8975f5c5SAndroid Build Coastguard Worker } 112*8975f5c5SAndroid Build Coastguard Worker data_deps += [ "$angle_vulkan_tools_dir:VkICD_mock_icd" ] 113*8975f5c5SAndroid Build Coastguard Worker } 114*8975f5c5SAndroid Build Coastguard Worker } 115*8975f5c5SAndroid Build Coastguard Worker 116*8975f5c5SAndroid Build Coastguard Worker group("angle_vulkan_entry_points") { 117*8975f5c5SAndroid Build Coastguard Worker public_deps = [ ":angle_vulkan_headers" ] 118*8975f5c5SAndroid Build Coastguard Worker if (is_fuchsia) { 119*8975f5c5SAndroid Build Coastguard Worker public_deps += [ 120*8975f5c5SAndroid Build Coastguard Worker "$angle_root/src/common/fuchsia_egl", 121*8975f5c5SAndroid Build Coastguard Worker "//third_party/fuchsia-sdk/sdk/pkg/vulkan", 122*8975f5c5SAndroid Build Coastguard Worker ] 123*8975f5c5SAndroid Build Coastguard Worker if (!angle_use_vulkan_null_display) { 124*8975f5c5SAndroid Build Coastguard Worker public_deps += [ "//third_party/fuchsia-sdk/sdk/pkg/vulkan_layers:VkLayer_image_pipe_swapchain" ] 125*8975f5c5SAndroid Build Coastguard Worker } 126*8975f5c5SAndroid Build Coastguard Worker } else if (!is_android && !is_ggp) { 127*8975f5c5SAndroid Build Coastguard Worker if (angle_shared_libvulkan) { 128*8975f5c5SAndroid Build Coastguard Worker data_deps = [ "$angle_vulkan_loader_dir:libvulkan" ] 129*8975f5c5SAndroid Build Coastguard Worker } else { 130*8975f5c5SAndroid Build Coastguard Worker deps = [ "$angle_vulkan_loader_dir:libvulkan" ] 131*8975f5c5SAndroid Build Coastguard Worker } 132*8975f5c5SAndroid Build Coastguard Worker } 133*8975f5c5SAndroid Build Coastguard Worker } 134*8975f5c5SAndroid Build Coastguard Worker 135*8975f5c5SAndroid Build Coastguard Worker angle_source_set("vulkan") { 136*8975f5c5SAndroid Build Coastguard Worker public_deps = [ 137*8975f5c5SAndroid Build Coastguard Worker ":angle_libvulkan", 138*8975f5c5SAndroid Build Coastguard Worker ":angle_vulkan_entry_points", 139*8975f5c5SAndroid Build Coastguard Worker ":angle_vulkan_icd", 140*8975f5c5SAndroid Build Coastguard Worker ] 141*8975f5c5SAndroid Build Coastguard Worker } 142*8975f5c5SAndroid Build Coastguard Worker 143*8975f5c5SAndroid Build Coastguard Worker if (angle_enable_vulkan_validation_layers) { 144*8975f5c5SAndroid Build Coastguard Worker group("vulkan_validation_layers") { 145*8975f5c5SAndroid Build Coastguard Worker data_deps = [] 146*8975f5c5SAndroid Build Coastguard Worker if (is_fuchsia) { 147*8975f5c5SAndroid Build Coastguard Worker data_deps += [ "//third_party/fuchsia-sdk/sdk/pkg/vulkan_layers:VkLayer_khronos_validation" ] 148*8975f5c5SAndroid Build Coastguard Worker } else { 149*8975f5c5SAndroid Build Coastguard Worker data_deps += 150*8975f5c5SAndroid Build Coastguard Worker [ "$angle_vulkan_validation_layers_dir:vulkan_validation_layers" ] 151*8975f5c5SAndroid Build Coastguard Worker if (!is_android) { 152*8975f5c5SAndroid Build Coastguard Worker data_deps += 153*8975f5c5SAndroid Build Coastguard Worker [ "$angle_vulkan_validation_layers_dir:vulkan_gen_json_files" ] 154*8975f5c5SAndroid Build Coastguard Worker } 155*8975f5c5SAndroid Build Coastguard Worker } 156*8975f5c5SAndroid Build Coastguard Worker } 157*8975f5c5SAndroid Build Coastguard Worker } 158*8975f5c5SAndroid Build Coastguard Worker 159*8975f5c5SAndroid Build Coastguard Worker if (angle_enable_vulkan_api_dump_layer) { 160*8975f5c5SAndroid Build Coastguard Worker group("lunarg_vulkantools") { 161*8975f5c5SAndroid Build Coastguard Worker data_deps = [] 162*8975f5c5SAndroid Build Coastguard Worker if (!is_fuchsia) { 163*8975f5c5SAndroid Build Coastguard Worker data_deps += [ "$angle_lunarg_vulkantools_dir:lunarg_vulkantools" ] 164*8975f5c5SAndroid Build Coastguard Worker if (!is_android) { 165*8975f5c5SAndroid Build Coastguard Worker data_deps += [ "$angle_lunarg_vulkantools_dir:vulkan_gen_json_files" ] 166*8975f5c5SAndroid Build Coastguard Worker } 167*8975f5c5SAndroid Build Coastguard Worker } 168*8975f5c5SAndroid Build Coastguard Worker } 169*8975f5c5SAndroid Build Coastguard Worker } 170*8975f5c5SAndroid Build Coastguard Worker} 171