Commit 9cb2c262 by Jamie Madill Committed by Commit Bot

Re-land: Roll vulkan-validation-layers. (2/2)

https://android.googlesource.com/platform/external/vulkan-validation-layers.git/+log/bcb80d06bbdc09..f47c534fee2f26f This CL re-enables Vulkan with the new build files. In particular, this roll contains a fix for a vs2017 signed/unsigned mismatch warning as error. Re-land fixes build dependencies. BUG=chromium:683729 Change-Id: If2b1bc7250037c33402965eae354ca550ecd36c0 Reviewed-on: https://chromium-review.googlesource.com/466106Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent f546e7df
......@@ -15,8 +15,7 @@ if (is_win) {
angle_enable_d3d9 = true
angle_enable_d3d11 = true
angle_enable_gl = true
# TODO(jmadill): Re-enable Vulkan after roll.
angle_enable_vulkan = false
angle_enable_vulkan = true
import("//build/config/win/visual_studio_version.gni")
} else if (is_linux && use_x11 && !is_chromeos) {
......
......@@ -30,8 +30,7 @@
'angle_enable_d3d9%': 1,
'angle_enable_d3d11%': 1,
'angle_enable_hlsl%': 1,
# TODO(jmadill): Re-enable Vulkan after roll.
'angle_enable_vulkan%': 0,
'angle_enable_vulkan%': 1,
}],
['OS=="linux" and use_x11==1 and chromeos==0',
{
......
......@@ -29,7 +29,6 @@ data_dir = "angledata"
vulkan_gen_json_files_outputs = [
"$root_out_dir/$data_dir/VkLayer_core_validation.json",
"$root_out_dir/$data_dir/VkLayer_image.json",
"$root_out_dir/$data_dir/VkLayer_object_tracker.json",
"$root_out_dir/$data_dir/VkLayer_parameter_validation.json",
"$root_out_dir/$data_dir/VkLayer_swapchain.json",
......@@ -37,30 +36,6 @@ vulkan_gen_json_files_outputs = [
"$root_out_dir/$data_dir/VkLayer_unique_objects.json",
]
# Vulkan loader
# -------------
vulkan_gen_dir = "$target_gen_dir/angle/vulkan"
raw_vulkan_gen_dir = rebase_path(vulkan_gen_dir)
config("vulkan_loader_config") {
include_dirs = rebase_path(vulkan_gypi.vulkan_loader_include_dirs, ".", "src")
defines = [
"LAYERS_SOURCE_PATH=\"$data_dir\"",
"DEFAULT_VK_LAYERS_PATH=\".\"",
"API_NAME=\"Vulkan\"",
]
if (is_win) {
defines += [ "VK_USE_PLATFORM_WIN32_KHR" ]
}
}
config("vulkan_loader_internal_config") {
if (is_clang || !is_win) {
cflags = [ "-Wno-unused-function" ]
}
}
vulkan_undefine_configs = []
if (is_win) {
vulkan_undefine_configs += [
......@@ -69,36 +44,17 @@ if (is_win) {
]
}
static_library("vulkan_loader") {
sources = rebase_path(vulkan_gypi.vulkan_loader_sources, ".", "src")
if (is_win) {
sources += rebase_path(vulkan_gypi.vulkan_loader_win_sources, ".", "src")
if (!is_clang) {
cflags = vulkan_gypi.vulkan_loader_cflags_win
}
}
configs += [ ":vulkan_loader_internal_config" ]
public_configs = [ ":vulkan_loader_config" ]
configs -= vulkan_undefine_configs
}
# Vulkan layer helpers
# --------------------
vulkan_gen_dir = "$target_gen_dir/angle/vulkan"
raw_vulkan_gen_dir = rebase_path(vulkan_gen_dir)
source_set("vulkan_layer_utils") {
sources = rebase_path(vulkan_gypi.vulkan_layer_utils_sources, ".", "src")
public_configs = [
":vulkan_loader_config",
":vulkan_loader_internal_config",
]
configs -= vulkan_undefine_configs
}
# Vulkan helper scripts
# ---------------------
helper_script_and_deps = [
[
"vulkan_gen_dispatch_table_helper",
"vulkan_gen_dispatch_table_helper_h",
"vk_dispatch_table_helper.h",
"dispatch_table_generator.py",
"dispatch_table_helper_generator.py",
],
[
"vulkan_gen_enum_string_helper",
......@@ -106,6 +62,21 @@ helper_script_and_deps = [
"helper_file_generator.py",
],
[
"vulkan_gen_layer_dispatch_table_h",
"vk_layer_dispatch_table.h",
"loader_extension_generator.py",
],
[
"vulkan_gen_loader_extensions_c",
"vk_loader_extensions.c",
"loader_extension_generator.py",
],
[
"vulkan_gen_loader_extensions_h",
"vk_loader_extensions.h",
"loader_extension_generator.py",
],
[
"vulkan_gen_safe_struct_cpp",
"vk_safe_struct.cpp",
"helper_file_generator.py",
......@@ -168,53 +139,63 @@ foreach(script_and_dep, helper_script_and_deps) {
}
}
config("vulkan_layer_config") {
config("vulkan_generate_helper_files_config") {
include_dirs = [
vulkan_gen_dir,
"$vulkan_layers_dir/layers",
"$vulkan_layers_dir/include",
]
}
source_set("vulkan_layer_table") {
configs -= vulkan_undefine_configs
public_deps = [
":vulkan_layer_utils",
]
group("vulkan_generate_helper_files") {
public_deps = []
public_configs = [ ":vulkan_generate_helper_files_config" ]
foreach(script_and_dep, helper_script_and_deps) {
target_name = script_and_dep[0]
public_deps += [ ":$target_name" ]
}
public_configs = [ ":vulkan_layer_config" ]
sources = [
"$target_gen_dir/angle/vulkan/vk_dispatch_table_helper.h",
"$target_gen_dir/angle/vulkan/vk_enum_string_helper.h",
"$vulkan_layers_dir/layers/vk_layer_table.cpp",
"$vulkan_layers_dir/layers/vk_layer_table.h",
]
}
layer_names = [
"core_validation",
"image",
"object_tracker",
"swapchain",
"threading",
"unique_objects",
"parameter_validation",
]
# Vulkan loader
# -------------
action("vulkan_gen_json_files") {
script = "$third_party_dir/angle/scripts/generate_vulkan_layers_json.py"
sources =
rebase_path(vulkan_gypi.vulkan_gen_json_files_sources_win, ".", "src")
config("vulkan_loader_config") {
include_dirs = rebase_path(vulkan_gypi.vulkan_loader_include_dirs, ".", "src")
include_dirs += [ vulkan_gen_dir ]
defines = [
"LAYERS_SOURCE_PATH=\"$data_dir\"",
"DEFAULT_VK_LAYERS_PATH=\".\"",
"API_NAME=\"Vulkan\"",
]
if (is_win) {
defines += [
"VK_USE_PLATFORM_WIN32_KHR",
"VK_USE_PLATFORM_WIN32_KHX",
]
cflags = [ "/wd4201" ]
}
}
# The layer JSON files are part of the necessary data deps.
outputs = vulkan_gen_json_files_outputs
data = vulkan_gen_json_files_outputs
args = [
"$raw_vulkan_layers_dir/layers/windows",
rebase_path("$root_out_dir/$data_dir"),
config("vulkan_loader_internal_config") {
defines = [ "VULKAN_NON_CMAKE_BUILD" ]
if (is_clang || !is_win) {
cflags = [ "-Wno-unused-function" ]
}
}
static_library("vulkan_loader") {
sources = rebase_path(vulkan_gypi.vulkan_loader_sources, ".", "src")
if (is_win) {
sources += rebase_path(vulkan_gypi.vulkan_loader_win_sources, ".", "src")
if (!is_clang) {
cflags = vulkan_gypi.vulkan_loader_cflags_win
}
}
deps = [
":vulkan_generate_helper_files",
]
configs += [ ":vulkan_loader_internal_config" ]
public_configs = [ ":vulkan_loader_config" ]
configs -= vulkan_undefine_configs
}
# SPIRV-tools
......@@ -350,6 +331,83 @@ static_library("glslang") {
# The validation layers
# ---------------------
config("vulkan_layer_config") {
include_dirs = [ "$vulkan_layers_dir/layers" ]
}
source_set("vulkan_layer_table") {
configs -= vulkan_undefine_configs
public_deps = [
":vulkan_generate_helper_files",
]
public_configs = [ ":vulkan_layer_config" ]
sources = [
"$target_gen_dir/angle/vulkan/vk_dispatch_table_helper.h",
"$target_gen_dir/angle/vulkan/vk_enum_string_helper.h",
"$vulkan_layers_dir/layers/vk_layer_table.cpp",
"$vulkan_layers_dir/layers/vk_layer_table.h",
]
}
layers = [
[
"core_validation",
vulkan_gypi.VkLayer_core_validation_sources,
":vulkan_core_validation_glslang",
],
[
"object_tracker",
vulkan_gypi.VkLayer_object_tracker_sources,
"",
],
[
"unique_objects",
vulkan_gypi.VkLayer_unique_objects_sources,
":vulkan_gen_unique_objects_wrappers_helper",
],
[
"parameter_validation",
vulkan_gypi.VkLayer_parameter_validation_sources,
":vulkan_gen_parameter_validation_helper",
],
[
"swapchain",
vulkan_gypi.VkLayer_swapchain_sources,
"",
],
[
"threading",
vulkan_gypi.VkLayer_threading_sources,
":vulkan_gen_thread_check_helper",
],
]
action("vulkan_gen_json_files") {
script = "$third_party_dir/angle/scripts/generate_vulkan_layers_json.py"
sources =
rebase_path(vulkan_gypi.vulkan_gen_json_files_sources_win, ".", "src")
# The layer JSON files are part of the necessary data deps.
outputs = vulkan_gen_json_files_outputs
data = vulkan_gen_json_files_outputs
args = [
"$raw_vulkan_layers_dir/layers/windows",
rebase_path("$root_out_dir/$data_dir"),
]
}
source_set("vulkan_layer_utils") {
sources = rebase_path(vulkan_gypi.vulkan_layer_utils_sources, ".", "src")
public_configs = [
":vulkan_loader_config",
":vulkan_loader_internal_config",
]
public_deps = [
":vulkan_generate_helper_files",
]
configs -= vulkan_undefine_configs
}
config("vulkan_core_validation_config") {
include_dirs = [ glslang_dir ]
}
......@@ -361,47 +419,20 @@ source_set("vulkan_core_validation_glslang") {
public_configs = [ ":vulkan_core_validation_config" ]
}
layer_indexes = [
0,
1,
2,
3,
4,
5,
6,
]
layer_sources = [
vulkan_gypi.VkLayer_core_validation_sources,
vulkan_gypi.VkLayer_image_sources,
vulkan_gypi.VkLayer_swapchain_sources,
vulkan_gypi.VkLayer_object_tracker_sources,
vulkan_gypi.VkLayer_unique_objects_sources,
vulkan_gypi.VkLayer_threading_sources,
vulkan_gypi.VkLayer_parameter_validation_sources,
]
layer_additional_deps = [
[ ":vulkan_core_validation_glslang" ],
[],
[],
[],
[ ":vulkan_gen_unique_objects_wrappers_helper" ],
[ ":vulkan_gen_thread_check_helper" ],
[ ":vulkan_gen_parameter_validation_helper" ],
]
foreach(index, layer_indexes) {
layer = layer_names[index]
shared_library("VkLayer_$layer") {
foreach(layer_info, layers) {
name = layer_info[0]
shared_library("VkLayer_$name") {
configs -= vulkan_undefine_configs
deps = [
":vulkan_layer_table",
":vulkan_layer_utils",
]
deps += layer_additional_deps[index]
sources = rebase_path(layer_sources[index], ".", "src")
if (layer_info[2] != "") {
deps += [ layer_info[2] ]
}
sources = rebase_path(layer_info[1], ".", "src")
if (is_win) {
sources += [ "$vulkan_layers_dir/layers/VKLayer_$layer.def" ]
sources += [ "$vulkan_layers_dir/layers/VKLayer_$name.def" ]
}
}
}
......
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