blob: 03aa2fd116e0109ae3fa61d909ea5c04bec8202d [file] [log] [blame]
# Copyright 2020 The ANGLE Project 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_overrides/swiftshader.gni")
import("../../../gni/angle.gni")
declare_args() {
angle_use_custom_libvulkan = !is_android && !is_fuchsia && !is_ggp
}
config("angle_libvulkan_config") {
if (angle_use_custom_libvulkan) {
defines = [ "ANGLE_USE_CUSTOM_LIBVULKAN" ]
}
}
angle_source_set("angle_libvulkan_loader") {
public_configs = [ ":angle_libvulkan_config" ]
sources = [
"libvulkan_loader.cpp",
"libvulkan_loader.h",
]
deps = [ "$angle_root:angle_common" ]
}
if (angle_enable_vulkan) {
group("angle_libvulkan") {
public_configs = [ ":angle_libvulkan_config" ]
data_deps = []
if (angle_use_custom_libvulkan) {
if (angle_shared_libvulkan) {
data_deps += [ "$angle_vulkan_loader_dir:libvulkan" ]
} else {
public_deps = [ "$angle_vulkan_loader_dir:libvulkan" ]
}
data_deps += [ "$angle_vulkan_tools_dir:VkICD_mock_icd" ]
}
}
config("angle_vulkan_headers_config") {
if (angle_shared_libvulkan) {
defines = [ "ANGLE_SHARED_LIBVULKAN=1" ]
}
}
angle_source_set("angle_vulkan_headers") {
sources = [
"vk_google_filtering_precision.h",
"vk_headers.h",
]
if (angle_shared_libvulkan) {
public_deps = [ "$angle_root/src/third_party/volk:volk" ]
} else {
public_deps = [ "$angle_vulkan_headers_dir:vulkan_headers" ]
}
public_configs = [ ":angle_vulkan_headers_config" ]
}
group("angle_vulkan_entry_points") {
public_deps = [ ":angle_vulkan_headers" ]
if (is_fuchsia) {
public_deps += [
"$angle_root/src/common/fuchsia_egl",
"//third_party/fuchsia-sdk/sdk/pkg/vulkan",
]
if (!angle_use_vulkan_null_display) {
public_deps += [ "//third_party/fuchsia-sdk/sdk/pkg/vulkan_layers:VkLayer_image_pipe_swapchain" ]
}
} else if (!is_android && !is_ggp) {
if (angle_shared_libvulkan) {
data_deps = [ "$angle_vulkan_loader_dir:libvulkan" ]
} else {
deps = [ "$angle_vulkan_loader_dir:libvulkan" ]
}
}
}
angle_source_set("vulkan") {
sources = [
"vulkan_icd.cpp",
"vulkan_icd.h",
]
public_deps = [
":angle_libvulkan",
":angle_vulkan_entry_points",
"$angle_root:angle_common",
]
configs += [ "$angle_root:angle_no_cfi_icall" ]
defines = [
"ANGLE_VK_LAYERS_DIR=\"$angle_data_dir\"",
"ANGLE_VK_MOCK_ICD_JSON=\"$angle_data_dir/VkICD_mock_icd.json\"",
]
deps = []
data_deps = []
if (angle_enable_swiftshader) {
import("$swiftshader_dir/src/Vulkan/vulkan.gni")
_sws_icd = "./$swiftshader_icd_file_name"
if (is_win) {
_sws_icd = ".\\\\$swiftshader_icd_file_name"
}
defines += [ "ANGLE_VK_SWIFTSHADER_ICD_JSON=\"${_sws_icd}\"" ]
data_deps += [
"$swiftshader_dir/src/Vulkan:icd_file",
"$swiftshader_dir/src/Vulkan:swiftshader_libvulkan",
]
}
}
if (angle_enable_vulkan_validation_layers) {
group("vulkan_validation_layers") {
data_deps = []
if (is_fuchsia) {
data_deps += [ "//third_party/fuchsia-sdk:vulkan_validation" ]
} else {
data_deps +=
[ "$angle_vulkan_validation_layers_dir:vulkan_validation_layers" ]
if (!is_android) {
data_deps +=
[ "$angle_vulkan_validation_layers_dir:vulkan_gen_json_files" ]
}
}
}
}
}