1# Copyright 2020 The ANGLE Project 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_overrides/swiftshader.gni") 6import("../../../gni/angle.gni") 7 8declare_args() { 9 angle_use_custom_libvulkan = !is_android && !is_fuchsia && !is_ggp 10} 11 12config("angle_libvulkan_config") { 13 if (angle_use_custom_libvulkan) { 14 defines = [ "ANGLE_USE_CUSTOM_LIBVULKAN" ] 15 } 16} 17 18angle_source_set("angle_libvulkan_loader") { 19 public_configs = [ ":angle_libvulkan_config" ] 20 sources = [ 21 "libvulkan_loader.cpp", 22 "libvulkan_loader.h", 23 ] 24 deps = [ "$angle_root:angle_common" ] 25} 26 27if (angle_enable_vulkan) { 28 group("angle_libvulkan") { 29 public_configs = [ ":angle_libvulkan_config" ] 30 data_deps = [] 31 if (angle_use_custom_libvulkan) { 32 if (angle_shared_libvulkan) { 33 data_deps += [ "$angle_vulkan_loader_dir:libvulkan" ] 34 } else { 35 public_deps = [ "$angle_vulkan_loader_dir:libvulkan" ] 36 } 37 data_deps += [ "$angle_vulkan_tools_dir:VkICD_mock_icd" ] 38 } 39 } 40 41 config("angle_vulkan_headers_config") { 42 if (angle_shared_libvulkan) { 43 defines = [ "ANGLE_SHARED_LIBVULKAN=1" ] 44 } 45 } 46 47 angle_source_set("angle_vulkan_headers") { 48 sources = [ 49 "vk_google_filtering_precision.h", 50 "vk_headers.h", 51 ] 52 if (angle_shared_libvulkan) { 53 public_deps = [ "$angle_root/src/third_party/volk:volk" ] 54 } else { 55 public_deps = [ "$angle_vulkan_headers_dir:vulkan_headers" ] 56 } 57 public_configs = [ ":angle_vulkan_headers_config" ] 58 } 59 60 group("angle_vulkan_entry_points") { 61 public_deps = [ ":angle_vulkan_headers" ] 62 if (is_fuchsia) { 63 public_deps += [ 64 "$angle_root/src/common/fuchsia_egl", 65 "//third_party/fuchsia-sdk/sdk/pkg/vulkan", 66 ] 67 if (!angle_use_vulkan_null_display) { 68 public_deps += [ "//third_party/fuchsia-sdk/sdk/pkg/vulkan_layers:VkLayer_image_pipe_swapchain" ] 69 } 70 } else if (!is_android && !is_ggp) { 71 if (angle_shared_libvulkan) { 72 data_deps = [ "$angle_vulkan_loader_dir:libvulkan" ] 73 } else { 74 deps = [ "$angle_vulkan_loader_dir:libvulkan" ] 75 } 76 } 77 } 78 79 angle_source_set("vulkan") { 80 sources = [ 81 "vulkan_icd.cpp", 82 "vulkan_icd.h", 83 ] 84 85 public_deps = [ 86 ":angle_libvulkan", 87 ":angle_vulkan_entry_points", 88 "$angle_root:angle_common", 89 ] 90 91 configs += [ "$angle_root:angle_no_cfi_icall" ] 92 93 defines = [ 94 "ANGLE_VK_LAYERS_DIR=\"$angle_data_dir\"", 95 "ANGLE_VK_MOCK_ICD_JSON=\"$angle_data_dir/VkICD_mock_icd.json\"", 96 ] 97 98 deps = [] 99 data_deps = [] 100 101 if (angle_enable_swiftshader) { 102 import("$swiftshader_dir/src/Vulkan/vulkan.gni") 103 _sws_icd = "./$swiftshader_icd_file_name" 104 if (is_win) { 105 _sws_icd = ".\\\\$swiftshader_icd_file_name" 106 } 107 108 defines += [ "ANGLE_VK_SWIFTSHADER_ICD_JSON=\"${_sws_icd}\"" ] 109 110 data_deps += [ 111 "$swiftshader_dir/src/Vulkan:icd_file", 112 "$swiftshader_dir/src/Vulkan:swiftshader_libvulkan", 113 ] 114 } 115 } 116 117 if (angle_enable_vulkan_validation_layers) { 118 group("vulkan_validation_layers") { 119 data_deps = [] 120 if (is_fuchsia) { 121 data_deps += [ "//third_party/fuchsia-sdk:vulkan_validation" ] 122 } else { 123 data_deps += 124 [ "$angle_vulkan_validation_layers_dir:vulkan_validation_layers" ] 125 if (!is_android) { 126 data_deps += 127 [ "$angle_vulkan_validation_layers_dir:vulkan_gen_json_files" ] 128 } 129 } 130 } 131 } 132} 133