blob: 42f8b96af7dcb83f73acc4266cca01056d0250f0 [file] [log] [blame]
# Copyright 2016 The Fuchsia Authors
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice (including the next
# paragraph) shall be included in all copies or substantial portions of the
# Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.
import("../../../mesa.gni")
declare_args() {
use_mock_magma = false
}
config("vulkan_internal_config") {
include_dirs = [
".",
"..", # because anv_private.h includes isl/isl.h
"$mesa_build_root/include/drm-uapi", # because anv_private.h includes i915_drm.h
"$mesa_build_root/src", # because isl.h includes util/macros.h
"$mesa_build_root/src/vulkan/util", # because anv_private.h includes vk_alloc.h
"$root_gen_dir/third_party/mesa/src/intel/vulkan",
]
}
config("vulkan_library_flags") {
ldflags = [
"-static-libstdc++",
"-Wl,--build-id=sha1",
]
}
shared_library("vulkan_intel") {
deps = [
":vulkan_internal",
]
if (use_mock_magma) {
deps += [ "$magma_build_root/tests/mock:magma_system" ]
} else {
deps += [ "//garnet/lib/magma/src/libmagma" ]
}
configs += [ ":vulkan_library_flags" ]
}
# TODO(MA-596): merge ICD target definitions
shared_library("vulkan_intel_linux") {
deps = [
":vulkan_internal",
"//garnet/lib/magma/src/libmagma_linux",
]
configs += [ ":vulkan_library_flags" ]
}
# Also used by testing targets
mesa_source_set("vulkan_internal") {
public_deps = [
"$mesa_build_root/include:vulkan",
"$mesa_build_root/src/intel/compiler",
"$mesa_build_root/src/vulkan/wsi",
]
cflags_cc = [ "-Wno-c++11-narrowing" ]
if (is_linux) {
# TODO(MA-588): support flexible device path
defines = [ "DEV_GPU_PATH_OVERRIDE=\"/dev/wl0\"" ]
}
public_configs = [ ":vulkan_internal_config" ]
deps = [
":anv_entrypoints",
":anv_extensions",
":gen",
"$magma_build_root/include:magma_abi",
"$magma_build_root/src/magma_util",
"$magma_build_root/src/magma_util:allocator",
"$mesa_build_root/include:c_compat",
"$mesa_build_root/src/compiler/nir",
"$mesa_build_root/src/compiler/spirv",
"$mesa_build_root/src/intel:genxml",
"$mesa_build_root/src/intel:isl",
"$mesa_build_root/src/intel/blorp",
"$mesa_build_root/src/intel/common",
"$mesa_build_root/src/intel/dev",
"$mesa_build_root/src/magma",
"$mesa_build_root/src/util",
"$mesa_build_root/src/vulkan/util",
"$msd_intel_gen_build_root/include",
]
sources = [
"$target_gen_dir/anv_entrypoints.c",
"$target_gen_dir/anv_entrypoints.h",
"$target_gen_dir/anv_extensions.c",
"$target_gen_dir/anv_extensions.h",
"anv_allocator.c",
"anv_batch_chain.c",
"anv_blorp.c",
"anv_cmd_buffer.c",
"anv_descriptor_set.c",
"anv_device.c",
"anv_dump.c",
"anv_formats.c",
"anv_genX.h",
"anv_image.c",
"anv_intel.c",
"anv_magma.c",
"anv_magma_buffer_collection.c",
"anv_magma_connection.cc",
"anv_nir.h",
"anv_nir_add_base_work_group_id.c",
"anv_nir_apply_pipeline_layout.c",
"anv_nir_lower_input_attachments.c",
"anv_nir_lower_multiview.c",
"anv_nir_lower_push_constants.c",
"anv_nir_lower_ycbcr_textures.c",
"anv_pass.c",
"anv_pipeline.c",
"anv_pipeline_cache.c",
"anv_private.h",
"anv_queue.c",
"anv_util.c",
"anv_wsi.c",
"vk_format_info.h",
]
}
group("gen") {
deps = [
":gen10",
":gen11",
":gen7",
":gen75",
":gen8",
":gen9",
]
}
template("vulkan_gen8") {
mesa_source_set(target_name) {
defines = [ invoker.defines ]
configs = [ ":vulkan_internal_config" ]
sources = [
"gen8_cmd_buffer.c",
"genX_blorp_exec.c",
"genX_cmd_buffer.c",
"genX_gpu_memcpy.c",
"genX_pipeline.c",
"genX_query.c",
"genX_state.c",
]
deps = [
":anv_entrypoints",
"$magma_build_root/include:magma_abi",
"$mesa_build_root/include:c_compat",
"$mesa_build_root/include:vulkan",
"$mesa_build_root/src/intel:genxml",
"$mesa_build_root/src/intel:isl",
"$mesa_build_root/src/intel/blorp",
"$mesa_build_root/src/intel/compiler",
"$mesa_build_root/src/vulkan/wsi",
]
}
}
vulkan_gen8("gen8") {
defines = "GEN_VERSIONx10=80"
}
vulkan_gen8("gen9") {
defines = "GEN_VERSIONx10=90"
}
vulkan_gen8("gen10") {
defines = "GEN_VERSIONx10=100"
}
vulkan_gen8("gen11") {
defines = "GEN_VERSIONx10=110"
}
template("vulkan_gen7") {
mesa_source_set(target_name) {
defines = [ invoker.defines ]
configs = [ ":vulkan_internal_config" ]
sources = [
"gen7_cmd_buffer.c",
"genX_blorp_exec.c",
"genX_cmd_buffer.c",
"genX_gpu_memcpy.c",
"genX_pipeline.c",
"genX_query.c",
"genX_state.c",
]
deps = [
":anv_entrypoints",
"$magma_build_root/include:magma_abi",
"$mesa_build_root/include:c_compat",
"$mesa_build_root/include:vulkan",
"$mesa_build_root/src/intel:genxml",
"$mesa_build_root/src/intel:isl",
"$mesa_build_root/src/intel/blorp",
"$mesa_build_root/src/intel/compiler",
"$mesa_build_root/src/vulkan/wsi",
]
}
}
vulkan_gen7("gen7") {
defines = "GEN_VERSIONx10=70"
}
vulkan_gen7("gen75") {
defines = "GEN_VERSIONx10=75"
}
action("anv_entrypoints") {
outputs = [
"$target_gen_dir/anv_entrypoints.h",
"$target_gen_dir/anv_entrypoints.c",
]
script = "$mesa_build_root/scripts/python_exec.py"
inputs = [
"anv_entrypoints_gen.py",
"anv_extensions.py",
"$mesa_build_root/src/vulkan/registry/vk.xml",
]
args = [
rebase_path("$magma_python_path"),
rebase_path("anv_entrypoints_gen.py"),
"--xml",
rebase_path("$mesa_build_root") + "/src/vulkan/registry/vk.xml",
"--outdir",
rebase_path("$target_gen_dir"),
]
}
action("anv_extensions") {
outputs = [
"$target_gen_dir/anv_extensions.c",
"$target_gen_dir/anv_extensions.h",
]
script = "$mesa_build_root/scripts/python_exec.py"
inputs = [
"anv_extensions_gen.py",
"$mesa_build_root/src/vulkan/registry/vk.xml",
"anv_extensions.py",
]
args = [
rebase_path("$magma_python_path"),
rebase_path("anv_extensions_gen.py"),
"--out-c",
rebase_path("$target_gen_dir/anv_extensions.c"),
"--out-h",
rebase_path("$target_gen_dir/anv_extensions.h"),
"--xml",
rebase_path("$mesa_build_root") + "/src/vulkan/registry/vk.xml",
]
}