blob: 06092f4f0509b80a70bcd60f04465f3479882e91 [file] [log] [blame]
# Copyright 2019 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.
#
# This file houses the build configuration for the ANGLE Vulkan back-end.
import("//build/config/dcheck_always_on.gni")
import("//build_overrides/swiftshader.gni")
import("vulkan_backend.gni")
#import("../../../../gni/angle.gni")
assert(angle_enable_vulkan)
declare_args() {
# Enable custom (cpu-side) secondary command buffers
angle_enable_custom_vulkan_cmd_buffers = true
# Enable Vulkan GPU trace event capability
angle_enable_vulkan_gpu_trace_events = false
}
declare_args() {
# Enable custom secondary command buffers for outside render pass commands only
angle_enable_custom_vulkan_outside_render_pass_cmd_buffers =
angle_enable_custom_vulkan_cmd_buffers
# Enable custom secondary command buffers for render pass commands only
angle_enable_custom_vulkan_render_pass_cmd_buffers =
angle_enable_custom_vulkan_cmd_buffers
# Enable shared ring buffer command buffer allocator
angle_enable_vulkan_shared_ring_buffer_cmd_alloc = false
# Enable using CRC for pipeline cache data (for debug mode)
angle_enable_crc_for_pipeline_cache = false
}
angle_source_set("angle_vk_mem_alloc_wrapper") {
deps = [
"$angle_root/src/common/vulkan:angle_vulkan_headers",
"$angle_vulkan_memory_allocator_dir",
]
include_dirs = [ "$angle_vulkan_memory_allocator_dir/include" ]
configs += [ "$angle_root:angle_no_cfi_unrelated_cast" ]
sources = [
"vk_mem_alloc_wrapper.cpp",
"vk_mem_alloc_wrapper.h",
]
if (is_clang) {
cflags_cc = [
"-Wno-extra-semi-stmt",
"-Wno-missing-field-initializers",
"-Wno-suggest-destructor-override",
"-Wno-suggest-override",
"-Wno-inconsistent-missing-destructor-override",
]
}
}
config("angle_vulkan_backend_config") {
defines = [ "ANGLE_ENABLE_VULKAN" ]
if (angle_enable_swiftshader) {
defines += [ "ANGLE_ENABLE_SWIFTSHADER" ]
}
if (angle_enable_vulkan_gpu_trace_events) {
defines += [ "ANGLE_ENABLE_VULKAN_GPU_TRACE_EVENTS=1" ]
}
if (angle_enable_vulkan_validation_layers) {
defines += [ "ANGLE_ENABLE_VULKAN_VALIDATION_LAYERS" ]
}
defines += [ "ANGLE_ENABLE_VULKAN_SHARED_RING_BUFFER_CMD_ALLOC=" +
"${angle_enable_vulkan_shared_ring_buffer_cmd_alloc}" ]
# Ensures that the memory allocation logging can only be enabled with debug layers.
assert(angle_debug_layers_enabled || !angle_enable_memory_alloc_logging)
if (angle_enable_memory_alloc_logging) {
defines += [ "ANGLE_ENABLE_MEMORY_ALLOC_LOGGING=1" ]
}
# Ensures that CRC is used only in debug mode.
assert(is_debug || !angle_enable_crc_for_pipeline_cache)
if (angle_enable_crc_for_pipeline_cache) {
defines += [ "ANGLE_ENABLE_CRC_FOR_PIPELINE_CACHE" ]
}
}
template("angle_vulkan_backend_template") {
config("${target_name}_internal_config") {
defines = []
if (invoker.enable_custom_outside_render_pass_cmd_buffers) {
defines += [ "ANGLE_USE_CUSTOM_VULKAN_OUTSIDE_RENDER_PASS_CMD_BUFFERS=1" ]
}
if (invoker.enable_custom_render_pass_cmd_buffers) {
defines += [ "ANGLE_USE_CUSTOM_VULKAN_RENDER_PASS_CMD_BUFFERS=1" ]
}
}
angle_source_set(target_name) {
sources = vulkan_backend_sources
libs = []
deps = [
":angle_vk_mem_alloc_wrapper",
"$angle_root:angle_abseil",
"$angle_root:angle_compression",
"$angle_root:angle_gpu_info_util",
"$angle_root:angle_image_util",
"$angle_root/src/common/spirv:angle_spirv_base",
"$angle_root/src/common/spirv:angle_spirv_builder",
"$angle_root/src/common/spirv:angle_spirv_headers",
"$angle_root/src/common/spirv:angle_spirv_parser",
"$angle_spirv_headers_dir:spv_headers",
]
if (angle_enable_cl || is_android) {
deps += [ "$angle_root:angle_version_info" ]
}
public_deps = [
"$angle_root:libANGLE_headers",
"$angle_root/src/common/vulkan",
"$angle_root/src/common/vulkan:angle_libvulkan_loader",
"$angle_root/src/common/vulkan:angle_vulkan_entry_points",
"$angle_root/src/common/vulkan:angle_vulkan_headers",
]
public_configs = [
":angle_vulkan_backend_config",
":${target_name}_internal_config",
]
if (angle_use_wayland) {
public_configs += [ "$angle_root:angle_wayland_config" ]
}
data_deps = []
defines = []
if (angle_enable_vulkan_validation_layers) {
defines += [ "ANGLE_ENABLE_VULKAN_VALIDATION_LAYERS_BY_DEFAULT" ]
data_deps += [ "$angle_root/src/common/vulkan:vulkan_validation_layers" ]
}
if (is_linux || is_chromeos) {
deps += [ "$angle_root/src/common/linux:angle_dma_buf" ]
if (angle_use_gbm) {
deps += [ "//third_party/minigbm" ]
}
}
if (is_fuchsia) {
public_deps += [ "$angle_root/src/common/fuchsia_egl:backend" ]
}
# Include generated shaders.
import("vk_internal_shaders_autogen.gni")
sources += angle_vulkan_internal_shaders
}
}
angle_vulkan_backend_template("angle_vulkan_backend") {
enable_custom_outside_render_pass_cmd_buffers =
angle_enable_custom_vulkan_outside_render_pass_cmd_buffers
enable_custom_render_pass_cmd_buffers =
angle_enable_custom_vulkan_render_pass_cmd_buffers
}
angle_vulkan_backend_template("angle_vulkan_secondaries_backend") {
enable_custom_outside_render_pass_cmd_buffers = false
enable_custom_render_pass_cmd_buffers = false
}