aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--DEPS14
-rw-r--r--android/angle_apk.gni20
-rwxr-xr-xscripts/remove_file_if_exists.py25
-rwxr-xr-xscripts/remove_files.py31
-rw-r--r--scripts/run_code_generation_hashes.json2
-rw-r--r--src/libANGLE/renderer/vulkan/RendererVk.cpp2
-rw-r--r--third_party/vulkan-validation-layers/BUILD.gn244
7 files changed, 205 insertions, 133 deletions
diff --git a/DEPS b/DEPS
index eb8ac5f22b..edeec8b321 100644
--- a/DEPS
+++ b/DEPS
@@ -12,25 +12,25 @@ vars = {
'deqp_revision': '66a49e0a43f7af654ee1de8a3b1bcaf6c0d14aa4',
# Current revision of glslang, the Khronos SPIRV compiler.
- 'glslang_revision': 'de3b8e3bf3893a40a1d9c3b0ed4de750e436e30f',
+ 'glslang_revision': 'f6e7c4d2de0d59724ea07739df70c466d169a2cd',
# Current revision fo the SPIRV-Headers Vulkan support library.
- 'spirv_headers_revision': '79b6681aadcb53c27d1052e5f8a0e82a981dbf2f',
+ 'spirv_headers_revision': '8bea0a266ac9b718aa0818d9e3a47c0b77c2cb23',
# Current revision of SPIRV-Tools for Vulkan.
- 'spirv_tools_revision': 'd14db341b834cfb3c574a258c331b3a6b1c2cbc5',
+ 'spirv_tools_revision': 'e2279da7148d19bd21c6d47ffc96ee4176f43dba',
# Current revision of Khronos Vulkan-Headers.
- 'vulkan_headers_revision': 'b65941cc4b2b43b74de00534d110b581c52c394b',
+ 'vulkan_headers_revision': 'c200cb25db0f47364d3318d92c1d8e9dfff2fef1',
# Current revision of Khronos Vulkan-Loader.
- 'vulkan_loader_revision': '2aa6dcc10189f7700824bc5e21120beeff013c3a',
+ 'vulkan_loader_revision': 'e1eafa18e17d00374253bcd37d015befa89fcc43',
# Current revision of Khronos Vulkan-Tools.
- 'vulkan_tools_revision': '2e8d601de618eddf2bab8597fd140b2824a060b2',
+ 'vulkan_tools_revision': '91b17fd866b2e9cfb875bf516b05536d059416b1',
# Current revision of Khronos Vulkan-ValidationLayers.
- 'vulkan_validation_revision': '0fa2823fa693cc22afaa6e6c6d34aadb97104a2d',
+ 'vulkan_validation_revision': '4eee269ae976567ef78db9c9feaafc3364578c87',
}
deps = {
diff --git a/android/angle_apk.gni b/android/angle_apk.gni
index ee8b7c0afb..fe901f0f66 100644
--- a/android/angle_apk.gni
+++ b/android/angle_apk.gni
@@ -7,9 +7,9 @@ import("//third_party/angle/gni/angle.gni")
vulkan_validation_layers = [
"VkLayer_core_validation",
- "VkLayer_object_tracker",
- "VkLayer_parameter_validation",
- "VkLayer_threading",
+ "VkLayer_object_lifetimes",
+ "VkLayer_stateless_validation",
+ "VkLayer_thread_safety",
"VkLayer_unique_objects",
]
@@ -77,9 +77,10 @@ template("angle_apk") {
}
if (angle_enable_vulkan_validation_layers) {
foreach(_layer, vulkan_validation_layers) {
- secondary_abi_shared_libraries +=
- [ "${angle_root}/third_party/vulkan-validation-layers:${_layer}" +
- "($android_secondary_abi_toolchain)" ]
+ secondary_abi_shared_libraries += [
+ "${angle_root}/third_party/vulkan-validation-layers:${_layer}" +
+ "($android_secondary_abi_toolchain)",
+ ]
}
}
} else {
@@ -88,8 +89,7 @@ template("angle_apk") {
"root_out_dir")
secondary_abi_loadable_modules = []
foreach(_library, angle_libraries) {
- secondary_abi_loadable_modules +=
- [ "${_secondary_out_dir}/lib.compressed/lib${_library}${angle_libs_suffix}.so" ]
+ secondary_abi_loadable_modules += [ "${_secondary_out_dir}/lib.compressed/lib${_library}${angle_libs_suffix}.so" ]
}
if (angle_enable_vulkan_validation_layers) {
foreach(_layer, vulkan_validation_layers) {
@@ -115,9 +115,7 @@ template("angle_apk") {
} else {
loadable_modules = []
foreach(_library, angle_libraries) {
- loadable_modules += [
- "${root_out_dir}/lib.compressed/lib${_library}${angle_libs_suffix}.so",
- ]
+ loadable_modules += [ "${root_out_dir}/lib.compressed/lib${_library}${angle_libs_suffix}.so" ]
}
if (angle_enable_vulkan_validation_layers) {
foreach(_layer, vulkan_validation_layers) {
diff --git a/scripts/remove_file_if_exists.py b/scripts/remove_file_if_exists.py
deleted file mode 100755
index 976470b909..0000000000
--- a/scripts/remove_file_if_exists.py
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/python2
-#
-# Copyright 2017 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.
-#
-# remove_file_if_exists.py:
-# This special action is needed to remove generated headers.
-# Otherwise ANGLE will pick up the old file(s) and the build will fail.
-#
-
-import sys
-import os
-
-if len(sys.argv) < 3:
- print("Usage: " + sys.argv[0] + " <remove_file> <stamp_file>")
-
-remove_file = sys.argv[1]
-if os.path.isfile(remove_file):
- os.remove(remove_file)
-
-# touch a dummy file to keep a timestamp
-with open(sys.argv[2], "w") as f:
- f.write("blah")
- f.close()
diff --git a/scripts/remove_files.py b/scripts/remove_files.py
new file mode 100755
index 0000000000..f52a1a816f
--- /dev/null
+++ b/scripts/remove_files.py
@@ -0,0 +1,31 @@
+#!/usr/bin/python2
+#
+# 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.
+#
+# remove_files.py:
+# This special action is used to cleanup old files from the build directory.
+# Otherwise ANGLE will pick up the old file(s), causing build or runtime errors.
+#
+
+import glob
+import os
+import sys
+
+if len(sys.argv) < 3:
+ print("Usage: " + sys.argv[0] + " <stamp_file> <remove_patterns>")
+
+stamp_file = sys.argv[1]
+
+for i in range(2, len(sys.argv)):
+ remove_pattern = sys.argv[i]
+ remove_files = glob.glob(remove_pattern)
+ for f in remove_files:
+ if os.path.isfile(f):
+ os.remove(f)
+
+# touch a dummy file to keep a timestamp
+with open(stamp_file, "w") as f:
+ f.write("blah")
+ f.close()
diff --git a/scripts/run_code_generation_hashes.json b/scripts/run_code_generation_hashes.json
index 53d1595e87..d2fcd4bcea 100644
--- a/scripts/run_code_generation_hashes.json
+++ b/scripts/run_code_generation_hashes.json
@@ -110,7 +110,7 @@
"Vulkan mandatory format support table:src/libANGLE/renderer/vulkan/vk_mandatory_format_support_data.json":
"fa2bd54c1bb0ab2cf1d386061a4bc5c5",
"Vulkan mandatory format support table:third_party/vulkan-headers/src/registry/vk.xml":
- "8d46c04ce50d9866c934a6c4d175ab71",
+ "f5c8c9b8e521644ded34d44b1016c25e",
"packed enum:src/common/gen_packed_gl_enums.py":
"a9b1c38b4e4d8a1038e743be323f1a51",
"packed enum:src/common/packed_egl_enums.json":
diff --git a/src/libANGLE/renderer/vulkan/RendererVk.cpp b/src/libANGLE/renderer/vulkan/RendererVk.cpp
index eab2c6df03..47d2775326 100644
--- a/src/libANGLE/renderer/vulkan/RendererVk.cpp
+++ b/src/libANGLE/renderer/vulkan/RendererVk.cpp
@@ -212,7 +212,7 @@ const char *GetVkObjectTypeName(VkObjectType type)
return "Debug Utils Messenger";
case VK_OBJECT_TYPE_VALIDATION_CACHE_EXT:
return "Validation Cache";
- case VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NVX:
+ case VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV:
return "Acceleration Structure";
default:
return "<Unrecognized>";
diff --git a/third_party/vulkan-validation-layers/BUILD.gn b/third_party/vulkan-validation-layers/BUILD.gn
index e77a9fab1f..aa0863098d 100644
--- a/third_party/vulkan-validation-layers/BUILD.gn
+++ b/third_party/vulkan-validation-layers/BUILD.gn
@@ -22,6 +22,9 @@ if (is_win) {
]
}
+raw_root_out_dir = rebase_path(root_out_dir, root_build_dir)
+raw_data_dir = rebase_path("$root_out_dir/$data_dir", root_build_dir)
+
raw_vulkan_headers_dir =
rebase_path("$angle_root/third_party/vulkan-headers/src", root_build_dir)
@@ -50,7 +53,7 @@ helper_script_and_deps = [
[
"vulkan_gen_layer_dispatch_table_h",
"vk_layer_dispatch_table.h",
- "loader_extension_generator.py",
+ "layer_dispatch_table_generator.py",
],
[
"vulkan_gen_object_types_h",
@@ -68,9 +71,14 @@ helper_script_and_deps = [
"helper_file_generator.py",
],
[
- "vulkan_gen_thread_check_helper",
- "thread_check.h",
- "threading_generator.py",
+ "vulkan_gen_thread_safety_h",
+ "thread_safety.h",
+ "thread_safety_generator.py",
+ ],
+ [
+ "vulkan_gen_thread_safety_cpp",
+ "thread_safety.cpp",
+ "thread_safety_generator.py",
],
[
"vulkan_gen_typemap_helper",
@@ -78,6 +86,11 @@ helper_script_and_deps = [
"helper_file_generator.py",
],
[
+ "vulkan_gen_object_tracker_h",
+ "object_tracker.h",
+ "object_tracker_generator.py",
+ ],
+ [
"vulkan_gen_object_tracker_cpp",
"object_tracker.cpp",
"object_tracker_generator.py",
@@ -88,9 +101,29 @@ helper_script_and_deps = [
"parameter_validation_generator.py",
],
[
- "vulkan_gen_unique_objects_wrappers_helper",
- "unique_objects_wrappers.h",
- "unique_objects_generator.py",
+ "vulkan_gen_parameter_validation_h",
+ "parameter_validation.h",
+ "parameter_validation_generator.py",
+ ],
+ [
+ "vulkan_gen_layer_chassis_h",
+ "chassis.h",
+ "layer_chassis_generator.py",
+ ],
+ [
+ "vulkan_gen_layer_chassis_cpp",
+ "chassis.cpp",
+ "layer_chassis_generator.py",
+ ],
+ [
+ "vulkan_gen_layer_chassis_dispatch_h",
+ "layer_chassis_dispatch.h",
+ "layer_chassis_dispatch_generator.py",
+ ],
+ [
+ "vulkan_gen_layer_chassis_dispatch_cpp",
+ "layer_chassis_dispatch.cpp",
+ "layer_chassis_dispatch_generator.py",
],
]
@@ -98,22 +131,58 @@ helper_script_and_deps = [
# so that all dependencies are together
copy("python_gen_deps") {
sources = vulkan_registry_script_files + [
- "src/layers/vk_validation_error_messages.h",
"src/scripts/common_codegen.py",
"src/scripts/dispatch_table_helper_generator.py",
"src/scripts/helper_file_generator.py",
- "src/scripts/loader_extension_generator.py",
+ "src/scripts/layer_dispatch_table_generator.py",
"src/scripts/lvl_genvk.py",
"src/scripts/object_tracker_generator.py",
"src/scripts/parameter_validation_generator.py",
- "src/scripts/threading_generator.py",
- "src/scripts/unique_objects_generator.py",
+ "src/scripts/thread_safety_generator.py",
+ "src/scripts/layer_chassis_generator.py",
+ "src/scripts/layer_chassis_dispatch_generator.py",
]
outputs = [
"$vulkan_gen_dir/{{source_file_part}}",
]
}
+# This special action is needed to remove previously-generated header files.
+# Otherwise the cpp files can pick up the old header files and cause build
+# failures.
+action("vulkan_clean_gen_headers") {
+ script = "$angle_root/scripts/remove_files.py"
+ deps = [
+ ":python_gen_deps",
+ ]
+ outputs = [
+ "$vulkan_gen_dir/vk_validation_error_messages_h_is_removed",
+ ]
+ args = [
+ "$raw_vulkan_gen_dir/vk_validation_error_messages_h_is_removed",
+ "$raw_vulkan_gen_dir/vk_validation_error_messages.h",
+ ]
+}
+
+# This special action is needed to remove old VVL objects that are now renamed.
+action("vulkan_clean_old_validation_layer_objects") {
+ script = "$angle_root/scripts/remove_files.py"
+
+ # inputs is a (random) new file since the vvl roll, used to ensure the cleanup is done only once
+ inputs = [
+ "src/layers/gpu_validation.cpp",
+ ]
+ outputs = [
+ "$vulkan_gen_dir/old_vvl_files_are_removed",
+ ]
+ args = [
+ "$raw_vulkan_gen_dir/old_vvl_files_are_removed",
+ "$raw_root_out_dir/libVkLayer*",
+ "$raw_root_out_dir/VkLayer*",
+ "$raw_data_dir/VkLayer*.json",
+ ]
+}
+
foreach(script_and_dep, helper_script_and_deps) {
target_name = script_and_dep[0]
file = script_and_dep[1]
@@ -121,12 +190,14 @@ foreach(script_and_dep, helper_script_and_deps) {
target("action", target_name) {
public_deps = [
":python_gen_deps",
+ ":vulkan_clean_gen_headers",
+ ":vulkan_clean_old_validation_layer_objects",
]
script = "$vulkan_gen_dir/lvl_genvk.py"
inputs = [
"$vulkan_gen_dir/$dep",
"$vulkan_gen_dir/common_codegen.py",
- "$vulkan_gen_dir/vk_validation_error_messages.h",
+ "src/layers/vk_validation_error_messages.h",
]
outputs = [
"$vulkan_gen_dir/$file",
@@ -231,70 +302,99 @@ core_validation_sources = [
"$vulkan_gen_dir/vk_safe_struct.h",
"src/layers/buffer_validation.cpp",
"src/layers/buffer_validation.h",
+ "src/layers/core_dispatch.cpp",
"src/layers/core_validation.cpp",
"src/layers/core_validation.h",
"src/layers/convert_to_renderpass2.cpp",
"src/layers/descriptor_sets.cpp",
"src/layers/descriptor_sets.h",
+ "src/layers/gpu_validation.cpp",
+ "src/layers/gpu_validation.h",
"src/layers/shader_validation.cpp",
"src/layers/shader_validation.h",
"src/layers/xxhash.c",
"src/layers/xxhash.h",
]
-object_tracker_sources = [
+object_lifetimes_sources = [
"$vulkan_gen_dir/object_tracker.cpp",
- "src/layers/object_tracker.h",
+ "$vulkan_gen_dir/object_tracker.h",
"src/layers/object_tracker_utils.cpp",
]
-parameter_validation_sources = [
+stateless_validation_sources = [
"$vulkan_gen_dir/parameter_validation.cpp",
- "src/layers/parameter_validation.h",
+ "$vulkan_gen_dir/parameter_validation.h",
"src/layers/parameter_validation_utils.cpp",
]
-threading_sources = [
- "$vulkan_gen_dir/thread_check.h",
- "src/layers/threading.cpp",
- "src/layers/threading.h",
+thread_safety_sources = [
+ "$vulkan_gen_dir/thread_safety.cpp",
+ "$vulkan_gen_dir/thread_safety.h",
]
-unique_objects_sources = [
- "$vulkan_gen_dir/unique_objects_wrappers.h",
+unique_objects_sources = []
- # This file is manually included in the layer
- # "$vulkan_gen_dir/vk_safe_struct.cpp",
- "$vulkan_gen_dir/vk_safe_struct.h",
- "src/layers/unique_objects.cpp",
- "src/layers/unique_objects.h",
+chassis_sources = [
+ "$vulkan_gen_dir/chassis.cpp",
+ "$vulkan_gen_dir/chassis.h",
+ "$vulkan_gen_dir/layer_chassis_dispatch.cpp",
+ "$vulkan_gen_dir/layer_chassis_dispatch.h",
+]
+
+core_validation_deps = [ ":vulkan_core_validation_glslang" ]
+
+object_lifetimes_deps = [
+ ":vulkan_gen_object_tracker_cpp",
+ ":vulkan_gen_object_tracker_h",
+]
+
+stateless_validation_deps = [ ":vulkan_gen_stateless_validation" ]
+
+thread_safety_deps = [
+ ":vulkan_gen_thread_safety_cpp",
+ ":vulkan_gen_thread_safety_h",
+]
+
+unique_objects_deps = []
+
+chassis_deps = [
+ ":vulkan_gen_layer_chassis_cpp",
+ ":vulkan_gen_layer_chassis_h",
+ ":vulkan_gen_layer_chassis_dispatch_cpp",
+ ":vulkan_gen_layer_chassis_dispatch_h",
]
layers = [
[
"core_validation",
core_validation_sources,
- ":vulkan_core_validation_glslang",
+ core_validation_deps,
+ [],
],
[
- "object_tracker",
- object_tracker_sources,
- ":vulkan_gen_object_tracker",
+ "object_lifetimes",
+ object_lifetimes_sources + chassis_sources,
+ object_lifetimes_deps + chassis_deps,
+ [ "BUILD_OBJECT_TRACKER" ],
],
[
- "parameter_validation",
- parameter_validation_sources,
- ":vulkan_gen_parameter_validation",
+ "stateless_validation",
+ stateless_validation_sources + chassis_sources,
+ stateless_validation_deps + chassis_deps,
+ [ "BUILD_PARAMETER_VALIDATION" ],
],
[
- "threading",
- threading_sources,
- ":vulkan_gen_thread_check_helper",
+ "thread_safety",
+ thread_safety_sources + chassis_sources,
+ thread_safety_deps + chassis_deps,
+ [ "BUILD_THREAD_SAFETY" ],
],
[
"unique_objects",
- unique_objects_sources,
- ":vulkan_gen_unique_objects_wrappers_helper",
+ unique_objects_sources + chassis_sources,
+ unique_objects_deps + chassis_deps,
+ [ "LAYER_CHASSIS_CAN_WRAP_HANDLES" ],
],
]
@@ -303,12 +403,15 @@ if (!is_android) {
action("vulkan_gen_json_files") {
script = "$angle_root/scripts/generate_vulkan_layers_json.py"
+ public_deps = [
+ ":vulkan_clean_old_validation_layer_objects",
+ ]
json_names = [
"VkLayer_core_validation.json",
- "VkLayer_object_tracker.json",
- "VkLayer_parameter_validation.json",
+ "VkLayer_object_lifetimes.json",
+ "VkLayer_stateless_validation.json",
"VkLayer_standard_validation.json",
- "VkLayer_threading.json",
+ "VkLayer_thread_safety.json",
"VkLayer_unique_objects.json",
]
sources = [
@@ -359,63 +462,24 @@ config("vulkan_core_validation_config") {
source_set("vulkan_core_validation_glslang") {
public_deps = [
"${angle_spirv_tools_dir}:spvtools",
+ "${angle_spirv_tools_dir}:spvtools_opt",
"${angle_spirv_tools_dir}:spvtools_val",
]
public_configs = [ ":vulkan_core_validation_config" ]
}
-config("vulkan_parameter_validation_config") {
+config("vulkan_stateless_validation_config") {
if (is_clang) {
cflags_cc = [ "-Wno-unused-const-variable" ]
}
}
-# These special "clean" actions are needed to remove generated headers.
-# Otherwise the cpp files will pick up the old generated files
-# and the build will fail. It's a bit unfortunate but necessary.
-action("vulkan_clean_parameter_gen_header") {
- script = "$angle_root/scripts/remove_file_if_exists.py"
- inputs = parameter_validation_sources
+source_set("vulkan_gen_stateless_validation") {
deps = [
":vulkan_gen_parameter_validation_cpp",
+ ":vulkan_gen_parameter_validation_h",
]
- outputs = [
- "$vulkan_gen_dir/parameter_validation_h_is_removed",
- ]
- args = [
- "$raw_vulkan_gen_dir/parameter_validation.h",
- "$raw_vulkan_gen_dir/parameter_validation_h_is_removed",
- ]
-}
-
-action("vulkan_clean_tracker_gen_header") {
- script = "$angle_root/scripts/remove_file_if_exists.py"
- inputs = object_tracker_sources
- deps = [
- ":vulkan_gen_object_tracker_cpp",
- ]
- outputs = [
- "$vulkan_gen_dir/object_tracker_h_is_removed",
- ]
- args = [
- "$raw_vulkan_gen_dir/object_tracker.h",
- "$raw_vulkan_gen_dir/object_tracker_h_is_removed",
- ]
-}
-
-source_set("vulkan_gen_parameter_validation") {
- deps = [
- ":vulkan_clean_parameter_gen_header",
- ":vulkan_gen_parameter_validation_cpp",
- ]
- public_configs = [ ":vulkan_parameter_validation_config" ]
-}
-
-source_set("vulkan_gen_object_tracker") {
- deps = [
- ":vulkan_clean_tracker_gen_header",
- ":vulkan_gen_object_tracker_cpp",
- ]
+ public_configs = [ ":vulkan_stateless_validation_config" ]
}
foreach(layer_info, layers) {
@@ -429,7 +493,7 @@ foreach(layer_info, layers) {
":vulkan_layer_utils",
]
if (layer_info[2] != "") {
- deps += [ layer_info[2] ]
+ deps += layer_info[2]
}
sources = layer_info[1]
if (is_win) {
@@ -439,9 +503,13 @@ foreach(layer_info, layers) {
ldflags = [ "-Wl,-Bsymbolic,--exclude-libs,ALL" ]
}
if (is_android) {
- libs = [ "log" ]
+ libs = [
+ "log",
+ "nativewindow",
+ ]
configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
}
+ defines = layer_info[3]
}
}