Update ANGLE to 2020-03-27
authordino@apple.com <dino@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 15 May 2020 18:33:07 +0000 (18:33 +0000)
committerdino@apple.com <dino@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 15 May 2020 18:33:07 +0000 (18:33 +0000)
https://bugs.webkit.org/show_bug.cgi?id=209689

Patch by Kenneth Russell <kbr@chromium.org> on 2020-04-06
Reviewed by Darin Adler.

Use update-angle.sh script by James Darpinian to roll ANGLE to
commit b387ce9389ede6a4ed3b831ab1b8187927fa295f in
https://chromium.googlesource.com/angle/angle .

changes.diff has been auto-updated with Apple's diffs relative to
upstream. No additional manual changes are made in this roll.
Long autogenerated file list omitted.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@261750 268f45cc-cd09-0410-ab3c-d52691b4dbfc

718 files changed:
Source/ThirdParty/ANGLE/.gitignore
Source/ThirdParty/ANGLE/ANGLE.plist
Source/ThirdParty/ANGLE/ANGLE.xcodeproj/project.pbxproj
Source/ThirdParty/ANGLE/AUTHORS
Source/ThirdParty/ANGLE/BUILD.gn
Source/ThirdParty/ANGLE/CONTRIBUTORS
Source/ThirdParty/ANGLE/ChangeLog
Source/ThirdParty/ANGLE/Compiler.cmake
Source/ThirdParty/ANGLE/DEPS
Source/ThirdParty/ANGLE/GLESv2.cmake
Source/ThirdParty/ANGLE/OWNERS
Source/ThirdParty/ANGLE/PRESUBMIT.py
Source/ThirdParty/ANGLE/README.md
Source/ThirdParty/ANGLE/android/angle_apk.gni
Source/ThirdParty/ANGLE/changes.diff
Source/ThirdParty/ANGLE/doc/CaptureAndReplay.md
Source/ThirdParty/ANGLE/doc/ContributingCode.md
Source/ThirdParty/ANGLE/doc/DevSetup.md
Source/ThirdParty/ANGLE/doc/DevSetupAndroid.md [new file with mode: 0644]
Source/ThirdParty/ANGLE/doc/dEQP.md
Source/ThirdParty/ANGLE/extensions/ANGLE_external_objects_fuchsia.txt [new file with mode: 0644]
Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_iosurface_client_buffer.txt
Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_platform_angle_device_type_egl.txt [new file with mode: 0644]
Source/ThirdParty/ANGLE/include/EGL/eglext_angle.h
Source/ThirdParty/ANGLE/include/GLES2/gl2ext.h
Source/ThirdParty/ANGLE/include/GLES2/gl2ext_angle.h
Source/ThirdParty/ANGLE/include/GLES2/gl2ext_explicit_context_autogen.inc
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h
Source/ThirdParty/ANGLE/include/platform/Feature.h
Source/ThirdParty/ANGLE/include/platform/FeaturesGL.h
Source/ThirdParty/ANGLE/include/platform/FeaturesVk.h
Source/ThirdParty/ANGLE/include/platform/Platform.h
Source/ThirdParty/ANGLE/include/vulkan/vulkan_fuchsia_ext.h [new file with mode: 0644]
Source/ThirdParty/ANGLE/infra/ANGLEWrangling.md
Source/ThirdParty/ANGLE/infra/README.md
Source/ThirdParty/ANGLE/infra/config/global/cr-buildbucket.cfg
Source/ThirdParty/ANGLE/samples/BUILD.gn
Source/ThirdParty/ANGLE/samples/capture_replay/CaptureReplay.cpp
Source/ThirdParty/ANGLE/samples/multiple_draw_buffers/MultipleDrawBuffers.cpp
Source/ThirdParty/ANGLE/scripts/code_generation_hashes/ANGLE_format.json
Source/ThirdParty/ANGLE/scripts/code_generation_hashes/ANGLE_load_functions_table.json
Source/ThirdParty/ANGLE/scripts/code_generation_hashes/D3D11_format.json
Source/ThirdParty/ANGLE/scripts/code_generation_hashes/DXGI_format.json
Source/ThirdParty/ANGLE/scripts/code_generation_hashes/DXGI_format_support.json
Source/ThirdParty/ANGLE/scripts/code_generation_hashes/GL_CTS_(dEQP)_build_files.json
Source/ThirdParty/ANGLE/scripts/code_generation_hashes/GL_EGL_WGL_loader.json
Source/ThirdParty/ANGLE/scripts/code_generation_hashes/GL_EGL_entry_points.json
Source/ThirdParty/ANGLE/scripts/code_generation_hashes/GL_format_map.json
Source/ThirdParty/ANGLE/scripts/code_generation_hashes/GLenum_value_to_string_map.json
Source/ThirdParty/ANGLE/scripts/code_generation_hashes/Metal_format_table.json
Source/ThirdParty/ANGLE/scripts/code_generation_hashes/OpenGL_dispatch_table.json
Source/ThirdParty/ANGLE/scripts/code_generation_hashes/Vulkan_format.json
Source/ThirdParty/ANGLE/scripts/code_generation_hashes/Vulkan_internal_shader_programs.json
Source/ThirdParty/ANGLE/scripts/code_generation_hashes/Vulkan_mandatory_format_support_table.json
Source/ThirdParty/ANGLE/scripts/code_generation_hashes/overlay_widgets.json
Source/ThirdParty/ANGLE/scripts/code_generation_hashes/packed_enum.json
Source/ThirdParty/ANGLE/scripts/code_generation_hashes/proc_table.json
Source/ThirdParty/ANGLE/scripts/entry_point_packed_gl_enums.json
Source/ThirdParty/ANGLE/scripts/export_targets.py
Source/ThirdParty/ANGLE/scripts/generate_android_bp.py [new file with mode: 0644]
Source/ThirdParty/ANGLE/scripts/generate_entry_points.py
Source/ThirdParty/ANGLE/scripts/generate_loader.py
Source/ThirdParty/ANGLE/scripts/gl.xml
Source/ThirdParty/ANGLE/scripts/gl_angle_ext.xml
Source/ThirdParty/ANGLE/scripts/registry_xml.py
Source/ThirdParty/ANGLE/scripts/roll_aosp.sh [new file with mode: 0755]
Source/ThirdParty/ANGLE/scripts/trigger.py
Source/ThirdParty/ANGLE/src/android_system_settings/assets/a4a_rules.json [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/drawable/icon.png [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/layout/fragment.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-af/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-am/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-ar/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-as/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-az/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-b+sr+Latn/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-be/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-bg/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-bn/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-bs/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-ca/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-cs/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-da/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-de/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-el/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-en-rAU/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-en-rCA/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-en-rGB/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-en-rIN/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-en-rXC/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-es-rUS/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-es/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-et/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-eu/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-fa/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-fi/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-fr-rCA/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-fr/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-gl/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-gu/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-hi/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-hr/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-hu/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-hy/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-in/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-is/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-it/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-iw/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-ja/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-ka/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-kk/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-km/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-kn/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-ko/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-ky/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-lo/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-lt/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-lv/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-mk/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-ml/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-mn/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-mr/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-ms/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-my/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-nb/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-ne/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-nl/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-or/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-pa/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-pl/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-pt-rPT/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-pt/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-ro/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-ru/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-si/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-sk/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-sl/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-sq/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-sr/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-sv/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-sw/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-ta/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-te/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-th/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-tl/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-tr/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-uk/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-ur/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-uz/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-v17/styles.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-vi/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-zh-rCN/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-zh-rHK/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-zh-rTW/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values-zu/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values/dimens.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values/drivers.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values/global_settings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values/intents.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values/preference_keys.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/values/strings.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/res/xml/main.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/src/com/android/angle/AndroidManifest.xml [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/src/com/android/angle/MainActivity.java [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/src/com/android/angle/common/GlobalSettings.java [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/src/com/android/angle/common/MainFragment.java [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/src/com/android/angle/common/Receiver.java [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/android_system_settings/src/com/android/angle/common/SearchProvider.java [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/commit.h [deleted file]
Source/ThirdParty/ANGLE/src/commit_id.py
Source/ThirdParty/ANGLE/src/common/PackedEnums.h
Source/ThirdParty/ANGLE/src/common/PackedGLEnums_autogen.cpp
Source/ThirdParty/ANGLE/src/common/PackedGLEnums_autogen.h
Source/ThirdParty/ANGLE/src/common/android_util.cpp
Source/ThirdParty/ANGLE/src/common/android_util.h
Source/ThirdParty/ANGLE/src/common/bitset_utils.h
Source/ThirdParty/ANGLE/src/common/bitset_utils_unittest.cpp
Source/ThirdParty/ANGLE/src/common/debug.cpp
Source/ThirdParty/ANGLE/src/common/fuchsia_egl/BUILD.gn
Source/ThirdParty/ANGLE/src/common/mathutil.cpp
Source/ThirdParty/ANGLE/src/common/mathutil.h
Source/ThirdParty/ANGLE/src/common/mathutil_unittest.cpp
Source/ThirdParty/ANGLE/src/common/matrix_utils.h
Source/ThirdParty/ANGLE/src/common/packed_gl_enums.json
Source/ThirdParty/ANGLE/src/common/string_utils.cpp
Source/ThirdParty/ANGLE/src/common/string_utils.h
Source/ThirdParty/ANGLE/src/common/system_utils.cpp
Source/ThirdParty/ANGLE/src/common/system_utils.h
Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp
Source/ThirdParty/ANGLE/src/common/system_utils_unittest.cpp
Source/ThirdParty/ANGLE/src/common/system_utils_win.cpp
Source/ThirdParty/ANGLE/src/common/tls.cpp
Source/ThirdParty/ANGLE/src/common/utilities.cpp
Source/ThirdParty/ANGLE/src/common/utilities.h
Source/ThirdParty/ANGLE/src/compiler.gni
Source/ThirdParty/ANGLE/src/compiler/translator/BaseTypes.h
Source/ThirdParty/ANGLE/src/compiler/translator/Compiler.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/Compiler.h
Source/ThirdParty/ANGLE/src/compiler/translator/ConstantUnion.h
Source/ThirdParty/ANGLE/src/compiler/translator/ExtensionBehavior.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/ExtensionBehavior.h
Source/ThirdParty/ANGLE/src/compiler/translator/Initialize.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/OutputVulkanGLSL.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/OutputVulkanGLSL.h
Source/ThirdParty/ANGLE/src/compiler/translator/OutputVulkanGLSLForMetal.mm
Source/ThirdParty/ANGLE/src/compiler/translator/ParseContext.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/ParseContext.h
Source/ThirdParty/ANGLE/src/compiler/translator/PoolAlloc.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/ShaderLang.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorESSL.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorGLSL.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorHLSL.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorMetal.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorVulkan.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/ValidateGlobalInitializer.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/ValidateGlobalInitializer.h
Source/ThirdParty/ANGLE/src/compiler/translator/tree_ops/RemoveAtomicCounterBuiltins.cpp [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/compiler/translator/tree_ops/RemoveAtomicCounterBuiltins.h [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/compiler/translator/tree_ops/RewriteAtomicCounters.cpp
Source/ThirdParty/ANGLE/src/feature_support_util/OWNERS [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/gpu_info_util/SystemInfo.cpp
Source/ThirdParty/ANGLE/src/gpu_info_util/SystemInfo.h
Source/ThirdParty/ANGLE/src/id/commit.h
Source/ThirdParty/ANGLE/src/libANGLE/BinaryStream.h
Source/ThirdParty/ANGLE/src/libANGLE/Caps.cpp
Source/ThirdParty/ANGLE/src/libANGLE/Caps.h
Source/ThirdParty/ANGLE/src/libANGLE/Compiler.cpp
Source/ThirdParty/ANGLE/src/libANGLE/Config.cpp
Source/ThirdParty/ANGLE/src/libANGLE/Config.h
Source/ThirdParty/ANGLE/src/libANGLE/Context.cpp
Source/ThirdParty/ANGLE/src/libANGLE/Context.h
Source/ThirdParty/ANGLE/src/libANGLE/Context_gl.cpp
Source/ThirdParty/ANGLE/src/libANGLE/Context_gl_1_0_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/Context_gl_4_0_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/Context_gl_4_1_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/Context_gl_4_5_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/Context_gles_1_0.cpp
Source/ThirdParty/ANGLE/src/libANGLE/Context_gles_2_0_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/Context_gles_3_0_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/Context_gles_3_1_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/Context_gles_3_2_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/Context_gles_ext_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp
Source/ThirdParty/ANGLE/src/libANGLE/Display.h
Source/ThirdParty/ANGLE/src/libANGLE/ErrorStrings.h
Source/ThirdParty/ANGLE/src/libANGLE/FrameCapture.cpp
Source/ThirdParty/ANGLE/src/libANGLE/FrameCapture.h
Source/ThirdParty/ANGLE/src/libANGLE/Framebuffer.cpp
Source/ThirdParty/ANGLE/src/libANGLE/Framebuffer.h
Source/ThirdParty/ANGLE/src/libANGLE/FramebufferAttachment.cpp
Source/ThirdParty/ANGLE/src/libANGLE/FramebufferAttachment.h
Source/ThirdParty/ANGLE/src/libANGLE/GLES1Renderer.cpp
Source/ThirdParty/ANGLE/src/libANGLE/GLES1Renderer.h
Source/ThirdParty/ANGLE/src/libANGLE/GLES1State.cpp
Source/ThirdParty/ANGLE/src/libANGLE/GLES1State.h
Source/ThirdParty/ANGLE/src/libANGLE/HandleRangeAllocator.cpp [deleted file]
Source/ThirdParty/ANGLE/src/libANGLE/HandleRangeAllocator.h [deleted file]
Source/ThirdParty/ANGLE/src/libANGLE/HandleRangeAllocator_unittest.cpp [deleted file]
Source/ThirdParty/ANGLE/src/libANGLE/InfoLog.h [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/libANGLE/MemoryObject.cpp
Source/ThirdParty/ANGLE/src/libANGLE/MemoryObject.h
Source/ThirdParty/ANGLE/src/libANGLE/MemoryProgramCache.cpp
Source/ThirdParty/ANGLE/src/libANGLE/OWNERS [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/libANGLE/Observer.h
Source/ThirdParty/ANGLE/src/libANGLE/Overlay.cpp
Source/ThirdParty/ANGLE/src/libANGLE/Overlay.h
Source/ThirdParty/ANGLE/src/libANGLE/OverlayWidgets.cpp
Source/ThirdParty/ANGLE/src/libANGLE/OverlayWidgets.h
Source/ThirdParty/ANGLE/src/libANGLE/Overlay_autogen.cpp
Source/ThirdParty/ANGLE/src/libANGLE/Path.cpp [deleted file]
Source/ThirdParty/ANGLE/src/libANGLE/Path.h [deleted file]
Source/ThirdParty/ANGLE/src/libANGLE/Program.cpp
Source/ThirdParty/ANGLE/src/libANGLE/Program.h
Source/ThirdParty/ANGLE/src/libANGLE/ProgramExecutable.cpp [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/libANGLE/ProgramExecutable.h [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/libANGLE/ProgramPipeline.cpp
Source/ThirdParty/ANGLE/src/libANGLE/ProgramPipeline.h
Source/ThirdParty/ANGLE/src/libANGLE/ResourceManager.cpp
Source/ThirdParty/ANGLE/src/libANGLE/ResourceManager.h
Source/ThirdParty/ANGLE/src/libANGLE/ResourceMap.h
Source/ThirdParty/ANGLE/src/libANGLE/Semaphore.cpp
Source/ThirdParty/ANGLE/src/libANGLE/Semaphore.h
Source/ThirdParty/ANGLE/src/libANGLE/State.cpp
Source/ThirdParty/ANGLE/src/libANGLE/State.h
Source/ThirdParty/ANGLE/src/libANGLE/Texture.cpp
Source/ThirdParty/ANGLE/src/libANGLE/Texture.h
Source/ThirdParty/ANGLE/src/libANGLE/TransformFeedback.cpp
Source/ThirdParty/ANGLE/src/libANGLE/TransformFeedback.h
Source/ThirdParty/ANGLE/src/libANGLE/VaryingPacking.cpp
Source/ThirdParty/ANGLE/src/libANGLE/VaryingPacking.h
Source/ThirdParty/ANGLE/src/libANGLE/VaryingPacking_unittest.cpp
Source/ThirdParty/ANGLE/src/libANGLE/angletypes.cpp
Source/ThirdParty/ANGLE/src/libANGLE/angletypes.h
Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_2_0_autogen.cpp
Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_2_0_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_2_0_params.cpp
Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_3_0_autogen.cpp
Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_3_0_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_3_0_params.cpp
Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_3_1_autogen.cpp
Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_3_1_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_3_1_params.cpp
Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_3_2_autogen.cpp
Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_3_2_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_3_2_params.cpp
Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_ext_autogen.cpp
Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_ext_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_ext_params.cpp
Source/ThirdParty/ANGLE/src/libANGLE/entry_points_enum_autogen.cpp
Source/ThirdParty/ANGLE/src/libANGLE/entry_points_enum_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/format_map_autogen.cpp
Source/ThirdParty/ANGLE/src/libANGLE/format_map_data.json
Source/ThirdParty/ANGLE/src/libANGLE/formatutils.cpp
Source/ThirdParty/ANGLE/src/libANGLE/formatutils.h
Source/ThirdParty/ANGLE/src/libANGLE/frame_capture_replay_autogen.cpp
Source/ThirdParty/ANGLE/src/libANGLE/frame_capture_utils_autogen.cpp
Source/ThirdParty/ANGLE/src/libANGLE/frame_capture_utils_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/gl_enum_utils_autogen.cpp
Source/ThirdParty/ANGLE/src/libANGLE/overlay_widgets.json
Source/ThirdParty/ANGLE/src/libANGLE/queryconversions.cpp
Source/ThirdParty/ANGLE/src/libANGLE/queryconversions.h
Source/ThirdParty/ANGLE/src/libANGLE/queryutils.cpp
Source/ThirdParty/ANGLE/src/libANGLE/queryutils.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/ContextImpl.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/ContextImpl.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/FormatID_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/Format_table_autogen.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/GLImplFactory.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/MemoryObjectImpl.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/PathImpl.h [deleted file]
Source/ThirdParty/ANGLE/src/libANGLE/renderer/ProgramImpl.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/RenderTargetCache.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/SemaphoreImpl.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/angle_format_data.json
Source/ThirdParty/ANGLE/src/libANGLE/renderer/angle_format_map.json
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/DynamicHLSL.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/FramebufferD3D.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/FramebufferD3D.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/OWNERS [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/ProgramD3D.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/ProgramD3D.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/VertexDataManager.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Clear11.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Context11.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Context11.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/InputLayoutCache.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/StateManager11.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/StateManager11.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/StreamProducerD3DTexture.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/VertexArray11.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/dxgi_format_data.json
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/dxgi_format_map_autogen.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/dxgi_support_data.json
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/dxgi_support_table_autogen.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/texture_format_data.json
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/texture_format_table_autogen.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/Context9.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/Context9.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/Framebuffer9.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/Framebuffer9.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/StateManager9.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/StateManager9.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/driver_utils.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/driver_utils.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ContextGL.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ContextGL.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/DispatchTableGL_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/MemoryObjectGL.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/MemoryObjectGL.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/OWNERS [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/PathGL.cpp [deleted file]
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/PathGL.h [deleted file]
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ProgramGL.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ProgramGL.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/RendererGL.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/RendererGL.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/SemaphoreGL.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/SemaphoreGL.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/StateManagerGL.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/StateManagerGL.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/TextureGL.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/DisplayCGL.mm
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/eagl/DisplayEAGL.mm
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/DisplayEGL.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/DisplayEGL.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/android/DisplayAndroid.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/android/DisplayAndroid.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/ozone/DisplayOzone.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/ozone/DisplayOzone.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/formatutilsgl.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/functionsgl_typedefs.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/gl_bindings_data.json
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/null_functions.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/null_functions.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/renderergl_utils.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/glslang_wrapper_utils.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/glslang_wrapper_utils.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/load_functions_data.json
Source/ThirdParty/ANGLE/src/libANGLE/renderer/load_functions_table_autogen.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/BUILD.gn
Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/ContextMtl.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/ContextMtl.mm
Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/DisplayMtl.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/DisplayMtl.mm
Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/ProgramMtl.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/ProgramMtl.mm
Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/SurfaceMtl.mm
Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/mtl_format_map.json
Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/mtl_format_table_autogen.mm
Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/mtl_glslang_utils.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/mtl_glslang_utils.mm
Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/ContextNULL.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/ContextNULL.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/PathNULL.cpp [deleted file]
Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/PathNULL.h [deleted file]
Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/ProgramNULL.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/ProgramNULL.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/renderer_utils.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/renderer_utils.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/serial_utils.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/BUILD.gn
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/BufferVk.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/BufferVk.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandGraph.cpp [deleted file]
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandGraph.h [deleted file]
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ContextVk.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ContextVk.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/DisplayVk.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/DisplayVk.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/FramebufferVk.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/GlslangWrapperVk.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/GlslangWrapperVk.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/MemoryObjectVk.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/MemoryObjectVk.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/OWNERS [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/OverlayVk.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ProgramExecutableVk.cpp [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ProgramExecutableVk.h [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ProgramVk.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ProgramVk.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/QueryVk.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/README.md
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RenderTargetVk.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RenderTargetVk.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RenderbufferVk.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RendererVk.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RendererVk.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ResourceVk.cpp [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ResourceVk.h [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SamplerVk.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SecondaryCommandBuffer.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SecondaryCommandBuffer.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SemaphoreVk.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SemaphoreVk.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ShaderVk.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SurfaceVk.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SurfaceVk.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SyncVk.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SyncVk.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/TextureVk.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/TextureVk.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/TransformFeedbackVk.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/TransformFeedbackVk.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/UtilsVk.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/UtilsVk.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/VertexArrayVk.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/doc/FastOpenGLStateTransitions.md
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/doc/FormatTablesAndEmulation.md
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/doc/ShaderModuleCompilation.md
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/doc/img/VulkanShaderTranslation.svg
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/mac/DisplayVkMac.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/mac/DisplayVkMac.mm
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/mac/IOSurfaceSurfaceVkMac.h [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/mac/IOSurfaceSurfaceVkMac.mm [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndexIndirectLineLoop.comp.00000000.inc
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndexIndirectLineLoop.comp.00000001.inc
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndexIndirectLineLoop.comp.00000002.inc [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/src/ConvertIndexIndirectLineLoop.comp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/src/ConvertIndexIndirectLineLoop.comp.json
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_cache_utils.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_cache_utils.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_format_map.json
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_helpers.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_helpers.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.gni
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_utils.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_utils.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_wrapper.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/xcb/DisplayVkXcb.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/xcb/DisplayVkXcb.h
Source/ThirdParty/ANGLE/src/libANGLE/validationEGL.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationES.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationES.h
Source/ThirdParty/ANGLE/src/libANGLE/validationES1.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationES1_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/validationES2.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationES2.h
Source/ThirdParty/ANGLE/src/libANGLE/validationES2_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/validationES3.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationES3.h
Source/ThirdParty/ANGLE/src/libANGLE/validationES31.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationES31_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/validationES32.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationES32_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/validationES3_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/validationESEXT.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationESEXT_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/validationGL1.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationGL11.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationGL11_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/validationGL13.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationGL13_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/validationGL14.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationGL14_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/validationGL15.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationGL15_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/validationGL1_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/validationGL2.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationGL2_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/validationGL3.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationGL31.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationGL31_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/validationGL32.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationGL32_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/validationGL33.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationGL33_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/validationGL3_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/validationGL4.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationGL41.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationGL41_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/validationGL42.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationGL42_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/validationGL43.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationGL43_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/validationGL44.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationGL44_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/validationGL45.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationGL45_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/validationGL46.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationGL46_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/validationGL4_autogen.h
Source/ThirdParty/ANGLE/src/libGL/entry_points_gl_1_0_autogen.cpp
Source/ThirdParty/ANGLE/src/libGL/entry_points_gl_1_1_autogen.cpp
Source/ThirdParty/ANGLE/src/libGL/entry_points_gl_1_2_autogen.cpp
Source/ThirdParty/ANGLE/src/libGL/entry_points_gl_1_3_autogen.cpp
Source/ThirdParty/ANGLE/src/libGL/entry_points_gl_1_4_autogen.cpp
Source/ThirdParty/ANGLE/src/libGL/entry_points_gl_1_5_autogen.cpp
Source/ThirdParty/ANGLE/src/libGL/entry_points_gl_2_0_autogen.cpp
Source/ThirdParty/ANGLE/src/libGL/entry_points_gl_2_1_autogen.cpp
Source/ThirdParty/ANGLE/src/libGL/entry_points_gl_3_0_autogen.cpp
Source/ThirdParty/ANGLE/src/libGL/entry_points_gl_3_1_autogen.cpp
Source/ThirdParty/ANGLE/src/libGL/entry_points_gl_3_2_autogen.cpp
Source/ThirdParty/ANGLE/src/libGL/entry_points_gl_3_3_autogen.cpp
Source/ThirdParty/ANGLE/src/libGL/entry_points_gl_4_0_autogen.cpp
Source/ThirdParty/ANGLE/src/libGL/entry_points_gl_4_1_autogen.cpp
Source/ThirdParty/ANGLE/src/libGL/entry_points_gl_4_2_autogen.cpp
Source/ThirdParty/ANGLE/src/libGL/entry_points_gl_4_3_autogen.cpp
Source/ThirdParty/ANGLE/src/libGL/entry_points_gl_4_4_autogen.cpp
Source/ThirdParty/ANGLE/src/libGL/entry_points_gl_4_5_autogen.cpp
Source/ThirdParty/ANGLE/src/libGL/entry_points_gl_4_6_autogen.cpp
Source/ThirdParty/ANGLE/src/libGLESv2.gni
Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_1_0_autogen.cpp
Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_2_0_autogen.cpp
Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_3_0_autogen.cpp
Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_3_1_autogen.cpp
Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_3_2_autogen.cpp
Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_ext_autogen.cpp
Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_ext_autogen.h
Source/ThirdParty/ANGLE/src/libGLESv2/global_state.cpp
Source/ThirdParty/ANGLE/src/libGLESv2/global_state.h
Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2_autogen.cpp
Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2_autogen.def
Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2_no_capture_autogen.def
Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2_with_capture_autogen.def
Source/ThirdParty/ANGLE/src/libGLESv2/proc_table_egl_autogen.cpp
Source/ThirdParty/ANGLE/src/tests/BUILD.gn
Source/ThirdParty/ANGLE/src/tests/OWNERS [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/tests/angle_end2end_tests.gni
Source/ThirdParty/ANGLE/src/tests/angle_end2end_tests_main.cpp
Source/ThirdParty/ANGLE/src/tests/angle_perftests.gni
Source/ThirdParty/ANGLE/src/tests/angle_unittests.gni
Source/ThirdParty/ANGLE/src/tests/angle_unittests_utils.h
Source/ThirdParty/ANGLE/src/tests/angle_white_box_tests.gni
Source/ThirdParty/ANGLE/src/tests/deqp_support/BUILD.gn
Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp.gni
Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles31_TestExpectations
Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles3_TestExpectations
Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles31_TestExpectations
Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLBlobCacheTest.cpp
Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLContextCompatibilityTest.cpp
Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLContextSharingTest.cpp
Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLDirectCompositionTest.cpp
Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLIOSurfaceClientBufferTest.cpp
Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLSurfaceTest.cpp
Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLSyncTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/AtomicCounterBufferTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/AttributeLayoutTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/BindUniformLocationTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/ClearTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/ComputeShaderTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/ContextLostTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/ContextNoErrorTest.cpp [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyCompressedTextureTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/ExternalWrapTest.cpp [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/tests/gl_tests/FormatPrintTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/FramebufferTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/GLSLTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/ImageTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/InstancingTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/MemoryObjectTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/MipmapTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/MultisampleCompatibilityTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/PathRenderingTest.cpp [deleted file]
Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramBinaryTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramInterfaceTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/RobustResourceInitTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/ShaderNonConstGlobalInitializerTest.cpp [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/tests/gl_tests/ShaderStorageBufferTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/SimpleOperationTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/StateChangeTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/TransformFeedbackTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/VertexAttributeTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/VulkanExternalImageTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/WebGLCompatibilityTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/BasicDrawTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/BootAnimationTest.cpp [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/MatrixBuiltinsTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/gles1/TextureParameterTest.cpp
Source/ThirdParty/ANGLE/src/tests/gles1_conformance_tests/ConformanceTests.cpp
Source/ThirdParty/ANGLE/src/tests/perf_tests/ANGLEPerfTest.cpp
Source/ThirdParty/ANGLE/src/tests/perf_tests/ANGLEPerfTest.h
Source/ThirdParty/ANGLE/src/tests/perf_tests/ANGLEPerfTestArgs.cpp
Source/ThirdParty/ANGLE/src/tests/perf_tests/ANGLEPerfTestArgs.h
Source/ThirdParty/ANGLE/src/tests/perf_tests/BitSetIteratorPerf.cpp
Source/ThirdParty/ANGLE/src/tests/perf_tests/DrawCallPerf.cpp
Source/ThirdParty/ANGLE/src/tests/perf_tests/DrawCallPerfParams.cpp
Source/ThirdParty/ANGLE/src/tests/perf_tests/DrawCallPerfParams.h
Source/ThirdParty/ANGLE/src/tests/perf_tests/DrawElementsPerf.cpp
Source/ThirdParty/ANGLE/src/tests/perf_tests/TextureUploadPerf.cpp
Source/ThirdParty/ANGLE/src/tests/perf_tests/TracePerfTest.cpp
Source/ThirdParty/ANGLE/src/tests/perf_tests/glmark2Benchmark.cpp [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/tests/perf_tests/restricted_traces/.gitignore [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/tests/perf_tests/restricted_traces/OWNERS [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/tests/perf_tests/restricted_traces/RestrictedTraceTests.md
Source/ThirdParty/ANGLE/src/tests/perf_tests/restricted_traces/angle_trace_perf_tests.gni
Source/ThirdParty/ANGLE/src/tests/perf_tests/restricted_traces/manhattan_10.tar.gz.sha1 [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/tests/perf_tests/restricted_traces/trex_1300_1310.tar.gz.sha1 [deleted file]
Source/ThirdParty/ANGLE/src/tests/perf_tests/restricted_traces/trex_200.tar.gz.sha1 [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/tests/perf_tests/restricted_traces/trex_200_210.tar.gz.sha1 [deleted file]
Source/ThirdParty/ANGLE/src/tests/perf_tests/restricted_traces/trex_800_810.tar.gz.sha1 [deleted file]
Source/ThirdParty/ANGLE/src/tests/perf_tests/restricted_traces/trex_900_910.tar.gz.sha1 [deleted file]
Source/ThirdParty/ANGLE/src/tests/perf_tests/third_party/perf/perf_test.cc
Source/ThirdParty/ANGLE/src/tests/test_utils/ANGLETest.cpp
Source/ThirdParty/ANGLE/src/tests/test_utils/ANGLETest.h
Source/ThirdParty/ANGLE/src/tests/test_utils/VulkanExternalHelper.cpp
Source/ThirdParty/ANGLE/src/tests/test_utils/VulkanExternalHelper.h
Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_configs.cpp
Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_configs.h
Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.cpp
Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.h
Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_platform.cpp
Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_platform.h
Source/ThirdParty/ANGLE/src/tests/test_utils/runner/TestSuite.cpp
Source/ThirdParty/ANGLE/src/third_party/.find-ignore [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/third_party/volk/BUILD.gn
Source/ThirdParty/ANGLE/third_party/.find-ignore [new file with mode: 0644]
Source/ThirdParty/ANGLE/third_party/BUILD.gn
Source/ThirdParty/ANGLE/third_party/glmark2/BUILD.gn [new file with mode: 0644]
Source/ThirdParty/ANGLE/third_party/glmark2/README.angle [new file with mode: 0644]
Source/ThirdParty/ANGLE/third_party/libpng/BUILD.gn
Source/ThirdParty/ANGLE/tools/flex-bison/README.md [new file with mode: 0644]
Source/ThirdParty/ANGLE/tools/flex-bison/linux/bison.sha1 [new file with mode: 0644]
Source/ThirdParty/ANGLE/tools/flex-bison/linux/flex.sha1 [new file with mode: 0644]
Source/ThirdParty/ANGLE/tools/flex-bison/third_party/.gitattributes [new file with mode: 0644]
Source/ThirdParty/ANGLE/tools/flex-bison/third_party/m4sugar/LICENSE [new file with mode: 0644]
Source/ThirdParty/ANGLE/tools/flex-bison/third_party/m4sugar/README.chromium [new file with mode: 0644]
Source/ThirdParty/ANGLE/tools/flex-bison/third_party/m4sugar/foreach.m4 [new file with mode: 0644]
Source/ThirdParty/ANGLE/tools/flex-bison/third_party/m4sugar/m4sugar.m4 [new file with mode: 0644]
Source/ThirdParty/ANGLE/tools/flex-bison/third_party/skeletons/LICENSE [new file with mode: 0644]
Source/ThirdParty/ANGLE/tools/flex-bison/third_party/skeletons/README.chromium [new file with mode: 0644]
Source/ThirdParty/ANGLE/tools/flex-bison/third_party/skeletons/bison.m4 [new file with mode: 0644]
Source/ThirdParty/ANGLE/tools/flex-bison/third_party/skeletons/c-like.m4 [new file with mode: 0644]
Source/ThirdParty/ANGLE/tools/flex-bison/third_party/skeletons/c.m4 [new file with mode: 0644]
Source/ThirdParty/ANGLE/tools/flex-bison/third_party/skeletons/yacc.c [new file with mode: 0644]
Source/ThirdParty/ANGLE/tools/flex-bison/update_flex_bison_binaries.py [new file with mode: 0755]
Source/ThirdParty/ANGLE/tools/flex-bison/windows/bison.exe.sha1 [new file with mode: 0644]
Source/ThirdParty/ANGLE/tools/flex-bison/windows/flex.exe.sha1 [new file with mode: 0644]
Source/ThirdParty/ANGLE/tools/flex-bison/windows/m4.exe.sha1 [new file with mode: 0644]
Source/ThirdParty/ANGLE/tools/flex-bison/windows/msys-2.0.dll.sha1 [new file with mode: 0644]
Source/ThirdParty/ANGLE/tools/flex-bison/windows/msys-iconv-2.dll.sha1 [new file with mode: 0644]
Source/ThirdParty/ANGLE/tools/flex-bison/windows/msys-intl-8.dll.sha1 [new file with mode: 0644]
Source/ThirdParty/ANGLE/util/BUILD.gn
Source/ThirdParty/ANGLE/util/EGLPlatformParameters.h
Source/ThirdParty/ANGLE/util/EGLWindow.cpp
Source/ThirdParty/ANGLE/util/EGLWindow.h
Source/ThirdParty/ANGLE/util/frame_capture_utils.h [new file with mode: 0644]
Source/ThirdParty/ANGLE/util/fuchsia/ScenicWindow.cpp
Source/ThirdParty/ANGLE/util/fuchsia/ScenicWindow.h
Source/ThirdParty/ANGLE/util/gles_loader_autogen.cpp
Source/ThirdParty/ANGLE/util/gles_loader_autogen.h
Source/ThirdParty/ANGLE/util/random_utils.h
Source/ThirdParty/ANGLE/util/util.gni [deleted file]
Source/ThirdParty/ANGLE/util/util_gl.h

index 0b5cdf8..2ba5697 100644 (file)
@@ -6,13 +6,13 @@
                <key>OpenSourceProject</key>
                <string>ANGLE</string>
                <key>OpenSourceVersion</key>
-               <string>aa6dd50de0c5253d56caf37b9691dd61a5f670fd</string>
+               <string>b387ce9389ede6a4ed3b831ab1b8187927fa295f</string>
                <key>OpenSourceWebsiteURL</key>
                <string>http://code.google.com/p/angleproject/</string>
                <key>OpenSourceSCM</key>
-               <string>git clone https://chromium.googlesource.com/angle/angle &amp;&amp; cd angle &amp;&amp; git checkout aa6dd50de0c5253d56caf37b9691dd61a5f670fd</string>
+               <string>git clone https://chromium.googlesource.com/angle/angle &amp;&amp; cd angle &amp;&amp; git checkout b387ce9389ede6a4ed3b831ab1b8187927fa295f</string>
                <key>OpenSourceImportDate</key>
-               <string>2020-02-03</string>
+               <string>2020-03-27</string>
                <key>OpenSourceLicense</key>
                <string>BSD</string>
                <key>OpenSourceLicenseFile</key>
index 64be2ee..5446d60 100644 (file)
                5CB3012A1DE39F1A00D2C405 /* functionsgl_typedefs.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CB300F61DE39F1A00D2C405 /* functionsgl_typedefs.h */; };
                5CB3012B1DE39F1A00D2C405 /* FunctionsGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CB300F71DE39F1A00D2C405 /* FunctionsGL.cpp */; };
                5CB3012C1DE39F1A00D2C405 /* FunctionsGL.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CB300F81DE39F1A00D2C405 /* FunctionsGL.h */; };
-               5CB3012D1DE39F1A00D2C405 /* PathGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CB300FA1DE39F1A00D2C405 /* PathGL.cpp */; };
-               5CB3012E1DE39F1A00D2C405 /* PathGL.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CB300FB1DE39F1A00D2C405 /* PathGL.h */; };
                5CB3012F1DE39F1A00D2C405 /* ProgramGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CB300FC1DE39F1A00D2C405 /* ProgramGL.cpp */; };
                5CB301301DE39F1A00D2C405 /* ProgramGL.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CB300FD1DE39F1A00D2C405 /* ProgramGL.h */; };
                5CB301311DE39F1A00D2C405 /* QueryGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CB300FE1DE39F1A00D2C405 /* QueryGL.cpp */; };
                5CCD599C2284FC750018F2D8 /* SystemInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CCD59992284FC750018F2D8 /* SystemInfo.h */; };
                5CCD81721DBFE999006066B8 /* Debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CCD815A1DBFE999006066B8 /* Debug.cpp */; };
                5CCD81731DBFE999006066B8 /* Debug.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CCD815B1DBFE999006066B8 /* Debug.h */; };
-               5CCD81741DBFE999006066B8 /* HandleRangeAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CCD815C1DBFE999006066B8 /* HandleRangeAllocator.cpp */; };
-               5CCD81751DBFE999006066B8 /* HandleRangeAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CCD815D1DBFE999006066B8 /* HandleRangeAllocator.h */; };
                5CCD81761DBFE999006066B8 /* Image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CCD815E1DBFE999006066B8 /* Image.cpp */; };
                5CCD81771DBFE999006066B8 /* Image.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CCD815F1DBFE999006066B8 /* Image.h */; };
                5CCD81781DBFE999006066B8 /* IndexRangeCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CCD81601DBFE999006066B8 /* IndexRangeCache.cpp */; };
                5CCD81791DBFE999006066B8 /* IndexRangeCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CCD81611DBFE999006066B8 /* IndexRangeCache.h */; };
-               5CCD817A1DBFE999006066B8 /* Path.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CCD81621DBFE999006066B8 /* Path.cpp */; };
-               5CCD817B1DBFE999006066B8 /* Path.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CCD81631DBFE999006066B8 /* Path.h */; };
                5CCD817C1DBFE999006066B8 /* queryutils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CCD81641DBFE999006066B8 /* queryutils.cpp */; };
                5CCD817D1DBFE999006066B8 /* queryutils.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CCD81651DBFE999006066B8 /* queryutils.h */; };
                5CCD81801DBFE999006066B8 /* Stream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CCD81681DBFE999006066B8 /* Stream.cpp */; };
                6ED70A0D22CD630E008688CE /* glext.h in Headers */ = {isa = PBXBuildFile; fileRef = 6ED70A0A22CD630E008688CE /* glext.h */; settings = {ATTRIBUTES = (Public, ); }; };
                6ED70A0E22CD630E008688CE /* glplatform.h in Headers */ = {isa = PBXBuildFile; fileRef = 6ED70A0B22CD630E008688CE /* glplatform.h */; settings = {ATTRIBUTES = (Public, ); }; };
                6ED70A1022CD6822008688CE /* glext_angle.h in Headers */ = {isa = PBXBuildFile; fileRef = 6ED70A0F22CD6822008688CE /* glext_angle.h */; settings = {ATTRIBUTES = (Public, ); }; };
+               6ED7BDF02432CCC400E01503 /* RemoveAtomicCounterBuiltins.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6ED7BDEE2432CCC300E01503 /* RemoveAtomicCounterBuiltins.cpp */; };
+               6ED7BDF12432CCC400E01503 /* RemoveAtomicCounterBuiltins.h in Headers */ = {isa = PBXBuildFile; fileRef = 6ED7BDEF2432CCC300E01503 /* RemoveAtomicCounterBuiltins.h */; };
+               6ED7BDF32432CD1B00E01503 /* InfoLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 6ED7BDF22432CD1B00E01503 /* InfoLog.h */; };
+               6ED7BDF62432CD6200E01503 /* ProgramExecutable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6ED7BDF42432CD6200E01503 /* ProgramExecutable.cpp */; };
+               6ED7BDF72432CD6200E01503 /* ProgramExecutable.h in Headers */ = {isa = PBXBuildFile; fileRef = 6ED7BDF52432CD6200E01503 /* ProgramExecutable.h */; };
                6EE2FD2D22BAE99C001D369E /* eglext_angle.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EE2FD2C22BAE99C001D369E /* eglext_angle.h */; settings = {ATTRIBUTES = (Public, ); }; };
                6EE2FD2F22BAE9CD001D369E /* gl2ext_angle.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EE2FD2E22BAE9CD001D369E /* gl2ext_angle.h */; settings = {ATTRIBUTES = (Public, ); }; };
                A08C3CDC16D6CB61003F0B83 /* ArrayBoundsClamper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A08C3CDA16D6CB61003F0B83 /* ArrayBoundsClamper.cpp */; };
                5CB300F61DE39F1A00D2C405 /* functionsgl_typedefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = functionsgl_typedefs.h; sourceTree = "<group>"; };
                5CB300F71DE39F1A00D2C405 /* FunctionsGL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FunctionsGL.cpp; sourceTree = "<group>"; };
                5CB300F81DE39F1A00D2C405 /* FunctionsGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FunctionsGL.h; sourceTree = "<group>"; };
-               5CB300FA1DE39F1A00D2C405 /* PathGL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PathGL.cpp; sourceTree = "<group>"; };
-               5CB300FB1DE39F1A00D2C405 /* PathGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PathGL.h; sourceTree = "<group>"; };
                5CB300FC1DE39F1A00D2C405 /* ProgramGL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProgramGL.cpp; sourceTree = "<group>"; };
                5CB300FD1DE39F1A00D2C405 /* ProgramGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProgramGL.h; sourceTree = "<group>"; };
                5CB300FE1DE39F1A00D2C405 /* QueryGL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = QueryGL.cpp; sourceTree = "<group>"; };
                5CCD59992284FC750018F2D8 /* SystemInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SystemInfo.h; sourceTree = "<group>"; };
                5CCD815A1DBFE999006066B8 /* Debug.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Debug.cpp; sourceTree = "<group>"; };
                5CCD815B1DBFE999006066B8 /* Debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Debug.h; sourceTree = "<group>"; };
-               5CCD815C1DBFE999006066B8 /* HandleRangeAllocator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HandleRangeAllocator.cpp; sourceTree = "<group>"; };
-               5CCD815D1DBFE999006066B8 /* HandleRangeAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HandleRangeAllocator.h; sourceTree = "<group>"; };
                5CCD815E1DBFE999006066B8 /* Image.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Image.cpp; sourceTree = "<group>"; };
                5CCD815F1DBFE999006066B8 /* Image.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Image.h; sourceTree = "<group>"; };
                5CCD81601DBFE999006066B8 /* IndexRangeCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IndexRangeCache.cpp; sourceTree = "<group>"; };
                5CCD81611DBFE999006066B8 /* IndexRangeCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IndexRangeCache.h; sourceTree = "<group>"; };
-               5CCD81621DBFE999006066B8 /* Path.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Path.cpp; sourceTree = "<group>"; };
-               5CCD81631DBFE999006066B8 /* Path.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Path.h; sourceTree = "<group>"; };
                5CCD81641DBFE999006066B8 /* queryutils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = queryutils.cpp; sourceTree = "<group>"; };
                5CCD81651DBFE999006066B8 /* queryutils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = queryutils.h; sourceTree = "<group>"; };
                5CCD81681DBFE999006066B8 /* Stream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Stream.cpp; sourceTree = "<group>"; };
                6ED70A0A22CD630E008688CE /* glext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glext.h; path = include/GLES/glext.h; sourceTree = "<group>"; };
                6ED70A0B22CD630E008688CE /* glplatform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glplatform.h; path = include/GLES/glplatform.h; sourceTree = "<group>"; };
                6ED70A0F22CD6822008688CE /* glext_angle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glext_angle.h; path = include/GLES/glext_angle.h; sourceTree = "<group>"; };
+               6ED7BDEE2432CCC300E01503 /* RemoveAtomicCounterBuiltins.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RemoveAtomicCounterBuiltins.cpp; sourceTree = "<group>"; };
+               6ED7BDEF2432CCC300E01503 /* RemoveAtomicCounterBuiltins.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoveAtomicCounterBuiltins.h; sourceTree = "<group>"; };
+               6ED7BDF22432CD1B00E01503 /* InfoLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InfoLog.h; sourceTree = "<group>"; };
+               6ED7BDF42432CD6200E01503 /* ProgramExecutable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProgramExecutable.cpp; sourceTree = "<group>"; };
+               6ED7BDF52432CD6200E01503 /* ProgramExecutable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProgramExecutable.h; sourceTree = "<group>"; };
                6EE2FD2C22BAE99C001D369E /* eglext_angle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = eglext_angle.h; path = include/EGL/eglext_angle.h; sourceTree = "<group>"; };
                6EE2FD2E22BAE9CD001D369E /* gl2ext_angle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gl2ext_angle.h; path = include/GLES2/gl2ext_angle.h; sourceTree = "<group>"; };
                A08C3CDA16D6CB61003F0B83 /* ArrayBoundsClamper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ArrayBoundsClamper.cpp; path = compiler/ArrayBoundsClamper.cpp; sourceTree = "<group>"; };
                                5CCD59542284F7950018F2D8 /* GLES1State.h */,
                                5C1DBC6F1B0438D200235552 /* HandleAllocator.cpp */,
                                5C1DBC701B0438D200235552 /* HandleAllocator.h */,
-                               5CCD815C1DBFE999006066B8 /* HandleRangeAllocator.cpp */,
-                               5CCD815D1DBFE999006066B8 /* HandleRangeAllocator.h */,
                                5C1DBC711B0438D200235552 /* histogram_macros.h */,
                                5CCD815E1DBFE999006066B8 /* Image.cpp */,
                                5CCD815F1DBFE999006066B8 /* Image.h */,
                                5C1DBC731B0438D200235552 /* ImageIndex.h */,
                                5CCD81601DBFE999006066B8 /* IndexRangeCache.cpp */,
                                5CCD81611DBFE999006066B8 /* IndexRangeCache.h */,
+                               6ED7BDF22432CD1B00E01503 /* InfoLog.h */,
                                315EBDD11FCE452800AC7A89 /* LoggingAnnotator.cpp */,
                                315EBDDA1FCE452B00AC7A89 /* LoggingAnnotator.h */,
                                5CCD59562284F7950018F2D8 /* MemoryObject.cpp */,
                                A315988323299037000619B9 /* Overlay_font_autogen.h */,
                                A315988523299037000619B9 /* OverlayWidgets.cpp */,
                                A315988723299037000619B9 /* OverlayWidgets.h */,
-                               5CCD81621DBFE999006066B8 /* Path.cpp */,
-                               5CCD81631DBFE999006066B8 /* Path.h */,
                                5C1DBC751B0438D200235552 /* Platform.cpp */,
                                5C1DBC761B0438D200235552 /* Program.cpp */,
                                5C1DBC771B0438D200235552 /* Program.h */,
+                               6ED7BDF42432CD6200E01503 /* ProgramExecutable.cpp */,
+                               6ED7BDF52432CD6200E01503 /* ProgramExecutable.h */,
                                315EBDD51FCE452900AC7A89 /* ProgramLinkedResources.cpp */,
                                315EBDCF1FCE452700AC7A89 /* ProgramLinkedResources.h */,
                                315EBDCE1FCE452700AC7A89 /* ProgramPipeline.cpp */,
                                A30307862305F8F0002DA972 /* MemoryObjectGL.h */,
                                315EBDB51FCE44BE00AC7A89 /* null_functions.cpp */,
                                315EBDB81FCE44BF00AC7A89 /* null_functions.h */,
-                               5CB300FA1DE39F1A00D2C405 /* PathGL.cpp */,
-                               5CB300FB1DE39F1A00D2C405 /* PathGL.h */,
                                5CB300FC1DE39F1A00D2C405 /* ProgramGL.cpp */,
                                5CB300FD1DE39F1A00D2C405 /* ProgramGL.h */,
                                315EBDB01FCE44BD00AC7A89 /* ProgramPipelineGL.cpp */,
                                5C55D60022826B8F00B5BA2C /* RegenerateStructNames.h */,
                                5C55D5FA22826B8F00B5BA2C /* RemoveArrayLengthMethod.cpp */,
                                5C55D63E22826B9C00B5BA2C /* RemoveArrayLengthMethod.h */,
+                               6ED7BDEE2432CCC300E01503 /* RemoveAtomicCounterBuiltins.cpp */,
+                               6ED7BDEF2432CCC300E01503 /* RemoveAtomicCounterBuiltins.h */,
                                5C55D60922826B9000B5BA2C /* RemoveDynamicIndexing.cpp */,
                                5C55D62F22826B9800B5BA2C /* RemoveDynamicIndexing.h */,
                                A3D3291223CFCB7600375657 /* RemoveInactiveInterfaceVariables.cpp */,
                                31012E2D18B97B9B0039062F /* glslang.h in Headers */,
                                A3D3290C23CFCB4D00375657 /* glslang_tab_autogen.h in Headers */,
                                5C1DBDF91B0438D300235552 /* HandleAllocator.h in Headers */,
-                               5CCD81751DBFE999006066B8 /* HandleRangeAllocator.h in Headers */,
                                5C55D72C2282747700B5BA2C /* hash_utils.h in Headers */,
                                31012E3318B97B9B0039062F /* HashNames.h in Headers */,
                                5C1DBDFA1B0438D300235552 /* histogram_macros.h in Headers */,
                                5C55D6E222826C7900B5BA2C /* ImmutableString.h in Headers */,
                                5C55D6E522826C7900B5BA2C /* ImmutableStringBuilder.h in Headers */,
                                5CCD81791DBFE999006066B8 /* IndexRangeCache.h in Headers */,
+                               6ED7BDF32432CD1B00E01503 /* InfoLog.h in Headers */,
                                31012E3518B97B9B0039062F /* InfoSink.h in Headers */,
                                31012E3718B97B9B0039062F /* Initialize.h in Headers */,
                                31012E3918B97B9B0039062F /* InitializeDll.h in Headers */,
                                5C55D72A2282747700B5BA2C /* PackedEnums.h in Headers */,
                                5C55D7292282747700B5BA2C /* PackedGLEnums_autogen.h in Headers */,
                                31012E5518B97B9B0039062F /* ParseContext.h in Headers */,
-                               5CCD817B1DBFE999006066B8 /* Path.h in Headers */,
-                               5CB3012E1DE39F1A00D2C405 /* PathGL.h in Headers */,
                                5CB304F11DE4164800D2C405 /* PathImpl.h in Headers */,
                                5CB301511DE39F4700D2C405 /* PbufferSurfaceCGL.h in Headers */,
                                313BCE5D2361133A00FC39E5 /* PbufferSurfaceEAGL.h in Headers */,
                                A264F8BF16974DED006FAA5A /* Preprocessor.h in Headers */,
                                A30307942305F959002DA972 /* proc_table_egl.h in Headers */,
                                5C1DBE001B0438D300235552 /* Program.h in Headers */,
+                               6ED7BDF72432CD6200E01503 /* ProgramExecutable.h in Headers */,
                                5CB301301DE39F1A00D2C405 /* ProgramGL.h in Headers */,
                                5CB304F31DE4164800D2C405 /* ProgramImpl.h in Headers */,
                                5CB304F21DE4164800D2C405 /* ProgramImpl_mock.h in Headers */,
                                5C1DBE061B0438D300235552 /* RefCountObject.h in Headers */,
                                5C55D65C22826B9F00B5BA2C /* RegenerateStructNames.h in Headers */,
                                5C55D69A22826B9F00B5BA2C /* RemoveArrayLengthMethod.h in Headers */,
+                               6ED7BDF12432CCC400E01503 /* RemoveAtomicCounterBuiltins.h in Headers */,
                                5C55D68B22826B9F00B5BA2C /* RemoveDynamicIndexing.h in Headers */,
                                A3D3291923CFCB7700375657 /* RemoveInactiveInterfaceVariables.h in Headers */,
                                5C55D64D22826B9F00B5BA2C /* RemoveInvariantDeclaration.h in Headers */,
                                A3D3290D23CFCB4D00375657 /* glslang_lex_autogen.cpp in Sources */,
                                A3D3290B23CFCB4D00375657 /* glslang_tab_autogen.cpp in Sources */,
                                5C1DBDF81B0438D300235552 /* HandleAllocator.cpp in Sources */,
-                               5CCD81741DBFE999006066B8 /* HandleRangeAllocator.cpp in Sources */,
                                315EBD861FCE443600AC7A89 /* HashNames.cpp in Sources */,
                                5CCD81761DBFE999006066B8 /* Image.cpp in Sources */,
                                5CCD59912284FC400018F2D8 /* imageformats.cpp in Sources */,
                                5C55D72D2282747700B5BA2C /* PackedEnums.cpp in Sources */,
                                5C55D72E2282747700B5BA2C /* PackedGLEnums_autogen.cpp in Sources */,
                                31012E5418B97B9B0039062F /* ParseContext.cpp in Sources */,
-                               5CCD817A1DBFE999006066B8 /* Path.cpp in Sources */,
-                               5CB3012D1DE39F1A00D2C405 /* PathGL.cpp in Sources */,
                                5CCD596F2284F9550018F2D8 /* PbufferSurfaceCGL.cpp in Sources */,
                                313BCE562361133A00FC39E5 /* PbufferSurfaceEAGL.cpp in Sources */,
                                5C1DBDFE1B0438D300235552 /* Platform.cpp in Sources */,
                                A3D3290723CFC88700375657 /* preprocessor_tab_autogen.cpp in Sources */,
                                A30307952305F959002DA972 /* proc_table_egl_autogen.cpp in Sources */,
                                5C1DBDFF1B0438D300235552 /* Program.cpp in Sources */,
+                               6ED7BDF62432CD6200E01503 /* ProgramExecutable.cpp in Sources */,
                                5CB3012F1DE39F1A00D2C405 /* ProgramGL.cpp in Sources */,
                                315EBDEC1FCE452D00AC7A89 /* ProgramLinkedResources.cpp in Sources */,
                                315EBDE51FCE452D00AC7A89 /* ProgramPipeline.cpp in Sources */,
                                5C55D6B922826BC800B5BA2C /* RecordConstantPrecision.cpp in Sources */,
                                5C55D6BA22826BC800B5BA2C /* RegenerateStructNames.cpp in Sources */,
                                5C55D6BB22826BC800B5BA2C /* RemoveArrayLengthMethod.cpp in Sources */,
+                               6ED7BDF02432CCC400E01503 /* RemoveAtomicCounterBuiltins.cpp in Sources */,
                                5C55D6BC22826BC800B5BA2C /* RemoveDynamicIndexing.cpp in Sources */,
                                A3D3291823CFCB7700375657 /* RemoveInactiveInterfaceVariables.cpp in Sources */,
                                5C55D6BD22826BC800B5BA2C /* RemoveInvariantDeclaration.cpp in Sources */,
index 25f8e33..fa5073e 100644 (file)
@@ -34,6 +34,7 @@ Samsung Electronics, Inc.
 Arm Ltd.
 Broadcom Inc.
 Facebook, Inc.
+The Khronos Group, Inc.
 
 Jacek Caban
 Mark Callow
index c0bbeb7..ad7675f 100644 (file)
@@ -32,6 +32,9 @@ declare_args() {
   # Don't build extra (test, samples etc) for Windows UWP. We don't have
   # infrastructure (e.g. windowing helper functions) in place to run them.
   angle_build_all = !build_with_chromium && !angle_is_winuwp && angle_has_build
+
+  # Enable generating current commit information using git
+  angle_enable_commit_id = true
 }
 
 if (angle_build_all) {
@@ -54,15 +57,6 @@ if (ozone_platform_gbm) {
   }
 }
 
-angle_git_is_present = exec_script("src/commit_id.py",
-                                   [
-                                     "check",
-                                     rebase_path(".", root_build_dir),
-                                   ],
-                                   "value")
-
-angle_use_commit_id = angle_git_is_present == 1
-
 import("src/compiler.gni")
 import("src/libGLESv2.gni")
 
@@ -197,17 +191,13 @@ if (_use_copy_compiler_dll) {
       exec_script("scripts/file_exists.py", [ _old_compiler ], "value")
 
   copy("copy_compiler_dll") {
-    sources = [
-      "$windows_sdk_path/Redist/D3D/$target_cpu/d3dcompiler_47.dll",
-    ]
+    sources = [ "$windows_sdk_path/Redist/D3D/$target_cpu/d3dcompiler_47.dll" ]
 
     if (_has_old_compiler) {
       sources += [ _old_compiler ]
     }
 
-    outputs = [
-      "$root_out_dir/{{source_file_part}}",
-    ]
+    outputs = [ "$root_out_dir/{{source_file_part}}" ]
   }
 }
 
@@ -263,12 +253,8 @@ angle_source_set("xxhash") {
 
 if (angle_has_build) {
   fuzzer_test("xxhash_fuzzer") {
-    sources = [
-      "src/common/third_party/xxhash/xxhash_fuzzer.cpp",
-    ]
-    deps = [
-      ":xxhash",
-    ]
+    sources = [ "src/common/third_party/xxhash/xxhash_fuzzer.cpp" ]
+    deps = [ ":xxhash" ]
   }
 }
 
@@ -280,9 +266,7 @@ angle_static_library("angle_common") {
     ":debug_annotations_config",
   ]
 
-  deps = [
-    ":xxhash",
-  ]
+  deps = [ ":xxhash" ]
 
   public_deps = [
     ":angle_system_utils",
@@ -304,17 +288,13 @@ config("angle_image_util_config") {
 
 angle_source_set("angle_image_util_headers") {
   sources = libangle_image_util_headers
-  public_deps = [
-    ":angle_common",
-  ]
+  public_deps = [ ":angle_common" ]
 }
 
 angle_static_library("angle_image_util") {
   sources = libangle_image_util_sources
   public_configs += [ ":angle_image_util_config" ]
-  public_deps = [
-    ":angle_image_util_headers",
-  ]
+  public_deps = [ ":angle_image_util_headers" ]
 }
 
 config("angle_gl_visibility_config") {
@@ -343,9 +323,7 @@ angle_static_library("angle_gpu_info_util") {
     ":angle_gpu_info_util_config",
     ":angle_backend_config",
   ]
-  public_deps = [
-    ":angle_common",
-  ]
+  public_deps = [ ":angle_common" ]
   sources = libangle_gpu_info_util_sources
   deps = []
   libs = []
@@ -407,9 +385,7 @@ angle_static_library("angle_gpu_info_util") {
 
 angle_source_set("angle_translator_headers") {
   sources = angle_translator_exported_headers
-  public_deps = [
-    ":includes",
-  ]
+  public_deps = [ ":includes" ]
 }
 
 angle_static_library("translator") {
@@ -469,18 +445,14 @@ angle_static_library("translator") {
 }
 
 angle_source_set("translator_fuzzer") {
-  sources = [
-    "src/compiler/fuzz/translator_fuzzer.cpp",
-  ]
+  sources = [ "src/compiler/fuzz/translator_fuzzer.cpp" ]
 
   include_dirs = [
     "include",
     "src",
   ]
 
-  deps = [
-    ":translator",
-  ]
+  deps = [ ":translator" ]
 }
 
 config("commit_id_config") {
@@ -488,46 +460,29 @@ config("commit_id_config") {
   visibility = [ ":commit_id" ]
 }
 
-commit_id_output_file = "$root_gen_dir/angle/id/commit.h"
-if (angle_use_commit_id) {
-  action("commit_id") {
-    script = "src/commit_id.py"
-    outputs = [
-      commit_id_output_file,
-    ]
+commit_id_output_file = "$root_gen_dir/angle/commit.h"
+action("commit_id") {
+  script = "src/commit_id.py"
+  outputs = [ commit_id_output_file ]
 
+  # Add git as a dependency if it is available.
+  if (angle_enable_commit_id &&
+      exec_script("src/commit_id.py", [ "check" ], "value") == 1) {
     # commit id should depend on angle's HEAD revision
-    inputs = [
-      ".git/HEAD",
-    ]
+    inputs = [ ".git/HEAD" ]
+  }
 
-    args = [
-      "gen",
-      rebase_path(".", root_build_dir),
-      rebase_path(commit_id_output_file, root_build_dir),
-    ]
+  args = [
+    "gen",
+    rebase_path(commit_id_output_file, root_build_dir),
+  ]
 
-    public_configs = [ ":commit_id_config" ]
-  }
-} else {
-  copy("commit_id") {
-    sources = [
-      "src/commit.h",
-    ]
-    outputs = [
-      commit_id_output_file,
-    ]
-    public_configs = [ ":commit_id_config" ]
-  }
+  public_configs = [ ":commit_id_config" ]
 }
 
 angle_source_set("angle_version") {
-  sources = [
-    "src/common/version.h",
-  ]
-  public_deps = [
-    ":commit_id",
-  ]
+  sources = [ "src/common/version.h" ]
+  public_deps = [ ":commit_id" ]
 }
 
 config("angle_backend_config") {
@@ -571,7 +526,8 @@ config("libANGLE_config") {
   defines += [ "LIBANGLE_IMPLEMENTATION" ]
 
   if (is_win) {
-    cflags += [ "/wd4530" ]  # C++ exception handler used, but unwind semantics are not enabled.
+    cflags += [ "/wd4530" ]  # C++ exception handler used, but unwind semantics
+                             # are not enabled.
   }
 
   if (is_android && (angle_enable_gl || angle_enable_vulkan)) {
@@ -723,12 +679,14 @@ angle_source_set("libANGLE_base") {
       sources += libangle_gl_egl_dl_sources
       sources += libangle_gl_egl_android_sources
     }
+    if (is_linux) {
+      sources += libangle_gl_egl_sources
+      sources += libangle_gl_egl_dl_sources
+    }
     if (ozone_platform_gbm) {
       configs += [ ":libdrm" ]
       defines += [ "ANGLE_USE_OZONE" ]
       deps += [ "//third_party/minigbm" ]
-      sources += libangle_gl_egl_sources
-      sources += libangle_gl_egl_dl_sources
       sources += libangle_gl_ozone_sources
     }
   }
@@ -754,9 +712,7 @@ angle_source_set("libANGLE_base") {
   # Windows ARM64 is available since 10.0.16299 so no need to copy
   # d3dcompiler_47.dll because this file is available as inbox.
   if (_use_copy_compiler_dll) {
-    data_deps = [
-      ":copy_compiler_dll",
-    ]
+    data_deps = [ ":copy_compiler_dll" ]
   }
 }
 
@@ -769,13 +725,9 @@ config("angle_frame_capture_enabled") {
 }
 
 angle_source_set("libANGLE") {
-  public_deps = [
-    ":libANGLE_base",
-  ]
+  public_deps = [ ":libANGLE_base" ]
   public_configs = [ ":angle_frame_capture_disabled" ]
-  sources = [
-    "src/libANGLE/FrameCapture_mock.cpp",
-  ]
+  sources = [ "src/libANGLE/FrameCapture_mock.cpp" ]
 
   # gl_enum_utils defaults included in with_capture build
   deps = []
@@ -785,19 +737,28 @@ angle_source_set("libANGLE") {
 }
 
 angle_source_set("angle_gl_enum_utils") {
-  public_deps = [
-    ":libANGLE_base",
-  ]
+  public_deps = [ ":libANGLE_base" ]
   sources = [
     "src/libANGLE/gl_enum_utils.cpp",
     "src/libANGLE/gl_enum_utils_autogen.cpp",
   ]
 }
 
-angle_source_set("libANGLE_with_capture") {
-  public_deps = [
-    ":libANGLE_base",
+config("angle_compression_config") {
+  include_dirs = [ "//third_party/zlib/google" ]
+}
+
+group("angle_compression") {
+  public_configs = [
+    ":angle_compression_config",
+    "//third_party/zlib:zlib_config",
   ]
+  public_deps = [ "//third_party/zlib/google:compression_utils_portable" ]
+}
+
+angle_source_set("libANGLE_with_capture") {
+  public_deps = [ ":libANGLE_base" ]
+  deps = [ ":angle_compression" ]
   public_configs = [ ":angle_frame_capture_enabled" ]
   sources = libangle_capture_sources
 }
@@ -810,6 +771,16 @@ config("shared_library_public_config") {
       "-rpath",
       "@executable_path/",
     ]
+    if (build_with_chromium) {
+      ldflags += [
+        # Path for loading shared libraries for unbundled binaries.
+        # From //build/config/mac/BUILD.gn, this is only added for
+        # component builds. However, since ANGLE always dynamically
+        # links to libvulkan, it should be re-added for non-component
+        # builds. (anglebug.com/4455)
+        "-Wl,-rpath,@loader_path/.",
+      ]
+    }
   }
 
   if (angle_is_winuwp) {
@@ -824,10 +795,17 @@ config("shared_library_public_config") {
 }
 
 config("library_name_config") {
-  defines = [
-    "ANGLE_EGL_LIBRARY_NAME=\"libEGL${angle_libs_suffix}\"",
-    "ANGLE_GLESV2_LIBRARY_NAME=\"libGLESv2${angle_libs_suffix}\"",
-  ]
+  if (is_component_build && is_android) {
+    defines = [
+      "ANGLE_EGL_LIBRARY_NAME=\"libEGL${angle_libs_suffix}.cr\"",
+      "ANGLE_GLESV2_LIBRARY_NAME=\"libGLESv2${angle_libs_suffix}.cr\"",
+    ]
+  } else {
+    defines = [
+      "ANGLE_EGL_LIBRARY_NAME=\"libEGL${angle_libs_suffix}\"",
+      "ANGLE_GLESV2_LIBRARY_NAME=\"libGLESv2${angle_libs_suffix}\"",
+    ]
+  }
 }
 
 # This config controls export definitions on ANGLE API calls.
@@ -866,35 +844,25 @@ template("angle_libGLESv2") {
 
     deps = invoker.deps + [ ":includes" ]
 
-    public_deps = [
-      ":angle_version",
-    ]
+    public_deps = [ ":angle_version" ]
   }
 }
 
 angle_libGLESv2("libGLESv2") {
   if (angle_with_capture_by_default) {
-    deps = [
-      ":libANGLE_with_capture",
-    ]
+    deps = [ ":libANGLE_with_capture" ]
   } else {
-    deps = [
-      ":libANGLE",
-    ]
+    deps = [ ":libANGLE" ]
   }
 }
 
 # Output capture lib when `angle_with_capture_by_default` disabled, vice versa.
 angle_libGLESv2("libGLESv2_capture_complement") {
   if (angle_with_capture_by_default) {
-    deps = [
-      ":libANGLE",
-    ]
+    deps = [ ":libANGLE" ]
     output_name += "_no_capture"
   } else {
-    deps = [
-      ":libANGLE_with_capture",
-    ]
+    deps = [ ":libANGLE_with_capture" ]
     output_name += "_with_capture"
   }
 }
@@ -922,9 +890,7 @@ if (is_win && !angle_is_winuwp) {
       ":libANGLE",
     ]
 
-    public_deps = [
-      ":angle_version",
-    ]
+    public_deps = [ ":angle_version" ]
   }
 }
 
@@ -932,12 +898,8 @@ angle_static_library("libGLESv2_static") {
   sources = libglesv2_sources
   configs += [ ":debug_annotations_config" ]
   public_configs += [ ":angle_static" ]
-  deps = [
-    ":includes",
-  ]
-  public_deps = [
-    ":libANGLE",
-  ]
+  deps = [ ":includes" ]
+  public_deps = [ ":libANGLE" ]
 }
 
 angle_shared_library("libGLESv1_CM") {
@@ -983,9 +945,7 @@ angle_source_set("libEGL_egl_loader") {
     ":gl_prototypes",
   ]
 
-  deps = [
-    ":includes",
-  ]
+  deps = [ ":includes" ]
 }
 
 angle_shared_library("libEGL") {
@@ -1015,13 +975,9 @@ angle_shared_library("libEGL") {
     ":libEGL_egl_loader",
   ]
 
-  public_deps = [
-    ":includes",
-  ]
+  public_deps = [ ":includes" ]
 
-  data_deps = [
-    ":libGLESv2",
-  ]
+  data_deps = [ ":libGLESv2" ]
 }
 
 angle_static_library("libEGL_static") {
@@ -1045,13 +1001,9 @@ angle_static_library("libEGL_static") {
 angle_executable("angle_shader_translator") {
   testonly = true
 
-  sources = [
-    "samples/shader_translator/shader_translator.cpp",
-  ]
+  sources = [ "samples/shader_translator/shader_translator.cpp" ]
 
-  deps = [
-    ":translator",
-  ]
+  deps = [ ":translator" ]
 }
 
 if (angle_has_build) {
@@ -1125,9 +1077,7 @@ if (!is_component_build && is_android && symbol_level != 0) {
       }
     }
 
-    outputs = [
-      "$root_out_dir/lib.compressed/{{source_file_part}}",
-    ]
+    outputs = [ "$root_out_dir/lib.compressed/{{source_file_part}}" ]
 
     android_nm = "${android_tool_prefix}nm"
     android_strip = "${android_tool_prefix}strip"
@@ -1156,16 +1106,14 @@ if (build_with_chromium && !is_component_build && is_android &&
   }
 
   group("angle_apks") {
-    deps = [
-      ":angle_chromium_apk",
-    ]
+    deps = [ ":angle_chromium_apk" ]
   }
 }
 
 group("angle") {
   data_deps = [
+    ":libEGL",
     ":libGLESv1_CM",
     ":libGLESv2",
-    ":libEGL",
   ]
 }
index b67797b..a30eeae 100644 (file)
@@ -162,15 +162,23 @@ Samsung Electronics, Inc.
  Kyeongmin Kim
  Minkyu Jeong
  Mohan Maiya
+ Peter Mowry
  Sangwon Park
 
 Arm Ltd.
  Fei Yang
  Xinyi He
  Sunny Sun
+ Xiaoxuan Liu
+ Ancheng Qiao
+ Amy Liu
+ Jian Li
 
 Broadcom Inc.
  Gary Sweet
 
 Facebook, Inc.
  Artem Bolgar
+
+The Khronos Group, Inc.
+ Alexey Knyazev
index 5893a32..441b89f 100644 (file)
@@ -1,3 +1,20 @@
+2020-05-14  Kenneth Russell  <kbr@chromium.org>
+
+        Update ANGLE to 2020-03-27
+        https://bugs.webkit.org/show_bug.cgi?id=209689
+
+        Reviewed by Darin Adler.
+
+        Re-applying this patch now that we have a fix for 210992.
+
+        Use update-angle.sh script by James Darpinian to roll ANGLE to
+        commit b387ce9389ede6a4ed3b831ab1b8187927fa295f in
+        https://chromium.googlesource.com/angle/angle .
+
+        changes.diff has been auto-updated with Apple's diffs relative to
+        upstream. No additional manual changes are made in this roll.
+        Long autogenerated file list omitted.
+
 2020-05-08  David Kilzer  <ddkilzer@apple.com>
 
         Remove empty directories from from svn.webkit.org repository
index ac1c04a..2ffe6df 100644 (file)
@@ -153,6 +153,8 @@ set(angle_translator_sources
     "src/compiler/translator/tree_ops/RegenerateStructNames.h"
     "src/compiler/translator/tree_ops/RemoveArrayLengthMethod.cpp"
     "src/compiler/translator/tree_ops/RemoveArrayLengthMethod.h"
+    "src/compiler/translator/tree_ops/RemoveAtomicCounterBuiltins.cpp"
+    "src/compiler/translator/tree_ops/RemoveAtomicCounterBuiltins.h"
     "src/compiler/translator/tree_ops/RemoveDynamicIndexing.cpp"
     "src/compiler/translator/tree_ops/RemoveDynamicIndexing.h"
     "src/compiler/translator/tree_ops/RemoveInactiveInterfaceVariables.cpp"
index e755579..aa6929c 100644 (file)
@@ -19,13 +19,13 @@ vars = {
   'checkout_angle_internal': False,
 
   # Version of Chromium our Chromium-based DEPS are mirrored from.
-  'chromium_revision': '8ffb18d0b983532c6c2639de67b2efc93b4df2d3',
+  'chromium_revision': 'fa9d5805c421133e9d13cf698c4502d13398b2ce',
 
   # Current revision of VK-GL-CTS (a.k.a dEQP).
-  'vk_gl_cts_revision': 'd99a765d38d35deeb3f27cf30d9d6fe4f183510e',
+  'vk_gl_cts_revision': 'a6b249819f7177821d4b7eefff36af07fef71825',
 
   # Current revision of glslang, the Khronos SPIRV compiler.
-  'glslang_revision': '5e86b28ffb8124a5ee2a58c640245ee5b285110d',
+  'glslang_revision': '99508c1ce389e678a79b00159fe0c0d13f08f213',
 
   # Current revision of googletest.
   # Note: this dep cannot be auto-rolled b/c of nesting.
@@ -43,22 +43,22 @@ vars = {
   'spirv_cross_revision': 'fd5aa3ad51ece55a1b51fe6bfb271db6844ae291',
 
   # Current revision fo the SPIRV-Headers Vulkan support library.
-  'spirv_headers_revision': 'dc77030acc9c6fe7ca21fff54c5a9d7b532d7da6',
+  'spirv_headers_revision': 'f8bf11a0253a32375c32cad92c841237b96696c0',
 
   # Current revision of SPIRV-Tools for Vulkan.
-  'spirv_tools_revision': '7a2d408dea60aa1f8d53e123b01277c41b8f83b9',
+  'spirv_tools_revision': 'fd773eb50d628c1981338addc093df879757c2cf',
 
   # Current revision of Khronos Vulkan-Headers.
-  'vulkan_headers_revision': '7264358702061d3ed819d62d3d6fd66ab1da33c3',
+  'vulkan_headers_revision': '0e78ffd1dcfc3e9f14a966b9660dbc59bd967c5c',
 
   # Current revision of Khronos Vulkan-Loader.
-  'vulkan_loader_revision': 'fb94ccddb725516243644206ab07f0b82e1f0a5e',
+  'vulkan_loader_revision': 'cc481ef276315d54db4381b2d5dffac2b5824cbf',
 
   # Current revision of Khronos Vulkan-Tools.
-  'vulkan_tools_revision': '260679605f9843ae2cf06cfc0e44dc0d25be71b9',
+  'vulkan_tools_revision': 'bec7b6e29260caa9348b1fd42b5d65443d512748',
 
   # Current revision of Khronos Vulkan-ValidationLayers.
-  'vulkan_validation_revision': 'e85fe4c3cc9f6c12d887d2ef912241241e0f5ffa',
+  'vulkan_validation_revision': '55f01953d6e9d6db625f57bebbbc7a36a132ad88',
 
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling catapult
@@ -69,17 +69,17 @@ vars = {
 deps = {
 
   'build': {
-    'url': '{chromium_git}/chromium/src/build.git@e5293d8fa2889a240bf47428369caf0d9e2f3dc7',
+    'url': '{chromium_git}/chromium/src/build.git@a1cbf6469a5400f2b455ffba2e95ea47a1b47c94',
     'condition': 'not build_with_chromium',
   },
 
   'buildtools': {
-    'url': '{chromium_git}/chromium/src/buildtools.git@afc5b798c72905e85f9991152be878714c579958',
+    'url': '{chromium_git}/chromium/src/buildtools.git@4164a305626786b1912d467003acf4c4995bec7d',
     'condition': 'not build_with_chromium',
   },
 
   'testing': {
-    'url': '{chromium_git}/chromium/src/testing@cf6ed46cffec37285fb5d8acc1cce59da967ceca',
+    'url': '{chromium_git}/chromium/src/testing@3e21eec53c1688302ebc26e975d0163256bd1a15',
     'condition': 'not build_with_chromium',
   },
 
@@ -115,7 +115,7 @@ deps = {
   },
 
   'third_party/googletest': {
-    'url': '{chromium_git}/chromium/src/third_party/googletest@c83f99e10cff7d90190a22a79f294ea9e340f4e6',
+    'url': '{chromium_git}/chromium/src/third_party/googletest@c96dc321101e7c9f5ba16d957afd49ee4db30548',
     'condition': 'not build_with_chromium',
   },
 
@@ -182,7 +182,7 @@ deps = {
   },
 
   'third_party/SwiftShader': {
-    'url': '{swiftshader_git}/SwiftShader@41a7302e9c62c207e5ac5bcce40f16a1e418c42b',
+    'url': '{swiftshader_git}/SwiftShader@02e15b249b12fe4e1ca5e303a5a0de0668950536',
     'condition': 'not build_with_chromium',
   },
 
@@ -203,17 +203,17 @@ deps = {
   },
 
   'third_party/yasm': {
-    'url': '{chromium_git}/chromium/src/third_party/yasm@0d0134789a7df47da9ec64fb937849571f58bdb4',
+    'url': '{chromium_git}/chromium/src/third_party/yasm@8e4e548d0b199df58740336024c1b3baf7c0abd7',
     'condition': 'not build_with_chromium',
   },
 
   'third_party/zlib': {
-    'url': '{chromium_git}/chromium/src/third_party/zlib@b9b9a5af7cca2e683e5f2aead8418e5bf9d5a7d5',
+    'url': '{chromium_git}/chromium/src/third_party/zlib@156be8c52f80cde343088b4a69a80579101b6e67',
     'condition': 'not build_with_chromium',
   },
 
   'tools/clang': {
-    'url': '{chromium_git}/chromium/src/tools/clang.git@953ea7aff8c12dbd015f193d52e5abf276d41e85',
+    'url': '{chromium_git}/chromium/src/tools/clang.git@d60a6a8084300eb8de99e56b559369dcde4cffa4',
     'condition': 'not build_with_chromium',
   },
 
@@ -422,7 +422,7 @@ hooks = [
                 '--recursive',
                 '--extract',
                 '--bucket', 'chrome-angle-capture-binaries',
-                './src/tests/perf_tests/restricted_traces',
+                'src/tests/perf_tests/restricted_traces',
     ]
   }
 ]
index a8ca8cf..ef3dc72 100644 (file)
@@ -197,6 +197,7 @@ set(libangle_includes
     "include/platform/FeaturesVk.h"
     "include/platform/FrontendFeatures.h"
     "include/platform/Platform.h"
+    "include/vulkan/vulkan_fuchsia_ext.h"
 )
 
 
@@ -250,10 +251,10 @@ set(libangle_headers
     "src/libANGLE/GLES1Shaders.inc"
     "src/libANGLE/GLES1State.h"
     "src/libANGLE/HandleAllocator.h"
-    "src/libANGLE/HandleRangeAllocator.h"
     "src/libANGLE/Image.h"
     "src/libANGLE/ImageIndex.h"
     "src/libANGLE/IndexRangeCache.h"
+    "src/libANGLE/InfoLog.h"
     "src/libANGLE/LoggingAnnotator.h"
     "src/libANGLE/MemoryObject.h"
     "src/libANGLE/MemoryProgramCache.h"
@@ -265,8 +266,8 @@ set(libangle_headers
     "src/libANGLE/Overlay_autogen.cpp"
     "src/libANGLE/Overlay_font_autogen.cpp"
     "src/libANGLE/Overlay_font_autogen.h"
-    "src/libANGLE/Path.h"
     "src/libANGLE/Program.h"
+    "src/libANGLE/ProgramExecutable.h"
     "src/libANGLE/ProgramLinkedResources.h"
     "src/libANGLE/ProgramPipeline.h"
     "src/libANGLE/Query.h"
@@ -319,7 +320,6 @@ set(libangle_headers
     "src/libANGLE/renderer/ImageImpl.h"
     "src/libANGLE/renderer/MemoryObjectImpl.h"
     "src/libANGLE/renderer/OverlayImpl.h"
-    "src/libANGLE/renderer/PathImpl.h"
     "src/libANGLE/renderer/ProgramImpl.h"
     "src/libANGLE/renderer/ProgramPipelineImpl.h"
     "src/libANGLE/renderer/QueryImpl.h"
@@ -397,7 +397,6 @@ set(libangle_sources
     "src/libANGLE/GLES1Renderer.cpp"
     "src/libANGLE/GLES1State.cpp"
     "src/libANGLE/HandleAllocator.cpp"
-    "src/libANGLE/HandleRangeAllocator.cpp"
     "src/libANGLE/Image.cpp"
     "src/libANGLE/ImageIndex.cpp"
     "src/libANGLE/IndexRangeCache.cpp"
@@ -405,9 +404,9 @@ set(libangle_sources
     "src/libANGLE/MemoryObject.cpp"
     "src/libANGLE/MemoryProgramCache.cpp"
     "src/libANGLE/Observer.cpp"
-    "src/libANGLE/Path.cpp"
     "src/libANGLE/Platform.cpp"
     "src/libANGLE/Program.cpp"
+    "src/libANGLE/ProgramExecutable.cpp"
     "src/libANGLE/ProgramLinkedResources.cpp"
     "src/libANGLE/ProgramPipeline.cpp"
     "src/libANGLE/Query.cpp"
@@ -436,7 +435,6 @@ set(libangle_sources
     "src/libANGLE/queryconversions.cpp"
     "src/libANGLE/queryutils.cpp"
     "src/libANGLE/renderer/ContextImpl.cpp"
-    "src/libANGLE/renderer/driver_utils.cpp"
     "src/libANGLE/renderer/DeviceImpl.cpp"
     "src/libANGLE/renderer/DisplayImpl.cpp"
     "src/libANGLE/renderer/Format_table_autogen.cpp"
@@ -444,6 +442,7 @@ set(libangle_sources
     "src/libANGLE/renderer/ShaderImpl.cpp"
     "src/libANGLE/renderer/SurfaceImpl.cpp"
     "src/libANGLE/renderer/TextureImpl.cpp"
+    "src/libANGLE/renderer/driver_utils.cpp"
     "src/libANGLE/renderer/load_functions_table_autogen.cpp"
     "src/libANGLE/renderer/renderer_utils.cpp"
     "src/libANGLE/validationEGL.cpp"
@@ -455,18 +454,18 @@ set(libangle_sources
     "src/libANGLE/validationES32.cpp"
     "src/libANGLE/validationESEXT.cpp"
     "src/libANGLE/validationGL1.cpp"
-    "src/libANGLE/validationGL2.cpp"
-    "src/libANGLE/validationGL3.cpp"
-    "src/libANGLE/validationGL4.cpp"
     "src/libANGLE/validationGL11.cpp"
     "src/libANGLE/validationGL12.cpp"
+    "src/libANGLE/validationGL13.cpp"
     "src/libANGLE/validationGL14.cpp"
     "src/libANGLE/validationGL15.cpp"
-    "src/libANGLE/validationGL13.cpp"
+    "src/libANGLE/validationGL2.cpp"
     "src/libANGLE/validationGL21.cpp"
+    "src/libANGLE/validationGL3.cpp"
     "src/libANGLE/validationGL31.cpp"
     "src/libANGLE/validationGL32.cpp"
     "src/libANGLE/validationGL33.cpp"
+    "src/libANGLE/validationGL4.cpp"
     "src/libANGLE/validationGL41.cpp"
     "src/libANGLE/validationGL42.cpp"
     "src/libANGLE/validationGL43.cpp"
@@ -492,7 +491,6 @@ set(libangle_d3d_shared_sources
     "src/libANGLE/renderer/d3d/DynamicImage2DHLSL.h"
     "src/libANGLE/renderer/d3d/EGLImageD3D.cpp"
     "src/libANGLE/renderer/d3d/EGLImageD3D.h"
-    "src/libANGLE/renderer/d3d/formatutilsD3D.h"
     "src/libANGLE/renderer/d3d/FramebufferD3D.cpp"
     "src/libANGLE/renderer/d3d/FramebufferD3D.h"
     "src/libANGLE/renderer/d3d/HLSLCompiler.cpp"
@@ -507,12 +505,12 @@ set(libangle_d3d_shared_sources
     "src/libANGLE/renderer/d3d/NativeWindowD3D.h"
     "src/libANGLE/renderer/d3d/ProgramD3D.cpp"
     "src/libANGLE/renderer/d3d/ProgramD3D.h"
+    "src/libANGLE/renderer/d3d/RenderTargetD3D.cpp"
+    "src/libANGLE/renderer/d3d/RenderTargetD3D.h"
     "src/libANGLE/renderer/d3d/RenderbufferD3D.cpp"
     "src/libANGLE/renderer/d3d/RenderbufferD3D.h"
     "src/libANGLE/renderer/d3d/RendererD3D.cpp"
     "src/libANGLE/renderer/d3d/RendererD3D.h"
-    "src/libANGLE/renderer/d3d/RenderTargetD3D.h"
-    "src/libANGLE/renderer/d3d/RenderTargetD3D.cpp"
     "src/libANGLE/renderer/d3d/SamplerD3D.h"
     "src/libANGLE/renderer/d3d/ShaderD3D.cpp"
     "src/libANGLE/renderer/d3d/ShaderD3D.h"
@@ -529,6 +527,7 @@ set(libangle_d3d_shared_sources
     "src/libANGLE/renderer/d3d/VertexBuffer.h"
     "src/libANGLE/renderer/d3d/VertexDataManager.cpp"
     "src/libANGLE/renderer/d3d/VertexDataManager.h"
+    "src/libANGLE/renderer/d3d/formatutilsD3D.h"
 )
 
 
@@ -543,8 +542,6 @@ set(libangle_d3d9_sources
     "src/libANGLE/renderer/d3d/d3d9/DebugAnnotator9.h"
     "src/libANGLE/renderer/d3d/d3d9/Fence9.cpp"
     "src/libANGLE/renderer/d3d/d3d9/Fence9.h"
-    "src/libANGLE/renderer/d3d/d3d9/formatutils9.cpp"
-    "src/libANGLE/renderer/d3d/d3d9/formatutils9.h"
     "src/libANGLE/renderer/d3d/d3d9/Framebuffer9.cpp"
     "src/libANGLE/renderer/d3d/d3d9/Framebuffer9.h"
     "src/libANGLE/renderer/d3d/d3d9/Image9.cpp"
@@ -555,23 +552,13 @@ set(libangle_d3d9_sources
     "src/libANGLE/renderer/d3d/d3d9/NativeWindow9.h"
     "src/libANGLE/renderer/d3d/d3d9/Query9.cpp"
     "src/libANGLE/renderer/d3d/d3d9/Query9.h"
-    "src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp"
-    "src/libANGLE/renderer/d3d/d3d9/Renderer9.h"
-    "src/libANGLE/renderer/d3d/d3d9/renderer9_utils.cpp"
-    "src/libANGLE/renderer/d3d/d3d9/renderer9_utils.h"
     "src/libANGLE/renderer/d3d/d3d9/RenderTarget9.cpp"
     "src/libANGLE/renderer/d3d/d3d9/RenderTarget9.h"
+    "src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp"
+    "src/libANGLE/renderer/d3d/d3d9/Renderer9.h"
     "src/libANGLE/renderer/d3d/d3d9/ShaderCache.h"
     "src/libANGLE/renderer/d3d/d3d9/ShaderExecutable9.cpp"
     "src/libANGLE/renderer/d3d/d3d9/ShaderExecutable9.h"
-    "src/libANGLE/renderer/d3d/d3d9/shaders/compiled/componentmaskps.h"
-    "src/libANGLE/renderer/d3d/d3d9/shaders/compiled/componentmaskpremultps.h"
-    "src/libANGLE/renderer/d3d/d3d9/shaders/compiled/componentmaskunmultps.h"
-    "src/libANGLE/renderer/d3d/d3d9/shaders/compiled/luminanceps.h"
-    "src/libANGLE/renderer/d3d/d3d9/shaders/compiled/luminancepremultps.h"
-    "src/libANGLE/renderer/d3d/d3d9/shaders/compiled/luminanceunmultps.h"
-    "src/libANGLE/renderer/d3d/d3d9/shaders/compiled/passthroughps.h"
-    "src/libANGLE/renderer/d3d/d3d9/shaders/compiled/standardvs.h"
     "src/libANGLE/renderer/d3d/d3d9/StateManager9.cpp"
     "src/libANGLE/renderer/d3d/d3d9/StateManager9.h"
     "src/libANGLE/renderer/d3d/d3d9/SwapChain9.cpp"
@@ -581,9 +568,21 @@ set(libangle_d3d9_sources
     "src/libANGLE/renderer/d3d/d3d9/VertexArray9.h"
     "src/libANGLE/renderer/d3d/d3d9/VertexBuffer9.cpp"
     "src/libANGLE/renderer/d3d/d3d9/VertexBuffer9.h"
-    "src/libANGLE/renderer/d3d/d3d9/vertexconversion.h"
     "src/libANGLE/renderer/d3d/d3d9/VertexDeclarationCache.cpp"
     "src/libANGLE/renderer/d3d/d3d9/VertexDeclarationCache.h"
+    "src/libANGLE/renderer/d3d/d3d9/formatutils9.cpp"
+    "src/libANGLE/renderer/d3d/d3d9/formatutils9.h"
+    "src/libANGLE/renderer/d3d/d3d9/renderer9_utils.cpp"
+    "src/libANGLE/renderer/d3d/d3d9/renderer9_utils.h"
+    "src/libANGLE/renderer/d3d/d3d9/shaders/compiled/componentmaskpremultps.h"
+    "src/libANGLE/renderer/d3d/d3d9/shaders/compiled/componentmaskps.h"
+    "src/libANGLE/renderer/d3d/d3d9/shaders/compiled/componentmaskunmultps.h"
+    "src/libANGLE/renderer/d3d/d3d9/shaders/compiled/luminancepremultps.h"
+    "src/libANGLE/renderer/d3d/d3d9/shaders/compiled/luminanceps.h"
+    "src/libANGLE/renderer/d3d/d3d9/shaders/compiled/luminanceunmultps.h"
+    "src/libANGLE/renderer/d3d/d3d9/shaders/compiled/passthroughps.h"
+    "src/libANGLE/renderer/d3d/d3d9/shaders/compiled/standardvs.h"
+    "src/libANGLE/renderer/d3d/d3d9/vertexconversion.h"
 )
 
 
@@ -599,15 +598,10 @@ set(libangle_d3d11_sources
     "src/libANGLE/renderer/d3d/d3d11/Context11.h"
     "src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp"
     "src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.h"
-    "src/libANGLE/renderer/d3d/d3d11/dxgi_format_map_autogen.cpp"
-    "src/libANGLE/renderer/d3d/d3d11/dxgi_support_table_autogen.cpp"
-    "src/libANGLE/renderer/d3d/d3d11/dxgi_support_table.h"
     "src/libANGLE/renderer/d3d/d3d11/ExternalImageSiblingImpl11.cpp"
     "src/libANGLE/renderer/d3d/d3d11/ExternalImageSiblingImpl11.h"
     "src/libANGLE/renderer/d3d/d3d11/Fence11.cpp"
     "src/libANGLE/renderer/d3d/d3d11/Fence11.h"
-    "src/libANGLE/renderer/d3d/d3d11/formatutils11.cpp"
-    "src/libANGLE/renderer/d3d/d3d11/formatutils11.h"
     "src/libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp"
     "src/libANGLE/renderer/d3d/d3d11/Framebuffer11.h"
     "src/libANGLE/renderer/d3d/d3d11/Image11.cpp"
@@ -616,9 +610,9 @@ set(libangle_d3d11_sources
     "src/libANGLE/renderer/d3d/d3d11/IndexBuffer11.h"
     "src/libANGLE/renderer/d3d/d3d11/InputLayoutCache.cpp"
     "src/libANGLE/renderer/d3d/d3d11/InputLayoutCache.h"
-    "src/libANGLE/renderer/d3d/d3d11/NativeWindow11.h"
     "src/libANGLE/renderer/d3d/d3d11/MappedSubresourceVerifier11.cpp"
     "src/libANGLE/renderer/d3d/d3d11/MappedSubresourceVerifier11.h"
+    "src/libANGLE/renderer/d3d/d3d11/NativeWindow11.h"
     "src/libANGLE/renderer/d3d/d3d11/PixelTransfer11.cpp"
     "src/libANGLE/renderer/d3d/d3d11/PixelTransfer11.h"
     "src/libANGLE/renderer/d3d/d3d11/Program11.cpp"
@@ -627,18 +621,39 @@ set(libangle_d3d11_sources
     "src/libANGLE/renderer/d3d/d3d11/ProgramPipeline11.h"
     "src/libANGLE/renderer/d3d/d3d11/Query11.cpp"
     "src/libANGLE/renderer/d3d/d3d11/Query11.h"
-    "src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp"
-    "src/libANGLE/renderer/d3d/d3d11/Renderer11.h"
-    "src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp"
-    "src/libANGLE/renderer/d3d/d3d11/renderer11_utils.h"
     "src/libANGLE/renderer/d3d/d3d11/RenderStateCache.cpp"
     "src/libANGLE/renderer/d3d/d3d11/RenderStateCache.h"
     "src/libANGLE/renderer/d3d/d3d11/RenderTarget11.cpp"
     "src/libANGLE/renderer/d3d/d3d11/RenderTarget11.h"
+    "src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp"
+    "src/libANGLE/renderer/d3d/d3d11/Renderer11.h"
     "src/libANGLE/renderer/d3d/d3d11/ResourceManager11.cpp"
     "src/libANGLE/renderer/d3d/d3d11/ResourceManager11.h"
     "src/libANGLE/renderer/d3d/d3d11/ShaderExecutable11.cpp"
     "src/libANGLE/renderer/d3d/d3d11/ShaderExecutable11.h"
+    "src/libANGLE/renderer/d3d/d3d11/StateManager11.cpp"
+    "src/libANGLE/renderer/d3d/d3d11/StateManager11.h"
+    "src/libANGLE/renderer/d3d/d3d11/StreamProducerD3DTexture.cpp"
+    "src/libANGLE/renderer/d3d/d3d11/StreamProducerD3DTexture.h"
+    "src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp"
+    "src/libANGLE/renderer/d3d/d3d11/SwapChain11.h"
+    "src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp"
+    "src/libANGLE/renderer/d3d/d3d11/TextureStorage11.h"
+    "src/libANGLE/renderer/d3d/d3d11/TransformFeedback11.cpp"
+    "src/libANGLE/renderer/d3d/d3d11/TransformFeedback11.h"
+    "src/libANGLE/renderer/d3d/d3d11/Trim11.cpp"
+    "src/libANGLE/renderer/d3d/d3d11/Trim11.h"
+    "src/libANGLE/renderer/d3d/d3d11/VertexArray11.cpp"
+    "src/libANGLE/renderer/d3d/d3d11/VertexArray11.h"
+    "src/libANGLE/renderer/d3d/d3d11/VertexBuffer11.cpp"
+    "src/libANGLE/renderer/d3d/d3d11/VertexBuffer11.h"
+    "src/libANGLE/renderer/d3d/d3d11/dxgi_format_map_autogen.cpp"
+    "src/libANGLE/renderer/d3d/d3d11/dxgi_support_table.h"
+    "src/libANGLE/renderer/d3d/d3d11/dxgi_support_table_autogen.cpp"
+    "src/libANGLE/renderer/d3d/d3d11/formatutils11.cpp"
+    "src/libANGLE/renderer/d3d/d3d11/formatutils11.h"
+    "src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp"
+    "src/libANGLE/renderer/d3d/d3d11/renderer11_utils.h"
     "src/libANGLE/renderer/d3d/d3d11/shaders/compiled/buffertotexture11_gs.h"
     "src/libANGLE/renderer/d3d/d3d11/shaders/compiled/buffertotexture11_ps_4f.h"
     "src/libANGLE/renderer/d3d/d3d11/shaders/compiled/buffertotexture11_ps_4i.h"
@@ -693,34 +708,18 @@ set(libangle_d3d11_sources
     "src/libANGLE/renderer/d3d/d3d11/shaders/compiled/swizzleui2darrayps.h"
     "src/libANGLE/renderer/d3d/d3d11/shaders/compiled/swizzleui2dps.h"
     "src/libANGLE/renderer/d3d/d3d11/shaders/compiled/swizzleui3dps.h"
-    "src/libANGLE/renderer/d3d/d3d11/StateManager11.cpp"
-    "src/libANGLE/renderer/d3d/d3d11/StateManager11.h"
-    "src/libANGLE/renderer/d3d/d3d11/StreamProducerD3DTexture.cpp"
-    "src/libANGLE/renderer/d3d/d3d11/StreamProducerD3DTexture.h"
-    "src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp"
-    "src/libANGLE/renderer/d3d/d3d11/SwapChain11.h"
     "src/libANGLE/renderer/d3d/d3d11/texture_format_table.cpp"
     "src/libANGLE/renderer/d3d/d3d11/texture_format_table.h"
     "src/libANGLE/renderer/d3d/d3d11/texture_format_table_autogen.cpp"
     "src/libANGLE/renderer/d3d/d3d11/texture_format_table_utils.h"
-    "src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp"
-    "src/libANGLE/renderer/d3d/d3d11/TextureStorage11.h"
-    "src/libANGLE/renderer/d3d/d3d11/TransformFeedback11.cpp"
-    "src/libANGLE/renderer/d3d/d3d11/TransformFeedback11.h"
-    "src/libANGLE/renderer/d3d/d3d11/Trim11.cpp"
-    "src/libANGLE/renderer/d3d/d3d11/Trim11.h"
-    "src/libANGLE/renderer/d3d/d3d11/VertexArray11.cpp"
-    "src/libANGLE/renderer/d3d/d3d11/VertexArray11.h"
-    "src/libANGLE/renderer/d3d/d3d11/VertexBuffer11.cpp"
-    "src/libANGLE/renderer/d3d/d3d11/VertexBuffer11.h"
 )
 
 
 set(libangle_d3d11_win32_sources
-    "src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow11Win32.cpp"
-    "src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow11Win32.h"
     "src/libANGLE/renderer/d3d/d3d11/converged/CompositorNativeWindow11.cpp"
     "src/libANGLE/renderer/d3d/d3d11/converged/CompositorNativeWindow11.h"
+    "src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow11Win32.cpp"
+    "src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow11Win32.h"
     "src/third_party/systeminfo/SystemInfo.cpp"
     "src/third_party/systeminfo/SystemInfo.h"
 )
@@ -763,8 +762,6 @@ set(libangle_gl_sources
     "src/libANGLE/renderer/gl/ImageGL.h"
     "src/libANGLE/renderer/gl/MemoryObjectGL.cpp"
     "src/libANGLE/renderer/gl/MemoryObjectGL.h"
-    "src/libANGLE/renderer/gl/PathGL.h"
-    "src/libANGLE/renderer/gl/PathGL.cpp"
     "src/libANGLE/renderer/gl/ProgramGL.cpp"
     "src/libANGLE/renderer/gl/ProgramGL.h"
     "src/libANGLE/renderer/gl/ProgramPipelineGL.cpp"
@@ -813,10 +810,10 @@ set(libangle_gl_wgl_sources
     "src/libANGLE/renderer/gl/wgl/ContextWGL.h"
     "src/libANGLE/renderer/gl/wgl/D3DTextureSurfaceWGL.cpp"
     "src/libANGLE/renderer/gl/wgl/D3DTextureSurfaceWGL.h"
-    "src/libANGLE/renderer/gl/wgl/DisplayWGL.cpp"
-    "src/libANGLE/renderer/gl/wgl/DisplayWGL.h"
     "src/libANGLE/renderer/gl/wgl/DXGISwapChainWindowSurfaceWGL.cpp"
     "src/libANGLE/renderer/gl/wgl/DXGISwapChainWindowSurfaceWGL.h"
+    "src/libANGLE/renderer/gl/wgl/DisplayWGL.cpp"
+    "src/libANGLE/renderer/gl/wgl/DisplayWGL.h"
     "src/libANGLE/renderer/gl/wgl/FunctionsWGL.cpp"
     "src/libANGLE/renderer/gl/wgl/FunctionsWGL.h"
     "src/libANGLE/renderer/gl/wgl/PbufferSurfaceWGL.cpp"
@@ -838,10 +835,10 @@ set(libangle_gl_glx_sources
     "src/libANGLE/renderer/gl/glx/DisplayGLX.h"
     "src/libANGLE/renderer/gl/glx/FunctionsGLX.cpp"
     "src/libANGLE/renderer/gl/glx/FunctionsGLX.h"
-    "src/libANGLE/renderer/gl/glx/RendererGLX.h"
-    "src/libANGLE/renderer/gl/glx/RendererGLX.cpp"
     "src/libANGLE/renderer/gl/glx/PbufferSurfaceGLX.cpp"
     "src/libANGLE/renderer/gl/glx/PbufferSurfaceGLX.h"
+    "src/libANGLE/renderer/gl/glx/RendererGLX.cpp"
+    "src/libANGLE/renderer/gl/glx/RendererGLX.h"
     "src/libANGLE/renderer/gl/glx/SurfaceGLX.h"
     "src/libANGLE/renderer/gl/glx/WindowSurfaceGLX.cpp"
     "src/libANGLE/renderer/gl/glx/WindowSurfaceGLX.h"
@@ -856,13 +853,10 @@ set(libangle_gl_egl_sources
     "src/libANGLE/renderer/gl/egl/DisplayEGL.cpp"
     "src/libANGLE/renderer/gl/egl/DisplayEGL.h"
     "src/libANGLE/renderer/gl/egl/ExternalImageSiblingEGL.h"
-    "src/libANGLE/renderer/gl/egl/egl_utils.cpp"
-    "src/libANGLE/renderer/gl/egl/egl_utils.h"
     "src/libANGLE/renderer/gl/egl/FunctionsEGL.cpp"
     "src/libANGLE/renderer/gl/egl/FunctionsEGL.h"
     "src/libANGLE/renderer/gl/egl/ImageEGL.cpp"
     "src/libANGLE/renderer/gl/egl/ImageEGL.h"
-    "src/libANGLE/renderer/gl/egl/functionsegl_typedefs.h"
     "src/libANGLE/renderer/gl/egl/PbufferSurfaceEGL.cpp"
     "src/libANGLE/renderer/gl/egl/PbufferSurfaceEGL.h"
     "src/libANGLE/renderer/gl/egl/RendererEGL.cpp"
@@ -873,6 +867,9 @@ set(libangle_gl_egl_sources
     "src/libANGLE/renderer/gl/egl/SyncEGL.h"
     "src/libANGLE/renderer/gl/egl/WindowSurfaceEGL.cpp"
     "src/libANGLE/renderer/gl/egl/WindowSurfaceEGL.h"
+    "src/libANGLE/renderer/gl/egl/egl_utils.cpp"
+    "src/libANGLE/renderer/gl/egl/egl_utils.h"
+    "src/libANGLE/renderer/gl/egl/functionsegl_typedefs.h"
 )
 set(libangle_gl_egl_dl_sources
     "src/libANGLE/renderer/gl/egl/FunctionsEGLDL.cpp"
@@ -901,16 +898,16 @@ set(libangle_gl_cgl_sources
     "src/libANGLE/renderer/gl/cgl/ContextCGL.h"
     "src/libANGLE/renderer/gl/cgl/DeviceCGL.cpp"
     "src/libANGLE/renderer/gl/cgl/DeviceCGL.h"
-    "src/libANGLE/renderer/gl/cgl/DisplayCGL.mm"
     "src/libANGLE/renderer/gl/cgl/DisplayCGL.h"
+    "src/libANGLE/renderer/gl/cgl/DisplayCGL.mm"
     "src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.cpp"
     "src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.h"
-    "src/libANGLE/renderer/gl/cgl/RendererCGL.cpp"
-    "src/libANGLE/renderer/gl/cgl/RendererCGL.h"
     "src/libANGLE/renderer/gl/cgl/PbufferSurfaceCGL.cpp"
     "src/libANGLE/renderer/gl/cgl/PbufferSurfaceCGL.h"
-    "src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm"
+    "src/libANGLE/renderer/gl/cgl/RendererCGL.cpp"
+    "src/libANGLE/renderer/gl/cgl/RendererCGL.h"
     "src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.h"
+    "src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm"
 )
 
 
@@ -969,8 +966,6 @@ set(libangle_null_sources
     "src/libANGLE/renderer/null/FramebufferNULL.h"
     "src/libANGLE/renderer/null/ImageNULL.cpp"
     "src/libANGLE/renderer/null/ImageNULL.h"
-    "src/libANGLE/renderer/null/PathNULL.cpp"
-    "src/libANGLE/renderer/null/PathNULL.h"
     "src/libANGLE/renderer/null/ProgramNULL.cpp"
     "src/libANGLE/renderer/null/ProgramNULL.h"
     "src/libANGLE/renderer/null/ProgramPipelineNULL.cpp"
@@ -1032,16 +1027,16 @@ set(libgl_sources
     "src/libGL/entry_points_gl_4_3_autogen.cpp"
     "src/libGL/entry_points_gl_4_3_autogen.h"
     "src/libGL/entry_points_gl_4_4_autogen.cpp"
-    "src/libGL/entry_points_gl_4_6_autogen.cpp"
     "src/libGL/entry_points_gl_4_4_autogen.h"
     "src/libGL/entry_points_gl_4_5_autogen.cpp"
     "src/libGL/entry_points_gl_4_5_autogen.h"
+    "src/libGL/entry_points_gl_4_6_autogen.cpp"
     "src/libGL/entry_points_gl_4_6_autogen.h"
     "src/libGL/entry_points_wgl.cpp"
     "src/libGL/entry_points_wgl.h"
+    "src/libGL/libGL.rc"
     "src/libGL/libGL_autogen.cpp"
     "src/libGL/libGL_autogen.def"
-    "src/libGL/libGL.rc"
     "src/libGL/proc_table_wgl.h"
     "src/libGL/proc_table_wgl_autogen.cpp"
     "src/libGLESv2/global_state.cpp"
@@ -1073,8 +1068,8 @@ set(libglesv2_sources
     "src/libGLESv2/entry_points_gles_ext_autogen.h"
     "src/libGLESv2/global_state.cpp"
     "src/libGLESv2/global_state.h"
-    "src/libGLESv2/libGLESv2_autogen.cpp"
     "src/libGLESv2/libGLESv2.rc"
+    "src/libGLESv2/libGLESv2_autogen.cpp"
     "src/libGLESv2/proc_table_egl.h"
     "src/libGLESv2/proc_table_egl_autogen.cpp"
     "src/libGLESv2/resource.h"
@@ -1090,10 +1085,10 @@ set(libglesv1_cm_sources
 
 
 set(libegl_sources
+    "src/libEGL/egl_loader_autogen.h"
     "src/libEGL/libEGL.cpp"
     "src/libEGL/libEGL.rc"
     "src/libEGL/resource.h"
     "src/libGLESv2/entry_points_egl.h"
     "src/libGLESv2/entry_points_egl_ext.h"
-    "src/libEGL/egl_loader_autogen.h"
 )
index 57a833b..df48cfa 100644 (file)
@@ -1,9 +1,18 @@
-# See https://chromium.googlesource.com/angle/angle/+/master/doc/ContributingCode.md#selecting-reviewers for per-file owners
-cwallez@chromium.org
+# See https://chromium.googlesource.com/angle/angle/+/master/doc/ContributingCode.md#selecting-reviewers for more info
 geofflang@chromium.org
+geofflang@google.com
 jmadill@chromium.org
+jmadill@google.com
+jonahr@google.com
 syoussefi@chromium.org
+syoussefi@google.com
 ynovikov@chromium.org
+ynovikov@google.com
+
+per-file AUTHORS=*
+per-file CONTRIBUTORS=*
+per-file DEPS=*
+per-file WATCHLISTS=*
 
 # COMPONENT: Internals>GPU>ANGLE
 # TEAM: angleproject@googlegroups.com
index f71cd0c..bc286b8 100644 (file)
@@ -43,7 +43,7 @@ def _CheckChangeHasBugField(input_api, output_api):
     if len(bugs) == 1 and bugs[0] == 'None':
         return []
 
-    projects = ['angleproject', 'chromium', 'dawn', 'fuchsia', 'skia', 'swiftshader']
+    projects = ['angleproject', 'chromium', 'dawn', 'fuchsia', 'skia', 'swiftshader', 'b']
     bug_regex = re.compile(r"([a-z]+):(\d+)")
     errors = []
     extra_help = None
index 21d7c88..fa354ad 100644 (file)
@@ -2,18 +2,18 @@
 
 The goal of ANGLE is to allow users of multiple operating systems to seamlessly run WebGL and other
 OpenGL ES content by translating OpenGL ES API calls to one of the hardware-supported APIs available
-for that platform. ANGLE currently provides translation from OpenGL ES 2.0 and 3.0 to desktop
-OpenGL, OpenGL ES, Direct3D 9, and Direct3D 11. Support for translation from OpenGL ES to Vulkan is
-underway, and future plans include compute shader support (ES 3.1) and MacOS support.
+for that platform. ANGLE currently provides translation from OpenGL ES 2.0, 3.0 and 3.1 to Vulkan,
+desktop OpenGL, OpenGL ES, Direct3D 9, and Direct3D 11. Future plans include ES 3.2, translation to
+Metal and MacOS, Chrome OS, and Fuchsia support.
 
 ### Level of OpenGL ES support via backing renderers
 
 |                |  Direct3D 9   |  Direct3D 11     |   Desktop GL   |    GL ES      |    Vulkan     |    Metal      |
 |----------------|:-------------:|:----------------:|:--------------:|:-------------:|:-------------:|:-------------:|
-| OpenGL ES 2.0  |    complete   |    complete      |    complete    |   complete    |    complete   |  in progress  |
-| OpenGL ES 3.0  |               |    complete      |    complete    |   complete    |  in progress  |               |
-| OpenGL ES 3.1  |               |   in progress    |    complete    |   complete    |  in progress  |               |
-| OpenGL ES 3.2  |               |                  |    planned     |    planned    |    planned    |               |
+| OpenGL ES 2.0  |    complete   |    complete      |    complete    |    complete   |    complete   |  in progress  |
+| OpenGL ES 3.0  |               |    complete      |    complete    |    complete   |    complete   |               |
+| OpenGL ES 3.1  |               |   in progress    |    complete    |    complete   |  in progress  |               |
+| OpenGL ES 3.2  |               |                  |  in progress   |  in progress  |  in progress  |               |
 
 ### Platform support via backing renderers
 
@@ -28,6 +28,8 @@ underway, and future plans include compute shader support (ES 3.1) and MacOS sup
 | Fuchsia     |                |                |               |             | in progress |             |
 
 ANGLE v1.0.772 was certified compliant by passing the ES 2.0.3 conformance tests in October 2011.
+With the Vulkan backend, ANGLE 2.1.0.d46e2fb1e341 was certified compliant to ES 2.0 in Nov 2019, and
+ANGLE 2.1.0.f18ff947360d to ES 3.0 in Feb 2020.
 ANGLE also provides an implementation of the EGL 1.4 specification.
 
 ANGLE is used as the default WebGL backend for both Google Chrome and Mozilla Firefox on Windows
@@ -39,8 +41,8 @@ implementations across multiple platforms. It is used on Mac OS X, Linux, and in
 the browsers. Having one shader validator helps to ensure that a consistent set of GLSL ES shaders
 are accepted across browsers and platforms. The shader translator can be used to translate shaders
 to other shading languages, and to optionally apply shader modifications to work around bugs or
-quirks in the native graphics drivers. The translator targets Desktop GLSL, Direct3D HLSL, and even
-ESSL for native GLES2 platforms.
+quirks in the native graphics drivers. The translator targets Desktop GLSL, Vulkan GLSL, Direct3D
+HLSL, and even ESSL for native GLES2 platforms.
 
 ## Sources
 
@@ -79,4 +81,5 @@ View the [Dev setup instructions](doc/DevSetup.md).
 * Watch a [short presentation](https://youtu.be/QrIKdjmpmaA) on the Vulkan back-end.
 * Track the [dEQP test conformance](doc/dEQP-Charts.md)
 * Read design docs on the [Vulkan back-end](src/libANGLE/renderer/vulkan/README.md)
+* Read about ANGLE's [testing infrastructure](infra/README.md)
 * If you use ANGLE in your own project, we'd love to hear about it!
index ca3ea5b..ba77602 100644 (file)
@@ -31,9 +31,7 @@ if (enable_java_templates) {
 
     android_assets("${invoker.package_name}_assets") {
       disable_compression = true
-      sources = [
-        "src/feature_support_util/a4a_rules.json",
-      ]
+      sources = [ "src/feature_support_util/a4a_rules.json" ]
     }
 
     android_apk(target_name) {
@@ -42,9 +40,7 @@ if (enable_java_templates) {
       android_manifest_dep = ":$manifest_target_name"
       min_sdk_version = 26
       target_sdk_version = 28
-      deps = [
-        ":${invoker.package_name}_assets",
-      ]
+      deps = [ ":${invoker.package_name}_assets" ]
       if (symbol_level != 0) {
         deps += [ ":compressed_symbols" ]
         if (android_64bit_target_cpu) {
index be36219..63739ac 100644 (file)
@@ -1,5 +1,34 @@
+diff --git a/include/platform/FeaturesGL.h b/include/platform/FeaturesGL.h
+index 5b36f271f..85947e40f 100644
+--- a/include/platform/FeaturesGL.h
++++ b/include/platform/FeaturesGL.h
+@@ -412,6 +412,12 @@ struct FeaturesGL : FeatureSetBase
+         "Rewrite row major matrices in shaders as column major as a driver bug workaround",
+         &members, "http://anglebug.com/2273"};
++    // Flush before glBindFramebuffer as a driver bug workaround if necessary.
++    Feature flushBeforeBindFramebuffer = {
++        "flush_before_bindframebuffer", FeatureCategory::OpenGLWorkarounds,
++        "Flush before glBindFramebuffer as a driver bug workaround",
++        &members, "https://bugs.webkit.org/show_bug.cgi?id=206625"};
++
+     // Bugs exist in various OpenGL Intel drivers on Windows that produce incorrect
+     // values for GL_COMPRESSED_SRGB_S3TC_DXT1_EXT format. Replace it with
+     // GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT as it's the closest option allowed by
+diff --git a/include/platform/Platform.h b/include/platform/Platform.h
+index 131674008..d065c3a9f 100644
+--- a/include/platform/Platform.h
++++ b/include/platform/Platform.h
+@@ -9,6 +9,7 @@
+ #ifndef ANGLE_PLATFORM_H
+ #define ANGLE_PLATFORM_H
++#include <stdlib.h>
+ #include <stdint.h>
+ #include <stdlib.h>
+ #include <array>
 diff --git a/src/common/utilities.cpp b/src/common/utilities.cpp
-index 87932a53f..83ea168e2 100644
+index 0ca967c17..0a6dcc248 100644
 --- a/src/common/utilities.cpp
 +++ b/src/common/utilities.cpp
 @@ -6,6 +6,11 @@
@@ -51,7 +80,7 @@ index e0e8d6447..ebf8d90f5 100644
  
     Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
 diff --git a/src/libANGLE/State.cpp b/src/libANGLE/State.cpp
-index 207bc3997..fa1bd2f16 100644
+index 452a695c0..10ab5fc17 100644
 --- a/src/libANGLE/State.cpp
 +++ b/src/libANGLE/State.cpp
 @@ -6,6 +6,9 @@
@@ -64,11 +93,25 @@ index 207bc3997..fa1bd2f16 100644
  #include "libANGLE/State.h"
  
  #include <string.h>
+diff --git a/src/libANGLE/renderer/gl/StateManagerGL.cpp b/src/libANGLE/renderer/gl/StateManagerGL.cpp
+index 5ac1fa648..3f9bc0166 100644
+--- a/src/libANGLE/renderer/gl/StateManagerGL.cpp
++++ b/src/libANGLE/renderer/gl/StateManagerGL.cpp
+@@ -580,6 +580,9 @@ void StateManagerGL::setPixelPackBuffer(const gl::Buffer *pixelBuffer)
+ void StateManagerGL::bindFramebuffer(GLenum type, GLuint framebuffer)
+ {
++    if (mFeatures.flushBeforeBindFramebuffer.enabled)
++        mFunctions->flush();
++
+     switch (type)
+     {
+         case GL_FRAMEBUFFER:
 diff --git a/src/libANGLE/renderer/gl/cgl/DisplayCGL.mm b/src/libANGLE/renderer/gl/cgl/DisplayCGL.mm
-index 148213933..cd8a6ca6b 100644
+index 226269909..ae90776da 100644
 --- a/src/libANGLE/renderer/gl/cgl/DisplayCGL.mm
 +++ b/src/libANGLE/renderer/gl/cgl/DisplayCGL.mm
-@@ -292,7 +292,7 @@ egl::Error DisplayCGL::restoreLostDevice(const egl::Display *display)
+@@ -294,7 +294,7 @@ egl::Error DisplayCGL::restoreLostDevice(const egl::Display *display)
  
  bool DisplayCGL::isValidNativeWindow(EGLNativeWindowType window) const
  {
@@ -91,7 +134,7 @@ index 1c1fd2252..54d8320ea 100644
        mFunctions(renderer->getFunctions()),
        mStateManager(renderer->getStateManager()),
 diff --git a/src/libANGLE/renderer/gl/eagl/DisplayEAGL.mm b/src/libANGLE/renderer/gl/eagl/DisplayEAGL.mm
-index 552285160..797d3b75c 100644
+index 29e83871c..85804411d 100644
 --- a/src/libANGLE/renderer/gl/eagl/DisplayEAGL.mm
 +++ b/src/libANGLE/renderer/gl/eagl/DisplayEAGL.mm
 @@ -107,6 +107,7 @@ void DisplayEAGL::terminate()
@@ -102,7 +145,7 @@ index 552285160..797d3b75c 100644
          mContext = nullptr;
      }
  }
-@@ -237,7 +238,7 @@ egl::Error DisplayEAGL::restoreLostDevice(const egl::Display *display)
+@@ -243,7 +244,7 @@ egl::Error DisplayEAGL::restoreLostDevice(const egl::Display *display)
  
  bool DisplayEAGL::isValidNativeWindow(EGLNativeWindowType window) const
  {
@@ -111,7 +154,7 @@ index 552285160..797d3b75c 100644
      return [layer isKindOfClass:[CALayer class]];
  }
  
-@@ -328,6 +329,7 @@ WorkerContextEAGL::WorkerContextEAGL(EAGLContextObj context) : mContext(context)
+@@ -334,6 +335,7 @@ WorkerContextEAGL::WorkerContextEAGL(EAGLContextObj context) : mContext(context)
  WorkerContextEAGL::~WorkerContextEAGL()
  {
      [EAGLContext setCurrentContext:nil];
@@ -140,9801 +183,2609 @@ index cb482d05b..6cef7d3dd 100644
          mSwapLayer = nil;
      }
  
-diff --git a/Source/ThirdParty/ANGLE/src/tests/perf_tests/glmark2Benchmark.cpp b/Source/ThirdParty/ANGLE/src/tests/perf_tests/glmark2Benchmark.cpp
-deleted file mode 100644
-index 174fcc6735a..00000000000
---- a/Source/ThirdParty/ANGLE/src/tests/perf_tests/glmark2Benchmark.cpp
-+++ /dev/null
-@@ -1,285 +0,0 @@
--//
--// 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.
--//
--// glmark2Benchmark:
--//   Runs the glmark2 benchmark.
--//
--
--#include <gtest/gtest.h>
--
--#include <stdio.h>
--#include <sstream>
--
--#include "../perf_tests/third_party/perf/perf_result_reporter.h"
--#include "ANGLEPerfTestArgs.h"
--#include "common/platform.h"
--#include "common/system_utils.h"
--#include "test_utils/angle_test_configs.h"
--#include "test_utils/angle_test_instantiate.h"
--#include "util/test_utils.h"
--
--using namespace angle;
--
--namespace
--{
--
--struct BenchmarkInfo
--{
--    const char *glmark2Config;
--    const char *name;
--};
--
--// Each glmark2 scene is individually benchmarked.  If glmark2 is run without a specific benchmark,
--// it can produce an aggregate score, which is not interesting at the moment.  Adding an empty
--// string ("") to this list will enable a test where glmark2 is run with the default scenes and the
--// score for each test as well as the overall score is output.
--constexpr BenchmarkInfo kBenchmarks[] = {
--    {"build:use-vbo=false", "build"},
--    {"build:use-vbo=true", "build_vbo"},
--    {"texture:texture-filter=nearest", "texture_nearest"},
--    {"texture:texture-filter=linear", "texture_linear"},
--    {"texture:texture-filter=mipmap", "texture_mipmap"},
--    {"shading:shading=gouraud", "shading_gouraud"},
--    {"shading:shading=blinn-phong-inf", "shading_blinn_phong"},
--    {"shading:shading=phong", "shading_phong"},
--    {"shading:shading=cel", "shading_cel"},
--    {"bump:bump-render=high-poly", "bump_high_poly"},
--    {"bump:bump-render=normals", "bump_normals"},
--    {"bump:bump-render=height", "bump_height"},
--    {"effect2d:kernel=0,1,0;1,-4,1;0,1,0;", "effect2d_edge"},
--    {"effect2d:kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;", "effect2d_blur"},
--    {"pulsar:light=false:quads=5:texture=false", "pulsar"},
--    {"desktop:blur-radius=5:effect=blur:passes=1:separable=true:windows=4", "desktop_blur"},
--    {"desktop:effect=shadow:windows=4", "desktop_shadow"},
--    {"buffer:columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method="
--     "map",
--     "buffer_map"},
--    {"buffer:columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method="
--     "subdata",
--     "buffer_subdata"},
--    {"buffer:columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method="
--     "map",
--     "buffer_map_interleave"},
--    {"ideas:speed=duration", "ideas"},
--    {"jellyfish", "jellyfish"},
--    {"terrain", "terrain"},
--    {"shadow", "shadow"},
--    {"refract", "refract"},
--    {"conditionals:fragment-steps=0:vertex-steps=0", "conditionals"},
--    {"conditionals:fragment-steps=5:vertex-steps=0", "conditionals_fragment"},
--    {"conditionals:fragment-steps=0:vertex-steps=5", "conditionals_vertex"},
--    {"function:fragment-complexity=low:fragment-steps=5", "function"},
--    {"function:fragment-complexity=medium:fragment-steps=5", "function_complex"},
--    {"loop:fragment-loop=false:fragment-steps=5:vertex-steps=5", "loop_no_fsloop"},
--    {"loop:fragment-steps=5:fragment-uniform=false:vertex-steps=5", "loop_no_uniform"},
--    {"loop:fragment-steps=5:fragment-uniform=true:vertex-steps=5", "loop"},
--};
--
--using GLMark2BenchmarkTestParams = std::tuple<PlatformParameters, size_t>;
--std::string GLMark2BenchmarkPrint(
--    const ::testing::TestParamInfo<GLMark2BenchmarkTestParams> &paramsInfo)
--{
--    const GLMark2BenchmarkTestParams &params = paramsInfo.param;
--    std::ostringstream out;
--
--    out << std::get<0>(params) << '_';
--    out << kBenchmarks[std::get<1>(params)].name;
--
--    return out.str();
--}
--
--class GLMark2Benchmark : public testing::TestWithParam<GLMark2BenchmarkTestParams>
--{
--  public:
--    GLMark2Benchmark()
--    {
--        switch (std::get<0>(GetParam()).getRenderer())
--        {
--            case EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE:
--                mBackend = "d3d11";
--                break;
--            case EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE:
--                mBackend = "gl";
--                break;
--            case EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE:
--                mBackend = "vulkan";
--                break;
--            default:
--                break;
--        }
--        std::string story = kBenchmarks[std::get<1>(GetParam())].name;
--        mReporter = std::make_unique<perf_test::PerfResultReporter>("glmark2_" + mBackend, story);
--        mReporter->RegisterImportantMetric(".fps", "fps");
--        mReporter->RegisterImportantMetric(".score", "score");
--    }
--
--    void run()
--    {
--        // Only supported on Linux and Windows at the moment.
--        if (!IsLinux() && !IsWindows())
--        {
--            return;
--        }
--
--        const BenchmarkInfo benchmarkInfo = kBenchmarks[std::get<1>(GetParam())];
--        const char *benchmark             = benchmarkInfo.glmark2Config;
--        const char *benchmarkName         = benchmarkInfo.name;
--        bool completeRun                  = benchmark == nullptr || benchmark[0] == '\0';
--
--        Optional<std::string> cwd = GetCWD();
--
--        // Set the current working directory to the executable's, as the data path of glmark2 is
--        // set relative to that path.
--        std::string executableDir = GetExecutableDirectory();
--        SetCWD(executableDir.c_str());
--        SetEnvironmentVar("ANGLE_DEFAULT_PLATFORM", mBackend.c_str());
--
--        std::vector<const char *> args = {
--            "glmark2_angle",
--        };
--        if (OneFrame())
--        {
--            args.push_back("--validate");
--        }
--        if (!completeRun)
--        {
--            args.push_back("--benchmark");
--            args.push_back(benchmark);
--            fprintf(stderr, "Running benchmark: %s\n", benchmark);
--        }
--        args.push_back(nullptr);
--
--        ProcessHandle process(args, true, false);
--        ASSERT_TRUE(process && process->started());
--        ASSERT_TRUE(process->finish());
--
--        // Restore the current working directory for the next tests.
--        if (cwd.valid())
--        {
--            SetCWD(cwd.value().c_str());
--        }
--
--        ASSERT_EQ(EXIT_SUCCESS, process->getExitCode());
--
--        if (!OneFrame())
--        {
--            std::string output = process->getStdout();
--            parseOutput(output, benchmarkName, completeRun);
--        }
--    }
--
--  private:
--    void parseOutput(const std::string &output, const char *benchmarkName, bool completeRun)
--    {
--        // Output is in the following format:
--        //
--        // =======================================================
--        //     glmark2 2017.07
--        // =======================================================
--        //     OpenGL Information
--        //     GL_VENDOR:     ...
--        //     GL_RENDERER:   ...
--        //     GL_VERSION:    ...
--        // =======================================================
--        // [test] config: FPS: uint FrameTime: float ms
--        // [test] config: Not Supported
--        // ...
--        // =======================================================
--        //                                   glmark2 Score: uint
--        // =======================================================
--        //
--        // This function skips the header, prints one line for each test/config line where there's
--        // an FPS value, and finally prints the overall score.
--        std::istringstream glmark2Output(output);
--        std::string line;
--
--        // Expect ==== at the top of the header
--        std::getline(glmark2Output, line);
--        ASSERT_EQ('=', line[0]);
--
--        // Skip one line
--        std::getline(glmark2Output, line);
--
--        // Expect ==== in the middle of the header
--        std::getline(glmark2Output, line);
--        ASSERT_EQ('=', line[0]);
--
--        // Skip four lines
--        std::getline(glmark2Output, line);
--        std::getline(glmark2Output, line);
--        std::getline(glmark2Output, line);
--        std::getline(glmark2Output, line);
--
--        // The fourth line is the GL_VERSION.  Expect it to include ANGLE, otherwise we are not
--        // running against ANGLE.
--        ASSERT_NE(line.find("ANGLE"), std::string::npos);
--
--        // Expect ==== at the bottom of the header
--        std::getline(glmark2Output, line);
--        ASSERT_EQ('=', line[0]);
--
--        // Read configs until the top of the footer is reached
--        while (std::getline(glmark2Output, line) && line[0] != '=')
--        {
--            // Parse the line
--            std::istringstream lin(line);
--
--            std::string testName, testConfig;
--            lin >> testName >> testConfig;
--            EXPECT_TRUE(lin);
--
--            std::string fpsTag, frametimeTag;
--            size_t fps;
--            float frametime;
--
--            lin >> fpsTag >> fps >> frametimeTag >> frametime;
--
--            // If the line is not in `FPS: uint FrameTime: Float ms` format, the test is not
--            // supported.  It will be skipped.
--            if (!lin)
--            {
--                continue;
--            }
--
--            EXPECT_EQ("FPS:", fpsTag);
--            EXPECT_EQ("FrameTime:", frametimeTag);
--
--            if (!completeRun)
--            {
--                mReporter->AddResult(".fps", fps);
--            }
--        }
--
--        // Get the score line: `glmark2 Score: uint`
--        std::string glmark2Tag, scoreTag;
--        size_t score;
--        glmark2Output >> glmark2Tag >> scoreTag >> score;
--        EXPECT_TRUE(glmark2Output);
--        EXPECT_EQ("glmark2", glmark2Tag);
--        EXPECT_EQ("Score:", scoreTag);
--
--        if (completeRun)
--        {
--            mReporter->AddResult(".score", score);
--        }
--    }
--
--    std::string mBackend = "invalid";
--    std::unique_ptr<perf_test::PerfResultReporter> mReporter;
--};
--
--TEST_P(GLMark2Benchmark, Run)
--{
--    run();
--}
--
--ANGLE_INSTANTIATE_TEST_COMBINE_1(GLMark2Benchmark,
--                                 GLMark2BenchmarkPrint,
--                                 testing::Range(static_cast<size_t>(0), ArraySize(kBenchmarks)),
--                                 ES2_D3D11(),
--                                 ES2_OPENGLES(),
--                                 ES2_VULKAN());
--
--}  // namespace
-diff --git a/Source/ThirdParty/ANGLE/third_party/glmark2/BUILD.gn b/Source/ThirdParty/ANGLE/third_party/glmark2/BUILD.gn
-deleted file mode 100644
-index 25ae133986a..00000000000
---- a/Source/ThirdParty/ANGLE/third_party/glmark2/BUILD.gn
-+++ /dev/null
-@@ -1,423 +0,0 @@
--# 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.
--#
--# Build integration for glmark2.
--
--import("../../gni/angle.gni")
--
--_glmark2_glad_common_sources = [
--  "src/src/glad/include/glad/egl.h",
--  "src/src/glad/include/glad/wgl.h",
--  "src/src/glad/src/egl.c",
--]
--
--if (is_win) {
--  _glmark2_glad_common_sources += [ "src/src/glad/src/wgl.c" ]
--}
--
--config("glmark2_glad_config") {
--  include_dirs = [ "src/src/glad/include" ]
--}
--
--source_set("glmark2_glad_gles") {
--  sources = _glmark2_glad_common_sources + [
--              "src/src/glad/include/glad/gles2.h",
--              "src/src/glad/src/gles2.c",
--            ]
--  public_configs = [ ":glmark2_glad_config" ]
--}
--
--source_set("glmark2_glad_gl") {
--  sources = _glmark2_glad_common_sources + [
--              "src/src/glad/include/glad/gl.h",
--              "src/src/glad/src/gl.c",
--            ]
--  public_configs = [ ":glmark2_glad_config" ]
--}
--
--glmark_data_path = "${angle_root}/third_party/glmark2/src/data"
--raw_glmark_data_path = rebase_path(glmark_data_path, root_build_dir)
--
--config("glmark2_common_config") {
--  defines = [ "GLMARK_DATA_PATH=\"${raw_glmark_data_path}\"" ]
--  include_dirs = [ "src/src" ]
--  if (is_win) {
--    include_dirs += [ "src/src/include" ]
--
--    # M_PI is nonstandard.
--    defines += [ "_USE_MATH_DEFINES" ]
--
--    if (!is_clang) {
--      cflags = [
--        # MSVC warns about the copyright character being illegal.
--        "/wd4828",
--
--        # A warning generated in scene-effect-2d in vec2::calc_offset
--        "/wd4146",
--      ]
--    }
--  }
--}
--
--config("glmark2_gles_config") {
--  defines = [ "GLMARK2_USE_GLESv2" ]
--}
--
--config("glmark2_gl_config") {
--  defines = [ "GLMARK2_USE_GL" ]
--}
--
--group("glmark2_gles") {
--  public_configs = [
--    ":glmark2_common_config",
--    ":glmark2_gles_config",
--  ]
--  public_deps = [
--    ":glmark2_glad_gles",
--  ]
--}
--
--group("glmark2_gl") {
--  public_configs = [
--    ":glmark2_common_config",
--    ":glmark2_gl_config",
--  ]
--  public_deps = [
--    ":glmark2_glad_gl",
--  ]
--}
--
--# Supplies compatible headers on Win32.
--config("glmark2_headers_config") {
--  if (is_win) {
--    if (is_clang) {
--      cflags = [
--        "-Wno-unused-function",
--        "-Wno-writable-strings",
--        "-Wno-extra-tokens",
--      ]
--    }
--  }
--}
--
--source_set("glmark2_headers") {
--  sources = [
--    "src/src/canvas.h",
--    "src/src/gl-headers.h",
--    "src/src/gl-state-egl.h",
--    "src/src/gl-state.h",
--    "src/src/gl-visual-config.h",
--    "src/src/mesh.h",
--    "src/src/options.h",
--    "src/src/scene.h",
--    "src/src/shared-library.h",
--    "src/src/texture.h",
--  ]
--
--  if (is_linux) {
--    sources += [ "src/src/gl-state-glx.h" ]
--  }
--  if (is_win) {
--    sources += [
--      "src/src/gl-state-wgl.h",
--      "src/src/include/dirent.h",
--      "src/src/include/getopt.h",
--      "src/src/include/sys/time.h",
--    ]
--  }
--  public_configs = [ ":glmark2_headers_config" ]
--  include_dirs = [ "src/src" ]
--}
--
--config("glmark2_libmatrix_config") {
--  include_dirs = [ "src/src/libmatrix" ]
--}
--
--template("glmark2_libmatrix") {
--  source_set(target_name) {
--    forward_variables_from(invoker, "*")
--    sources = [
--      "src/src/libmatrix/gl-if.h",
--      "src/src/libmatrix/log.cc",
--      "src/src/libmatrix/log.h",
--      "src/src/libmatrix/mat.cc",
--      "src/src/libmatrix/mat.h",
--      "src/src/libmatrix/program.cc",
--      "src/src/libmatrix/program.h",
--      "src/src/libmatrix/shader-source.cc",
--      "src/src/libmatrix/shader-source.h",
--      "src/src/libmatrix/stack.h",
--      "src/src/libmatrix/util.cc",
--      "src/src/libmatrix/util.h",
--      "src/src/libmatrix/vec.h",
--    ]
--
--    if (is_clang) {
--      cflags_cc = [ "-Wno-implicit-fallthrough" ]
--    }
--    public_deps = [
--      ":glmark2_headers",
--    ]
--    public_configs = [ ":glmark2_libmatrix_config" ]
--  }
--}
--
--glmark2_libmatrix("glmark2_libmatrix_gles") {
--  deps = [
--    ":glmark2_gles",
--  ]
--}
--
--glmark2_libmatrix("glmark2_libmatrix_gl") {
--  deps = [
--    ":glmark2_gl",
--  ]
--}
--
--config("glmark2_scene_ideas_config") {
--  include_dirs = [ "src/src/scene-ideas" ]
--}
--
--template("glmark2_scene_ideas") {
--  source_set(target_name) {
--    forward_variables_from(invoker, "*")
--    sources = [
--      "src/src/scene-ideas/a.cc",
--      "src/src/scene-ideas/characters.h",
--      "src/src/scene-ideas/d.cc",
--      "src/src/scene-ideas/e.cc",
--      "src/src/scene-ideas/i.cc",
--      "src/src/scene-ideas/lamp.cc",
--      "src/src/scene-ideas/lamp.h",
--      "src/src/scene-ideas/logo.cc",
--      "src/src/scene-ideas/logo.h",
--      "src/src/scene-ideas/m.cc",
--      "src/src/scene-ideas/n.cc",
--      "src/src/scene-ideas/o.cc",
--      "src/src/scene-ideas/s.cc",
--      "src/src/scene-ideas/splines.cc",
--      "src/src/scene-ideas/splines.h",
--      "src/src/scene-ideas/t.cc",
--      "src/src/scene-ideas/table.cc",
--      "src/src/scene-ideas/table.h",
--    ]
--    public_configs = [ ":glmark2_scene_ideas_config" ]
--  }
--}
--
--glmark2_scene_ideas("glmark2_scene_ideas_gles") {
--  deps = [
--    ":glmark2_gles",
--    ":glmark2_libmatrix_gles",
--  ]
--}
--
--glmark2_scene_ideas("glmark2_scene_ideas_gl") {
--  deps = [
--    ":glmark2_gl",
--    ":glmark2_libmatrix_gl",
--  ]
--}
--
--config("glmark2_scene_terrain_config") {
--  include_dirs = [ "src/src/scene-terrain" ]
--}
--
--template("glmark2_scene_terrain") {
--  source_set(target_name) {
--    forward_variables_from(invoker, "*")
--    sources = [
--      "src/src/scene-terrain/base-renderer.cpp",
--      "src/src/scene-terrain/blur-renderer.cpp",
--      "src/src/scene-terrain/copy-renderer.cpp",
--      "src/src/scene-terrain/luminance-renderer.cpp",
--      "src/src/scene-terrain/normal-from-height-renderer.cpp",
--      "src/src/scene-terrain/overlay-renderer.cpp",
--      "src/src/scene-terrain/renderer-chain.cpp",
--      "src/src/scene-terrain/renderer.h",
--      "src/src/scene-terrain/simplex-noise-renderer.cpp",
--      "src/src/scene-terrain/terrain-renderer.cpp",
--      "src/src/scene-terrain/texture-renderer.cpp",
--    ]
--
--    public_configs = [ ":glmark2_scene_terrain_config" ]
--  }
--}
--
--glmark2_scene_terrain("glmark2_scene_terrain_gles") {
--  deps = [
--    ":glmark2_gles",
--    ":glmark2_libmatrix_gles",
--  ]
--}
--
--glmark2_scene_terrain("glmark2_scene_terrain_gl") {
--  deps = [
--    ":glmark2_gl",
--    ":glmark2_libmatrix_gl",
--  ]
--}
--
--template("glmark2_common") {
--  source_set(target_name) {
--    forward_variables_from(invoker, "*")
--    sources = [
--      "src/src/benchmark-collection.cpp",
--      "src/src/benchmark-collection.h",
--      "src/src/benchmark.cpp",
--      "src/src/benchmark.h",
--      "src/src/default-benchmarks.h",
--      "src/src/gl-headers.cpp",
--      "src/src/gl-visual-config.cpp",
--      "src/src/gl-visual-config.h",
--      "src/src/image-reader.cpp",
--      "src/src/image-reader.h",
--      "src/src/main-loop.cpp",
--      "src/src/main-loop.h",
--      "src/src/mesh.cpp",
--      "src/src/model.cpp",
--      "src/src/model.h",
--      "src/src/native-state.h",
--      "src/src/options.cpp",
--      "src/src/scene-buffer.cpp",
--      "src/src/scene-build.cpp",
--      "src/src/scene-bump.cpp",
--      "src/src/scene-clear.cpp",
--      "src/src/scene-collection.h",
--      "src/src/scene-conditionals.cpp",
--      "src/src/scene-default-options.cpp",
--      "src/src/scene-desktop.cpp",
--      "src/src/scene-effect-2d.cpp",
--      "src/src/scene-function.cpp",
--      "src/src/scene-grid.cpp",
--      "src/src/scene-ideas.cpp",
--      "src/src/scene-jellyfish.cpp",
--      "src/src/scene-jellyfish.h",
--      "src/src/scene-loop.cpp",
--      "src/src/scene-pulsar.cpp",
--      "src/src/scene-refract.cpp",
--      "src/src/scene-refract.h",
--      "src/src/scene-shading.cpp",
--      "src/src/scene-shadow.cpp",
--      "src/src/scene-terrain.cpp",
--      "src/src/scene-texture.cpp",
--      "src/src/scene.cpp",
--      "src/src/shared-library.cpp",
--      "src/src/text-renderer.cpp",
--      "src/src/text-renderer.h",
--      "src/src/texture.cpp",
--    ]
--
--    public_deps += [
--      ":glmark2_headers",
--      "${angle_libpng_dir}:libpng",
--      "${angle_root}/third_party:jpeg",
--    ]
--  }
--}
--
--glmark2_common("glmark2_common_gles") {
--  public_deps = [
--    ":glmark2_gles",
--    ":glmark2_libmatrix_gles",
--    ":glmark2_scene_ideas_gles",
--    ":glmark2_scene_terrain_gles",
--  ]
--}
--
--glmark2_common("glmark2_common_gl") {
--  public_deps = [
--    ":glmark2_gl",
--    ":glmark2_libmatrix_gl",
--    ":glmark2_scene_ideas_gl",
--    ":glmark2_scene_terrain_gl",
--  ]
--}
--
--glmark2_version = "2017.07"
--
--template("glmark2_exe") {
--  executable(target_name) {
--    forward_variables_from(invoker, "*")
--    sources += [
--      "src/src/canvas-generic.cpp",
--      "src/src/canvas-generic.h",
--      "src/src/main.cpp",
--    ]
--    data = [
--      "src/data/",
--    ]
--
--    defines += [ "GLMARK_VERSION=\"${glmark2_version}\"" ]
--
--    if (is_win) {
--      defines += [ "GLMARK2_USE_WIN32" ]
--      sources += [
--        "src/src/native-state-win32.cpp",
--        "src/src/native-state-win32.h",
--      ]
--    }
--    if (is_linux) {
--      defines += [ "GLMARK2_USE_X11" ]
--      sources += [
--        "src/src/native-state-x11.cpp",
--        "src/src/native-state-x11.h",
--      ]
--      libs = [ "X11" ]
--    }
--  }
--}
--
--glmark2_exe("glmark2_angle") {
--  sources = [
--    "src/src/gl-state-egl.cpp",
--  ]
--  deps = [
--    ":glmark2_common_gles",
--  ]
--  data_deps = [
--    "${angle_root}:libEGL",
--    "${angle_root}:libGLESv2",
--  ]
--
--  defines = [
--    "EGL_EGL_PROTOTYPES=1",
--    "GLMARK2_USE_EGL",
--  ]
--
--  if (is_linux && !is_component_build) {
--    # Set rpath to find shared libs in a non-component build.
--    public_configs = [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
--  }
--}
--
--if (is_linux) {
--  glmark2_exe("glmark2_glx") {
--    sources = [
--      "src/src/gl-state-glx.cpp",
--      "src/src/glad/include/glad/glx.h",
--      "src/src/glad/src/glx.c",
--    ]
--    deps = [
--      ":glmark2_common_gl",
--    ]
--
--    defines = [ "GLMARK2_USE_GLX" ]
--  }
--}
--
--# opengl32.lib/opengl32.dll are not available on Windows ARM64.
--if (is_win && target_cpu != "arm64") {
--  glmark2_exe("glmark2_wgl") {
--    sources = [
--      "src/src/gl-state-wgl.cpp",
--    ]
--    deps = [
--      ":glmark2_common_gl",
--    ]
--
--    libs = [ "opengl32.lib" ]
--    defines = [ "GLMARK2_USE_WGL" ]
--  }
--}
-diff --git a/Source/ThirdParty/ANGLE/third_party/glmark2/README.angle b/Source/ThirdParty/ANGLE/third_party/glmark2/README.angle
-deleted file mode 100644
-index a2b6371fed8..00000000000
---- a/Source/ThirdParty/ANGLE/third_party/glmark2/README.angle
-+++ /dev/null
-@@ -1,12 +0,0 @@
--Name: glmark2
--Short Name: glmark2
--URL: https://github.com/glmark2/glmark2
--Security Critical: no
--License: GPL v3
--License File: NOT_SHIPPED
--
--Description:
--glmark2 is an OpenGL 2.0 and ES 2.0 benchmark.
--
--glmark2 is developed by Alexandros Frantzis and Jesse Barker based on the
--original glmark benchmark by Ben Smith.
-diff --git a/Source/ThirdParty/ANGLE/tools/flex-bison/README.md b/Source/ThirdParty/ANGLE/tools/flex-bison/README.md
-deleted file mode 100644
-index 8dfe1262660..00000000000
---- a/Source/ThirdParty/ANGLE/tools/flex-bison/README.md
-+++ /dev/null
-@@ -1,129 +0,0 @@
--# flex and bison binaries
--
--This folder contains the flex and bison binaries. We use these binaries to
--generate the ANGLE translator's lexer and parser.
--
--Use the script [`update_flex_bison_binaries.py`](update_flex_bison_binaries.py)
--to update the versions of these binaries in cloud storage. It must be run on
--Linux or Windows. It will update the SHAs for your platform. After running the
--script run `git commit` and then `git cl upload` to code review using the normal
--review process. You will also want to run
--[`scripts/run_code_generation.py`](../../scripts/run_code_generation.py) to
--update the generated files.
--
--Please update both Windows and Linux binaries at the same time. Use two CLs. One
--for each platform. Note that we don't currently support Mac for generating the
--lexer and parser files. If we do we should add a flex/bison download for Mac as
--well.
--
--Contact jmadill or syoussefi for any help with updating the binaries.
--
--## Updating flex and bison binaries
--
--This is expected to be a rare operation, and is currently done based on the
--following instructions.  Note: get the binaries first on windows, as only a
--single option is available, then build the binaries for the same version on
--Linux.
--
--### On Windows
--
--Install MSys2 (x86_64) from http://www.msys2.org/ on Windows.  `flex` should
--already be installed.  Install bison:
--
--```
--$ pacman -S bison
--```
--
--Note the versions of flex and bison so the same versions can be build on Linux.
--For example:
--
--```
--$ flex --version
--flex 2.6.4
--
--$ bison --version
--bison (GNU Bison) 3.3.2
--```
--
--The only dependencies from MSys2 should be the following:
--
--```
--msys-intl-8.dll
--msys-iconv-2.dll
--msys-2.0.dll
--```
--
--This can be verified with:
--
--```
--$ ldd /usr/bin/flex
--$ ldd /usr/bin/bison
--```
--
--Additionally, we need the binary for m4 at `/usr/bin/m4`.
--
--Copy all these 5 files to this directory:
--
--```
--$ cd angle/
--$ cp /usr/bin/flex.exe \
--     /usr/bin/bison.exe \
--     /usr/bin/m4.exe \
--     /usr/bin/msys-intl-8.dll \
--     /usr/bin/msys-iconv-2.dll \
--     /usr/bin/msys-2.0.dll \
--     tools/flex-bison/windows/
--```
--
--Upload the binaries:
--
--```
--$ cd angle/
--$ python tools/flex-bison/update_flex_bison_binaries.py
--```
--
--### On Linux
--
--```
--# Get the source of flex
--$ git clone https://github.com/westes/flex.git
--$ cd flex/
--# Checkout the same version as msys2 on windows
--$ git checkout v2.6.4
--# Build
--$ autoreconf -i
--$ mkdir build && cd build
--$ ../configure CFLAGS="-O2 -D_GNU_SOURCE"
--$ make -j
--```
--
--```
--# Get the source of bison
--$ curl http://ftp.gnu.org/gnu/bison/bison-3.3.2.tar.xz | tar -xJ
--$ cd bison-3.3.2
--# Build
--$ mkdir build && cd build
--$ ../configure CFLAGS="-O2"
--$ make -j
--```
--
--Note: Bison's [home page][Bison] lists ftp server and other mirrors.  If the
--above link is broken, replace with a mirror.
--
--Copy the 2 executables to this directory:
--
--```
--$ cd angle/
--$ cp /path/to/flex/build/src/flex \
--     /path/to/bison/build/src/bison \
--     tools/flex-bison/linux/
--```
--
--Upload the binaries:
--
--```
--$ cd angle/
--$ python tools/flex-bison/update_flex_bison_binaries.py
--```
--
--[Bison]: https://www.gnu.org/software/bison/
-diff --git a/Source/ThirdParty/ANGLE/tools/flex-bison/linux/bison.sha1 b/Source/ThirdParty/ANGLE/tools/flex-bison/linux/bison.sha1
-deleted file mode 100644
-index c93d92de419..00000000000
---- a/Source/ThirdParty/ANGLE/tools/flex-bison/linux/bison.sha1
-+++ /dev/null
-@@ -1 +0,0 @@
--e628b73cd0a767d93e1f94b5a86ce51ca83c99d5
-\ No newline at end of file
-diff --git a/Source/ThirdParty/ANGLE/tools/flex-bison/linux/flex.sha1 b/Source/ThirdParty/ANGLE/tools/flex-bison/linux/flex.sha1
-deleted file mode 100644
-index d340047ca12..00000000000
---- a/Source/ThirdParty/ANGLE/tools/flex-bison/linux/flex.sha1
-+++ /dev/null
-@@ -1 +0,0 @@
--e830e6c0508d9685876e77304bbe7c4a122c08e8
-\ No newline at end of file
-diff --git a/Source/ThirdParty/ANGLE/tools/flex-bison/third_party/.gitattributes b/Source/ThirdParty/ANGLE/tools/flex-bison/third_party/.gitattributes
-deleted file mode 100644
-index 0688c8a1491..00000000000
---- a/Source/ThirdParty/ANGLE/tools/flex-bison/third_party/.gitattributes
-+++ /dev/null
-@@ -1 +0,0 @@
--*                    eol=lf
-diff --git a/Source/ThirdParty/ANGLE/tools/flex-bison/third_party/m4sugar/LICENSE b/Source/ThirdParty/ANGLE/tools/flex-bison/third_party/m4sugar/LICENSE
-deleted file mode 100644
-index d511905c164..00000000000
---- a/Source/ThirdParty/ANGLE/tools/flex-bison/third_party/m4sugar/LICENSE
-+++ /dev/null
-@@ -1,339 +0,0 @@
--                  GNU GENERAL PUBLIC LICENSE
--                     Version 2, June 1991
--
-- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
-- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-- Everyone is permitted to copy and distribute verbatim copies
-- of this license document, but changing it is not allowed.
--
--                          Preamble
--
--  The licenses for most software are designed to take away your
--freedom to share and change it.  By contrast, the GNU General Public
--License is intended to guarantee your freedom to share and change free
--software--to make sure the software is free for all its users.  This
--General Public License applies to most of the Free Software
--Foundation's software and to any other program whose authors commit to
--using it.  (Some other Free Software Foundation software is covered by
--the GNU Lesser General Public License instead.)  You can apply it to
--your programs, too.
--
--  When we speak of free software, we are referring to freedom, not
--price.  Our General Public Licenses are designed to make sure that you
--have the freedom to distribute copies of free software (and charge for
--this service if you wish), that you receive source code or can get it
--if you want it, that you can change the software or use pieces of it
--in new free programs; and that you know you can do these things.
--
--  To protect your rights, we need to make restrictions that forbid
--anyone to deny you these rights or to ask you to surrender the rights.
--These restrictions translate to certain responsibilities for you if you
--distribute copies of the software, or if you modify it.
--
--  For example, if you distribute copies of such a program, whether
--gratis or for a fee, you must give the recipients all the rights that
--you have.  You must make sure that they, too, receive or can get the
--source code.  And you must show them these terms so they know their
--rights.
--
--  We protect your rights with two steps: (1) copyright the software, and
--(2) offer you this license which gives you legal permission to copy,
--distribute and/or modify the software.
--
--  Also, for each author's protection and ours, we want to make certain
--that everyone understands that there is no warranty for this free
--software.  If the software is modified by someone else and passed on, we
--want its recipients to know that what they have is not the original, so
--that any problems introduced by others will not reflect on the original
--authors' reputations.
--
--  Finally, any free program is threatened constantly by software
--patents.  We wish to avoid the danger that redistributors of a free
--program will individually obtain patent licenses, in effect making the
--program proprietary.  To prevent this, we have made it clear that any
--patent must be licensed for everyone's free use or not licensed at all.
--
--  The precise terms and conditions for copying, distribution and
--modification follow.
--
--                  GNU GENERAL PUBLIC LICENSE
--   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
--
--  0. This License applies to any program or other work which contains
--a notice placed by the copyright holder saying it may be distributed
--under the terms of this General Public License.  The "Program", below,
--refers to any such program or work, and a "work based on the Program"
--means either the Program or any derivative work under copyright law:
--that is to say, a work containing the Program or a portion of it,
--either verbatim or with modifications and/or translated into another
--language.  (Hereinafter, translation is included without limitation in
--the term "modification".)  Each licensee is addressed as "you".
--
--Activities other than copying, distribution and modification are not
--covered by this License; they are outside its scope.  The act of
--running the Program is not restricted, and the output from the Program
--is covered only if its contents constitute a work based on the
--Program (independent of having been made by running the Program).
--Whether that is true depends on what the Program does.
--
--  1. You may copy and distribute verbatim copies of the Program's
--source code as you receive it, in any medium, provided that you
--conspicuously and appropriately publish on each copy an appropriate
--copyright notice and disclaimer of warranty; keep intact all the
--notices that refer to this License and to the absence of any warranty;
--and give any other recipients of the Program a copy of this License
--along with the Program.
--
--You may charge a fee for the physical act of transferring a copy, and
--you may at your option offer warranty protection in exchange for a fee.
--
--  2. You may modify your copy or copies of the Program or any portion
--of it, thus forming a work based on the Program, and copy and
--distribute such modifications or work under the terms of Section 1
--above, provided that you also meet all of these conditions:
--
--    a) You must cause the modified files to carry prominent notices
--    stating that you changed the files and the date of any change.
--
--    b) You must cause any work that you distribute or publish, that in
--    whole or in part contains or is derived from the Program or any
--    part thereof, to be licensed as a whole at no charge to all third
--    parties under the terms of this License.
--
--    c) If the modified program normally reads commands interactively
--    when run, you must cause it, when started running for such
--    interactive use in the most ordinary way, to print or display an
--    announcement including an appropriate copyright notice and a
--    notice that there is no warranty (or else, saying that you provide
--    a warranty) and that users may redistribute the program under
--    these conditions, and telling the user how to view a copy of this
--    License.  (Exception: if the Program itself is interactive but
--    does not normally print such an announcement, your work based on
--    the Program is not required to print an announcement.)
--
--These requirements apply to the modified work as a whole.  If
--identifiable sections of that work are not derived from the Program,
--and can be reasonably considered independent and separate works in
--themselves, then this License, and its terms, do not apply to those
--sections when you distribute them as separate works.  But when you
--distribute the same sections as part of a whole which is a work based
--on the Program, the distribution of the whole must be on the terms of
--this License, whose permissions for other licensees extend to the
--entire whole, and thus to each and every part regardless of who wrote it.
--
--Thus, it is not the intent of this section to claim rights or contest
--your rights to work written entirely by you; rather, the intent is to
--exercise the right to control the distribution of derivative or
--collective works based on the Program.
--
--In addition, mere aggregation of another work not based on the Program
--with the Program (or with a work based on the Program) on a volume of
--a storage or distribution medium does not bring the other work under
--the scope of this License.
--
--  3. You may copy and distribute the Program (or a work based on it,
--under Section 2) in object code or executable form under the terms of
--Sections 1 and 2 above provided that you also do one of the following:
--
--    a) Accompany it with the complete corresponding machine-readable
--    source code, which must be distributed under the terms of Sections
--    1 and 2 above on a medium customarily used for software interchange; or,
--
--    b) Accompany it with a written offer, valid for at least three
--    years, to give any third party, for a charge no more than your
--    cost of physically performing source distribution, a complete
--    machine-readable copy of the corresponding source code, to be
--    distributed under the terms of Sections 1 and 2 above on a medium
--    customarily used for software interchange; or,
--
--    c) Accompany it with the information you received as to the offer
--    to distribute corresponding source code.  (This alternative is
--    allowed only for noncommercial distribution and only if you
--    received the program in object code or executable form with such
--    an offer, in accord with Subsection b above.)
--
--The source code for a work means the preferred form of the work for
--making modifications to it.  For an executable work, complete source
--code means all the source code for all modules it contains, plus any
--associated interface definition files, plus the scripts used to
--control compilation and installation of the executable.  However, as a
--special exception, the source code distributed need not include
--anything that is normally distributed (in either source or binary
--form) with the major components (compiler, kernel, and so on) of the
--operating system on which the executable runs, unless that component
--itself accompanies the executable.
--
--If distribution of executable or object code is made by offering
--access to copy from a designated place, then offering equivalent
--access to copy the source code from the same place counts as
--distribution of the source code, even though third parties are not
--compelled to copy the source along with the object code.
--
--  4. You may not copy, modify, sublicense, or distribute the Program
--except as expressly provided under this License.  Any attempt
--otherwise to copy, modify, sublicense or distribute the Program is
--void, and will automatically terminate your rights under this License.
--However, parties who have received copies, or rights, from you under
--this License will not have their licenses terminated so long as such
--parties remain in full compliance.
--
--  5. You are not required to accept this License, since you have not
--signed it.  However, nothing else grants you permission to modify or
--distribute the Program or its derivative works.  These actions are
--prohibited by law if you do not accept this License.  Therefore, by
--modifying or distributing the Program (or any work based on the
--Program), you indicate your acceptance of this License to do so, and
--all its terms and conditions for copying, distributing or modifying
--the Program or works based on it.
--
--  6. Each time you redistribute the Program (or any work based on the
--Program), the recipient automatically receives a license from the
--original licensor to copy, distribute or modify the Program subject to
--these terms and conditions.  You may not impose any further
--restrictions on the recipients' exercise of the rights granted herein.
--You are not responsible for enforcing compliance by third parties to
--this License.
--
--  7. If, as a consequence of a court judgment or allegation of patent
--infringement or for any other reason (not limited to patent issues),
--conditions are imposed on you (whether by court order, agreement or
--otherwise) that contradict the conditions of this License, they do not
--excuse you from the conditions of this License.  If you cannot
--distribute so as to satisfy simultaneously your obligations under this
--License and any other pertinent obligations, then as a consequence you
--may not distribute the Program at all.  For example, if a patent
--license would not permit royalty-free redistribution of the Program by
--all those who receive copies directly or indirectly through you, then
--the only way you could satisfy both it and this License would be to
--refrain entirely from distribution of the Program.
--
--If any portion of this section is held invalid or unenforceable under
--any particular circumstance, the balance of the section is intended to
--apply and the section as a whole is intended to apply in other
--circumstances.
--
--It is not the purpose of this section to induce you to infringe any
--patents or other property right claims or to contest validity of any
--such claims; this section has the sole purpose of protecting the
--integrity of the free software distribution system, which is
--implemented by public license practices.  Many people have made
--generous contributions to the wide range of software distributed
--through that system in reliance on consistent application of that
--system; it is up to the author/donor to decide if he or she is willing
--to distribute software through any other system and a licensee cannot
--impose that choice.
--
--This section is intended to make thoroughly clear what is believed to
--be a consequence of the rest of this License.
--
--  8. If the distribution and/or use of the Program is restricted in
--certain countries either by patents or by copyrighted interfaces, the
--original copyright holder who places the Program under this License
--may add an explicit geographical distribution limitation excluding
--those countries, so that distribution is permitted only in or among
--countries not thus excluded.  In such case, this License incorporates
--the limitation as if written in the body of this License.
--
--  9. The Free Software Foundation may publish revised and/or new versions
--of the General Public License from time to time.  Such new versions will
--be similar in spirit to the present version, but may differ in detail to
--address new problems or concerns.
--
--Each version is given a distinguishing version number.  If the Program
--specifies a version number of this License which applies to it and "any
--later version", you have the option of following the terms and conditions
--either of that version or of any later version published by the Free
--Software Foundation.  If the Program does not specify a version number of
--this License, you may choose any version ever published by the Free Software
--Foundation.
--
--  10. If you wish to incorporate parts of the Program into other free
--programs whose distribution conditions are different, write to the author
--to ask for permission.  For software which is copyrighted by the Free
--Software Foundation, write to the Free Software Foundation; we sometimes
--make exceptions for this.  Our decision will be guided by the two goals
--of preserving the free status of all derivatives of our free software and
--of promoting the sharing and reuse of software generally.
--
--                          NO WARRANTY
--
--  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
--FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
--OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
--PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
--OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
--MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
--TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
--PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
--REPAIR OR CORRECTION.
--
--  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
--WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
--REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
--INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
--OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
--TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
--YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
--PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
--POSSIBILITY OF SUCH DAMAGES.
--
--                   END OF TERMS AND CONDITIONS
--
--          How to Apply These Terms to Your New Programs
--
--  If you develop a new program, and you want it to be of the greatest
--possible use to the public, the best way to achieve this is to make it
--free software which everyone can redistribute and change under these terms.
--
--  To do so, attach the following notices to the program.  It is safest
--to attach them to the start of each source file to most effectively
--convey the exclusion of warranty; and each file should have at least
--the "copyright" line and a pointer to where the full notice is found.
--
--    <one line to give the program's name and a brief idea of what it does.>
--    Copyright (C) <year>  <name of author>
--
--    This program is free software; you can redistribute it and/or modify
--    it under the terms of the GNU General Public License as published by
--    the Free Software Foundation; either version 2 of the License, or
--    (at your option) any later version.
--
--    This program is distributed in the hope that it will be useful,
--    but WITHOUT ANY WARRANTY; without even the implied warranty of
--    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--    GNU General Public License for more details.
--
--    You should have received a copy of the GNU General Public License along
--    with this program; if not, write to the Free Software Foundation, Inc.,
--    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--
--Also add information on how to contact you by electronic and paper mail.
--
--If the program is interactive, make it output a short notice like this
--when it starts in an interactive mode:
--
--    Gnomovision version 69, Copyright (C) year name of author
--    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
--    This is free software, and you are welcome to redistribute it
--    under certain conditions; type `show c' for details.
--
--The hypothetical commands `show w' and `show c' should show the appropriate
--parts of the General Public License.  Of course, the commands you use may
--be called something other than `show w' and `show c'; they could even be
--mouse-clicks or menu items--whatever suits your program.
--
--You should also get your employer (if you work as a programmer) or your
--school, if any, to sign a "copyright disclaimer" for the program, if
--necessary.  Here is a sample; alter the names:
--
--  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
--  `Gnomovision' (which makes passes at compilers) written by James Hacker.
--
--  <signature of Ty Coon>, 1 April 1989
--  Ty Coon, President of Vice
--
--This General Public License does not permit incorporating your program into
--proprietary programs.  If your program is a subroutine library, you may
--consider it more useful to permit linking proprietary applications with the
--library.  If this is what you want to do, use the GNU Lesser General
--Public License instead of this License.
-diff --git a/Source/ThirdParty/ANGLE/tools/flex-bison/third_party/m4sugar/README.chromium b/Source/ThirdParty/ANGLE/tools/flex-bison/third_party/m4sugar/README.chromium
-deleted file mode 100644
-index c60a5fd4fdc..00000000000
---- a/Source/ThirdParty/ANGLE/tools/flex-bison/third_party/m4sugar/README.chromium
-+++ /dev/null
-@@ -1,11 +0,0 @@
--Name: Autoconf M4 macros used by Bison
--Short Name: m4sugar
--URL: https://www.gnu.org/software/autoconf/
--Version: unknown
--License: GPL
--License File: LICENSE
--Security critical: no
--
--Description:
--Bison uses M4 to generate its output, and uses the utility M4 macros in this
--directory.
-diff --git a/Source/ThirdParty/ANGLE/tools/flex-bison/third_party/m4sugar/foreach.m4 b/Source/ThirdParty/ANGLE/tools/flex-bison/third_party/m4sugar/foreach.m4
-deleted file mode 100644
-index 7093d0fcc4e..00000000000
---- a/Source/ThirdParty/ANGLE/tools/flex-bison/third_party/m4sugar/foreach.m4
-+++ /dev/null
-@@ -1,362 +0,0 @@
--#                                                  -*- Autoconf -*-
--# This file is part of Autoconf.
--# foreach-based replacements for recursive functions.
--# Speeds up GNU M4 1.4.x by avoiding quadratic $@ recursion, but penalizes
--# GNU M4 1.6 by requiring more memory and macro expansions.
--#
--# Copyright (C) 2008-2017 Free Software Foundation, Inc.
--
--# This file is part of Autoconf.  This program is free
--# software; you can redistribute it and/or modify it under the
--# terms of the GNU General Public License as published by the
--# Free Software Foundation, either version 3 of the License, or
--# (at your option) any later version.
--#
--# This program is distributed in the hope that it will be useful,
--# but WITHOUT ANY WARRANTY; without even the implied warranty of
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--# GNU General Public License for more details.
--#
--# Under Section 7 of GPL version 3, you are granted additional
--# permissions described in the Autoconf Configure Script Exception,
--# version 3.0, as published by the Free Software Foundation.
--#
--# You should have received a copy of the GNU General Public License
--# and a copy of the Autoconf Configure Script Exception along with
--# this program; see the files COPYINGv3 and COPYING.EXCEPTION
--# respectively.  If not, see <https://www.gnu.org/licenses/>.
--
--# Written by Eric Blake.
--
--# In M4 1.4.x, every byte of $@ is rescanned.  This means that an
--# algorithm on n arguments that recurses with one less argument each
--# iteration will scan n * (n + 1) / 2 arguments, for O(n^2) time.  In
--# M4 1.6, this was fixed so that $@ is only scanned once, then
--# back-references are made to information stored about the scan.
--# Thus, n iterations need only scan n arguments, for O(n) time.
--# Additionally, in M4 1.4.x, recursive algorithms did not clean up
--# memory very well, requiring O(n^2) memory rather than O(n) for n
--# iterations.
--#
--# This file is designed to overcome the quadratic nature of $@
--# recursion by writing a variant of m4_foreach that uses m4_for rather
--# than $@ recursion to operate on the list.  This involves more macro
--# expansions, but avoids the need to rescan a quadratic number of
--# arguments, making these replacements very attractive for M4 1.4.x.
--# On the other hand, in any version of M4, expanding additional macros
--# costs additional time; therefore, in M4 1.6, where $@ recursion uses
--# fewer macros, these replacements actually pessimize performance.
--# Additionally, the use of $10 to mean the tenth argument violates
--# POSIX; although all versions of m4 1.4.x support this meaning, a
--# future m4 version may switch to take it as the first argument
--# concatenated with a literal 0, so the implementations in this file
--# are not future-proof.  Thus, this file is conditionally included as
--# part of m4_init(), only when it is detected that M4 probably has
--# quadratic behavior (ie. it lacks the macro __m4_version__).
--#
--# Please keep this file in sync with m4sugar.m4.
--
--# _m4_foreach(PRE, POST, IGNORED, ARG...)
--# ---------------------------------------
--# Form the common basis of the m4_foreach and m4_map macros.  For each
--# ARG, expand PRE[ARG]POST[].  The IGNORED argument makes recursion
--# easier, and must be supplied rather than implicit.
--#
--# This version minimizes the number of times that $@ is evaluated by
--# using m4_for to generate a boilerplate into _m4_f then passing $@ to
--# that temporary macro.  Thus, the recursion is done in m4_for without
--# reparsing any user input, and is not quadratic.  For an idea of how
--# this works, note that m4_foreach(i,[1,2],[i]) calls
--#   _m4_foreach([m4_define([i],],[)i],[],[1],[2])
--# which defines _m4_f:
--#   $1[$4]$2[]$1[$5]$2[]_m4_popdef([_m4_f])
--# then calls _m4_f([m4_define([i],],[)i],[],[1],[2]) for a net result:
--#   m4_define([i],[1])i[]m4_define([i],[2])i[]_m4_popdef([_m4_f]).
--m4_define([_m4_foreach],
--[m4_if([$#], [3], [],
--       [m4_pushdef([_m4_f], _m4_for([4], [$#], [1],
--   [$0_([1], [2],], [)])[_m4_popdef([_m4_f])])_m4_f($@)])])
--
--m4_define([_m4_foreach_],
--[[$$1[$$3]$$2[]]])
--
--# m4_case(SWITCH, VAL1, IF-VAL1, VAL2, IF-VAL2, ..., DEFAULT)
--# -----------------------------------------------------------
--# Find the first VAL that SWITCH matches, and expand the corresponding
--# IF-VAL.  If there are no matches, expand DEFAULT.
--#
--# Use m4_for to create a temporary macro in terms of a boilerplate
--# m4_if with final cleanup.  If $# is even, we have DEFAULT; if it is
--# odd, then rounding the last $# up in the temporary macro is
--# harmless.  For example, both m4_case(1,2,3,4,5) and
--# m4_case(1,2,3,4,5,6) result in the intermediate _m4_case being
--#   m4_if([$1],[$2],[$3],[$1],[$4],[$5],_m4_popdef([_m4_case])[$6])
--m4_define([m4_case],
--[m4_if(m4_eval([$# <= 2]), [1], [$2],
--[m4_pushdef([_$0], [m4_if(]_m4_for([2], m4_eval([($# - 1) / 2 * 2]), [2],
--     [_$0_(], [)])[_m4_popdef(
--       [_$0])]m4_dquote($m4_eval([($# + 1) & ~1]))[)])_$0($@)])])
--
--m4_define([_m4_case_],
--[$0_([1], [$1], m4_incr([$1]))])
--
--m4_define([_m4_case__],
--[[[$$1],[$$2],[$$3],]])
--
--# m4_bmatch(SWITCH, RE1, VAL1, RE2, VAL2, ..., DEFAULT)
--# -----------------------------------------------------
--# m4 equivalent of
--#
--# if (SWITCH =~ RE1)
--#   VAL1;
--# elif (SWITCH =~ RE2)
--#   VAL2;
--# elif ...
--#   ...
--# else
--#   DEFAULT
--#
--# We build the temporary macro _m4_b:
--#   m4_define([_m4_b], _m4_defn([_m4_bmatch]))_m4_b([$1], [$2], [$3])...
--#   _m4_b([$1], [$m-1], [$m])_m4_b([], [], [$m+1]_m4_popdef([_m4_b]))
--# then invoke m4_unquote(_m4_b($@)), for concatenation with later text.
--m4_define([m4_bmatch],
--[m4_if([$#], 0, [m4_fatal([$0: too few arguments: $#])],
--       [$#], 1, [m4_fatal([$0: too few arguments: $#: $1])],
--       [$#], 2, [$2],
--       [m4_pushdef([_m4_b], [m4_define([_m4_b],
--  _m4_defn([_$0]))]_m4_for([3], m4_eval([($# + 1) / 2 * 2 - 1]),
--  [2], [_$0_(], [)])[_m4_b([], [],]m4_dquote([$]m4_eval(
--  [($# + 1) / 2 * 2]))[_m4_popdef([_m4_b]))])m4_unquote(_m4_b($@))])])
--
--m4_define([_m4_bmatch],
--[m4_if(m4_bregexp([$1], [$2]), [-1], [], [[$3]m4_define([$0])])])
--
--m4_define([_m4_bmatch_],
--[$0_([1], m4_decr([$1]), [$1])])
--
--m4_define([_m4_bmatch__],
--[[_m4_b([$$1], [$$2], [$$3])]])
--
--
--# m4_cond(TEST1, VAL1, IF-VAL1, TEST2, VAL2, IF-VAL2, ..., [DEFAULT])
--# -------------------------------------------------------------------
--# Similar to m4_if, except that each TEST is expanded when encountered.
--# If the expansion of TESTn matches the string VALn, the result is IF-VALn.
--# The result is DEFAULT if no tests passed.  This macro allows
--# short-circuiting of expensive tests, where it pays to arrange quick
--# filter tests to run first.
--#
--# m4_cond already guarantees either 3*n or 3*n + 1 arguments, 1 <= n.
--# We only have to speed up _m4_cond, by building the temporary _m4_c:
--#   m4_define([_m4_c], _m4_defn([m4_unquote]))_m4_c([m4_if(($1), [($2)],
--#   [[$3]m4_define([_m4_c])])])_m4_c([m4_if(($4), [($5)],
--#   [[$6]m4_define([_m4_c])])])..._m4_c([m4_if(($m-2), [($m-1)],
--#   [[$m]m4_define([_m4_c])])])_m4_c([[$m+1]]_m4_popdef([_m4_c]))
--# We invoke m4_unquote(_m4_c($@)), for concatenation with later text.
--m4_define([_m4_cond],
--[m4_pushdef([_m4_c], [m4_define([_m4_c],
--  _m4_defn([m4_unquote]))]_m4_for([2], m4_eval([$# / 3 * 3 - 1]), [3],
--  [$0_(], [)])[_m4_c(]m4_dquote(m4_dquote(
--  [$]m4_eval([$# / 3 * 3 + 1])))[_m4_popdef([_m4_c]))])m4_unquote(_m4_c($@))])
--
--m4_define([_m4_cond_],
--[$0_(m4_decr([$1]), [$1], m4_incr([$1]))])
--
--m4_define([_m4_cond__],
--[[_m4_c([m4_if(($$1), [($$2)], [[$$3]m4_define([_m4_c])])])]])
--
--# m4_bpatsubsts(STRING, RE1, SUBST1, RE2, SUBST2, ...)
--# ----------------------------------------------------
--# m4 equivalent of
--#
--#   $_ = STRING;
--#   s/RE1/SUBST1/g;
--#   s/RE2/SUBST2/g;
--#   ...
--#
--# m4_bpatsubsts already validated an odd number of arguments; we only
--# need to speed up _m4_bpatsubsts.  To avoid nesting, we build the
--# temporary _m4_p:
--#   m4_define([_m4_p], [$1])m4_define([_m4_p],
--#   m4_bpatsubst(m4_dquote(_m4_defn([_m4_p])), [$2], [$3]))m4_define([_m4_p],
--#   m4_bpatsubst(m4_dquote(_m4_defn([_m4_p])), [$4], [$5]))m4_define([_m4_p],...
--#   m4_bpatsubst(m4_dquote(_m4_defn([_m4_p])), [$m-1], [$m]))m4_unquote(
--#   _m4_defn([_m4_p])_m4_popdef([_m4_p]))
--m4_define([_m4_bpatsubsts],
--[m4_pushdef([_m4_p], [m4_define([_m4_p],
--  ]m4_dquote([$]1)[)]_m4_for([3], [$#], [2], [$0_(],
--  [)])[m4_unquote(_m4_defn([_m4_p])_m4_popdef([_m4_p]))])_m4_p($@)])
--
--m4_define([_m4_bpatsubsts_],
--[$0_(m4_decr([$1]), [$1])])
--
--m4_define([_m4_bpatsubsts__],
--[[m4_define([_m4_p],
--m4_bpatsubst(m4_dquote(_m4_defn([_m4_p])), [$$1], [$$2]))]])
--
--# m4_shiftn(N, ...)
--# -----------------
--# Returns ... shifted N times.  Useful for recursive "varargs" constructs.
--#
--# m4_shiftn already validated arguments; we only need to speed up
--# _m4_shiftn.  If N is 3, then we build the temporary _m4_s, defined as
--#   ,[$5],[$6],...,[$m]_m4_popdef([_m4_s])
--# before calling m4_shift(_m4_s($@)).
--m4_define([_m4_shiftn],
--[m4_if(m4_incr([$1]), [$#], [], [m4_pushdef([_m4_s],
--  _m4_for(m4_eval([$1 + 2]), [$#], [1],
--  [[,]m4_dquote($], [)])[_m4_popdef([_m4_s])])m4_shift(_m4_s($@))])])
--
--# m4_do(STRING, ...)
--# ------------------
--# This macro invokes all its arguments (in sequence, of course).  It is
--# useful for making your macros more structured and readable by dropping
--# unnecessary dnl's and have the macros indented properly.
--#
--# Here, we use the temporary macro _m4_do, defined as
--#   $1[]$2[]...[]$n[]_m4_popdef([_m4_do])
--m4_define([m4_do],
--[m4_if([$#], [0], [],
--       [m4_pushdef([_$0], _m4_for([1], [$#], [1],
--                 [$], [[[]]])[_m4_popdef([_$0])])_$0($@)])])
--
--# m4_dquote_elt(ARGS)
--# -------------------
--# Return ARGS as an unquoted list of double-quoted arguments.
--#
--# _m4_foreach to the rescue.
--m4_define([m4_dquote_elt],
--[m4_if([$#], [0], [], [[[$1]]_m4_foreach([,m4_dquote(], [)], $@)])])
--
--# m4_reverse(ARGS)
--# ----------------
--# Output ARGS in reverse order.
--#
--# Invoke _m4_r($@) with the temporary _m4_r built as
--#   [$m], [$m-1], ..., [$2], [$1]_m4_popdef([_m4_r])
--m4_define([m4_reverse],
--[m4_if([$#], [0], [], [$#], [1], [[$1]],
--[m4_pushdef([_m4_r], [[$$#]]_m4_for(m4_decr([$#]), [1], [-1],
--    [[, ]m4_dquote($], [)])[_m4_popdef([_m4_r])])_m4_r($@)])])
--
--
--# m4_map_args_pair(EXPRESSION, [END-EXPR = EXPRESSION], ARG...)
--# -------------------------------------------------------------
--# Perform a pairwise grouping of consecutive ARGs, by expanding
--# EXPRESSION([ARG1], [ARG2]).  If there are an odd number of ARGs, the
--# final argument is expanded with END-EXPR([ARGn]).
--#
--# Build the temporary macro _m4_map_args_pair, with the $2([$m+1])
--# only output if $# is odd:
--#   $1([$3], [$4])[]$1([$5], [$6])[]...$1([$m-1],
--#   [$m])[]m4_default([$2], [$1])([$m+1])[]_m4_popdef([_m4_map_args_pair])
--m4_define([m4_map_args_pair],
--[m4_if([$#], [0], [m4_fatal([$0: too few arguments: $#])],
--       [$#], [1], [m4_fatal([$0: too few arguments: $#: $1])],
--       [$#], [2], [],
--       [$#], [3], [m4_default([$2], [$1])([$3])[]],
--       [m4_pushdef([_$0], _m4_for([3],
--   m4_eval([$# / 2 * 2 - 1]), [2], [_$0_(], [)])_$0_end(
--   [1], [2], [$#])[_m4_popdef([_$0])])_$0($@)])])
--
--m4_define([_m4_map_args_pair_],
--[$0_([1], [$1], m4_incr([$1]))])
--
--m4_define([_m4_map_args_pair__],
--[[$$1([$$2], [$$3])[]]])
--
--m4_define([_m4_map_args_pair_end],
--[m4_if(m4_eval([$3 & 1]), [1], [[m4_default([$$2], [$$1])([$$3])[]]])])
--
--# m4_join(SEP, ARG1, ARG2...)
--# ---------------------------
--# Produce ARG1SEPARG2...SEPARGn.  Avoid back-to-back SEP when a given ARG
--# is the empty string.  No expansion is performed on SEP or ARGs.
--#
--# Use a self-modifying separator, since we don't know how many
--# arguments might be skipped before a separator is first printed, but
--# be careful if the separator contains $.  _m4_foreach to the rescue.
--m4_define([m4_join],
--[m4_pushdef([_m4_sep], [m4_define([_m4_sep], _m4_defn([m4_echo]))])]dnl
--[_m4_foreach([_$0([$1],], [)], $@)_m4_popdef([_m4_sep])])
--
--m4_define([_m4_join],
--[m4_if([$2], [], [], [_m4_sep([$1])[$2]])])
--
--# m4_joinall(SEP, ARG1, ARG2...)
--# ------------------------------
--# Produce ARG1SEPARG2...SEPARGn.  An empty ARG results in back-to-back SEP.
--# No expansion is performed on SEP or ARGs.
--#
--# A bit easier than m4_join.  _m4_foreach to the rescue.
--m4_define([m4_joinall],
--[[$2]m4_if(m4_eval([$# <= 2]), [1], [],
--         [_m4_foreach([$1], [], m4_shift($@))])])
--
--# m4_list_cmp(A, B)
--# -----------------
--# Compare the two lists of integer expressions A and B.
--#
--# m4_list_cmp takes care of any side effects; we only override
--# _m4_list_cmp_raw, where we can safely expand lists multiple times.
--# First, insert padding so that both lists are the same length; the
--# trailing +0 is necessary to handle a missing list.  Next, create a
--# temporary macro to perform pairwise comparisons until an inequality
--# is found.  For example, m4_list_cmp([1], [1,2]) creates _m4_cmp as
--#   m4_if(m4_eval([($1) != ($3)]), [1], [m4_cmp([$1], [$3])],
--#         m4_eval([($2) != ($4)]), [1], [m4_cmp([$2], [$4])],
--#         [0]_m4_popdef([_m4_cmp]))
--# then calls _m4_cmp([1+0], [0*2], [1], [2+0])
--m4_define([_m4_list_cmp_raw],
--[m4_if([$1], [$2], 0,
--       [_m4_list_cmp($1+0_m4_list_pad(m4_count($1), m4_count($2)),
--                   $2+0_m4_list_pad(m4_count($2), m4_count($1)))])])
--
--m4_define([_m4_list_pad],
--[m4_if(m4_eval($1 < $2), [1],
--       [_m4_for(m4_incr([$1]), [$2], [1], [,0*])])])
--
--m4_define([_m4_list_cmp],
--[m4_pushdef([_m4_cmp], [m4_if(]_m4_for(
--   [1], m4_eval([$# >> 1]), [1], [$0_(], [,]m4_eval([$# >> 1])[)])[
--      [0]_m4_popdef([_m4_cmp]))])_m4_cmp($@)])
--
--m4_define([_m4_list_cmp_],
--[$0_([$1], m4_eval([$1 + $2]))])
--
--m4_define([_m4_list_cmp__],
--[[m4_eval([($$1) != ($$2)]), [1], [m4_cmp([$$1], [$$2])],
--]])
--
--# m4_max(EXPR, ...)
--# m4_min(EXPR, ...)
--# -----------------
--# Return the decimal value of the maximum (or minimum) in a series of
--# integer expressions.
--#
--# _m4_foreach to the rescue; we only need to replace _m4_minmax.  Here,
--# we need a temporary macro to track the best answer so far, so that
--# the foreach expression is tractable.
--m4_define([_m4_minmax],
--[m4_pushdef([_m4_best], m4_eval([$2]))_m4_foreach(
--  [m4_define([_m4_best], $1(_m4_best,], [))], m4_shift($@))]dnl
--[_m4_best[]_m4_popdef([_m4_best])])
--
--# m4_set_add_all(SET, VALUE...)
--# -----------------------------
--# Add each VALUE into SET.  This is O(n) in the number of VALUEs, and
--# can be faster than calling m4_set_add for each VALUE.
--#
--# _m4_foreach to the rescue.  If no deletions have occurred, then
--# avoid the speed penalty of m4_set_add.
--m4_define([m4_set_add_all],
--[m4_if([$#], [0], [], [$#], [1], [],
--       [m4_define([_m4_set_size($1)], m4_eval(m4_set_size([$1])
--        + m4_len(_m4_foreach(m4_ifdef([_m4_set_cleanup($1)],
--  [[m4_set_add]], [[_$0]])[([$1],], [)], $@))))])])
--
--m4_define([_m4_set_add_all],
--[m4_ifdef([_m4_set([$1],$2)], [],
--        [m4_define([_m4_set([$1],$2)],
--                   [1])m4_pushdef([_m4_set([$1])], [$2])-])])
-diff --git a/Source/ThirdParty/ANGLE/tools/flex-bison/third_party/m4sugar/m4sugar.m4 b/Source/ThirdParty/ANGLE/tools/flex-bison/third_party/m4sugar/m4sugar.m4
-deleted file mode 100644
-index bbd695836a2..00000000000
---- a/Source/ThirdParty/ANGLE/tools/flex-bison/third_party/m4sugar/m4sugar.m4
-+++ /dev/null
-@@ -1,3308 +0,0 @@
--divert(-1)#                                                  -*- Autoconf -*-
--# This file is part of Autoconf.
--# Base M4 layer.
--# Requires GNU M4.
--#
--# Copyright (C) 1999-2017 Free Software Foundation, Inc.
--
--# This file is part of Autoconf.  This program is free
--# software; you can redistribute it and/or modify it under the
--# terms of the GNU General Public License as published by the
--# Free Software Foundation, either version 3 of the License, or
--# (at your option) any later version.
--#
--# This program is distributed in the hope that it will be useful,
--# but WITHOUT ANY WARRANTY; without even the implied warranty of
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--# GNU General Public License for more details.
--#
--# Under Section 7 of GPL version 3, you are granted additional
--# permissions described in the Autoconf Configure Script Exception,
--# version 3.0, as published by the Free Software Foundation.
--#
--# You should have received a copy of the GNU General Public License
--# and a copy of the Autoconf Configure Script Exception along with
--# this program; see the files COPYINGv3 and COPYING.EXCEPTION
--# respectively.  If not, see <https://www.gnu.org/licenses/>.
--
--# Written by Akim Demaille.
--
--# Set the quotes, whatever the current quoting system.
--changequote()
--changequote([, ])
--
--# Some old m4's don't support m4exit.  But they provide
--# equivalent functionality by core dumping because of the
--# long macros we define.
--ifdef([__gnu__], ,
--[errprint(M4sugar requires GNU M4. Install it before installing M4sugar or
--set the M4 environment variable to its absolute file name.)
--m4exit(2)])
--
--
--## ------------------------------- ##
--## 1. Simulate --prefix-builtins.  ##
--## ------------------------------- ##
--
--# m4_define
--# m4_defn
--# m4_undefine
--define([m4_define],   defn([define]))
--define([m4_defn],     defn([defn]))
--define([m4_undefine], defn([undefine]))
--
--m4_undefine([define])
--m4_undefine([defn])
--m4_undefine([undefine])
--
--
--# m4_copy(SRC, DST)
--# -----------------
--# Define DST as the definition of SRC.
--# What's the difference between:
--# 1. m4_copy([from], [to])
--# 2. m4_define([to], [from($@)])
--# Well, obviously 1 is more expensive in space.  Maybe 2 is more expensive
--# in time, but because of the space cost of 1, it's not that obvious.
--# Nevertheless, one huge difference is the handling of `$0'.  If `from'
--# uses `$0', then with 1, `to''s `$0' is `to', while it is `from' in 2.
--# The user would certainly prefer to see `to'.
--#
--# This definition is in effect during m4sugar initialization, when
--# there are no pushdef stacks; later on, we redefine it to something
--# more powerful for all other clients to use.
--m4_define([m4_copy],
--[m4_define([$2], m4_defn([$1]))])
--
--
--# m4_rename(SRC, DST)
--# -------------------
--# Rename the macro SRC to DST.
--m4_define([m4_rename],
--[m4_copy([$1], [$2])m4_undefine([$1])])
--
--
--# m4_rename_m4(MACRO-NAME)
--# ------------------------
--# Rename MACRO-NAME to m4_MACRO-NAME.
--m4_define([m4_rename_m4],
--[m4_rename([$1], [m4_$1])])
--
--
--# m4_copy_unm4(m4_MACRO-NAME)
--# ---------------------------
--# Copy m4_MACRO-NAME to MACRO-NAME.
--m4_define([m4_copy_unm4],
--[m4_copy([$1], m4_bpatsubst([$1], [^m4_\(.*\)], [[\1]]))])
--
--
--# Some m4 internals have names colliding with tokens we might use.
--# Rename them a` la `m4 --prefix-builtins'.  Conditionals first, since
--# some subsequent renames are conditional.
--m4_rename_m4([ifdef])
--m4_rename([ifelse], [m4_if])
--
--m4_rename_m4([builtin])
--m4_rename_m4([changecom])
--m4_rename_m4([changequote])
--m4_ifdef([changeword],dnl conditionally available in 1.4.x
--[m4_undefine([changeword])])
--m4_rename_m4([debugfile])
--m4_rename_m4([debugmode])
--m4_rename_m4([decr])
--m4_rename_m4([divnum])
--m4_rename_m4([dumpdef])
--m4_rename_m4([errprint])
--m4_rename_m4([esyscmd])
--m4_rename_m4([eval])
--m4_rename_m4([format])
--m4_undefine([include])
--m4_rename_m4([incr])
--m4_rename_m4([index])
--m4_rename_m4([indir])
--m4_rename_m4([len])
--m4_rename([m4exit], [m4_exit])
--m4_undefine([m4wrap])
--m4_ifdef([mkstemp],dnl added in M4 1.4.8
--[m4_rename_m4([mkstemp])
--m4_copy([m4_mkstemp], [m4_maketemp])
--m4_undefine([maketemp])],
--[m4_rename_m4([maketemp])
--m4_copy([m4_maketemp], [m4_mkstemp])])
--m4_rename([patsubst], [m4_bpatsubst])
--m4_rename_m4([popdef])
--m4_rename_m4([pushdef])
--m4_rename([regexp], [m4_bregexp])
--m4_rename_m4([shift])
--m4_undefine([sinclude])
--m4_rename_m4([substr])
--m4_ifdef([symbols],dnl present only in alpha-quality 1.4o
--[m4_rename_m4([symbols])])
--m4_rename_m4([syscmd])
--m4_rename_m4([sysval])
--m4_rename_m4([traceoff])
--m4_rename_m4([traceon])
--m4_rename_m4([translit])
--
--# _m4_defn(ARG)
--# -------------
--# _m4_defn is for internal use only - it bypasses the wrapper, so it
--# must only be used on one argument at a time, and only on macros
--# known to be defined.  Make sure this still works if the user renames
--# m4_defn but not _m4_defn.
--m4_copy([m4_defn], [_m4_defn])
--
--# _m4_divert_raw(NUM)
--# -------------------
--# _m4_divert_raw is for internal use only.  Use this instead of
--# m4_builtin([divert], NUM), so that tracing diversion flow is easier.
--m4_rename([divert], [_m4_divert_raw])
--
--# _m4_popdef(ARG...)
--# ------------------
--# _m4_popdef is for internal use only - it bypasses the wrapper, so it
--# must only be used on macros known to be defined.  Make sure this
--# still works if the user renames m4_popdef but not _m4_popdef.
--m4_copy([m4_popdef], [_m4_popdef])
--
--# _m4_undefine(ARG...)
--# --------------------
--# _m4_undefine is for internal use only - it bypasses the wrapper, so
--# it must only be used on macros known to be defined.  Make sure this
--# still works if the user renames m4_undefine but not _m4_undefine.
--m4_copy([m4_undefine], [_m4_undefine])
--
--# _m4_undivert(NUM...)
--# --------------------
--# _m4_undivert is for internal use only, and should always be given
--# arguments.  Use this instead of m4_builtin([undivert], NUM...), so
--# that tracing diversion flow is easier.
--m4_rename([undivert], [_m4_undivert])
--
--
--## ------------------- ##
--## 2. Error messages.  ##
--## ------------------- ##
--
--
--# m4_location
--# -----------
--# Output the current file, colon, and the current line number.
--m4_define([m4_location],
--[__file__:__line__])
--
--
--# m4_errprintn(MSG)
--# -----------------
--# Same as `errprint', but with the missing end of line.
--m4_define([m4_errprintn],
--[m4_errprint([$1
--])])
--
--
--# m4_warning(MSG)
--# ---------------
--# Warn the user.
--m4_define([m4_warning],
--[m4_errprintn(m4_location[: warning: $1])])
--
--
--# m4_fatal(MSG, [EXIT-STATUS])
--# ----------------------------
--# Fatal the user.                                                      :)
--m4_define([m4_fatal],
--[m4_errprintn(m4_location[: error: $1]
--m4_expansion_stack)m4_exit(m4_if([$2],, 1, [$2]))])
--
--
--# m4_assert(EXPRESSION, [EXIT-STATUS = 1])
--# ----------------------------------------
--# This macro ensures that EXPRESSION evaluates to true, and exits if
--# EXPRESSION evaluates to false.
--m4_define([m4_assert],
--[m4_if(m4_eval([$1]), 0,
--       [m4_fatal([assert failed: $1], [$2])])])
--
--
--
--## ------------- ##
--## 3. Warnings.  ##
--## ------------- ##
--
--
--# _m4_warn(CATEGORY, MESSAGE, [STACK-TRACE])
--# ------------------------------------------
--# Report a MESSAGE to the user if the CATEGORY of warnings is enabled.
--# This is for traces only.
--# If present, STACK-TRACE is a \n-separated list of "LOCATION: MESSAGE",
--# where the last line (and no other) ends with "the top level".
--#
--# Within m4, the macro is a no-op.  This macro really matters
--# when autom4te post-processes the trace output.
--m4_define([_m4_warn], [])
--
--
--# m4_warn(CATEGORY, MESSAGE)
--# --------------------------
--# Report a MESSAGE to the user if the CATEGORY of warnings is enabled.
--m4_define([m4_warn],
--[_m4_warn([$1], [$2],
--m4_ifdef([_m4_expansion_stack], [m4_expansion_stack]))])
--
--
--
--## ------------------- ##
--## 4. File inclusion.  ##
--## ------------------- ##
--
--
--# We also want to neutralize include (and sinclude for symmetry),
--# but we want to extend them slightly: warn when a file is included
--# several times.  This is, in general, a dangerous operation, because
--# too many people forget to quote the first argument of m4_define.
--#
--# For instance in the following case:
--#   m4_define(foo, [bar])
--# then a second reading will turn into
--#   m4_define(bar, [bar])
--# which is certainly not what was meant.
--
--# m4_include_unique(FILE)
--# -----------------------
--# Declare that the FILE was loading; and warn if it has already
--# been included.
--m4_define([m4_include_unique],
--[m4_ifdef([m4_include($1)],
--        [m4_warn([syntax], [file `$1' included several times])])dnl
--m4_define([m4_include($1)])])
--
--
--# m4_include(FILE)
--# ----------------
--# Like the builtin include, but warns against multiple inclusions.
--m4_define([m4_include],
--[m4_include_unique([$1])dnl
--m4_builtin([include], [$1])])
--
--
--# m4_sinclude(FILE)
--# -----------------
--# Like the builtin sinclude, but warns against multiple inclusions.
--m4_define([m4_sinclude],
--[m4_include_unique([$1])dnl
--m4_builtin([sinclude], [$1])])
--
--
--
--## ------------------------------------ ##
--## 5. Additional branching constructs.  ##
--## ------------------------------------ ##
--
--# Both `m4_ifval' and `m4_ifset' tests against the empty string.  The
--# difference is that `m4_ifset' is specialized on macros.
--#
--# In case of arguments of macros, eg. $1, it makes little difference.
--# In the case of a macro `FOO', you don't want to check `m4_ifval(FOO,
--# TRUE)', because if `FOO' expands with commas, there is a shifting of
--# the arguments.  So you want to run `m4_ifval([FOO])', but then you just
--# compare the *string* `FOO' against `', which, of course fails.
--#
--# So you want the variation `m4_ifset' that expects a macro name as $1.
--# If this macro is both defined and defined to a non empty value, then
--# it runs TRUE, etc.
--
--
--# m4_ifblank(COND, [IF-BLANK], [IF-TEXT])
--# m4_ifnblank(COND, [IF-TEXT], [IF-BLANK])
--# ----------------------------------------
--# If COND is empty, or consists only of blanks (space, tab, newline),
--# then expand IF-BLANK, otherwise expand IF-TEXT.  This differs from
--# m4_ifval only if COND has just whitespace, but it helps optimize in
--# spite of users who mistakenly leave trailing space after what they
--# thought was an empty argument:
--#   macro(
--#         []
--#        )
--#
--# Writing one macro in terms of the other causes extra overhead, so
--# we inline both definitions.
--m4_define([m4_ifblank],
--[m4_if(m4_translit([[$1]],  [ ][      ][
--]), [], [$2], [$3])])
--
--m4_define([m4_ifnblank],
--[m4_if(m4_translit([[$1]],  [ ][      ][
--]), [], [$3], [$2])])
--
--
--# m4_ifval(COND, [IF-TRUE], [IF-FALSE])
--# -------------------------------------
--# If COND is not the empty string, expand IF-TRUE, otherwise IF-FALSE.
--# Comparable to m4_ifdef.
--m4_define([m4_ifval],
--[m4_if([$1], [], [$3], [$2])])
--
--
--# m4_n(TEXT)
--# ----------
--# If TEXT is not empty, return TEXT and a new line, otherwise nothing.
--m4_define([m4_n],
--[m4_if([$1],
--       [], [],
--         [$1
--])])
--
--
--# m4_ifvaln(COND, [IF-TRUE], [IF-FALSE])
--# --------------------------------------
--# Same as `m4_ifval', but add an extra newline to IF-TRUE or IF-FALSE
--# unless that argument is empty.
--m4_define([m4_ifvaln],
--[m4_if([$1],
--       [],   [m4_n([$3])],
--           [m4_n([$2])])])
--
--
--# m4_ifset(MACRO, [IF-TRUE], [IF-FALSE])
--# --------------------------------------
--# If MACRO has no definition, or of its definition is the empty string,
--# expand IF-FALSE, otherwise IF-TRUE.
--m4_define([m4_ifset],
--[m4_ifdef([$1],
--        [m4_ifval(_m4_defn([$1]), [$2], [$3])],
--        [$3])])
--
--
--# m4_ifndef(NAME, [IF-NOT-DEFINED], [IF-DEFINED])
--# -----------------------------------------------
--m4_define([m4_ifndef],
--[m4_ifdef([$1], [$3], [$2])])
--
--
--# m4_case(SWITCH, VAL1, IF-VAL1, VAL2, IF-VAL2, ..., DEFAULT)
--# -----------------------------------------------------------
--# m4 equivalent of
--# switch (SWITCH)
--# {
--#   case VAL1:
--#     IF-VAL1;
--#     break;
--#   case VAL2:
--#     IF-VAL2;
--#     break;
--#   ...
--#   default:
--#     DEFAULT;
--#     break;
--# }.
--# All the values are optional, and the macro is robust to active
--# symbols properly quoted.
--#
--# Please keep foreach.m4 in sync with any adjustments made here.
--m4_define([m4_case],
--[m4_if([$#], 0, [],
--       [$#], 1, [],
--       [$#], 2, [$2],
--       [$1], [$2], [$3],
--       [$0([$1], m4_shift3($@))])])
--
--
--# m4_bmatch(SWITCH, RE1, VAL1, RE2, VAL2, ..., DEFAULT)
--# -----------------------------------------------------
--# m4 equivalent of
--#
--# if (SWITCH =~ RE1)
--#   VAL1;
--# elif (SWITCH =~ RE2)
--#   VAL2;
--# elif ...
--#   ...
--# else
--#   DEFAULT
--#
--# All the values are optional, and the macro is robust to active symbols
--# properly quoted.
--#
--# Please keep foreach.m4 in sync with any adjustments made here.
--m4_define([m4_bmatch],
--[m4_if([$#], 0, [m4_fatal([$0: too few arguments: $#])],
--       [$#], 1, [m4_fatal([$0: too few arguments: $#: $1])],
--       [$#], 2, [$2],
--       [m4_if(m4_bregexp([$1], [$2]), -1, [$0([$1], m4_shift3($@))],
--            [$3])])])
--
--# m4_argn(N, ARGS...)
--# -------------------
--# Extract argument N (greater than 0) from ARGS.  Example:
--#   m4_define([b], [B])
--#   m4_argn([2], [a], [b], [c]) => b
--#
--# Rather than using m4_car(m4_shiftn([$1], $@)), we exploit the fact that
--# GNU m4 can directly reference any argument, through an indirect macro.
--m4_define([m4_argn],
--[m4_assert([0 < $1])]dnl
--[m4_pushdef([_$0], [_m4_popdef([_$0])]m4_dquote([$]m4_incr([$1])))_$0($@)])
--
--
--# m4_car(ARGS...)
--# m4_cdr(ARGS...)
--# ---------------
--# Manipulate m4 lists.  m4_car returns the first argument.  m4_cdr
--# bundles all but the first argument into a quoted list.  These two
--# macros are generally used with list arguments, with quoting removed
--# to break the list into multiple m4 ARGS.
--m4_define([m4_car], [[$1]])
--m4_define([m4_cdr],
--[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
--       [$#], 1, [],
--       [m4_dquote(m4_shift($@))])])
--
--# _m4_cdr(ARGS...)
--# ----------------
--# Like m4_cdr, except include a leading comma unless only one argument
--# remains.  Why?  Because comparing a large list against [] is more
--# expensive in expansion time than comparing the number of arguments; so
--# _m4_cdr can be used to reduce the number of arguments when it is time
--# to end recursion.
--m4_define([_m4_cdr],
--[m4_if([$#], 1, [],
--       [, m4_dquote(m4_shift($@))])])
--
--
--
--# m4_cond(TEST1, VAL1, IF-VAL1, TEST2, VAL2, IF-VAL2, ..., [DEFAULT])
--# -------------------------------------------------------------------
--# Similar to m4_if, except that each TEST is expanded when encountered.
--# If the expansion of TESTn matches the string VALn, the result is IF-VALn.
--# The result is DEFAULT if no tests passed.  This macro allows
--# short-circuiting of expensive tests, where it pays to arrange quick
--# filter tests to run first.
--#
--# For an example, consider a previous implementation of _AS_QUOTE_IFELSE:
--#
--#    m4_if(m4_index([$1], [\]), [-1], [$2],
--#          m4_eval(m4_index([$1], [\\]) >= 0), [1], [$2],
--#          m4_eval(m4_index([$1], [\$]) >= 0), [1], [$2],
--#          m4_eval(m4_index([$1], [\`]) >= 0), [1], [$3],
--#          m4_eval(m4_index([$1], [\"]) >= 0), [1], [$3],
--#          [$2])
--#
--# Here, m4_index is computed 5 times, and m4_eval 4, even if $1 contains
--# no backslash.  It is more efficient to do:
--#
--#    m4_cond([m4_index([$1], [\])], [-1], [$2],
--#            [m4_eval(m4_index([$1], [\\]) >= 0)], [1], [$2],
--#            [m4_eval(m4_index([$1], [\$]) >= 0)], [1], [$2],
--#            [m4_eval(m4_index([$1], [\`]) >= 0)], [1], [$3],
--#            [m4_eval(m4_index([$1], [\"]) >= 0)], [1], [$3],
--#            [$2])
--#
--# In the common case of $1 with no backslash, only one m4_index expansion
--# occurs, and m4_eval is avoided altogether.
--#
--# Please keep foreach.m4 in sync with any adjustments made here.
--m4_define([m4_cond],
--[m4_if([$#], [0], [m4_fatal([$0: cannot be called without arguments])],
--       [$#], [1], [$1],
--       m4_eval([$# % 3]), [2], [m4_fatal([$0: missing an argument])],
--       [_$0($@)])])
--
--m4_define([_m4_cond],
--[m4_if(($1), [($2)], [$3],
--       [$#], [3], [],
--       [$#], [4], [$4],
--       [$0(m4_shift3($@))])])
--
--
--## ---------------------------------------- ##
--## 6. Enhanced version of some primitives.  ##
--## ---------------------------------------- ##
--
--# m4_bpatsubsts(STRING, RE1, SUBST1, RE2, SUBST2, ...)
--# ----------------------------------------------------
--# m4 equivalent of
--#
--#   $_ = STRING;
--#   s/RE1/SUBST1/g;
--#   s/RE2/SUBST2/g;
--#   ...
--#
--# All the values are optional, and the macro is robust to active symbols
--# properly quoted.
--#
--# I would have liked to name this macro `m4_bpatsubst', unfortunately,
--# due to quotation problems, I need to double quote $1 below, therefore
--# the anchors are broken :(  I can't let users be trapped by that.
--#
--# Recall that m4_shift3 always results in an argument.  Hence, we need
--# to distinguish between a final deletion vs. ending recursion.
--#
--# Please keep foreach.m4 in sync with any adjustments made here.
--m4_define([m4_bpatsubsts],
--[m4_if([$#], 0, [m4_fatal([$0: too few arguments: $#])],
--       [$#], 1, [m4_fatal([$0: too few arguments: $#: $1])],
--       [$#], 2, [m4_unquote(m4_builtin([patsubst], [[$1]], [$2]))],
--       [$#], 3, [m4_unquote(m4_builtin([patsubst], [[$1]], [$2], [$3]))],
--       [_$0($@m4_if(m4_eval($# & 1), 0, [,]))])])
--m4_define([_m4_bpatsubsts],
--[m4_if([$#], 2, [$1],
--       [$0(m4_builtin([patsubst], [[$1]], [$2], [$3]),
--         m4_shift3($@))])])
--
--
--# m4_copy(SRC, DST)
--# -----------------
--# Define the pushdef stack DST as a copy of the pushdef stack SRC;
--# give an error if DST is already defined.  This is particularly nice
--# for copying self-modifying pushdef stacks, where the top definition
--# includes one-shot initialization that is later popped to the normal
--# definition.  This version intentionally does nothing if SRC is
--# undefined.
--#
--# Some macros simply can't be renamed with this method: namely, anything
--# involved in the implementation of m4_stack_foreach_sep.
--m4_define([m4_copy],
--[m4_ifdef([$2], [m4_fatal([$0: won't overwrite defined macro: $2])],
--        [m4_stack_foreach_sep([$1], [m4_pushdef([$2],], [)])])]dnl
--[m4_ifdef([m4_location($1)], [m4_define([m4_location($2)], m4_location)])])
--
--
--# m4_copy_force(SRC, DST)
--# m4_rename_force(SRC, DST)
--# -------------------------
--# Like m4_copy/m4_rename, except blindly overwrite any existing DST.
--# Note that m4_copy_force tolerates undefined SRC, while m4_rename_force
--# does not.
--m4_define([m4_copy_force],
--[m4_ifdef([$2], [_m4_undefine([$2])])m4_copy($@)])
--
--m4_define([m4_rename_force],
--[m4_ifdef([$2], [_m4_undefine([$2])])m4_rename($@)])
--
--
--# m4_define_default(MACRO, VALUE)
--# -------------------------------
--# If MACRO is undefined, set it to VALUE.
--m4_define([m4_define_default],
--[m4_ifndef([$1], [m4_define($@)])])
--
--
--# m4_default(EXP1, EXP2)
--# m4_default_nblank(EXP1, EXP2)
--# -----------------------------
--# Returns EXP1 if not empty/blank, otherwise EXP2.  Expand the result.
--#
--# m4_default is called on hot paths, so inline the contents of m4_ifval,
--# for one less round of expansion.
--m4_define([m4_default],
--[m4_if([$1], [], [$2], [$1])])
--
--m4_define([m4_default_nblank],
--[m4_ifblank([$1], [$2], [$1])])
--
--
--# m4_default_quoted(EXP1, EXP2)
--# m4_default_nblank_quoted(EXP1, EXP2)
--# ------------------------------------
--# Returns EXP1 if non empty/blank, otherwise EXP2.  Leave the result quoted.
--#
--# For comparison:
--#   m4_define([active], [ACTIVE])
--#   m4_default([active], [default]) => ACTIVE
--#   m4_default([], [active]) => ACTIVE
--#   -m4_default([ ], [active])- => - -
--#   -m4_default_nblank([ ], [active])- => -ACTIVE-
--#   m4_default_quoted([active], [default]) => active
--#   m4_default_quoted([], [active]) => active
--#   -m4_default_quoted([ ], [active])- => - -
--#   -m4_default_nblank_quoted([ ], [active])- => -active-
--#
--# m4_default macro is called on hot paths, so inline the contents of m4_ifval,
--# for one less round of expansion.
--m4_define([m4_default_quoted],
--[m4_if([$1], [], [[$2]], [[$1]])])
--
--m4_define([m4_default_nblank_quoted],
--[m4_ifblank([$1], [[$2]], [[$1]])])
--
--
--# m4_defn(NAME)
--# -------------
--# Like the original, except guarantee a warning when using something which is
--# undefined (unlike M4 1.4.x).  This replacement is not a full-featured
--# replacement: if any of the defined macros contain unbalanced quoting, but
--# when pasted together result in a well-quoted string, then only native m4
--# support is able to get it correct.  But that's where quadrigraphs come in
--# handy, if you really need unbalanced quotes inside your macros.
--#
--# This macro is called frequently, so minimize the amount of additional
--# expansions by skipping m4_ifndef.  Better yet, if __m4_version__ exists,
--# (added in M4 1.6), then let m4 do the job for us (see m4_init).
--m4_define([m4_defn],
--[m4_if([$#], [0], [[$0]],
--       [$#], [1], [m4_ifdef([$1], [_m4_defn([$1])],
--                          [m4_fatal([$0: undefined macro: $1])])],
--       [m4_map_args([$0], $@)])])
--
--
--# m4_dumpdef(NAME...)
--# -------------------
--# In m4 1.4.x, dumpdef writes to the current debugfile, rather than
--# stderr.  This in turn royally confuses autom4te; so we follow the
--# lead of newer m4 and always dump to stderr.  Unlike the original,
--# this version requires an argument, since there is no convenient way
--# in m4 1.4.x to grab the names of all defined macros.  Newer m4
--# always dumps to stderr, regardless of the current debugfile; it also
--# provides m4symbols as a way to grab all current macro names.  But
--# dumpdefs is not frequently called, so we don't need to worry about
--# conditionally using these newer features.  Also, this version
--# doesn't sort multiple arguments.
--#
--# If we detect m4 1.6 or newer, then provide an alternate definition,
--# installed during m4_init, that allows builtins through.
--# Unfortunately, there is no nice way in m4 1.4.x to dump builtins.
--m4_define([m4_dumpdef],
--[m4_if([$#], [0], [m4_fatal([$0: missing argument])],
--       [$#], [1], [m4_ifdef([$1], [m4_errprintn(
--  [$1:        ]m4_dquote(_m4_defn([$1])))], [m4_fatal([$0: undefined macro: $1])])],
--       [m4_map_args([$0], $@)])])
--
--m4_define([_m4_dumpdef],
--[m4_if([$#], [0], [m4_fatal([$0: missing argument])],
--       [$#], [1], [m4_builtin([dumpdef], [$1])],
--       [m4_map_args_sep([m4_builtin([dumpdef],], [)], [], $@)])])
--
--
--# m4_dumpdefs(NAME...)
--# --------------------
--# Similar to `m4_dumpdef(NAME)', but if NAME was m4_pushdef'ed, display its
--# value stack (most recent displayed first).  Also, this version silently
--# ignores undefined macros, rather than erroring out.
--#
--# This macro cheats, because it relies on the current definition of NAME
--# while the second argument of m4_stack_foreach_lifo is evaluated (which
--# would be undefined according to the API).
--m4_define([m4_dumpdefs],
--[m4_if([$#], [0], [m4_fatal([$0: missing argument])],
--       [$#], [1], [m4_stack_foreach_lifo([$1], [m4_dumpdef([$1])m4_ignore])],
--       [m4_map_args([$0], $@)])])
--
--# m4_esyscmd_s(COMMAND)
--# ---------------------
--# Like m4_esyscmd, except strip any trailing newlines, thus behaving
--# more like shell command substitution.
--m4_define([m4_esyscmd_s],
--[m4_chomp_all(m4_esyscmd([$1]))])
--
--
--# m4_popdef(NAME)
--# ---------------
--# Like the original, except guarantee a warning when using something which is
--# undefined (unlike M4 1.4.x).
--#
--# This macro is called frequently, so minimize the amount of additional
--# expansions by skipping m4_ifndef.  Better yet, if __m4_version__ exists,
--# (added in M4 1.6), then let m4 do the job for us (see m4_init).
--m4_define([m4_popdef],
--[m4_if([$#], [0], [[$0]],
--       [$#], [1], [m4_ifdef([$1], [_m4_popdef([$1])],
--                          [m4_fatal([$0: undefined macro: $1])])],
--       [m4_map_args([$0], $@)])])
--
--
--# m4_shiftn(N, ...)
--# -----------------
--# Returns ... shifted N times.  Useful for recursive "varargs" constructs.
--#
--# Autoconf does not use this macro, because it is inherently slower than
--# calling the common cases of m4_shift2 or m4_shift3 directly.  But it
--# might as well be fast for other clients, such as Libtool.  One way to
--# do this is to expand $@ only once in _m4_shiftn (otherwise, for long
--# lists, the expansion of m4_if takes twice as much memory as what the
--# list itself occupies, only to throw away the unused branch).  The end
--# result is strictly equivalent to
--#   m4_if([$1], 1, [m4_shift(,m4_shift(m4_shift($@)))],
--#         [_m4_shiftn(m4_decr([$1]), m4_shift(m4_shift($@)))])
--# but with the final `m4_shift(m4_shift($@)))' shared between the two
--# paths.  The first leg uses a no-op m4_shift(,$@) to balance out the&