xref: /aosp_15_r20/external/angle/src/common/vulkan/BUILD.gn (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
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