| # 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 |
| } |