Commit b62a1c2a by Jamie Madill Committed by Commit Bot

Vulkan: Reorganize BUILD.gn files.

This moves the SPIRV-Tools and glslang and Validation layers build files into the root of the dep folder. Requires an upstream Chrome change to allow for a different path to execute scrips in GN. Also removes the vulkan_support subdirectory. Bug: angleproject:2339 Change-Id: I457b5b05547c092a1e7fef6dd0aaadd8068e2143 Reviewed-on: https://chromium-review.googlesource.com/900096 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarYuly Novikov <ynovikov@chromium.org>
parent ceb7190b
......@@ -414,6 +414,34 @@ config("libANGLE_config") {
}
}
if (angle_enable_vulkan) {
# Use this target to include everything ANGLE needs for Vulkan.
group("angle_vulkan") {
deps = [
"$angle_root/third_party/glslang-angle:glslang",
]
public_deps = [
"$angle_root/third_party/vulkan-validation-layers:vulkan_headers",
]
data_deps = []
foreach(layer_info, layers) {
name = layer_info[0]
data_deps +=
[ "$angle_root/third_party/vulkan-validation-layers:VkLayer_$name" ]
}
public_configs = [
"$angle_root/third_party/glslang-angle:glslang_config",
"$angle_root/third_party/vulkan-validation-layers:vulkan_config",
]
if (!is_android) {
deps +=
[ "$angle_root/third_party/vulkan-validation-layers:vulkan_loader" ]
data_deps += [ "$angle_root/third_party/vulkan-validation-layers:vulkan_gen_json_files" ]
public_configs += [ "$angle_root/third_party/vulkan-validation-layers:vulkan_loader_config" ]
}
}
}
static_library("libANGLE") {
sources = rebase_path(gles_gypi.libangle_sources, ".", "src")
......@@ -514,8 +542,9 @@ static_library("libANGLE") {
sources +=
rebase_path(gles_gypi.libangle_vulkan_android_sources, ".", "src")
}
deps += [ "src/vulkan_support:angle_vulkan" ]
public_deps += [ "src/vulkan_support:vulkan_headers" ]
deps += [ ":angle_vulkan" ]
public_deps +=
[ "$angle_root/third_party/vulkan-validation-layers:vulkan_headers" ]
}
if (angle_enable_null) {
......
......@@ -9,6 +9,6 @@ angle_dotfile_settings = {
exec_script_whitelist = [
get_path_info("BUILD.gn", "abspath"),
get_path_info("src/tests/BUILD.gn", "abspath"),
get_path_info("src/vulkan_support/BUILD.gn", "abspath"),
get_path_info("third_party/vulkan-validation-layers/BUILD.gn", "abspath"),
]
}
......@@ -20,6 +20,15 @@ if (build_with_chromium) {
}
}
# Shared config vars for Vulkan libraries.
third_party_dir = "//third_party"
glslang_dir = "$third_party_dir/glslang-angle/src"
vulkan_layers_dir = "$third_party_dir/vulkan-validation-layers/src"
raw_vulkan_layers_dir = rebase_path(vulkan_layers_dir, root_build_dir)
# Subdirectory to place data files (e.g. layer JSON files).
data_dir = "angledata"
declare_args() {
if (!is_android) {
ndk_supports_vulkan = false
......
# Copyright 2018 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("../../gni/angle.gni")
# glslang
# -------
config("glslang_config") {
include_dirs = [
glslang_dir,
"$glslang_dir/glslang/Public",
]
}
config("glslang_internal_config") {
cflags = []
if (is_clang || !is_win) {
cflags += [
"-Wno-ignored-qualifiers",
"-Wno-reorder",
]
}
if (!is_clang && !is_win) {
cflags += [ "-Wno-unused-function" ]
}
if (is_clang) {
# TODO(thakis): Consider enabling this, https://crbug.com/807632
cflags += [ "-Wno-implicit-fallthrough" ]
}
}
static_library("glslang") {
sources = [
"$glslang_dir/OGLCompilersDLL/InitializeDll.cpp",
"$glslang_dir/OGLCompilersDLL/InitializeDll.h",
"$glslang_dir/SPIRV/GLSL.ext.KHR.h",
"$glslang_dir/SPIRV/GLSL.std.450.h",
"$glslang_dir/SPIRV/GlslangToSpv.cpp",
"$glslang_dir/SPIRV/GlslangToSpv.h",
"$glslang_dir/SPIRV/InReadableOrder.cpp",
"$glslang_dir/SPIRV/Logger.cpp",
"$glslang_dir/SPIRV/Logger.h",
"$glslang_dir/SPIRV/SpvBuilder.cpp",
"$glslang_dir/SPIRV/SpvBuilder.h",
"$glslang_dir/SPIRV/bitutils.h",
"$glslang_dir/SPIRV/disassemble.cpp",
"$glslang_dir/SPIRV/disassemble.h",
"$glslang_dir/SPIRV/doc.cpp",
"$glslang_dir/SPIRV/doc.h",
"$glslang_dir/SPIRV/hex_float.h",
"$glslang_dir/SPIRV/spirv.hpp",
"$glslang_dir/SPIRV/spvIR.h",
"$glslang_dir/StandAlone/ResourceLimits.cpp",
"$glslang_dir/StandAlone/ResourceLimits.h",
"$glslang_dir/glslang/GenericCodeGen/CodeGen.cpp",
"$glslang_dir/glslang/GenericCodeGen/Link.cpp",
"$glslang_dir/glslang/Include/BaseTypes.h",
"$glslang_dir/glslang/Include/Common.h",
"$glslang_dir/glslang/Include/ConstantUnion.h",
"$glslang_dir/glslang/Include/InfoSink.h",
"$glslang_dir/glslang/Include/InitializeGlobals.h",
"$glslang_dir/glslang/Include/PoolAlloc.h",
"$glslang_dir/glslang/Include/ResourceLimits.h",
"$glslang_dir/glslang/Include/ShHandle.h",
"$glslang_dir/glslang/Include/Types.h",
"$glslang_dir/glslang/Include/arrays.h",
"$glslang_dir/glslang/Include/intermediate.h",
"$glslang_dir/glslang/Include/revision.h",
"$glslang_dir/glslang/MachineIndependent/Constant.cpp",
"$glslang_dir/glslang/MachineIndependent/InfoSink.cpp",
"$glslang_dir/glslang/MachineIndependent/Initialize.cpp",
"$glslang_dir/glslang/MachineIndependent/Initialize.h",
"$glslang_dir/glslang/MachineIndependent/IntermTraverse.cpp",
"$glslang_dir/glslang/MachineIndependent/Intermediate.cpp",
"$glslang_dir/glslang/MachineIndependent/LiveTraverser.h",
"$glslang_dir/glslang/MachineIndependent/ParseContextBase.cpp",
"$glslang_dir/glslang/MachineIndependent/ParseHelper.cpp",
"$glslang_dir/glslang/MachineIndependent/ParseHelper.h",
"$glslang_dir/glslang/MachineIndependent/PoolAlloc.cpp",
"$glslang_dir/glslang/MachineIndependent/RemoveTree.cpp",
"$glslang_dir/glslang/MachineIndependent/RemoveTree.h",
"$glslang_dir/glslang/MachineIndependent/Scan.cpp",
"$glslang_dir/glslang/MachineIndependent/Scan.h",
"$glslang_dir/glslang/MachineIndependent/ScanContext.h",
"$glslang_dir/glslang/MachineIndependent/ShaderLang.cpp",
"$glslang_dir/glslang/MachineIndependent/SymbolTable.cpp",
"$glslang_dir/glslang/MachineIndependent/SymbolTable.h",
"$glslang_dir/glslang/MachineIndependent/Versions.cpp",
"$glslang_dir/glslang/MachineIndependent/Versions.h",
"$glslang_dir/glslang/MachineIndependent/gl_types.h",
"$glslang_dir/glslang/MachineIndependent/glslang.y",
"$glslang_dir/glslang/MachineIndependent/glslang_tab.cpp",
"$glslang_dir/glslang/MachineIndependent/glslang_tab.cpp.h",
"$glslang_dir/glslang/MachineIndependent/intermOut.cpp",
"$glslang_dir/glslang/MachineIndependent/iomapper.cpp",
"$glslang_dir/glslang/MachineIndependent/iomapper.h",
"$glslang_dir/glslang/MachineIndependent/limits.cpp",
"$glslang_dir/glslang/MachineIndependent/linkValidate.cpp",
"$glslang_dir/glslang/MachineIndependent/localintermediate.h",
"$glslang_dir/glslang/MachineIndependent/parseConst.cpp",
"$glslang_dir/glslang/MachineIndependent/parseVersions.h",
"$glslang_dir/glslang/MachineIndependent/preprocessor/Pp.cpp",
"$glslang_dir/glslang/MachineIndependent/preprocessor/PpAtom.cpp",
"$glslang_dir/glslang/MachineIndependent/preprocessor/PpContext.cpp",
"$glslang_dir/glslang/MachineIndependent/preprocessor/PpContext.h",
"$glslang_dir/glslang/MachineIndependent/preprocessor/PpScanner.cpp",
"$glslang_dir/glslang/MachineIndependent/preprocessor/PpTokens.cpp",
"$glslang_dir/glslang/MachineIndependent/preprocessor/PpTokens.h",
"$glslang_dir/glslang/MachineIndependent/propagateNoContraction.cpp",
"$glslang_dir/glslang/MachineIndependent/propagateNoContraction.h",
"$glslang_dir/glslang/MachineIndependent/reflection.cpp",
"$glslang_dir/glslang/MachineIndependent/reflection.h",
"$glslang_dir/glslang/OSDependent/osinclude.h",
"$glslang_dir/glslang/Public/ShaderLang.h",
]
public_configs = [ ":glslang_config" ]
configs += [ ":glslang_internal_config" ]
if (is_win) {
cflags = [
"/wd4100", # Unreferenced formal parameter
"/wd4456", # Declaration hides previous local declaration
"/wd4457", # Declaration hides function parameter
"/wd4458", # Declaration hides class member
"/wd4702", # Unreachable code (from glslang_tab.cpp)
"/wd4718", # Recursive call has no side effects (from PpContext.cpp)
]
sources += [ "$glslang_dir/glslang/OSDependent/Windows/ossource.cpp" ]
}
if (is_linux || is_android) {
sources += [ "$glslang_dir/glslang/OSDependent/Unix/ossource.cpp" ]
}
}
# Copyright 2018 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("../../gni/angle.gni")
vulkan_gen_dir = "$target_gen_dir/angle/vulkan"
raw_vulkan_gen_dir = rebase_path(vulkan_gen_dir, root_build_dir)
# SPIRV-tools
# -----------
spirv_tools_dir = "$third_party_dir/spirv-tools-angle/src"
spirv_source_dir = "$spirv_tools_dir/source"
spirv_headers_dir = "$third_party_dir/spirv-headers/src"
spirv_include_dir = "$spirv_headers_dir/include/spirv"
raw_spirv_source_dir = rebase_path(spirv_source_dir, root_build_dir)
raw_spirv_headers_dir = rebase_path(spirv_headers_dir, root_build_dir)
raw_spirv_include_dir = rebase_path(spirv_include_dir, root_build_dir)
grammar_processing_script = "$spirv_tools_dir/utils/generate_grammar_tables.py"
action("spirv_tools_gen_enum_string_mapping") {
script = grammar_processing_script
sources = [
"$spirv_include_dir/1.2/spirv.core.grammar.json",
]
outputs = [
"$vulkan_gen_dir/extension_enum.inc",
"$vulkan_gen_dir/enum_string_mapping.inc",
]
args = [
"--spirv-core-grammar=$raw_spirv_include_dir/1.2/spirv.core.grammar.json",
"--extension-enum-output=$raw_vulkan_gen_dir/extension_enum.inc",
"--enum-string-mapping-output=$raw_vulkan_gen_dir/enum_string_mapping.inc",
]
}
spvtools_core_tables = [
"1.0",
"1.1",
"1.2",
]
foreach(version, spvtools_core_tables) {
action("spirv_tools_gen_core_tables_" + version) {
script = grammar_processing_script
sources = [
"$spirv_include_dir/$version/spirv.core.grammar.json",
]
outputs = [
"$vulkan_gen_dir/core.insts-$version.inc",
"$vulkan_gen_dir/operand.kinds-$version.inc",
]
args = [
"--spirv-core-grammar=$raw_spirv_include_dir/$version/spirv.core.grammar.json",
"--core-insts-output=$raw_vulkan_gen_dir/core.insts-$version.inc",
"--operand-kinds-output=$raw_vulkan_gen_dir/operand.kinds-$version.inc",
]
}
}
action("spirv_tools_gen_glsl_tables") {
script = grammar_processing_script
sources = [
"$spirv_include_dir/1.0/extinst.glsl.std.450.grammar.json",
"$spirv_include_dir/1.0/spirv.core.grammar.json",
]
outputs = [
"$vulkan_gen_dir/glsl.std.450.insts-1.0.inc",
]
args = [
"--spirv-core-grammar=$raw_spirv_include_dir/1.0/spirv.core.grammar.json",
"--extinst-glsl-grammar=$raw_spirv_include_dir/1.0/extinst.glsl.std.450.grammar.json",
"--glsl-insts-output=$raw_vulkan_gen_dir/glsl.std.450.insts-1.0.inc",
]
}
action("spirv_tools_gen_opencl_tables") {
script = grammar_processing_script
sources = [
"$spirv_include_dir/1.0/extinst.opencl.std.100.grammar.json",
"$spirv_include_dir/1.0/spirv.core.grammar.json",
]
outputs = [
"$vulkan_gen_dir/opencl.std.insts-1.0.inc",
]
args = [
"--spirv-core-grammar=$raw_spirv_include_dir/1.0/spirv.core.grammar.json",
"--extinst-opencl-grammar=$raw_spirv_include_dir/1.0/extinst.opencl.std.100.grammar.json",
"--opencl-insts-output=$raw_vulkan_gen_dir/opencl.std.insts-1.0.inc",
]
}
action("spirv_tools_gen_generators_inc") {
script = "$spirv_tools_dir/utils/generate_registry_tables.py"
sources = [
"$spirv_headers_dir/include/spirv/spir-v.xml",
]
outputs = [
"$vulkan_gen_dir/generators.inc",
]
args = [
"--xml=$raw_spirv_headers_dir/include/spirv/spir-v.xml",
"--generator-output=$raw_vulkan_gen_dir/generators.inc",
]
}
spvtools_vendor_tables = [
"spv-amd-shader-explicit-vertex-parameter",
"spv-amd-shader-trinary-minmax",
"spv-amd-gcn-shader",
"spv-amd-shader-ballot",
]
foreach(target_name, spvtools_vendor_tables) {
insts_file = "$target_name.insts.inc"
grammar_file = "extinst.$target_name.grammar.json"
action(target_name) {
script = grammar_processing_script
sources = [
"$spirv_source_dir/$grammar_file",
]
outputs = [
"$vulkan_gen_dir/$insts_file",
]
args = [
"--extinst-vendor-grammar=$raw_spirv_source_dir/$grammar_file",
"--vendor-insts-output=$raw_vulkan_gen_dir/$insts_file",
]
}
}
config("spirv_tools_config") {
include_dirs = [ "$spirv_tools_dir/include" ]
if (is_win) {
cflags = [
"/wd4706",
# These are triggered in higher optimization levels. Disable for now until
# fixes are landed upstream. See https://crbug.com/677837.
"/wd4701",
"/wd4703",
]
}
}
config("spirv_tools_internal_config") {
if (is_clang) {
# TODO(thakis): Consider enabling this, https://crbug.com/807632
cflags = [ "-Wno-implicit-fallthrough" ]
}
}
static_library("spirv_tools") {
deps = [
":spirv_tools_gen_core_tables_1.0",
":spirv_tools_gen_core_tables_1.1",
":spirv_tools_gen_core_tables_1.2",
":spirv_tools_gen_enum_string_mapping",
":spirv_tools_gen_generators_inc",
":spirv_tools_gen_glsl_tables",
":spirv_tools_gen_opencl_tables",
]
include_dirs = [
vulkan_gen_dir,
"$spirv_headers_dir/include",
"$spirv_tools_dir/source",
]
sources = [
"$spirv_tools_dir/source/assembly_grammar.cpp",
"$spirv_tools_dir/source/assembly_grammar.h",
"$spirv_tools_dir/source/binary.cpp",
"$spirv_tools_dir/source/binary.h",
"$spirv_tools_dir/source/diagnostic.cpp",
"$spirv_tools_dir/source/diagnostic.h",
"$spirv_tools_dir/source/disassemble.cpp",
"$spirv_tools_dir/source/enum_set.h",
"$spirv_tools_dir/source/ext_inst.cpp",
"$spirv_tools_dir/source/ext_inst.h",
"$spirv_tools_dir/source/instruction.h",
"$spirv_tools_dir/source/libspirv.cpp",
"$spirv_tools_dir/source/macro.h",
"$spirv_tools_dir/source/message.cpp",
"$spirv_tools_dir/source/name_mapper.cpp",
"$spirv_tools_dir/source/name_mapper.h",
"$spirv_tools_dir/source/opcode.cpp",
"$spirv_tools_dir/source/opcode.h",
"$spirv_tools_dir/source/operand.cpp",
"$spirv_tools_dir/source/operand.h",
"$spirv_tools_dir/source/parsed_operand.cpp",
"$spirv_tools_dir/source/parsed_operand.h",
"$spirv_tools_dir/source/print.cpp",
"$spirv_tools_dir/source/print.h",
# TODO(jmadill): Determine if this is ever needed.
#"$spirv_tools_dir/source/software_version.cpp",
"$spirv_tools_dir/source/enum_string_mapping.cpp",
"$spirv_tools_dir/source/extensions.cpp",
"$spirv_tools_dir/source/extensions.h",
"$spirv_tools_dir/source/spirv_constant.h",
"$spirv_tools_dir/source/spirv_definition.h",
"$spirv_tools_dir/source/spirv_endian.cpp",
"$spirv_tools_dir/source/spirv_endian.h",
"$spirv_tools_dir/source/spirv_target_env.cpp",
"$spirv_tools_dir/source/spirv_target_env.h",
"$spirv_tools_dir/source/spirv_validator_options.cpp",
"$spirv_tools_dir/source/spirv_validator_options.h",
"$spirv_tools_dir/source/table.cpp",
"$spirv_tools_dir/source/table.h",
"$spirv_tools_dir/source/text.cpp",
"$spirv_tools_dir/source/text.h",
"$spirv_tools_dir/source/text_handler.cpp",
"$spirv_tools_dir/source/text_handler.h",
"$spirv_tools_dir/source/util/bitutils.h",
"$spirv_tools_dir/source/util/hex_float.h",
"$spirv_tools_dir/source/util/parse_number.cpp",
"$spirv_tools_dir/source/util/parse_number.h",
"$spirv_tools_dir/source/util/string_utils.cpp",
"$spirv_tools_dir/source/util/string_utils.h",
"$spirv_tools_dir/source/val/basic_block.cpp",
"$spirv_tools_dir/source/val/construct.cpp",
"$spirv_tools_dir/source/val/function.cpp",
"$spirv_tools_dir/source/val/instruction.cpp",
"$spirv_tools_dir/source/val/validation_state.cpp",
"$spirv_tools_dir/source/validate.cpp",
"$spirv_tools_dir/source/validate.h",
"$spirv_tools_dir/source/validate_arithmetics.cpp",
"$spirv_tools_dir/source/validate_bitwise.cpp",
"$spirv_tools_dir/source/validate_capability.cpp",
"$spirv_tools_dir/source/validate_cfg.cpp",
"$spirv_tools_dir/source/validate_conversion.cpp",
"$spirv_tools_dir/source/validate_datarules.cpp",
"$spirv_tools_dir/source/validate_decorations.cpp",
"$spirv_tools_dir/source/validate_derivatives.cpp",
"$spirv_tools_dir/source/validate_id.cpp",
"$spirv_tools_dir/source/validate_image.cpp",
"$spirv_tools_dir/source/validate_instruction.cpp",
"$spirv_tools_dir/source/validate_layout.cpp",
"$spirv_tools_dir/source/validate_logicals.cpp",
"$spirv_tools_dir/source/validate_type_unique.cpp",
]
public_configs = [ ":spirv_tools_config" ]
configs += [ ":spirv_tools_internal_config" ]
foreach(target_name, spvtools_vendor_tables) {
deps += [ ":$target_name" ]
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment