diff options
-rw-r--r-- | DEPS | 14 | ||||
-rw-r--r-- | android/angle_apk.gni | 20 | ||||
-rwxr-xr-x | scripts/remove_file_if_exists.py | 25 | ||||
-rwxr-xr-x | scripts/remove_files.py | 31 | ||||
-rw-r--r-- | scripts/run_code_generation_hashes.json | 2 | ||||
-rw-r--r-- | src/libANGLE/renderer/vulkan/RendererVk.cpp | 2 | ||||
-rw-r--r-- | third_party/vulkan-validation-layers/BUILD.gn | 244 |
7 files changed, 205 insertions, 133 deletions
@@ -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] } } |