Roll ANGLE to 2020-05-21
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 22 May 2020 00:12:18 +0000 (00:12 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 22 May 2020 00:12:18 +0000 (00:12 +0000)
https://bugs.webkit.org/show_bug.cgi?id=212228

Patch by Kenneth Russell <kbr@chromium.org> on 2020-05-21
Reviewed by Dean Jackson.

Roll ANGLE to 96a80283cc0fe604d03c0bc0b3f9eb100edd22f9 in the
upstream repository using jdarpinian's excellent update-angle.sh
script.

Manually undo the fix from Bug 210992, which was fixed differently
upstream.

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

471 files changed:
Source/ThirdParty/ANGLE/.clang-format
Source/ThirdParty/ANGLE/.gitignore
Source/ThirdParty/ANGLE/ANGLE.plist
Source/ThirdParty/ANGLE/ANGLE.xcodeproj/project.pbxproj
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/PRESUBMIT.py
Source/ThirdParty/ANGLE/WATCHLISTS
Source/ThirdParty/ANGLE/additional_readme_paths.json
Source/ThirdParty/ANGLE/build_overrides/angle.gni
Source/ThirdParty/ANGLE/build_overrides/vulkan_loader.gni
Source/ThirdParty/ANGLE/changes.diff
Source/ThirdParty/ANGLE/extensions/ANGLE_external_objects_fuchsia.txt
Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_d3d_texture_client_buffer.txt
Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_platform_angle_d3d_luid.txt [new file with mode: 0644]
Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_sync_control_rate.txt [new file with mode: 0644]
Source/ThirdParty/ANGLE/extensions/EGL_CHROMIUM_sync_control.txt
Source/ThirdParty/ANGLE/gni/angle.gni
Source/ThirdParty/ANGLE/include/EGL/eglext_angle.h
Source/ThirdParty/ANGLE/include/GLES2/gl2ext_angle.h
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderVars.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/infra/ANGLEWrangling.md
Source/ThirdParty/ANGLE/infra/README.md
Source/ThirdParty/ANGLE/infra/config/global/commit-queue.cfg
Source/ThirdParty/ANGLE/samples/BUILD.gn
Source/ThirdParty/ANGLE/samples/capture_replay/CaptureReplay.cpp
Source/ThirdParty/ANGLE/samples/sample_util/SampleApplication.cpp
Source/ThirdParty/ANGLE/samples/shader_translator/shader_translator.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/ANGLE_shader_translator.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/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/Static_builtins.json
Source/ThirdParty/ANGLE/scripts/code_generation_hashes/Vulkan_format.json
Source/ThirdParty/ANGLE/scripts/code_generation_hashes/Vulkan_mandatory_format_support_table.json
Source/ThirdParty/ANGLE/scripts/code_generation_hashes/proc_table.json
Source/ThirdParty/ANGLE/scripts/code_generation_hashes/restricted_traces.json [new file with mode: 0644]
Source/ThirdParty/ANGLE/scripts/egl_angle_ext.xml
Source/ThirdParty/ANGLE/scripts/export_targets.py
Source/ThirdParty/ANGLE/scripts/gen_gl_enum_utils.py
Source/ThirdParty/ANGLE/scripts/generate_android_bp.py
Source/ThirdParty/ANGLE/scripts/generate_loader.py
Source/ThirdParty/ANGLE/scripts/generate_stats.py
Source/ThirdParty/ANGLE/scripts/registry_xml.py
Source/ThirdParty/ANGLE/scripts/roll_aosp.sh
Source/ThirdParty/ANGLE/scripts/roll_deps.py
Source/ThirdParty/ANGLE/scripts/run_code_generation.py
Source/ThirdParty/ANGLE/src/common/PackedEnums.cpp
Source/ThirdParty/ANGLE/src/common/PackedEnums.h
Source/ThirdParty/ANGLE/src/common/bitset_utils.h
Source/ThirdParty/ANGLE/src/common/bitset_utils_unittest.cpp
Source/ThirdParty/ANGLE/src/common/fuchsia_egl/OWNERS [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/common/system_utils.h
Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp
Source/ThirdParty/ANGLE/src/common/system_utils_win32.cpp
Source/ThirdParty/ANGLE/src/common/system_utils_winuwp.cpp
Source/ThirdParty/ANGLE/src/common/utilities.cpp
Source/ThirdParty/ANGLE/src/common/utilities.h
Source/ThirdParty/ANGLE/src/common/vulkan/BUILD.gn [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/common/vulkan/vulkan_icd.cpp [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/common/vulkan/vulkan_icd.h [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/compiler.gni
Source/ThirdParty/ANGLE/src/compiler/fuzz/translator_fuzzer.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/BaseTypes.h
Source/ThirdParty/ANGLE/src/compiler/translator/CollectVariables.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/Compiler.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/Compiler.h
Source/ThirdParty/ANGLE/src/compiler/translator/ExtensionBehavior.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/ExtensionBehavior.h
Source/ThirdParty/ANGLE/src/compiler/translator/HashNames.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/ImmutableString_ESSL_autogen.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/ImmutableString_autogen.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/Initialize.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/OutputGLSLBase.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/OutputHLSL.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/ParseContext.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/ParseContext_ESSL_autogen.h
Source/ThirdParty/ANGLE/src/compiler/translator/QualifierTypes.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/ResourcesHLSL.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/ResourcesHLSL.h
Source/ThirdParty/ANGLE/src/compiler/translator/ShaderLang.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/ShaderVars.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable_ESSL_autogen.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable_autogen.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable_autogen.h
Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorGLSL.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorVulkan.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/blocklayout.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/builtin_variables.json
Source/ThirdParty/ANGLE/src/compiler/translator/glslang.l
Source/ThirdParty/ANGLE/src/compiler/translator/glslang.y
Source/ThirdParty/ANGLE/src/compiler/translator/glslang_lex_autogen.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/glslang_tab_autogen.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/glslang_tab_autogen.h
Source/ThirdParty/ANGLE/src/compiler/translator/tree_ops/EarlyFragmentTestsOptimization.cpp [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/compiler/translator/tree_ops/EarlyFragmentTestsOptimization.h [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/compiler/translator/tree_util/BuiltIn_ESSL_autogen.h
Source/ThirdParty/ANGLE/src/compiler/translator/tree_util/BuiltIn_complete_autogen.h
Source/ThirdParty/ANGLE/src/compiler/translator/tree_util/IntermNode_util.cpp
Source/ThirdParty/ANGLE/src/compiler/translator/tree_util/IntermNode_util.h
Source/ThirdParty/ANGLE/src/compiler/translator/tree_util/ReplaceClipDistanceVariable.cpp [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/compiler/translator/tree_util/ReplaceClipDistanceVariable.h [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/compiler/translator/util.cpp
Source/ThirdParty/ANGLE/src/id/commit.h
Source/ThirdParty/ANGLE/src/libANGLE/BlobCache.cpp
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/Constants.h
Source/ThirdParty/ANGLE/src/libANGLE/Context.cpp
Source/ThirdParty/ANGLE/src/libANGLE/Context.h
Source/ThirdParty/ANGLE/src/libANGLE/Context.inl.h
Source/ThirdParty/ANGLE/src/libANGLE/Context_gles_ext_autogen.h
Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp
Source/ThirdParty/ANGLE/src/libANGLE/EGLSync.cpp
Source/ThirdParty/ANGLE/src/libANGLE/EGLSync.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/FrameCapture_mock.cpp
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/Image.cpp
Source/ThirdParty/ANGLE/src/libANGLE/Image.h
Source/ThirdParty/ANGLE/src/libANGLE/Image_unittest.cpp
Source/ThirdParty/ANGLE/src/libANGLE/MemoryProgramCache.cpp
Source/ThirdParty/ANGLE/src/libANGLE/Program.cpp
Source/ThirdParty/ANGLE/src/libANGLE/Program.h
Source/ThirdParty/ANGLE/src/libANGLE/ProgramExecutable.cpp
Source/ThirdParty/ANGLE/src/libANGLE/ProgramExecutable.h
Source/ThirdParty/ANGLE/src/libANGLE/ProgramPipeline.cpp
Source/ThirdParty/ANGLE/src/libANGLE/ProgramPipeline.h
Source/ThirdParty/ANGLE/src/libANGLE/Renderbuffer.cpp
Source/ThirdParty/ANGLE/src/libANGLE/Renderbuffer.h
Source/ThirdParty/ANGLE/src/libANGLE/ResourceManager.cpp
Source/ThirdParty/ANGLE/src/libANGLE/ResourceManager.h
Source/ThirdParty/ANGLE/src/libANGLE/Shader.cpp
Source/ThirdParty/ANGLE/src/libANGLE/Shader.h
Source/ThirdParty/ANGLE/src/libANGLE/SizedMRUCache.h
Source/ThirdParty/ANGLE/src/libANGLE/State.cpp
Source/ThirdParty/ANGLE/src/libANGLE/State.h
Source/ThirdParty/ANGLE/src/libANGLE/Surface.cpp
Source/ThirdParty/ANGLE/src/libANGLE/Surface.h
Source/ThirdParty/ANGLE/src/libANGLE/Texture.cpp
Source/ThirdParty/ANGLE/src/libANGLE/Texture.h
Source/ThirdParty/ANGLE/src/libANGLE/VaryingPacking.cpp
Source/ThirdParty/ANGLE/src/libANGLE/VaryingPacking.h
Source/ThirdParty/ANGLE/src/libANGLE/angletypes.cpp
Source/ThirdParty/ANGLE/src/libANGLE/angletypes.h
Source/ThirdParty/ANGLE/src/libANGLE/angletypes_unittest.cpp [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_2_0_params.cpp
Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_3_0_params.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_utils.h
Source/ThirdParty/ANGLE/src/libANGLE/es3_format_type_combinations.json
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/gl_enum_utils_autogen.cpp
Source/ThirdParty/ANGLE/src/libANGLE/queryutils.cpp
Source/ThirdParty/ANGLE/src/libANGLE/queryutils.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/EGLSyncImpl.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/FramebufferAttachmentObjectImpl.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/FramebufferImpl.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/FramebufferImpl_mock.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/ProgramPipelineImpl.cpp [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/libANGLE/renderer/ProgramPipelineImpl.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/QueryImpl.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/RenderTargetCache.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/SurfaceImpl.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/SurfaceImpl.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/TextureImpl.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/TextureImpl_mock.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/angle_format_map.json
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/ProgramD3D.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/ProgramD3D.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/RendererD3D.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/TextureD3D.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/TextureD3D.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/TextureStorage.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Buffer11.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/Framebuffer11.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/PixelTransfer11.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/PixelTransfer11.h
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/Renderer11.h
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/TextureStorage11.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/TextureStorage11.h
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_map.json
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/texture_format_table_autogen.cpp
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/Renderer9.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/TextureStorage9.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/TextureStorage9.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/BlitGL.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/BlitGL.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ContextGL.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/FramebufferGL.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/FramebufferGL.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ProgramGL.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/RendererGL.cpp
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/TextureGL.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/eagl/IOSurfaceSurfaceEAGL.mm
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/eagl/WindowSurfaceEAGL.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/DmaBufImageSiblingEGL.cpp [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/DmaBufImageSiblingEGL.h [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/ExternalImageSiblingEGL.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/ImageEGL.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/ozone/DisplayOzone.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/formatutilsgl.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/glx/DisplayGLX.cpp
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/ContextMtl.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/ContextMtl.mm
Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/DisplayMtl.mm
Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/FrameBufferMtl.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/FrameBufferMtl.mm
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/TextureMtl.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/TextureMtl.mm
Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/doc/APPLE_clip_distance.md [new file with mode: 0644]
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/FramebufferNULL.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/FramebufferNULL.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/TextureNULL.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/TextureNULL.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/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/OverlayVk.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/OverlayVk.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ProgramExecutableVk.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ProgramExecutableVk.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ProgramPipelineVk.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ProgramPipelineVk.h
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/QueryVk.h
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/RenderbufferVk.h
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
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ResourceVk.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SamplerVk.cpp
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/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/VertexArrayVk.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/android/HardwareBufferImageSiblingVkAndroid.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/doc/APPLE_clip_distance.md [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/fuchsia/OWNERS [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/fuchsia/WindowSurfaceVkFuchsia.cpp
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_caps_utils.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_ext_provoking_vertex.h
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_format_utils.h
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_google_filtering_precision.h [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_headers.h [new file with mode: 0644]
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_mem_alloc_wrapper.cpp [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_mem_alloc_wrapper.h [new file with mode: 0644]
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/win32/DisplayVkWin32.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/xcb/DisplayVkXcb.cpp
Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/xcb/WindowSurfaceVkXcb.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationEGL.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationEGL.h
Source/ThirdParty/ANGLE/src/libANGLE/validationES.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationES.h
Source/ThirdParty/ANGLE/src/libANGLE/validationES2.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationES3.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationES31.cpp
Source/ThirdParty/ANGLE/src/libANGLE/validationESEXT_autogen.h
Source/ThirdParty/ANGLE/src/libEGL/egl_loader_autogen.cpp
Source/ThirdParty/ANGLE/src/libEGL/egl_loader_autogen.h
Source/ThirdParty/ANGLE/src/libEGL/libEGL.cpp
Source/ThirdParty/ANGLE/src/libEGL/libEGL.def
Source/ThirdParty/ANGLE/src/libGLESv2.gni
Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_egl.cpp
Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_egl_ext.cpp
Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_egl_ext.h
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/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/angle_end2end_tests.gni
Source/ThirdParty/ANGLE/src/tests/angle_unittests.gni
Source/ThirdParty/ANGLE/src/tests/compiler_tests/APPLE_clip_distance_test.cpp [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/tests/compiler_tests/ImmutableString_test_ESSL_autogen.cpp
Source/ThirdParty/ANGLE/src/tests/compiler_tests/ImmutableString_test_autogen.cpp
Source/ThirdParty/ANGLE/src/tests/deqp_support/angle_deqp_gtest.cpp
Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp.gni
Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_egl_TestExpectations
Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles31_TestExpectations
Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles31_TestExpectations
Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles3_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/EGLDirectCompositionTest.cpp
Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLDisplayLuidTest.cpp [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLRobustnessTest.cpp
Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLSurfaceTest.cpp
Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLSyncTest.cpp
Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLX11VisualTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/ActiveTextureCacheTest.cpp [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/tests/gl_tests/AttributeLayoutTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/BlendIntegerTest.cpp [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/tests/gl_tests/BlitFramebufferANGLETest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/BufferDataTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/ClearTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/ClipDistanceTest.cpp [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/tests/gl_tests/ComputeShaderTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyTexImageTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/DepthStencilFormatsTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/DrawBaseVertexVariantsTest.cpp [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/tests/gl_tests/DrawBuffersTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/DrawElementsTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/FenceSyncTests.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/LinkAndRelinkTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/MipmapTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/MultisampleTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramBinaryTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramPipelineTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/RobustResourceInitTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/SRGBTextureTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/ShaderInterpTest.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/TextureFilteringHintTest.cpp [new file with mode: 0644]
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/UniformBufferTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/VulkanExternalImageTest.cpp
Source/ThirdParty/ANGLE/src/tests/gl_tests/WebGLCompatibilityTest.cpp
Source/ThirdParty/ANGLE/src/tests/gles1_conformance_tests/CovglTests.cpp [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/tests/gles1_conformance_tests/PrimtestTests.cpp [new file with mode: 0644]
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/BufferSubData.cpp
Source/ThirdParty/ANGLE/src/tests/perf_tests/DrawCallPerfParams.h
Source/ThirdParty/ANGLE/src/tests/perf_tests/TextureSampling.cpp
Source/ThirdParty/ANGLE/src/tests/perf_tests/TracePerfTest.cpp
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 [deleted file]
Source/ThirdParty/ANGLE/src/tests/perf_tests/restricted_traces/egypt_1500.tar.gz.sha1 [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/tests/perf_tests/restricted_traces/gen_restricted_traces.py [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/tests/perf_tests/restricted_traces/manhattan_10.tar.gz.sha1
Source/ThirdParty/ANGLE/src/tests/perf_tests/restricted_traces/restricted_traces.json [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/tests/perf_tests/restricted_traces/restricted_traces_autogen.gni [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/tests/perf_tests/restricted_traces/restricted_traces_autogen.h [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/tests/perf_tests/restricted_traces/temple_run_300.tar.gz.sha1 [new file with mode: 0644]
Source/ThirdParty/ANGLE/src/tests/perf_tests/restricted_traces/trex_200.tar.gz.sha1
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/third_party/vulkan_command_buffer_utils.cpp
Source/ThirdParty/ANGLE/src/tests/test_utils/third_party/vulkan_command_buffer_utils.h
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/egl_loader_autogen.cpp
Source/ThirdParty/ANGLE/util/egl_loader_autogen.h
Source/ThirdParty/ANGLE/util/gles_loader_autogen.cpp
Source/ThirdParty/ANGLE/util/gles_loader_autogen.h
Source/ThirdParty/ANGLE/util/png_utils.cpp [new file with mode: 0644]
Source/ThirdParty/ANGLE/util/png_utils.h [new file with mode: 0644]
Source/ThirdParty/ANGLE/util/shader_utils.cpp
Source/ThirdParty/ANGLE/util/shader_utils.h
Source/ThirdParty/ANGLE/util/test_utils.h
Source/ThirdParty/ANGLE/util/windows/WGLWindow.cpp
Source/ThirdParty/ANGLE/util/windows/WGLWindow.h
Source/ThirdParty/ANGLE/util/windows/wgl_loader_autogen.cpp
Source/ThirdParty/ANGLE/util/windows/wgl_loader_autogen.h

index 88cc9aa..9633f2c 100644 (file)
@@ -15,8 +15,7 @@ ColumnLimit: 100
 # Always break before braces
 BreakBeforeBraces: Custom
 BraceWrapping:
-#  TODO(lujc) wait for clang-format-9 support in Chromium tools
-#  AfterCaseLabel: true
+  AfterCaseLabel: true
   AfterClass: true
   AfterControlStatement: true
   AfterEnum: true
index 3255d0e..89e13ff 100644 (file)
@@ -41,6 +41,7 @@
 /third_party/libjpeg_turbo
 /third_party/libpng/src
 /third_party/llvm-build
+/third_party/nasm
 /third_party/Python-Markdown
 /third_party/qemu-linux-x64
 /third_party/qemu-mac-x64
@@ -54,7 +55,7 @@
 /third_party/vulkan-loader/src
 /third_party/vulkan-tools/src
 /third_party/vulkan-validation-layers/src
-/third_party/yasm
+/third_party/vulkan_memory_allocator
 /third_party/zlib
 /tools/clang
 /tools/flex-bison/linux/bison
index 2ba5697..84d4476 100644 (file)
@@ -6,13 +6,13 @@
                <key>OpenSourceProject</key>
                <string>ANGLE</string>
                <key>OpenSourceVersion</key>
-               <string>b387ce9389ede6a4ed3b831ab1b8187927fa295f</string>
+               <string>96a80283cc0fe604d03c0bc0b3f9eb100edd22f9</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 b387ce9389ede6a4ed3b831ab1b8187927fa295f</string>
+               <string>git clone https://chromium.googlesource.com/angle/angle &amp;&amp; cd angle &amp;&amp; git checkout 96a80283cc0fe604d03c0bc0b3f9eb100edd22f9</string>
                <key>OpenSourceImportDate</key>
-               <string>2020-03-27</string>
+               <string>2020-05-21</string>
                <key>OpenSourceLicense</key>
                <string>BSD</string>
                <key>OpenSourceLicenseFile</key>
index 5446d60..0f32f4b 100644 (file)
                6E31A0A3234EEED400C84784 /* DeviceCGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E31A0A1234EEED400C84784 /* DeviceCGL.cpp */; };
                6E31A0A4234EEED400C84784 /* DeviceCGL.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E31A0A2234EEED400C84784 /* DeviceCGL.h */; };
                6EA0D69323515A5C00B8651F /* FrameCapture_mock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6EA0D69223515A5C00B8651F /* FrameCapture_mock.cpp */; };
+               6EB01C1D2477279A00E50B35 /* EarlyFragmentTestsOptimization.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EB01C1B2477279900E50B35 /* EarlyFragmentTestsOptimization.h */; };
+               6EB01C1E2477279A00E50B35 /* EarlyFragmentTestsOptimization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6EB01C1C2477279900E50B35 /* EarlyFragmentTestsOptimization.cpp */; };
+               6EB01C21247727A900E50B35 /* ReplaceClipDistanceVariable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6EB01C1F247727A900E50B35 /* ReplaceClipDistanceVariable.cpp */; };
+               6EB01C22247727A900E50B35 /* ReplaceClipDistanceVariable.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EB01C20247727A900E50B35 /* ReplaceClipDistanceVariable.h */; };
+               6EB01C24247727C200E50B35 /* ProgramPipelineImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6EB01C23247727C200E50B35 /* ProgramPipelineImpl.cpp */; };
                6ED70A0C22CD630E008688CE /* gl.h in Headers */ = {isa = PBXBuildFile; fileRef = 6ED70A0922CD630E008688CE /* gl.h */; settings = {ATTRIBUTES = (Public, ); }; };
                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, ); }; };
                6E31A0A1234EEED400C84784 /* DeviceCGL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeviceCGL.cpp; sourceTree = "<group>"; };
                6E31A0A2234EEED400C84784 /* DeviceCGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceCGL.h; sourceTree = "<group>"; };
                6EA0D69223515A5C00B8651F /* FrameCapture_mock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FrameCapture_mock.cpp; sourceTree = "<group>"; };
+               6EB01C1B2477279900E50B35 /* EarlyFragmentTestsOptimization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EarlyFragmentTestsOptimization.h; sourceTree = "<group>"; };
+               6EB01C1C2477279900E50B35 /* EarlyFragmentTestsOptimization.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EarlyFragmentTestsOptimization.cpp; sourceTree = "<group>"; };
+               6EB01C1F247727A900E50B35 /* ReplaceClipDistanceVariable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReplaceClipDistanceVariable.cpp; sourceTree = "<group>"; };
+               6EB01C20247727A900E50B35 /* ReplaceClipDistanceVariable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReplaceClipDistanceVariable.h; sourceTree = "<group>"; };
+               6EB01C23247727C200E50B35 /* ProgramPipelineImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProgramPipelineImpl.cpp; sourceTree = "<group>"; };
                6ED70A0922CD630E008688CE /* gl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gl.h; path = include/GLES/gl.h; 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>"; };
                                5C55D6F222826CB200B5BA2C /* IntermTraverse.cpp */,
                                5C55D6F122826CB200B5BA2C /* IntermTraverse.h */,
                                5C55D6F722826CB300B5BA2C /* NodeSearch.h */,
+                               6EB01C1F247727A900E50B35 /* ReplaceClipDistanceVariable.cpp */,
+                               6EB01C20247727A900E50B35 /* ReplaceClipDistanceVariable.h */,
                                A30307002305F636002DA972 /* ReplaceShadowingVariables.cpp */,
                                A30307022305F636002DA972 /* ReplaceShadowingVariables.h */,
                                5C55D6F622826CB300B5BA2C /* ReplaceVariable.cpp */,
                                5CB304C71DE4164800D2C405 /* PathImpl.h */,
                                5CB304C91DE4164800D2C405 /* ProgramImpl.h */,
                                5CB304C81DE4164800D2C405 /* ProgramImpl_mock.h */,
+                               6EB01C23247727C200E50B35 /* ProgramPipelineImpl.cpp */,
                                315EBDC31FCE44E200AC7A89 /* ProgramPipelineImpl.h */,
                                5CCD597D2284FB8F0018F2D8 /* QueryImpl.cpp */,
                                5CB304CA1DE4164800D2C405 /* QueryImpl.h */,
                                5C55D60222826B9000B5BA2C /* DeclareAndInitBuiltinsForInstancedMultiview.h */,
                                5C55D60822826B9000B5BA2C /* DeferGlobalInitializers.cpp */,
                                5C55D62D22826B9800B5BA2C /* DeferGlobalInitializers.h */,
+                               6EB01C1C2477279900E50B35 /* EarlyFragmentTestsOptimization.cpp */,
+                               6EB01C1B2477279900E50B35 /* EarlyFragmentTestsOptimization.h */,
                                5C55D63822826B9A00B5BA2C /* EmulateGLFragColorBroadcast.cpp */,
                                5C55D60E22826B9100B5BA2C /* EmulateGLFragColorBroadcast.h */,
                                A30306F42305F5EE002DA972 /* EmulateMultiDrawShaderBuiltins.cpp */,
                                5CB3011F1DE39F1A00D2C405 /* DisplayGL.h in Headers */,
                                5CB304E21DE4164800D2C405 /* DisplayImpl.h in Headers */,
                                315EBDC91FCE44E400AC7A89 /* driver_utils.h in Headers */,
+                               6EB01C1D2477279A00E50B35 /* EarlyFragmentTestsOptimization.h in Headers */,
                                5C1BAAAA1DFB6124002906BB /* egl.h in Headers */,
                                5C1BAAAB1DFB6124002906BB /* eglext.h in Headers */,
                                6EE2FD2D22BAE99C001D369E /* eglext_angle.h in Headers */,
                                313BCE572361133A00FC39E5 /* RendererEAGL.h in Headers */,
                                5CB301381DE39F1A00D2C405 /* RendererGL.h in Headers */,
                                5CB301361DE39F1A00D2C405 /* renderergl_utils.h in Headers */,
+                               6EB01C22247727A900E50B35 /* ReplaceClipDistanceVariable.h in Headers */,
                                A30307072305F636002DA972 /* ReplaceShadowingVariables.h in Headers */,
                                5C55D70522826CB300B5BA2C /* ReplaceVariable.h in Headers */,
                                5CB304A61DE4157E00D2C405 /* resource.h in Headers */,
                                5CB304E11DE4164800D2C405 /* DisplayImpl.cpp in Sources */,
                                315EBDCC1FCE44E400AC7A89 /* driver_utils.cpp in Sources */,
                                A303079D23062565002DA972 /* driver_utils_mac.mm in Sources */,
+                               6EB01C1E2477279A00E50B35 /* EarlyFragmentTestsOptimization.cpp in Sources */,
                                5CCD596A2284F7960018F2D8 /* EGLSync.cpp in Sources */,
                                315EBD971FCE443600AC7A89 /* emulated_builtin_functions_hlsl_autogen.cpp in Sources */,
                                5C55D6B122826BC800B5BA2C /* EmulateGLFragColorBroadcast.cpp in Sources */,
                                315EBDEC1FCE452D00AC7A89 /* ProgramLinkedResources.cpp in Sources */,
                                315EBDE51FCE452D00AC7A89 /* ProgramPipeline.cpp in Sources */,
                                315EBDBA1FCE44BF00AC7A89 /* ProgramPipelineGL.cpp in Sources */,
+                               6EB01C24247727C200E50B35 /* ProgramPipelineImpl.cpp in Sources */,
                                5C55D6B722826BC800B5BA2C /* PruneEmptyCases.cpp in Sources */,
                                5C55D6B822826BC800B5BA2C /* PruneNoOps.cpp in Sources */,
                                5CCD81B51DBFEA5C006066B8 /* QualifierTypes.cpp in Sources */,
                                313BCE592361133A00FC39E5 /* RendererEAGL.cpp in Sources */,
                                5CB301371DE39F1A00D2C405 /* RendererGL.cpp in Sources */,
                                5CB301351DE39F1A00D2C405 /* renderergl_utils.cpp in Sources */,
+                               6EB01C21247727A900E50B35 /* ReplaceClipDistanceVariable.cpp in Sources */,
                                A30307052305F636002DA972 /* ReplaceShadowingVariables.cpp in Sources */,
                                5C55D70622826CB300B5BA2C /* ReplaceVariable.cpp in Sources */,
                                5C1DBF251B0438D300235552 /* ResourceManager.cpp in Sources */,
index ad7675f..ee9bd39 100644 (file)
@@ -331,6 +331,7 @@ angle_static_library("angle_gpu_info_util") {
 
   if (is_android || is_fuchsia) {
     sources += libangle_gpu_info_util_vulkan_sources
+    deps += [ "$angle_root/third_party/vulkan-headers/src:vulkan_headers" ]
   }
 
   if (is_android) {
index a30eeae..f04956a 100644 (file)
@@ -118,6 +118,7 @@ Microsoft Corporation
  Rafael Cintron
  James Clarke
  Nathan Zabriskie
+ Patrick To
 
 Microsoft Open Technologies, Inc.
  Cooper Partin
@@ -164,6 +165,7 @@ Samsung Electronics, Inc.
  Mohan Maiya
  Peter Mowry
  Sangwon Park
+ Saurabh Badenkal
 
 Arm Ltd.
  Fei Yang
index 814028a..e0c8a2f 100644 (file)
@@ -1,5 +1,19 @@
 2020-05-21  Kenneth Russell  <kbr@chromium.org>
 
+        Roll ANGLE to 2020-05-21
+        https://bugs.webkit.org/show_bug.cgi?id=212228
+
+        Reviewed by Dean Jackson.
+
+        Roll ANGLE to 96a80283cc0fe604d03c0bc0b3f9eb100edd22f9 in the
+        upstream repository using jdarpinian's excellent update-angle.sh
+        script.
+
+        Manually undo the fix from Bug 210992, which was fixed differently
+        upstream.
+
+2020-05-21  Kenneth Russell  <kbr@chromium.org>
+
         EXT_color_buffer_half_float not exposed on iOS
         https://bugs.webkit.org/show_bug.cgi?id=212181
 
index 2ffe6df..e1cc234 100644 (file)
@@ -129,6 +129,8 @@ set(angle_translator_sources
     "src/compiler/translator/tree_ops/DeclareAndInitBuiltinsForInstancedMultiview.h"
     "src/compiler/translator/tree_ops/DeferGlobalInitializers.cpp"
     "src/compiler/translator/tree_ops/DeferGlobalInitializers.h"
+    "src/compiler/translator/tree_ops/EarlyFragmentTestsOptimization.cpp"
+    "src/compiler/translator/tree_ops/EarlyFragmentTestsOptimization.h"
     "src/compiler/translator/tree_ops/EmulateGLFragColorBroadcast.cpp"
     "src/compiler/translator/tree_ops/EmulateGLFragColorBroadcast.h"
     "src/compiler/translator/tree_ops/EmulateMultiDrawShaderBuiltins.cpp"
@@ -220,6 +222,8 @@ set(angle_translator_sources
     "src/compiler/translator/tree_util/IntermTraverse.cpp"
     "src/compiler/translator/tree_util/IntermTraverse.h"
     "src/compiler/translator/tree_util/NodeSearch.h"
+    "src/compiler/translator/tree_util/ReplaceClipDistanceVariable.cpp"
+    "src/compiler/translator/tree_util/ReplaceClipDistanceVariable.h"
     "src/compiler/translator/tree_util/ReplaceShadowingVariables.cpp"
     "src/compiler/translator/tree_util/ReplaceShadowingVariables.h"
     "src/compiler/translator/tree_util/ReplaceVariable.cpp"
index aa6929c..563a444 100644 (file)
@@ -19,13 +19,13 @@ vars = {
   'checkout_angle_internal': False,
 
   # Version of Chromium our Chromium-based DEPS are mirrored from.
-  'chromium_revision': 'fa9d5805c421133e9d13cf698c4502d13398b2ce',
+  'chromium_revision': 'b0410bba028cf153be2d02e36b6e99b59fdcb000',
 
   # Current revision of VK-GL-CTS (a.k.a dEQP).
-  'vk_gl_cts_revision': 'a6b249819f7177821d4b7eefff36af07fef71825',
+  'vk_gl_cts_revision': '60972ed7fa8fb66b64e21186e7fb13dc082bdac8',
 
   # Current revision of glslang, the Khronos SPIRV compiler.
-  'glslang_revision': '99508c1ce389e678a79b00159fe0c0d13f08f213',
+  'glslang_revision': '6f723ebbe3b0eba0c543fa615b53fbdc3e6e22c7',
 
   # Current revision of googletest.
   # Note: this dep cannot be auto-rolled b/c of nesting.
@@ -40,25 +40,25 @@ vars = {
   'patched_yasm_revision': '720b70524a4424b15fc57e82263568c8ba0496ad',
 
   # Current revision of spirv-cross, the Khronos SPIRV cross compiler.
-  'spirv_cross_revision': 'fd5aa3ad51ece55a1b51fe6bfb271db6844ae291',
+  'spirv_cross_revision': 'f38cbeb814c73510b85697adbe5e894f9eac978f',
 
   # Current revision fo the SPIRV-Headers Vulkan support library.
   'spirv_headers_revision': 'f8bf11a0253a32375c32cad92c841237b96696c0',
 
   # Current revision of SPIRV-Tools for Vulkan.
-  'spirv_tools_revision': 'fd773eb50d628c1981338addc093df879757c2cf',
+  'spirv_tools_revision': '3c47dac28208eb5b1ae7909ba3cda0a1df88ba4b',
 
   # Current revision of Khronos Vulkan-Headers.
-  'vulkan_headers_revision': '0e78ffd1dcfc3e9f14a966b9660dbc59bd967c5c',
+  'vulkan_headers_revision': '9250d5ae8f50202005233dc0512a1d460c8b4833',
 
   # Current revision of Khronos Vulkan-Loader.
-  'vulkan_loader_revision': 'cc481ef276315d54db4381b2d5dffac2b5824cbf',
+  'vulkan_loader_revision': '3e390a15976143060eb232acc04380209f9ed08e',
 
   # Current revision of Khronos Vulkan-Tools.
-  'vulkan_tools_revision': 'bec7b6e29260caa9348b1fd42b5d65443d512748',
+  'vulkan_tools_revision': '0c4ea014bf289e8b0a8501c3e89c8bc4ecf9f0a4',
 
   # Current revision of Khronos Vulkan-ValidationLayers.
-  'vulkan_validation_revision': '55f01953d6e9d6db625f57bebbbc7a36a132ad88',
+  'vulkan_validation_revision': 'a6d833327f7edd23936e0d0f78095b31dc759a18',
 
   # 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@a1cbf6469a5400f2b455ffba2e95ea47a1b47c94',
+    'url': '{chromium_git}/chromium/src/build.git@45ab3c89af6fc3126b0ca5a7836f0db85ad1ba0e',
     'condition': 'not build_with_chromium',
   },
 
   'buildtools': {
-    'url': '{chromium_git}/chromium/src/buildtools.git@4164a305626786b1912d467003acf4c4995bec7d',
+    'url': '{chromium_git}/chromium/src/buildtools.git@204a35a2a64f7179f8b76d7a0385653690839e21',
     'condition': 'not build_with_chromium',
   },
 
   'testing': {
-    'url': '{chromium_git}/chromium/src/testing@3e21eec53c1688302ebc26e975d0163256bd1a15',
+    'url': '{chromium_git}/chromium/src/testing@3993ef1f527b206d8d3bf3f9824f4fe0e4bbdb0e',
     'condition': 'not build_with_chromium',
   },
 
@@ -89,6 +89,11 @@ deps = {
     'condition': 'not build_with_chromium',
   },
 
+  'third_party/vulkan_memory_allocator': {
+    'url': '{chromium_git}/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator@dac952eb0a27736571bf10ac42fbfcc59192f310',
+    'condition': 'not build_with_chromium',
+  },
+
   'third_party/VK-GL-CTS/src': {
     'url': '{chromium_git}/external/github.com/KhronosGroup/VK-GL-CTS@{vk_gl_cts_revision}',
   },
@@ -115,13 +120,13 @@ deps = {
   },
 
   'third_party/googletest': {
-    'url': '{chromium_git}/chromium/src/third_party/googletest@c96dc321101e7c9f5ba16d957afd49ee4db30548',
+    'url': '{chromium_git}/chromium/src/third_party/googletest@217407c4787f361aa5814ec609379bfc9b21d307',
     'condition': 'not build_with_chromium',
   },
 
   # libjpeg_turbo is used by glmark2.
   'third_party/libjpeg_turbo': {
-    'url': '{chromium_git}/chromium/deps/libjpeg_turbo.git@ce0e57e8e636f5132fe6f0590a4dba91f92fd935',
+    'url': '{chromium_git}/chromium/deps/libjpeg_turbo.git@7e3ad79800a7945fb37173149842b494ab8982b2',
     'condition': 'not build_with_chromium',
   },
 
@@ -131,10 +136,15 @@ deps = {
   },
 
   'third_party/jsoncpp': {
-    'url': '{chromium_git}/chromium/src/third_party/jsoncpp@493c9385c91023c3819b51ee0de552d52229a1e5',
+    'url': '{chromium_git}/chromium/src/third_party/jsoncpp@ec647b85b61f525a1a74e4da7477b0c5371c50f4',
     'condition': 'not build_with_chromium',
    },
 
+  'third_party/nasm': {
+    'url': '{chromium_git}/chromium/deps/nasm@4fa54ca5f7fc3a15a8c78ac94688e64d3e4e4fa1',
+    'condition': 'not build_with_chromium',
+  },
+
   'third_party/Python-Markdown': {
     'url': '{chromium_git}/chromium/src/third_party/Python-Markdown@36657c103ce5964733bbbb29377085e9cc1a9472',
     'condition': 'not build_with_chromium',
@@ -182,7 +192,7 @@ deps = {
   },
 
   'third_party/SwiftShader': {
-    'url': '{swiftshader_git}/SwiftShader@02e15b249b12fe4e1ca5e303a5a0de0668950536',
+    'url': '{swiftshader_git}/SwiftShader@cc5cda0f997d8280712920f2749bbdfe7a0f4dc3',
     'condition': 'not build_with_chromium',
   },
 
@@ -202,18 +212,13 @@ deps = {
     'url': '{chromium_git}/external/github.com/KhronosGroup/Vulkan-ValidationLayers@{vulkan_validation_revision}',
   },
 
-  'third_party/yasm': {
-    '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@156be8c52f80cde343088b4a69a80579101b6e67',
+    'url': '{chromium_git}/chromium/src/third_party/zlib@ae385786edb15f57e992c5e9dd9464e376d69399',
     'condition': 'not build_with_chromium',
   },
 
   'tools/clang': {
-    'url': '{chromium_git}/chromium/src/tools/clang.git@d60a6a8084300eb8de99e56b559369dcde4cffa4',
+    'url': '{chromium_git}/chromium/src/tools/clang.git@04b99e7bf9160d551c3a5562f583014b6afc90f9',
     'condition': 'not build_with_chromium',
   },
 
@@ -229,7 +234,7 @@ deps = {
   },
 
   'tools/md_browser': {
-    'url': '{chromium_git}/chromium/src/tools/md_browser@0bfd826f8566a99923e64a782908faca72bc457c',
+    'url': '{chromium_git}/chromium/src/tools/md_browser@aae45d8d82400e90483d4fee2ca3e648f2313cb2',
     'condition': 'not build_with_chromium',
   },
 
@@ -432,5 +437,4 @@ recursedeps = [
   'buildtools',
   'third_party/googletest',
   'third_party/jsoncpp',
-  'third_party/yasm',
 ]
index ef3dc72..470bf64 100644 (file)
@@ -438,6 +438,7 @@ set(libangle_sources
     "src/libANGLE/renderer/DeviceImpl.cpp"
     "src/libANGLE/renderer/DisplayImpl.cpp"
     "src/libANGLE/renderer/Format_table_autogen.cpp"
+    "src/libANGLE/renderer/ProgramPipelineImpl.cpp"
     "src/libANGLE/renderer/QueryImpl.cpp"
     "src/libANGLE/renderer/ShaderImpl.cpp"
     "src/libANGLE/renderer/SurfaceImpl.cpp"
@@ -852,6 +853,8 @@ set(libangle_gl_egl_sources
     "src/libANGLE/renderer/gl/egl/ContextEGL.h"
     "src/libANGLE/renderer/gl/egl/DisplayEGL.cpp"
     "src/libANGLE/renderer/gl/egl/DisplayEGL.h"
+    "src/libANGLE/renderer/gl/egl/DmaBufImageSiblingEGL.cpp"
+    "src/libANGLE/renderer/gl/egl/DmaBufImageSiblingEGL.h"
     "src/libANGLE/renderer/gl/egl/ExternalImageSiblingEGL.h"
     "src/libANGLE/renderer/gl/egl/FunctionsEGL.cpp"
     "src/libANGLE/renderer/gl/egl/FunctionsEGL.h"
index bc286b8..c3e989f 100644 (file)
@@ -43,8 +43,8 @@ def _CheckChangeHasBugField(input_api, output_api):
     if len(bugs) == 1 and bugs[0] == 'None':
         return []
 
-    projects = ['angleproject', 'chromium', 'dawn', 'fuchsia', 'skia', 'swiftshader', 'b']
-    bug_regex = re.compile(r"([a-z]+):(\d+)")
+    projects = ['angleproject:', 'chromium:', 'dawn:', 'fuchsia:', 'skia:', 'swiftshader:', 'b/']
+    bug_regex = re.compile(r"([a-z]+[:/])(\d+)")
     errors = []
     extra_help = None
 
@@ -198,9 +198,40 @@ def _CheckTabsInSourceFiles(input_api, output_api):
     return []
 
 
+# https://stackoverflow.com/a/196392
+def is_ascii(s):
+    return all(ord(c) < 128 for c in s)
+
+
+def _CheckNonAsciiInSourceFiles(input_api, output_api):
+    """Forbids non-ascii characters in source files. """
+
+    def implementation_and_headers(f):
+        return input_api.FilterSourceFile(
+            f, white_list=(r'.+%s' % _IMPLEMENTATION_AND_HEADER_EXTENSIONS,))
+
+    files_with_non_ascii = []
+    for f in input_api.AffectedSourceFiles(implementation_and_headers):
+        for (num, line) in f.ChangedContents():
+            if not is_ascii(line):
+                files_with_non_ascii.append("%s: %s" % (f, line))
+                break
+
+    if files_with_non_ascii:
+        return [
+            output_api.PresubmitError(
+                'Non-ASCII characters in source files.',
+                items=sorted(files_with_non_ascii),
+                long_text='Non-ASCII characters are forbidden in ANGLE source files.\n'
+                'Please remove non-ASCII characters from these files.')
+        ]
+    return []
+
+
 def CheckChangeOnUpload(input_api, output_api):
     results = []
     results.extend(_CheckTabsInSourceFiles(input_api, output_api))
+    results.extend(_CheckNonAsciiInSourceFiles(input_api, output_api))
     results.extend(_CheckCodeGeneration(input_api, output_api))
     results.extend(_CheckChangeHasBugField(input_api, output_api))
     results.extend(input_api.canned_checks.CheckChangeHasDescription(input_api, output_api))
@@ -213,12 +244,4 @@ def CheckChangeOnUpload(input_api, output_api):
 
 
 def CheckChangeOnCommit(input_api, output_api):
-    results = []
-    results.extend(_CheckCodeGeneration(input_api, output_api))
-    results.extend(
-        input_api.canned_checks.CheckPatchFormatted(
-            input_api, output_api, result_factory=output_api.PresubmitError))
-    results.extend(_CheckChangeHasBugField(input_api, output_api))
-    results.extend(_CheckExportValidity(input_api, output_api))
-    results.extend(input_api.canned_checks.CheckChangeHasDescription(input_api, output_api))
-    return results
+    return CheckChangeOnUpload(input_api, output_api)
index f4139e5..cd81475 100644 (file)
@@ -19,6 +19,8 @@
   # Please keep alphabetical
   ##############################################################################
   'WATCHLISTS': {
-    'vulkan': ['jmadill+watch@chromium.org'],
+    'vulkan': ['cclao+angleWatchVk@google.com',
+               'jmadill+watch@chromium.org',
+               'timvp+angleWatchVk@google.com'],
   },
 }
index 4bb2934..423dc29 100644 (file)
@@ -1,4 +1,5 @@
 [
     "src/common/third_party/xxhash",
-    "src/third_party/compiler"
+    "src/third_party/compiler",
+    "third_party/vulkan_memory_allocator"
 ]
\ No newline at end of file
index 7dc148d..8b21b83 100644 (file)
@@ -17,3 +17,4 @@ angle_libpng_dir = "//third_party/libpng"
 angle_spirv_cross_dir = "//third_party/spirv-cross/src"
 angle_spirv_headers_dir = "//third_party/spirv-headers/src"
 angle_spirv_tools_dir = "//third_party/spirv-tools/src"
+angle_vulkan_memory_allocator_dir = "//third_party/vulkan_memory_allocator"
index dbb1418..580eda1 100644 (file)
@@ -7,4 +7,4 @@ import("//gni/angle.gni")
 vulkan_headers_dir = "//third_party/vulkan-headers/src"
 
 vulkan_gen_subdir = "angle/vulkan"
-vulkan_loader_shared = true
+vulkan_loader_shared = angle_shared_libvulkan
index 63739ac..000de58 100644 (file)
@@ -1,8 +1,8 @@
 diff --git a/include/platform/FeaturesGL.h b/include/platform/FeaturesGL.h
-index 5b36f271f..85947e40f 100644
+index 4c7595bb4..5756029fb 100644
 --- a/include/platform/FeaturesGL.h
 +++ b/include/platform/FeaturesGL.h
-@@ -412,6 +412,12 @@ struct FeaturesGL : FeatureSetBase
+@@ -418,6 +418,12 @@ struct FeaturesGL : FeatureSetBase
          "Rewrite row major matrices in shaders as column major as a driver bug workaround",
          &members, "http://anglebug.com/2273"};
  
@@ -28,7 +28,7 @@ index 131674008..d065c3a9f 100644
  #include <stdlib.h>
  #include <array>
 diff --git a/src/common/utilities.cpp b/src/common/utilities.cpp
-index 0ca967c17..0a6dcc248 100644
+index e745806a4..46b05b082 100644
 --- a/src/common/utilities.cpp
 +++ b/src/common/utilities.cpp
 @@ -6,6 +6,11 @@
@@ -43,6 +43,19 @@ index 0ca967c17..0a6dcc248 100644
  #include "common/utilities.h"
  #include <GLSLANG/ShaderVars.h>
  #include "GLES3/gl3.h"
+diff --git a/src/common/version.h b/src/common/version.h
+index 1aa31fd46..56d6be09c 100644
+--- a/src/common/version.h
++++ b/src/common/version.h
+@@ -7,7 +7,7 @@
+ #ifndef COMMON_VERSION_H_
+ #define COMMON_VERSION_H_
+-#include "commit.h"
++#include "id/commit.h"
+ #define ANGLE_MAJOR_VERSION 2
+ #define ANGLE_MINOR_VERSION 1
 diff --git a/src/compiler/preprocessor/preprocessor_tab_autogen.cpp b/src/compiler/preprocessor/preprocessor_tab_autogen.cpp
 index 4711774cd..cf25e4823 100644
 --- a/src/compiler/preprocessor/preprocessor_tab_autogen.cpp
@@ -56,7 +69,7 @@ index 4711774cd..cf25e4823 100644
  
     Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
 diff --git a/src/compiler/translator/glslang_tab_autogen.cpp b/src/compiler/translator/glslang_tab_autogen.cpp
-index 8c9fd3298..3962a214b 100644
+index 2fcd81ec1..56ea8e1d4 100644
 --- a/src/compiler/translator/glslang_tab_autogen.cpp
 +++ b/src/compiler/translator/glslang_tab_autogen.cpp
 @@ -1,5 +1,7 @@
@@ -68,7 +81,7 @@ index 8c9fd3298..3962a214b 100644
  
     Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
 diff --git a/src/compiler/translator/glslang_tab_autogen.h b/src/compiler/translator/glslang_tab_autogen.h
-index e0e8d6447..ebf8d90f5 100644
+index 6a1136162..037833680 100644
 --- a/src/compiler/translator/glslang_tab_autogen.h
 +++ b/src/compiler/translator/glslang_tab_autogen.h
 @@ -1,5 +1,7 @@
@@ -79,8 +92,36 @@ index e0e8d6447..ebf8d90f5 100644
  /* Bison interface for Yacc-like parsers in C
  
     Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
+diff --git a/src/libANGLE/Caps.cpp b/src/libANGLE/Caps.cpp
+index ba3d4d9b7..7f7f49266 100644
+--- a/src/libANGLE/Caps.cpp
++++ b/src/libANGLE/Caps.cpp
+@@ -625,7 +625,11 @@ static bool DetermineDepthTextureANGLESupport(const TextureCapsMap &textureCaps)
+ {
+     constexpr GLenum requiredFormats[] = {
+         GL_DEPTH_COMPONENT16,
++#if !ANGLE_PLATFORM_IOS
++        // FIXME: Temporarily Removing the need for GL_DEPTH_COMPONENT32_OES
++        // because it is not supported on iOS.
+         GL_DEPTH_COMPONENT32_OES,
++#endif
+         GL_DEPTH24_STENCIL8_OES,
+     };
+@@ -637,7 +641,11 @@ static bool DetermineDepthTextureOESSupport(const TextureCapsMap &textureCaps)
+ {
+     constexpr GLenum requiredFormats[] = {
+         GL_DEPTH_COMPONENT16,
++#if !ANGLE_PLATFORM_IOS
++        // FIXME: Temporarily Removing the need for GL_DEPTH_COMPONENT32_OES
++        // because it is not supported on iOS.
+         GL_DEPTH_COMPONENT32_OES,
++#endif
+     };
+     return GetFormatSupport(textureCaps, requiredFormats, true, true, true, true, false);
 diff --git a/src/libANGLE/State.cpp b/src/libANGLE/State.cpp
-index 452a695c0..10ab5fc17 100644
+index dbbf869e6..1ace53334 100644
 --- a/src/libANGLE/State.cpp
 +++ b/src/libANGLE/State.cpp
 @@ -6,6 +6,9 @@
@@ -94,7 +135,7 @@ index 452a695c0..10ab5fc17 100644
  
  #include <string.h>
 diff --git a/src/libANGLE/renderer/gl/StateManagerGL.cpp b/src/libANGLE/renderer/gl/StateManagerGL.cpp
-index 5ac1fa648..3f9bc0166 100644
+index e2a10cbfd..25306cfa2 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)
@@ -121,7 +162,7 @@ index 226269909..ae90776da 100644
  }
  
 diff --git a/src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm b/src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm
-index 1c1fd2252..54d8320ea 100644
+index d6a86f525..0fa57be43 100644
 --- a/src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm
 +++ b/src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm
 @@ -153,7 +153,7 @@ WindowSurfaceCGL::WindowSurfaceCGL(const egl::SurfaceState &state,
@@ -163,7 +204,7 @@ index 29e83871c..85804411d 100644
  }
  
 diff --git a/src/libANGLE/renderer/gl/eagl/WindowSurfaceEAGL.mm b/src/libANGLE/renderer/gl/eagl/WindowSurfaceEAGL.mm
-index cb482d05b..6cef7d3dd 100644
+index 59c5c2f00..38d253ebd 100644
 --- a/src/libANGLE/renderer/gl/eagl/WindowSurfaceEAGL.mm
 +++ b/src/libANGLE/renderer/gl/eagl/WindowSurfaceEAGL.mm
 @@ -119,7 +119,7 @@ WindowSurfaceEAGL::WindowSurfaceEAGL(const egl::SurfaceState &state,
@@ -183,22 +224,24 @@ index cb482d05b..6cef7d3dd 100644
          mSwapLayer = nil;
      }
  
+diff --git a/src/libANGLE/renderer/gl/formatutilsgl.cpp b/src/libANGLE/renderer/gl/formatutilsgl.cpp
+index 3269cc5bc..8ee04b94a 100644
+--- a/src/libANGLE/renderer/gl/formatutilsgl.cpp
++++ b/src/libANGLE/renderer/gl/formatutilsgl.cpp
+@@ -256,7 +256,7 @@ static InternalFormatInfoMap BuildInternalFormatInfoMap()
+     InsertFormatMapping(&map, GL_R16F,              VersionOrExts(3, 0, "GL_ARB_texture_rg ARB_texture_float"),    AlwaysSupported(), VersionOrExts(3, 0, "GL_ARB_texture_rg GL_ARB_texture_float GL_ARB_color_buffer_float"), VersionOrExts(3, 0, "GL_OES_texture_half_float GL_EXT_texture_rg"), VersionOrExts(3, 0, "GL_OES_texture_half_float_linear"), ExtsOnly("GL_EXT_texture_storage GL_OES_texture_half_float GL_EXT_texture_rg GL_EXT_color_buffer_half_float", "GL_EXT_color_buffer_float"), ExtsOnly("GL_EXT_texture_rg GL_OES_texture_half_float GL_EXT_color_buffer_half_float", "GL_EXT_color_buffer_float"));
+     InsertFormatMapping(&map, GL_RG16F,             VersionOrExts(3, 0, "GL_ARB_texture_rg ARB_texture_float"),    AlwaysSupported(), VersionOrExts(3, 0, "GL_ARB_texture_rg GL_ARB_texture_float GL_ARB_color_buffer_float"), VersionOrExts(3, 0, "GL_OES_texture_half_float GL_EXT_texture_rg"), VersionOrExts(3, 0, "GL_OES_texture_half_float_linear"), ExtsOnly("GL_EXT_texture_storage GL_OES_texture_half_float GL_EXT_texture_rg GL_EXT_color_buffer_half_float", "GL_EXT_color_buffer_float"), ExtsOnly("GL_EXT_texture_rg GL_OES_texture_half_float GL_EXT_color_buffer_half_float", "GL_EXT_color_buffer_float"));
+     InsertFormatMapping(&map, GL_RGB16F,            VersionOrExts(3, 0, "GL_ARB_texture_float"),                   AlwaysSupported(), VersionOrExts(3, 0, "GL_ARB_texture_float GL_ARB_color_buffer_float"),                   VersionOrExts(3, 0, "GL_OES_texture_half_float"),                   VersionOrExts(3, 0, "GL_OES_texture_half_float_linear"), ExtsOnly("GL_EXT_texture_storage GL_OES_texture_half_float GL_EXT_color_buffer_half_float"),                                                ExtsOnly("GL_OES_texture_half_float GL_EXT_color_buffer_half_float")                                               );
+-    InsertFormatMapping(&map, GL_RGBA16F,           VersionOrExts(3, 0, "GL_ARB_texture_float"),                   AlwaysSupported(), VersionOrExts(3, 0, "GL_ARB_texture_float GL_ARB_color_buffer_float"),                   VersionOrExts(3, 0, "GL_OES_texture_half_float"),                   VersionOrExts(3, 0, "GL_OES_texture_half_float_linear"), ExtsOnly("GL_OES_texture_half_float GL_EXT_color_buffer_half_float", "GL_EXT_color_buffer_float"),                                          ExtsOnly("GL_OES_texture_half_float GL_EXT_color_buffer_half_float", "GL_EXT_color_buffer_float")                  );
++    InsertFormatMapping(&map, GL_RGBA16F,           VersionOrExts(3, 0, "GL_ARB_texture_float"),                   AlwaysSupported(), VersionOrExts(3, 0, "GL_ARB_texture_float GL_ARB_color_buffer_float"),                   VersionOrExts(3, 0, "GL_OES_texture_half_float"),                   VersionOrExts(3, 0, "GL_OES_texture_half_float_linear"), ExtsOnly("GL_EXT_color_buffer_half_float", "GL_EXT_color_buffer_float"),                                                                    ExtsOnly("GL_EXT_color_buffer_half_float", "GL_EXT_color_buffer_float")                                            );
+     InsertFormatMapping(&map, GL_R32F,              VersionOrExts(3, 0, "GL_ARB_texture_rg GL_ARB_texture_float"), AlwaysSupported(), VersionOrExts(3, 0, "GL_ARB_texture_rg GL_ARB_texture_float GL_ARB_color_buffer_float"), VersionOrExts(3, 0, "GL_OES_texture_float GL_EXT_texture_rg"),      ExtsOnly("GL_OES_texture_float_linear"),                 ExtsOnly("GL_EXT_color_buffer_float"),                                                                                                      ExtsOnly("GL_EXT_color_buffer_float")                                                                              );
+     InsertFormatMapping(&map, GL_RG32F,             VersionOrExts(3, 0, "GL_ARB_texture_rg GL_ARB_texture_float"), AlwaysSupported(), VersionOrExts(3, 0, "GL_ARB_texture_rg GL_ARB_texture_float GL_ARB_color_buffer_float"), VersionOrExts(3, 0, "GL_OES_texture_float GL_EXT_texture_rg"),      ExtsOnly("GL_OES_texture_float_linear"),                 ExtsOnly("GL_EXT_color_buffer_float"),                                                                                                      ExtsOnly("GL_EXT_color_buffer_float")                                                                              );
+     InsertFormatMapping(&map, GL_RGB32F,            VersionOrExts(3, 0, "GL_ARB_texture_float"),                   AlwaysSupported(), VersionOrExts(3, 0, "GL_ARB_texture_float GL_ARB_color_buffer_float"),                   VersionOrExts(3, 0, "GL_OES_texture_float"),                        ExtsOnly("GL_OES_texture_float_linear"),                 NeverSupported(),                                                                                                                           NeverSupported()                                                                                                   );
 diff --git a/src/libANGLE/renderer/gl/renderergl_utils.cpp b/src/libANGLE/renderer/gl/renderergl_utils.cpp
-index 4ec99bcea..6a250db85 100644
+index c7a8a5498..e9df550b9 100644
 --- a/src/libANGLE/renderer/gl/renderergl_utils.cpp
 +++ b/src/libANGLE/renderer/gl/renderergl_utils.cpp
-@@ -1615,7 +1615,9 @@ void InitializeFeatures(const FunctionsGL *functions, angle::FeaturesGL *feature
-     bool limitMaxTextureSize = isIntel && IsLinux() && GetLinuxOSVersion() < OSVersion(5, 0, 0);
-     ANGLE_FEATURE_CONDITION(features, limitMaxTextureSizeTo4096,
-                             IsAndroid() || limitMaxTextureSize);
--    ANGLE_FEATURE_CONDITION(features, limitMaxMSAASamplesTo4, IsAndroid());
-+    // On Apple switchable graphics, GL_MAX_SAMPLES may differ between the GPUs.
-+    // 4 is a lowest common denominator that is always supported.
-+    ANGLE_FEATURE_CONDITION(features, limitMaxMSAASamplesTo4, IsAndroid() || (IsApple() && (isIntel || isAMD || isNvidia)));
-     ANGLE_FEATURE_CONDITION(features, limitMax3dArrayTextureSizeTo1024, limitMaxTextureSize);
-     ANGLE_FEATURE_CONDITION(features, allowClearForRobustResourceInit, IsApple());
-@@ -1673,6 +1675,9 @@ void InitializeFeatures(const FunctionsGL *functions, angle::FeaturesGL *feature
+@@ -1711,6 +1711,9 @@ void InitializeFeatures(const FunctionsGL *functions, angle::FeaturesGL *feature
                              // TODO(anglebug.com/2273): diagnose crashes with this workaround.
                              false);
  
index 92db006..92b0d1a 100644 (file)
@@ -131,5 +131,5 @@ Additions to Chapter 6 of the OpenGL 4.5 Specification (Memory Objects)
 
 Revision History
 
-    Revision 1, 2019-02-19 (Michael Spang)
+    Revision 1, 2020-02-19 (Michael Spang)
         - Initial draft based closely on EXT_external_objects_fd.
index fbf9f19..a4dc08f 100644 (file)
@@ -22,7 +22,7 @@ Status
 
 Version
 
-    Version 5, Sep 6, 2019
+    Version 6, May 12, 2020
 
 Number
 
@@ -75,13 +75,17 @@ Additions to Chapter 2 of the EGL 1.2 Specification (EGL Operation)
     If <target> is EGL_D3D_TEXTURE_ANGLE, <dpy> must be a valid display, <ctx>
     must be EGL_NO_CONTEXT, <buffer> must be a pointer to a valid D3D11 texture
     object (cast into the type EGLClientBuffer), and attributes other than
-    EGL_TEXTURE_INTERNAL_FORMAT_ANGLE are ignored. The width and height of
-    the pbuffer are determined by the width and height of <buffer>."
+    EGL_TEXTURE_INTERNAL_FORMAT_ANGLE, EGL_TEXTURE_OFFSET_X_ANGLE, or
+    EGL_TEXTURE_OFFSET_Y_ANGLE are ignored. The width and height of the pbuffer
+    are determined by the width and height of <buffer>.
 
     If EGL_TEXTURE_INTERNAL_FORMAT_ANGLE is specified, it is used to interpret
     <buffer> according to the provided internal format. See table
     egl.restrictions for acceptable texture object types and formats.
 
+    If EGL_TEXTURE_OFFSET_X_ANGLE or EGL_TEXTURE_OFFSET_Y_ANGLE are specified,
+    they are used to offset all rendering into the surface.
+
     If the EGL_ANGLE_device_d3d extension is present, the provided D3D11 texture
     object must have been created by the same D3D11 device queried from the
     display. If these requirements are not met, an EGL_BAD_PARAMETER error is
@@ -122,6 +126,9 @@ Additions to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
 
                        EGL_TEXTURE_INTERNAL_FORMAT_ANGLE is not supported.
 
+                       EGL_TEXTURE_OFFSET_X_ANGLE and EGL_TEXTURE_OFFSET_Y_ANGLE
+                       are not supported.
+
     ID3D11Texture2D    Usage flags must be D3D11_USAGE_DEFAULT.
 
                        Format must be
@@ -191,8 +198,18 @@ Issues
     to GL_RGB. Images with an RGB format will ensure that the alpha channel of
     the texture is reset to 1.0 when it is used.
 
+    5. What operations do the texture offsets affect?
+
+    RESOLVED: The texture offsets specified by EGL_TEXTURE_OFFSET_X_ANGLE and
+    EGL_TEXTURE_OFFSET_Y_ANGLE affect only rendering into the surface.
+    Specifically these affect the internal D3D viewport and scissor rect states.
+    This is needed to apply the update offset returned by calling BeginDraw() on
+    IDCompositionSurface, and is needed for correct rendering in that case.
+
 Revision History
 
+    Version 6, 2020/05/12 - added support for specifying texture offsets.
+
     Version 5, 2019/09/06 - added support for creating EGLImage.
 
     Version 4, 2019/04/15 - added support for DXGI_FORMAT_R10G10B10A2_UNORM.
diff --git a/Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_platform_angle_d3d_luid.txt b/Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_platform_angle_d3d_luid.txt
new file mode 100644 (file)
index 0000000..ccac7e3
--- /dev/null
@@ -0,0 +1,88 @@
+Name
+
+    ANGLE_platform_angle_d3d_luid
+
+Name Strings
+
+    EGL_ANGLE_platform_angle_d3d_luid
+
+Contributors
+
+    Patrick To, Microsoft
+
+Contacts
+
+    Patrick To, Microsoft (patrto 'at' microsoft.com)
+
+Status
+
+    Draft
+
+Version
+
+    Version 1, 2020-04-30
+
+Number
+
+    EGL Extension XXX
+
+Extension Type
+
+    EGL client extension
+
+Dependencies
+
+    Requires ANGLE_platform_angle_d3d.
+
+Overview
+
+    This extension enables the selection of a graphics adapter to back D3D.
+
+New Types
+
+    None
+
+New Procedures and Functions
+
+    None
+
+New Tokens
+
+    Accepted as an attribute name in the <attrib_list> argument of
+    eglGetPlatformDisplayEXT:
+
+        EGL_PLATFORM_ANGLE_D3D_LUID_HIGH_ANGLE          0x34A0
+        EGL_PLATFORM_ANGLE_D3D_LUID_LOW_ANGLE           0x34A1
+
+Additions to the EGL Specification
+
+    None
+
+New Behavior
+
+    To request a display that is backed by a specific graphics adapter,
+    EGL_PLATFORM_ANGLE_D3D_LUID_HIGH_ANGLE and/or
+    EGL_PLATFORM_ANGLE_D3D_LUID_LOW_ANGLE should be set to the high part and low
+    part of the adapter's LUID. If only one attribute is specified, the other is
+    assumed to be zero.
+
+    If the high part and low part combined is zero, an EGL_BAD_ATTRIBUTE error
+    is generated and EGL_NO_DISPLAY is returned.
+
+    If the LUID specified doesn't match any adapters on the system, the default
+    adapter is used.
+
+    If EGL_PLATFORM_ANGLE_D3D_LUID_HIGH_ANGLE and/or
+    EGL_PLATFORM_ANGLE_D3D_LUID_LOW_ANGLE is included in the <attrib_list>
+    argument of eglGetPlatformDisplayEXT and EGL_PLATFORM_ANGLE_TYPE_ANGLE is
+    not set to EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, an EGL_BAD_ATTRIBUTE error
+    is generated and EGL_NO_DISPLAY is returned.
+
+Issues
+
+    None
+
+Revision History
+
+    Version 1, 2020-04-30 (Patrick To)
+      - Initial draft
diff --git a/Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_sync_control_rate.txt b/Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_sync_control_rate.txt
new file mode 100644 (file)
index 0000000..2056ae8
--- /dev/null
@@ -0,0 +1,110 @@
+´╗┐Name
+
+   ANGLE_sync_control_rate
+
+Name Strings
+
+   EGL_ANGLE_sync_control_rate
+
+Contact
+
+   Jonah Ryan-Davis, Google (jonahr 'at' google.com)
+
+Status
+
+   Draft.
+
+Version
+
+   Version 1, 2020-03-24
+
+   Based on GLX_OML_sync_control Revision 6.0
+
+Number
+
+   ???
+
+Dependencies
+
+   The extension is written against the EGL 1.2 Specification, although it
+   should work on other versions of these specifications. This extension
+   also requires an operating system which supports CLOCK_MONOTONIC.
+
+Overview
+
+   This extension provides counters which let applications know about the
+   timing of the last vertical retrace. By looking at the system clock, as
+   well as the refresh rate of the monitor, this should enable applications
+   to predict the position of future retraces so as to schedule an optimal
+   workload.
+
+   This extension incorporates the use of three counters that provide
+   the necessary synchronization. The Unadjusted System Time (or UST)
+   is the 64-bit CLOCK_MONOTONIC clock; in particular this lets the
+   application schedule future vertical retraces by querying this clock.
+   The graphics Media Stream Counter (or graphics MSC) is a counter
+   that is unique to the graphics subsystem and increments for each
+   vertical retrace that occurs. The Swap Buffer Counter (SBC) is an
+   attribute of an EGLSurface and is incremented each time a swap
+   buffer action is performed on the associated surface.
+
+   The use of these three counters allows the application to
+   synchronize graphics rendering to vertical retraces and/or swap
+   buffer actions. For example, by querying the synchronization values for
+   a given surface, the application can accurately predict the timing for
+   the next vertical retraces and schedule rendering accordingly.
+
+Issues
+
+   None.
+
+IP Status
+
+   No known issues.
+
+New Procedures and Functions
+
+   Bool eglGetMscRateANGLE(EGLDisplay* dpy,
+                           EGLSurface surface,
+                           int32_t* numerator,
+                           int32_t* denominator)
+
+New Tokens
+
+   None
+
+Additions to the EGL 1.3 Specification
+
+   The graphics MSC value is incremented once for each screen refresh.
+   For a non-interlaced display, this means that the graphics MSC value
+   is incremented for each frame. For an interlaced display, it means
+   that it will be incremented for each field. For a multi-monitor
+   system, the monitor used to determine MSC is the one where the surface
+   is located. If the surface spans multiple monitors, the monitor used
+   to determine MSC is the one with the biggest coverage in pixels.
+
+   eglGetMscRateANGLE returns the rate at which the MSC will be incremented
+   for the display associated with <hdc>. The rate is expressed in Hertz
+   as <numerator> / <denominator>. If the MSC rate in Hertz is an
+   integer, then <denominator> will be 1 and <numerator> will be
+   the MSC rate.
+
+   The function eglGetMscRateANGLE will return TRUE if the function
+   completed successfully, FALSE otherwise.
+
+   Each time eglSwapBuffer succeeds, the SBC will be increased within a
+   finite time period.
+
+Errors
+
+   The function eglGetMscRateANGLE will return FALSE if there is no
+   current EGLContext.
+
+New Implementation Dependent State
+
+   None
+
+Revision History
+
+    Version 1, 2020-03-24 (Jonah Ryan-Davis)
+       - Initial draft, based on GLX_OML_sync_control revision 6.0.
index 14f4e56..f699f61 100644 (file)
@@ -16,7 +16,7 @@ Status
 
 Version
 
-   Version 3, 2020-01-23
+   Version 2, 2015-05-05
 
    Based on GLX_OML_sync_control Revision 6.0
 
@@ -70,12 +70,6 @@ New Procedures and Functions
                                  int64_t* msc,
                                  int64_t* sbc)
 
-   Bool eglGetMscRateCHROMIUM(EGLDisplay* dpy,
-                              EGLSurface surface,
-                              int32_t* numerator,
-                              int32_t* denominator)
-
-
 New Tokens
 
    None
@@ -112,22 +106,16 @@ Additions to the EGL 1.3 Specification
    is located. If the surface spans multiple monitors, the monitor used
    to determine MSC is the one with the biggest coverage in pixels.
 
-   eglGetMscRateCHROMIUM returns the rate at which the MSC will be incremented
-   for the display associated with <hdc>. The rate is expressed in Hertz
-   as <numerator> / <denominator>. If the MSC rate in Hertz is an
-   integer, then <denominator> will be 1 and <numerator> will be
-   the MSC rate.
-
-   The functions eglGetSyncValuesCHROMIUM, and eglGetMscRateCHROMIUM will
-   return TRUE if the function completed successfully, FALSE otherwise.
+   The function eglGetSyncValuesCHROMIUM will return TRUE if the function
+   completed successfully, FALSE otherwise.
 
    Each time eglSwapBuffer succeeds, the SBC will be increased within a
    finite time period.
 
 Errors
 
-   The functions eglGetSyncValuesCHROMIUM, and eglGetMscRateCHROMIUM will
-   return FALSE if there is no current EGLContext.
+   The function eglGetSyncValuesCHROMIUM will return FALSE if there is no
+   current EGLContext.
 
 
 New State
@@ -144,10 +132,6 @@ New Implementation Dependent State
 
 Revision History
 
-    Version 3, 2020-01-23 (Jonah Ryan-Davis)
-       - Add the function eglGetMscRateCHROMIUM based on glXGetMscRateOML from
-         GLX_OML_sync_control revision 6.0.
-
     Version 2, 2015-05-05 (Chad Versace)
        - Rename to EGL_CHROMIUM_sync_control from EGL_CHROMIUM_get_sync_values.
          EGL_CHROMIUM_sync_control is the de facto extension name because all
index 3ac796f..f63fda4 100644 (file)
@@ -73,8 +73,8 @@ declare_args() {
         (angle_64bit_current_cpu && android64_ndk_api_level >= 26)
   }
 
-  # TODO(tobine): Remove this after roll. http://anglebug.com/4162
-  angle_shared_libvulkan = true
+  # Vulkan loader is statically linked on Mac. http://anglebug.com/4477
+  angle_shared_libvulkan = !is_mac
 
   # There's no "is_winuwp" helper in BUILDCONFIG.gn, so we define one ourselves
   angle_is_winuwp = is_win && current_os == "winuwp"
index 50bd6f1..03c3986 100644 (file)
@@ -25,6 +25,8 @@
 #ifndef EGL_ANGLE_d3d_texture_client_buffer
 #define EGL_ANGLE_d3d_texture_client_buffer 1
 #define EGL_D3D_TEXTURE_ANGLE             0x33A3
+#define EGL_TEXTURE_OFFSET_X_ANGLE        0x3490
+#define EGL_TEXTURE_OFFSET_Y_ANGLE        0x3491
 #endif /* EGL_ANGLE_d3d_texture_client_buffer */
 
 #ifndef EGL_ANGLE_software_display
 #define EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE 0x320F
 #endif /* EGL_ANGLE_platform_angle_d3d */
 
+#ifndef EGL_ANGLE_platform_angle_d3d_luid
+#define EGL_ANGLE_platform_angle_d3d_luid 1
+#define EGL_PLATFORM_ANGLE_D3D_LUID_HIGH_ANGLE 0x34A0
+#define EGL_PLATFORM_ANGLE_D3D_LUID_LOW_ANGLE 0x34A1
+#endif /* EGL_ANGLE_platform_angle_d3d_luid */
+
 #ifndef EGL_ANGLE_platform_angle_d3d11on12
 #define EGL_ANGLE_platform_angle_d3d11on12 1
 #define EGL_PLATFORM_ANGLE_D3D11ON12_ANGLE 0x3488
@@ -217,22 +225,28 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCVALUESCHROMIUMPROC) (EGLDisplay dp
                                                              EGLuint64KHR *ust,
                                                              EGLuint64KHR *msc,
                                                              EGLuint64KHR *sbc);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETMSCRATECHROMIUMPROC) (EGLDisplay dpy,
-                                                             EGLSurface surface,
-                                                             EGLint *numerator,
-                                                             EGLint *denominator);
 #ifdef EGL_EGLEXT_PROTOTYPES
 EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncValuesCHROMIUM(EGLDisplay dpy,
                                                              EGLSurface surface,
                                                              EGLuint64KHR *ust,
                                                              EGLuint64KHR *msc,
                                                              EGLuint64KHR *sbc);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetMscRateCHROMIUM(EGLDisplay dpy,
+#endif
+#endif /* EGL_CHROMIUM_sync_control */
+
+#ifndef EGL_ANGLE_sync_control_rate
+#define EGL_ANGLE_sync_control_rate 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETMSCRATEANGLEPROC) (EGLDisplay dpy,
+                                                             EGLSurface surface,
+                                                             EGLint *numerator,
+                                                             EGLint *denominator);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglGetMscRateANGLE(EGLDisplay dpy,
                                                              EGLSurface surface,
                                                              EGLint *numerator,
                                                              EGLint *denominator);
 #endif
-#endif /* EGL_CHROMIUM_sync_control */
+#endif /* EGL_ANGLE_sync_control_rate */
 
 #ifndef EGL_ANGLE_power_preference
 #define EGL_ANGLE_power_preference 1
index bc56c14..ed9612f 100644 (file)
@@ -510,6 +510,11 @@ GL_APICALL void GL_APIENTRY glImportSemaphoreZirconHandleANGLE(GLuint memory,
 #endif
 #endif /* GL_ANGLE_semaphore_fuchsia */
 
+#ifndef GL_CHROMIUM_texture_filtering_hint
+#define GL_CHROMIUM_texture_filtering_hint
+#define GL_TEXTURE_FILTERING_HINT_CHROMIUM 0x8AF0
+#endif /* GL_CHROMIUM_texture_filtering_hint */
+
 // clang-format on
 
 #endif  // INCLUDE_GLES2_GL2EXT_ANGLE_H_
index c514cb5..92bb2e2 100644 (file)
@@ -26,7 +26,7 @@
 
 // Version number for shader translation API.
 // It is incremented every time the API changes.
-#define ANGLE_SH_VERSION 226
+#define ANGLE_SH_VERSION 229
 
 enum ShShaderSpec
 {
@@ -336,6 +336,9 @@ const ShCompileOptions SH_REWRITE_ROW_MAJOR_MATRICES = UINT64_C(1) << 53;
 // Drop any explicit precision qualifiers from shader.
 const ShCompileOptions SH_IGNORE_PRECISION_QUALIFIERS = UINT64_C(1) << 54;
 
+// Allow compiler to do early fragment tests as an optimization.
+const ShCompileOptions SH_EARLY_FRAGMENT_TESTS_OPTIMIZATION = UINT64_C(1) << 55;
+
 // Defines alternate strategies for implementing array index clamping.
 enum ShArrayIndexClampingStrategy
 {
@@ -380,6 +383,7 @@ struct ShBuiltInResources
     int WEBGL_debug_shader_precision;
     int EXT_shader_framebuffer_fetch;
     int NV_shader_framebuffer_fetch;
+    int NV_shader_noperspective_interpolation;
     int ARM_shader_framebuffer_fetch;
     int OVR_multiview;
     int OVR_multiview2;
@@ -394,6 +398,7 @@ struct ShBuiltInResources
     int ANGLE_multi_draw;
     int ANGLE_base_vertex_base_instance;
     int WEBGL_video_texture;
+    int APPLE_clip_distance;
 
     // Set to 1 to enable replacing GL_EXT_draw_buffers #extension directives
     // with GL_NV_draw_buffers in ESSL output. This flag can be used to emulate
@@ -535,6 +540,9 @@ struct ShBuiltInResources
 
     // Subpixel bits used in rasterization.
     int SubPixelBits;
+
+    // APPLE_clip_distance/EXT_clip_cull_distance constant
+    int MaxClipDistances;
 };
 
 //
@@ -664,6 +672,8 @@ sh::WorkGroupSize GetComputeShaderLocalGroupSize(const ShHandle handle);
 // Returns the number of views specified through the num_views layout qualifier. If num_views is
 // not set, the function returns -1.
 int GetVertexShaderNumViews(const ShHandle handle);
+// Returns true if compiler has injected instructions for early fragment tests as an optimization
+bool HasEarlyFragmentTestsOptimization(const ShHandle handle);
 
 // Returns true if the passed in variables pack in maxVectors followingthe packing rules from the
 // GLSL 1.017 spec, Appendix A, section 7.
index 52f6ad0..477d2d2 100644 (file)
@@ -28,7 +28,8 @@ enum InterpolationType
 {
     INTERPOLATION_SMOOTH,
     INTERPOLATION_CENTROID,
-    INTERPOLATION_FLAT
+    INTERPOLATION_FLAT,
+    INTERPOLATION_NOPERSPECTIVE
 };
 
 // Validate link & SSO consistency of interpolation qualifiers
index 559e080..87329f4 100644 (file)
@@ -139,7 +139,7 @@ inline Feature::Feature(const char *name,
       description(description),
       bug(bug),
       enabled(false),
-      condition(nullptr)
+      condition("")
 {
     if (mapPtr != nullptr)
     {
index 85947e4..5756029 100644 (file)
@@ -364,6 +364,12 @@ struct FeaturesGL : FeatureSetBase
         "GL_PRIMITIVE_RESTART and glPrimitiveRestartIndex.",
         &members, "http://anglebug.com/3997"};
 
+    Feature setPrimitiveRestartFixedIndexForDrawArrays = {
+        "set_primitive_restart_fixed_index_for_draw_arrays", FeatureCategory::OpenGLWorkarounds,
+        "Some drivers discard vertex data in DrawArrays calls when the fixed primitive restart "
+        "index is within the number of primitives being drawn.",
+        &members, "http://anglebug.com/3997"};
+
     // Dynamic indexing of swizzled l-values doesn't work correctly on various platforms.
     Feature removeDynamicIndexingOfSwizzledVector = {
         "remove_dynamic_indexing_of_swizzled_vector", FeatureCategory::OpenGLWorkarounds,
@@ -426,6 +432,12 @@ struct FeaturesGL : FeatureSetBase
         "avoid_dxt1_srgb_texture_format", FeatureCategory::OpenGLWorkarounds,
         "Replaces DXT1 sRGB with DXT1 sRGB Alpha as a driver bug workaround.", &members};
 
+    // Bugs exist in OpenGL AMD drivers on Windows that produce incorrect pipeline state for
+    // colorMaski calls.
+    Feature disableDrawBuffersIndexed = {"disable_draw_buffers_indexed",
+                                         FeatureCategory::OpenGLWorkarounds,
+                                         "Disable OES_draw_buffers_indexed extension.", &members};
+
     // GL_EXT_semaphore_fd doesn't work properly with Mesa 19.3.4 and earlier versions.
     Feature disableSemaphoreFd = {"disable_semaphore_fd", FeatureCategory::OpenGLWorkarounds,
                                   "Disable GL_EXT_semaphore_fd extension", &members,
index 7d99937..bc4da1c 100644 (file)
@@ -120,6 +120,20 @@ struct FeaturesVk : FeatureSetBase
         "supports_external_memory_fuchsia", FeatureCategory::VulkanFeatures,
         "VkDevice supports the VK_FUCHSIA_external_memory extension", &members};
 
+    angle::Feature supportsFilteringPrecision = {
+        "supports_filtering_precision_google", FeatureCategory::VulkanFeatures,
+        "VkDevice supports the VK_GOOGLE_sampler_filtering_precision extension", &members};
+
+    // Whether the VkDevice supports the VK_KHR_external_fence_capabilities extension.
+    Feature supportsExternalFenceCapabilities = {
+        "supports_external_fence_capabilities", FeatureCategory::VulkanFeatures,
+        "VkDevice supports the VK_KHR_external_fence_capabilities extension", &members};
+
+    // Whether the VkDevice supports the VK_KHR_external_semaphore_capabilities extension.
+    Feature supportsExternalSemaphoreCapabilities = {
+        "supports_external_semaphore_capabilities", FeatureCategory::VulkanFeatures,
+        "VkDevice supports the VK_KHR_external_semaphore_capabilities extension", &members};
+
     // Whether the VkDevice supports the VK_KHR_external_semaphore_fd extension, on which the
     // GL_EXT_semaphore_fd extension can be layered.
     Feature supportsExternalSemaphoreFd = {
@@ -132,6 +146,19 @@ struct FeaturesVk : FeatureSetBase
         "supports_external_semaphore_fuchsia", FeatureCategory::VulkanFeatures,
         "VkDevice supports the VK_FUCHSIA_external_semaphore extension", &members};
 
+    // Whether the VkDevice supports the VK_KHR_external_fence_fd extension, on which the
+    // EGL_ANDROID_native_fence extension can be layered.
+    Feature supportsExternalFenceFd = {"supports_external_fence_fd",
+                                       FeatureCategory::VulkanFeatures,
+                                       "VkDevice supports the VK_KHR_external_fence_fd extension",
+                                       &members, "http://anglebug.com/2517"};
+
+    // Whether the VkDevice can support EGL_ANDROID_native_fence_sync extension.
+    Feature supportsAndroidNativeFenceSync = {
+        "supports_android_native_fence_sync", FeatureCategory::VulkanFeatures,
+        "VkDevice supports the EGL_ANDROID_native_fence_sync extension", &members,
+        "http://anglebug.com/2517"};
+
     // Whether the VkDevice supports the VK_EXT_shader_stencil_export extension, which is used to
     // perform multisampled resolve of stencil buffer.  A multi-step workaround is used instead if
     // this extension is not available.
@@ -251,6 +278,13 @@ struct FeaturesVk : FeatureSetBase
         "Fill new allocations with non-zero values to flush out errors.", &members,
         "http://anglebug.com/4384"};
 
+    // Persistently map buffer memory until destroy, saves on map/unmap IOCTL overhead
+    // for buffers that are updated frequently.
+    Feature persistentlyMappedBuffers = {
+        "persistently_mapped_buffers", FeatureCategory::VulkanFeatures,
+        "Persistently map buffer memory to reduce map/unmap IOCTL overhead.", &members,
+        "http://anglebug.com/2162"};
+
     // Android needs to pre-rotate surfaces that are not oriented per the native device's
     // orientation (e.g. a landscape application on a Pixel phone).  This feature works for
     // full-screen applications. http://anglebug.com/3502
@@ -274,6 +308,15 @@ struct FeaturesVk : FeatureSetBase
     Feature supportDepthStencilRenderingFeedbackLoops = {
         "support_depth_stencil_rendering_feedback_loops", FeatureCategory::VulkanFeatures,
         "Suport depth/stencil rendering feedback loops", &members, "http://anglebug.com/4490"};
+
+    // Desktop (at least NVIDIA) drivers prefer combining barriers into one vkCmdPipelineBarrier
+    // call over issuing multiple barrier calls with fine grained dependency information to have
+    // better performance. http://anglebug.com/4633
+    Feature preferAggregateBarrierCalls = {
+        "prefer_aggregate_barrier_calls", FeatureCategory::VulkanWorkarounds,
+        "Single barrier call is preferred over multiple calls with "
+        "fine grained pipeline stage dependency information",
+        &members, "http://anglebug.com/4633"};
 };
 
 inline FeaturesVk::FeaturesVk()  = default;
index 361f3d1..74378ab 100644 (file)
@@ -2,13 +2,15 @@
 
 As an ANGLE Sheriff. Your job is to:
 
- 1. Keep the [ANGLE Try Waterfall](https://ci.chromium.org/p/chromium/g/angle.try/builders) in good
+ 1. Keep the [ANGLE Try Waterfall](https://ci.chromium.org/p/chromium/g/tryserver.chromium.angle/builders) in good
     working order.
  1. Monitor the
     [Chromium GPU FYI Waterfall](https://ci.chromium.org/p/chromium/g/chromium.gpu.fyi/console)
     and respond to ANGLE bugs.
  1. Control and monitor the [ANGLE auto-rollers](#task-3_the-auto_rollers).
  1. Keep the [ANGLE Standalone Testers](README.md) in good working order.
+ 1. Keep the [SwANGLE Try Waterfall](https://luci-milo.appspot.com/p/chromium/g/tryserver.chromium.swangle/builders) in good
+    working order.
 
 If you're not an ANGLE team member, you can contact us on the public ANGLE project
 [Google group](https://groups.google.com/forum/#!forum/angleproject).
@@ -21,7 +23,7 @@ extension for inspecting bot builds. It'll save you a lot of time.
 ## Task 1: Monitor ANGLE CI and Try Testers
 
 Your first job is to keep the
-[ANGLE Try Waterfall](https://ci.chromium.org/p/chromium/g/angle.try/builders) healthy.  Some
+[ANGLE Try Waterfall](https://ci.chromium.org/p/chromium/g/tryserver.chromium.angle/builders) healthy.  Some
 failures are expected on this waterfall. Developers might be testing expectedly buggy code. But
 persistent flakiness and failures should be reported and reverted.
 
@@ -90,8 +92,19 @@ We also use additional auto-rollers to roll third party libraries into ANGLE onc
  * [Vulkan-Headers into ANGLE](https://autoroll.skia.org/r/vulkan-headers-angle-autoroll)
  * [Vulkan-ValidationLayers into ANGLE](https://autoroll.skia.org/r/vulkan-validation-layers-angle-autoroll)
 
-Please ensure these rollers are also healthy and unblocked. You can trigger manual rolls using the dashboards
-to land high-priority changes.
+Please ensure these rollers are also healthy and unblocked. You can trigger manual rolls using the
+dashboards to land high-priority changes.
+
+**NOTE: When Vulkan-Headers roll is broken:**
+
+The Vulkan-Tools, Vulkan-Loader, and Vulkan-ValidationLayers repos all depend on the Vulkan-Headers
+repo. When Vulkan-Headers updates, all of those repos have a roll process managed by LunarG to
+update them for the new Vulkan-Headers. This usually takes 2-3 business days after the
+Vulkan-Headers update. If Vulkan-Headers roll fails, pause the roller with a note that it should be
+re-enabled when the dependent repos have been updated for the latest Vulkan-Headers changes. This
+will require a manual roll if the two repos have to be rolled in unison. To perform a manual roll,
+create a CL that updates the DEPS file with the new SHA1 value from the desired checkout of each
+dependent repo. Once the manual roll lands, re-enable the auto-rollers for the relevant repos.
 
 The autoroller configurations live in the [skia/buildbot repository](https://skia.googlesource.com/buildbot/)
 in the [autoroll/config](https://skia.googlesource.com/buildbot/+/master/autoroll/config) folder.
@@ -99,3 +112,31 @@ in the [autoroll/config](https://skia.googlesource.com/buildbot/+/master/autorol
 ## Task 4: ANGLE Standalone Testing
 
 See more detailed instructions on by following [this link](README.md).
+
+## Task 5: Monitor SwANGLE CI and Try Testers
+
+Most important task here is to keep healthy the 2 SwANGLE bots on ANGLE CQ,
+[linux-swangle-try-tot-angle-x64](https://luci-milo.appspot.com/p/chromium/builders/try/linux-swangle-try-tot-angle-x64)
+and
+[win-swangle-try-tot-angle-x86](https://luci-milo.appspot.com/p/chromium/builders/try/win-swangle-try-tot-angle-x86).
+As well as the 2 SwANGLE bots used for ANGLE rolls on Chromium CQ,
+[linux-swangle-try-x64](https://luci-milo.appspot.com/p/chromium/builders/try/linux-swangle-try-x64)
+and
+[win-swangle-try-x86](https://luci-milo.appspot.com/p/chromium/builders/try/win-swangle-try-x86).
+
+Same instructions as for [Task 1](#task-1_monitor-angle-ci-and-try-testers) apply here.
+Some failures on these bots may be due to SwiftShader changes, however.
+The possible ways to handle these failures are:
+1. If possible, suppress the failing tests in ANGLE, opening a bug to investigate these later.
+1. If it is clear that an ANGLE CL caused a regression,
+   consider whether reverting it or suppressing the failures is a better course of action.
+1. If a SwiftShader CL is suspected, and the breakage is too severe to be suppressed,
+   (a lot of tests fail in multiple suites),
+   it is possible to revert the responsible SwiftShader roll into Chromium
+   and open a SwiftShader [bug](http://go/swiftshaderbugs). SwiftShader rolls into Chromium
+   should fail afterwards, but if the bad roll manages to reland,
+   the [autoroller](https://autoroll.skia.org/r/swiftshader-chromium-autoroll) needs to be stopped.
+
+A lower priority task here is to keep healthy all the SwANGLE
+[CI](https://luci-milo.appspot.com/p/chromium/g/chromium.swangle/builders) and
+[Try](https://luci-milo.appspot.com/p/chromium/g/tryserver.chromium.swangle/builders) bots.
index ea45ea4..3832710 100644 (file)
@@ -12,7 +12,7 @@ Also see the documentation on [ANGLE Wrangling][Wrangling] for more info.
 
 See the pre-commit try waterfall here:
 
-[`https://ci.chromium.org/p/chromium/g/angle.try/builders`](https://ci.chromium.org/p/chromium/g/angle.try/builders)
+[`https://ci.chromium.org/p/chromium/g/tryserver.chromium.angle/builders`](https://ci.chromium.org/p/chromium/g/tryserver.chromium.angle/builders)
 
 We currently run pre-commit tests on:
 
index c306800..9069bec 100644 (file)
@@ -99,6 +99,9 @@ config_groups {
         name: "chromium/try/linux-angle-rel"
       }
       builders {
+        name: "chromium/try/linux-swangle-try-tot-angle-x64"
+      }
+      builders {
         name: "chromium/try/mac-angle-rel"
       }
       builders {
@@ -113,6 +116,9 @@ config_groups {
       builders {
         name: "chromium/try/win-angle-rel-64"
       }
+      builders {
+        name: "chromium/try/win-swangle-try-tot-angle-x86"
+      }
       retry_config {
         single_quota: 1
         global_quota: 2
index b0ce208..aef9928 100644 (file)
@@ -201,7 +201,14 @@ if (angle_build_capture_replay_sample) {
       "ANGLE_CAPTURE_REPLAY_SAMPLE_CONTEXT_ID=${_contextid}",
       "ANGLE_CAPTURE_REPLAY_SAMPLE_HEADER=angle_capture_context${_contextid}.h",
     ]
+
     suppressed_configs = [ "$angle_root:constructor_and_destructor_warnings" ]
+
+    # Disable optimization to avoid optimizing huge files.
+    if (!is_debug) {
+      suppressed_configs += [ "//build/config/compiler:default_optimization" ]
+      configs += [ "//build/config/compiler:no_optimize" ]
+    }
   }
 }
 
index a38c23b..cd12e45 100644 (file)
@@ -27,6 +27,9 @@ std::function<void()> SetupContextReplay = reinterpret_cast<void (*)()>(
 std::function<void(int)> ReplayContextFrame = reinterpret_cast<void (*)(int)>(
     ANGLE_MACRO_CONCAT(ReplayContext,
                        ANGLE_MACRO_CONCAT(ANGLE_CAPTURE_REPLAY_SAMPLE_CONTEXT_ID, Frame)));
+std::function<void()> ResetContextReplay = reinterpret_cast<void (*)()>(
+    ANGLE_MACRO_CONCAT(ResetContext,
+                       ANGLE_MACRO_CONCAT(ANGLE_CAPTURE_REPLAY_SAMPLE_CONTEXT_ID, Replay)));
 
 class CaptureReplaySample : public SampleApplication
 {
@@ -59,12 +62,19 @@ class CaptureReplaySample : public SampleApplication
         // Compute the current frame, looping from kReplayFrameStart to kReplayFrameEnd.
         uint32_t frame =
             kReplayFrameStart + (mCurrentFrame % (kReplayFrameEnd - kReplayFrameStart));
+
+        if (mPreviousFrame > frame)
+        {
+            ResetContextReplay();
+        }
         ReplayContextFrame(frame);
+        mPreviousFrame = frame;
         mCurrentFrame++;
     }
 
   private:
-    uint32_t mCurrentFrame = 0;
+    uint32_t mCurrentFrame  = 0;
+    uint32_t mPreviousFrame = 0;
 };
 
 int main(int argc, char **argv)
index ff9af44..2c5e33c 100644 (file)
@@ -155,7 +155,8 @@ int SampleApplication::run()
     configParams.depthBits   = 24;
     configParams.stencilBits = 8;
 
-    if (!mEGLWindow->initializeGL(mOSWindow, mEntryPointsLib.get(), mPlatformParams, configParams))
+    if (!mEGLWindow->initializeGL(mOSWindow, mEntryPointsLib.get(), angle::GLESDriverType::AngleEGL,
+                                  mPlatformParams, configParams))
     {
         return -1;
     }
index 3af7ebc..53f6be6 100644 (file)
@@ -65,6 +65,7 @@ void GenerateResources(ShBuiltInResources *resources)
     resources->OES_EGL_image_external    = 0;
     resources->EXT_geometry_shader       = 1;
     resources->ANGLE_texture_multisample = 0;
+    resources->APPLE_clip_distance       = 0;
 }
 
 int main(int argc, char *argv[])
@@ -249,7 +250,7 @@ int main(int argc, char *argv[])
                       case 'y': resources.EXT_YUV_target = 1; break;
                       default: failCode = EFailUsage;
                     }
-                    // clang-format on
+                        // clang-format on
                     }
                     else
                     {
index 0139154..1785532 100644 (file)
@@ -1,14 +1,14 @@
 {
   "src/libANGLE/renderer/FormatID_autogen.h":
-    "24fdce4072d7f9e76337ffbe4c58b4ab",
+    "bbdb3beae2da4629e3583d6d014ebb2d",
   "src/libANGLE/renderer/Format_table_autogen.cpp":
-    "894eaa150949d32c563e94024312295d",
+    "ef632d9cf04b4ba6103f80b61ac26bc9",
   "src/libANGLE/renderer/angle_format.py":
     "32ba71942c0fd00e6807104f1bb80a3c",
   "src/libANGLE/renderer/angle_format_data.json":
     "b8bfe470c31b12b27f3a2bdb0288e4be",
   "src/libANGLE/renderer/angle_format_map.json":
-    "fad58117657b6bde9488a10d35872d45",
+    "c79d833aea7007c7d0d51cdaa9b265a6",
   "src/libANGLE/renderer/gen_angle_format_table.py":
     "8e349a643e81a028ebb54bde3756f9f7"
 }
\ No newline at end of file
index af7876e..58dbe72 100644 (file)
@@ -4,7 +4,7 @@
   "src/libANGLE/renderer/gen_load_functions_table.py":
     "9b4ea6bcb4eb4c43f48a097a9ec920f1",
   "src/libANGLE/renderer/load_functions_data.json":
-    "7df64a5481f55f3096aff11649d9992d",
+    "82e599f6a6cd9a314406f610f71dc660",
   "src/libANGLE/renderer/load_functions_table_autogen.cpp":
-    "82658e05a1019375501076c4043d6f82"
+    "7a594fed0385de81c402bcd3ff7f6412"
 }
\ No newline at end of file
index 8cca82c..ce72f6e 100644 (file)
@@ -4,15 +4,15 @@
   "src/compiler/translator/generate_parser.py":
     "566178ecdfae3a29803b3687fc518ebb",
   "src/compiler/translator/glslang.l":
-    "2f602a853e4c4d669edc3cc36a1a8c4a",
+    "76676b64d51f4312e8060f4a00bc8f1b",
   "src/compiler/translator/glslang.y":
-    "928cfcdd99877b5a289694a4057d5d76",
+    "609c38a1997b77a9affec84541daf9c9",
   "src/compiler/translator/glslang_lex_autogen.cpp":
-    "809307250ccc9a6c6d026da45b57dcec",
+    "edc229f6d1b48f8588301219df80760e",
   "src/compiler/translator/glslang_tab_autogen.cpp":
-    "f693228f495aac4629ee8e30c12dc62f",
+    "8872811534b4e8aeef0df354bbd05044",
   "src/compiler/translator/glslang_tab_autogen.h":
-    "286139e7a8f2dd3458fbf39bff09d2ad",
+    "1bb42872dd5fd0a6f647201b142b67b6",
   "tools/flex-bison/linux/bison.sha1":
     "efa86001f00e7bcfdbe899dd15fc88e0",
   "tools/flex-bison/linux/flex.sha1":
index d5f651f..9451d6c 100644 (file)
@@ -6,7 +6,7 @@
   "src/libANGLE/renderer/d3d/d3d11/texture_format_data.json":
     "c80708c18348fd89a3b918e58e74c1f8",
   "src/libANGLE/renderer/d3d/d3d11/texture_format_map.json":
-    "e9dfbd51ff183809f595f8fc5db9c217",
+    "d45aee3519b8c9a15411617bbb00c77f",
   "src/libANGLE/renderer/d3d/d3d11/texture_format_table_autogen.cpp":
-    "f48864159c3a1fe6ca7567e3eb8215fb"
+    "ef6da258ffbd0245d6a592f5c0f8b455"
 }
\ No newline at end of file
index 12ef84e..1628f1e 100644 (file)
@@ -2,7 +2,7 @@
   "src/libANGLE/renderer/angle_format.py":
     "32ba71942c0fd00e6807104f1bb80a3c",
   "src/libANGLE/renderer/angle_format_map.json":
-    "fad58117657b6bde9488a10d35872d45",
+    "c79d833aea7007c7d0d51cdaa9b265a6",
   "src/libANGLE/renderer/d3d/d3d11/dxgi_format_data.json":
     "3428e4761ccd05f960adffd6ccbd86c5",
   "src/libANGLE/renderer/d3d/d3d11/dxgi_format_map_autogen.cpp":
index 8ee16b7..591b056 100644 (file)
@@ -6,11 +6,11 @@
   "src/tests/deqp_support/deqp_data_autogen.gni":
     "3a74e9e404a9b1a4ff1a78d8a640c472",
   "third_party/VK-GL-CTS/src/CMakeLists.txt":
-    "98f0575b3871b208ce30150dea2081d6",
+    "b3a451350b7e54837e3208b02d86e9c5",
   "third_party/VK-GL-CTS/src/execserver/CMakeLists.txt":
     "38aa187592e6ef9a331fc1ea313fc68d",
   "third_party/VK-GL-CTS/src/executor/CMakeLists.txt":
-    "c160665aff880be214feba6813ed1687",
+    "3c256f00625f67d2a8d9ead5f21faddf",
   "third_party/VK-GL-CTS/src/external/amber/CMakeLists.txt":
     "f83a418b79863e90de781d8be6515246",
   "third_party/VK-GL-CTS/src/external/glslang/CMakeLists.txt":
@@ -22,7 +22,7 @@
   "third_party/VK-GL-CTS/src/external/openglcts/modules/CMakeLists.txt":
     "9852754780cd9522f93644d2d99b271d",
   "third_party/VK-GL-CTS/src/external/openglcts/modules/common/CMakeLists.txt":
-    "d220542a9e60c717cb3d7211f93440d3",
+    "6fac0f4254e7792284fb086547210811",
   "third_party/VK-GL-CTS/src/external/openglcts/modules/common/subgroups/CMakeLists.txt":
     "bf71ce2d9756ccee7833a789737e6481",
   "third_party/VK-GL-CTS/src/external/openglcts/modules/gl/CMakeLists.txt":
   "third_party/VK-GL-CTS/src/external/openglcts/modules/glesext/CMakeLists.txt":
     "ebdfbd0182b8bf2ea46d1b7e296c817f",
   "third_party/VK-GL-CTS/src/external/openglcts/modules/runner/CMakeLists.txt":
-    "b26de93a406529b4fdc302847420eb8d",
+    "4c00859a4a700bec7793221dbbf42e2a",
   "third_party/VK-GL-CTS/src/external/spirv-tools/CMakeLists.txt":
     "cca8b4b984c40afb9880d177d53623a1",
   "third_party/VK-GL-CTS/src/external/vulkancts/framework/vulkan/CMakeLists.txt":
-    "260b2a1ffb1369e997cde61956d973ba",
+    "7f90f08bea39abbd86db1503b716a536",
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/CMakeLists.txt":
     "58a0f556db356700cfbf93396fc9be74",
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/amber/CMakeLists.txt":
-    "86cb03a771d5c0a57a6e0dbb305c2aba",
+    "6728615fdef5984e305934f10efc6892",
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/api/CMakeLists.txt":
-    "2da9d05ef3ba768632d7362d1ffaa143",
+    "28aeb151111f9fcaa0ea50ab5899e1b7",
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/binding_model/CMakeLists.txt":
     "794d2fffb0ac6da4f97bdb97ef241239",
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/clipping/CMakeLists.txt":
@@ -62,7 +62,7 @@
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/device_group/CMakeLists.txt":
     "6f9fe60553924ea0fe38b8e660fbdc5c",
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/draw/CMakeLists.txt":
-    "de49df93bf553783ae240f9794fffc0d",
+    "bafb72d398e80d60a9b5257e1922619f",
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/dynamic_state/CMakeLists.txt":
     "ba2bba86426f1dc9eb16bccc2df60111",
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/fragment_ops/CMakeLists.txt":
@@ -72,7 +72,7 @@
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/geometry/CMakeLists.txt":
     "ea6d6d378737311f541c79d03396dc79",
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/image/CMakeLists.txt":
-    "0037388ae1cb072440e325e59c141418",
+    "31fbbd3cd0f49d19135363307558a66a",
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/imageless_framebuffer/CMakeLists.txt":
     "9f2167a87844c1c5197d9ccb8863a613",
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/memory/CMakeLists.txt":
@@ -86,7 +86,7 @@
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/protected_memory/CMakeLists.txt":
     "62389a457fa79ff09317b745e0c2f4aa",
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/query_pool/CMakeLists.txt":
-    "a6087d1fdde5a0f762090b09bce60a26",
+    "8eb77c8b1ebe7d533eee1404022da713",
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/rasterization/CMakeLists.txt":
     "7244cc31e094426b44540c57a017beaa",
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/renderpass/CMakeLists.txt":
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/sparse_resources/CMakeLists.txt":
     "bfaf070093d563e4dc92ec72d3e20d97",
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/spirv_assembly/CMakeLists.txt":
-    "c8a3609e6a3b3813bcd5bef6d576cdec",
+    "4c8be094d14fc14497edbc8b467cc903",
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/ssbo/CMakeLists.txt":
     "957b7c45d94d652607833aeb007132c5",
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/subgroups/CMakeLists.txt":
-    "bb621620038103d5e8f88de1714cefd7",
+    "d5502ba8e189212eef2e6ec1426f17a6",
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/synchronization/CMakeLists.txt":
     "68fab755b6bdd9570fa311b6c8d809fb",
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/tessellation/CMakeLists.txt":
     "bd315c04bf5adb9f63e8c991fbde1e34",
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/texture/CMakeLists.txt":
-    "7895df4abb5be71b92d3135e542b14bf",
+    "e1a6c593990fbf68ada75efba89410fb",
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/transform_feedback/CMakeLists.txt":
     "e2e32f34bcd3cbbfce6c49a997f34934",
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/ubo/CMakeLists.txt":
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/wsi/CMakeLists.txt":
     "32a8d4283697d53b99135ab7cda06957",
   "third_party/VK-GL-CTS/src/external/vulkancts/modules/vulkan/ycbcr/CMakeLists.txt":
-    "1c52b684259622de369aadbb5686a0e4",
+    "44dbe345080578d6b4a227a392ccf69e",
   "third_party/VK-GL-CTS/src/external/zlib/CMakeLists.txt":
     "dae46a72968caa2df17a8d989dc43ec0",
   "third_party/VK-GL-CTS/src/framework/CMakeLists.txt":
-    "b73b4bccc2a3d52c0db65d2d0e010828",
+    "edeee2284578f1b76122adee5e42f0e7",
   "third_party/VK-GL-CTS/src/framework/common/CMakeLists.txt":
-    "dc08a30095d0054cc67dd0fdab218e5e",
+    "02814cd8baaecdf783cb431f13844fe4",
   "third_party/VK-GL-CTS/src/framework/delibs/debase/CMakeLists.txt":
     "136b8d2068c0920684582500843b3f88",
   "third_party/VK-GL-CTS/src/framework/delibs/decpp/CMakeLists.txt":
   "third_party/VK-GL-CTS/src/framework/platform/CMakeLists.txt":
     "61165590822c668da40db99db8f2b45b",
   "third_party/VK-GL-CTS/src/framework/qphelper/CMakeLists.txt":
-    "bff80adc305e9e5c527b1ad6db53e99f",
+    "cfe4e498db0086eea5c5735d16a8f1ec",
   "third_party/VK-GL-CTS/src/framework/randomshaders/CMakeLists.txt":
     "d1d59780829f01d4670492d21a931dfb",
   "third_party/VK-GL-CTS/src/framework/referencerenderer/CMakeLists.txt":
     "7ac17ce883289a4d9bf3c69bad5263b7",
+  "third_party/VK-GL-CTS/src/framework/xexml/CMakeLists.txt":
+    "58c91860abe3f6515acbf5a5abce6f0c",
   "third_party/VK-GL-CTS/src/modules/CMakeLists.txt":
     "632cf1d4d696b1e19c01c6d11e2d59c4",
   "third_party/VK-GL-CTS/src/modules/egl/CMakeLists.txt":
index 2b92de8..f11ea67 100644 (file)
@@ -2,31 +2,31 @@
   "scripts/egl.xml":
     "842e24514c4cfe09fba703c17a0fd292",
   "scripts/egl_angle_ext.xml":
-    "63f18dc9b7183ead4ddd3dfd1571973a",
+    "854e99785af19f8f4eea4f73005a0451",
   "scripts/generate_loader.py":
-    "792c41d7ae93a4518f0c73e45626d19b",
+    "c6c02d859fabc61410470f50198a5a80",
   "scripts/gl.xml":
     "e74a595068cbdd6064300be1e71b7cc9",
   "scripts/gl_angle_ext.xml":
     "079cc4829de7ce638faf7bbf66e141ad",
   "scripts/registry_xml.py":
-    "06c837b395c8cd0c4fc937b193365042",
+    "b2902e02f495a9cc85082c47e7b73ac9",
   "scripts/wgl.xml":
     "aa96419c582af2f6673430e2847693f4",
   "src/libEGL/egl_loader_autogen.cpp":
-    "6de27557530d1dff3780d83745c0a0fd",
+    "acf3ea19b84b12bfd1197fed020440b3",
   "src/libEGL/egl_loader_autogen.h":
-    "2fca11a29bb6e5cadb25d4862360ddd8",
+    "5f1507c78b970f6898d1e90da20e425d",
   "util/egl_loader_autogen.cpp":
-    "780b317fbd6ac03e300a7ee0122ab3cf",
+    "c2a5f6cb5e3531de16860ffc4f9df6d5",
   "util/egl_loader_autogen.h":
-    "55b54071e61b3e7beab28178dc20fd28",
+    "3b5804374e184203cd3f89cee12a0e57",
   "util/gles_loader_autogen.cpp":
-    "b73fa86312a71c76f6a8402548d21204",
+    "e4d3034c13ac10c76b854c2749379939",
   "util/gles_loader_autogen.h":
-    "f5df94d354db0d26275b1828f4083633",
+    "74dae22b00bdb4653c3295619f3676a1",
   "util/windows/wgl_loader_autogen.cpp":
-    "c0d9a65eaa9aac356c6fd3f88638d2be",
+    "60a40fba3ffddd40063fe6131bc67ba5",
   "util/windows/wgl_loader_autogen.h":
-    "36857be5c303b13eba2ee91d7c127207"
+    "572549de92e7f893ee1c2161704e1cfb"
 }
\ No newline at end of file
index 3664ed7..c5f093e 100644 (file)
@@ -2,7 +2,7 @@
   "scripts/egl.xml":
     "842e24514c4cfe09fba703c17a0fd292",
   "scripts/egl_angle_ext.xml":
-    "63f18dc9b7183ead4ddd3dfd1571973a",
+    "854e99785af19f8f4eea4f73005a0451",
   "scripts/entry_point_packed_gl_enums.json":
     "63f508a08611e75810daedb297dca0e9",
   "scripts/generate_entry_points.py":
@@ -12,7 +12,7 @@
   "scripts/gl_angle_ext.xml":
     "079cc4829de7ce638faf7bbf66e141ad",
   "scripts/registry_xml.py":
-    "06c837b395c8cd0c4fc937b193365042",
+    "b2902e02f495a9cc85082c47e7b73ac9",
   "scripts/wgl.xml":
     "aa96419c582af2f6673430e2847693f4",
   "src/libANGLE/Context_gl_1_0_autogen.h":
@@ -64,7 +64,7 @@
   "src/libANGLE/Context_gles_3_2_autogen.h":
     "e26f7ee7b59a89a4f5337171816b8336",
   "src/libANGLE/Context_gles_ext_autogen.h":
-    "572006fa4493a901e879f6df3cb4eee8",
+    "70b088f16d539f1fe7f3ec39a2fd2c34",
   "src/libANGLE/capture_gles_1_0_autogen.cpp":
     "96fc0f501e2e696ab911dad8b400dfb2",
   "src/libANGLE/capture_gles_1_0_autogen.h":
@@ -88,7 +88,7 @@
   "src/libANGLE/capture_gles_ext_autogen.cpp":
     "96cb5043ebfce349c89ece3afec6d9f8",
   "src/libANGLE/capture_gles_ext_autogen.h":
-    "5d9c736a379615d00f9751f4fed71d24",
+    "2993ff4c127fb3dca52c96b4a86d7f69",
   "src/libANGLE/entry_points_enum_autogen.cpp":
     "66f09d4f9e6f8e83f2f6f0cf8fc3f3d9",
   "src/libANGLE/entry_points_enum_autogen.h":
   "src/libANGLE/validationES3_autogen.h":
     "86ba503835328438158d9a464943f3bd",
   "src/libANGLE/validationESEXT_autogen.h":
-    "86af9f315d28a2ab66278b7992aae44f",
+    "9a7f7c129e12ab2660f1ef5d6dd73cd5",
   "src/libANGLE/validationGL11_autogen.h":
     "aadd145c1404de9c34d6b7c00404f10f",
   "src/libANGLE/validationGL12_autogen.h":
   "src/libGLESv2/entry_points_gles_3_2_autogen.h":
     "5798aa0a73af1d4ba5dfe99b6217a247",
   "src/libGLESv2/entry_points_gles_ext_autogen.cpp":
-    "0b17c49a0a5dc21285628cde76f2f266",
+    "f24b9311081f4307a4b02cec669753b9",
   "src/libGLESv2/entry_points_gles_ext_autogen.h":
-    "9b23aa72fe825786cf63080351fa4daf",
+    "97bdf48e620471b21e3d250254ac847f",
   "src/libGLESv2/libGLESv2_autogen.cpp":
-    "1689a88c5bf376da1f0433db242ede7d",
+    "0d79a167f0e86a7adcdebfe26ed331a9",
   "src/libGLESv2/libGLESv2_autogen.def":
-    "5f1eb763e31f9080eb2dfb1883260833",
+    "ff7562ae9bdf8763fea7ba09e5cbb1b4",
   "src/libGLESv2/libGLESv2_no_capture_autogen.def":
-    "28c8a5ee0d3d67815c1a7ff7c2d495ca",
+    "affecd039c50674887d6c7bd9b06d4ce",
   "src/libGLESv2/libGLESv2_with_capture_autogen.def":
-    "dd0c7c54fd5da8af0dc85f2f1e3212ed"
+    "5a9fce5f01b3b2150cbce447f02e7873"
 }
\ No newline at end of file
index 3418db1..6ecc5fd 100644 (file)
@@ -1,10 +1,10 @@
 {
   "src/libANGLE/es3_format_type_combinations.json":
-    "b44b222c27eea6839c0da3076ee540fc",
+    "3c4288394162b20f5ccdc29d3b4eecbb",
   "src/libANGLE/format_map_autogen.cpp":
-    "e0dedb4a47ca7eab2d33d20430a30d05",
+    "baae22cedf176b776d0a2331abb4abcc",
   "src/libANGLE/format_map_data.json":
-    "2edab4db12a1cc131f26e0e5680b7d0c",
+    "742cf47524160757a2cec43116dc153c",
   "src/libANGLE/gen_format_map.py":
     "38320d844e6629e09afc5ccdc484e9aa",
   "src/libANGLE/renderer/angle_format.py":
index e644909..3a4cd31 100644 (file)
@@ -1,14 +1,14 @@
 {
   "scripts/gen_gl_enum_utils.py":
-    "f25cdc74b57d10a1cbc4194a72e971af",
+    "af9ec09ac89a73c9fe0dd510a1db4b38",
   "scripts/gl.xml":
     "e74a595068cbdd6064300be1e71b7cc9",
   "scripts/gl_angle_ext.xml":
     "079cc4829de7ce638faf7bbf66e141ad",
   "scripts/registry_xml.py":
-    "06c837b395c8cd0c4fc937b193365042",
+    "b2902e02f495a9cc85082c47e7b73ac9",
   "src/libANGLE/gl_enum_utils_autogen.cpp":
-    "cfc52f413272c061ee4a037876792726",
+    "48627c0865d15bf4014327de5858d3c5",
   "src/libANGLE/gl_enum_utils_autogen.h":
     "dd54f34be733affcb994fc315c3b972d"
 }
\ No newline at end of file
index 5050f00..44d103f 100644 (file)
@@ -1,30 +1,30 @@
 {
   "src/compiler/translator/ImmutableString_ESSL_autogen.cpp":
-    "5eb552ee4f89b9dbc96891afdc27f524",
+    "0025705dc18b69c702b64644806a799c",
   "src/compiler/translator/ImmutableString_autogen.cpp":
-    "f1530bc05f6b3117861b66e18510f931",
+    "0af0ec12d54ecc032b74b58dd3526129",
   "src/compiler/translator/ParseContext_ESSL_autogen.h":
-    "d97fc9835e8ad4d5ed0391a863c6b0ca",
+    "c753d946807cca10df7f50ca2db8a47a",
   "src/compiler/translator/ParseContext_complete_autogen.h":
     "dc88a43c877a9955c909e73c4da34176",
   "src/compiler/translator/SymbolTable_ESSL_autogen.cpp":
-    "6e0251384060afcb12d76de4293e1309",
+    "98e1c96985096c1bbe0625983f67a23e",
   "src/compiler/translator/SymbolTable_autogen.cpp":
-    "c11d46507c1f32bbbf7930ab72f4ad46",
+    "73ac6e5df17521d8cd6734450a9788a0",
   "src/compiler/translator/SymbolTable_autogen.h":
-    "c4f6b75374c22851df2cff40c5c7c877",
+    "2d8bed6ff5debc6546199a2add316a66",
   "src/compiler/translator/builtin_function_declarations.txt":
     "e4a0add049ebbaa8dc5b6c630816b7f8",
   "src/compiler/translator/builtin_variables.json":
-    "1b71075ff2644fd32b12bb53dce50062",
+    "98d347a6ed181eca3d89bfd73193d787",
   "src/compiler/translator/gen_builtin_symbols.py":
     "ef6fde209ca86ffb1752fc3a5b9d72d7",
   "src/compiler/translator/tree_util/BuiltIn_ESSL_autogen.h":
-    "18c483560bd804bf4f55418a5bd4f946",
+    "aa5d8059a42adb2fb833c84e86726b95",
   "src/compiler/translator/tree_util/BuiltIn_complete_autogen.h":
-    "526af7b92fe6a1056c7aacd810d2e8a9",
+    "cf8312c854b06d9fe4ede0daa67b5060",
   "src/tests/compiler_tests/ImmutableString_test_ESSL_autogen.cpp":
-    "8bd6d3d4cad8c4f788c006f973a8de09",
+    "f3a7e48b43b08c17682a3bb5502fc016",
   "src/tests/compiler_tests/ImmutableString_test_autogen.cpp":
-    "177eb26e8ddda67aef008a1b3d1e0cf9"
+    "673110e754ad8ea6939a736b88a781bc"
 }
\ No newline at end of file
index 878ccc5..90dc06e 100644 (file)
@@ -2,11 +2,11 @@
   "src/libANGLE/renderer/angle_format.py":
     "32ba71942c0fd00e6807104f1bb80a3c",
   "src/libANGLE/renderer/angle_format_map.json":
-    "fad58117657b6bde9488a10d35872d45",
+    "c79d833aea7007c7d0d51cdaa9b265a6",
   "src/libANGLE/renderer/vulkan/gen_vk_format_table.py":
     "d8a0f2278c09a49049a73930b9da3719",
   "src/libANGLE/renderer/vulkan/vk_format_map.json":
-    "893950f630c95c653ec907901939afd8",
+    "738c8dc36fbe212669944e88ae918f9c",
   "src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp":
-    "4557259cadb45c9db3301039cda3a7bc"
+    "383749c786e957bdbbbce9d8b5c2441a"
 }
\ No newline at end of file
index d335274..36f04c3 100644 (file)
@@ -8,5 +8,5 @@
   "src/libANGLE/renderer/vulkan/vk_mandatory_format_support_table_autogen.cpp":
     "8bfd8a3857c2b9062d7ada46c7d27bcf",
   "third_party/vulkan-headers/src/registry/vk.xml":
-    "409feac979922be4adb5e8d3ec16adb7"
+    "f48f0bee41017fb21c4f69f29d1a2b7a"
 }
\ No newline at end of file
index 8dd65a9..e48b2ad 100644 (file)
@@ -2,7 +2,7 @@
   "scripts/egl.xml":
     "842e24514c4cfe09fba703c17a0fd292",
   "scripts/egl_angle_ext.xml":
-    "63f18dc9b7183ead4ddd3dfd1571973a",
+    "854e99785af19f8f4eea4f73005a0451",
   "scripts/gen_proc_table.py":
     "24dbcc78fd3f000f58ca98237ccc0da4",
   "scripts/gl.xml":
   "scripts/gl_angle_ext.xml":
     "079cc4829de7ce638faf7bbf66e141ad",
   "scripts/registry_xml.py":
-    "06c837b395c8cd0c4fc937b193365042",
+    "b2902e02f495a9cc85082c47e7b73ac9",
   "scripts/wgl.xml":
     "aa96419c582af2f6673430e2847693f4",
   "src/libGL/proc_table_wgl_autogen.cpp":
     "03c05f20c57c1de822b0ddaf6d4f9607",
   "src/libGLESv2/proc_table_egl_autogen.cpp":
-    "a51c859c721dcd1b53a01a60520fad56"
+    "0154d2734e6d89520d3697890df2164e"
 }
\ No newline at end of file
diff --git a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/restricted_traces.json b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/restricted_traces.json
new file mode 100644 (file)
index 0000000..38a6f43
--- /dev/null
@@ -0,0 +1,18 @@
+{
+  "src/tests/perf_tests/restricted_traces/egypt_1500.tar.gz.sha1":
+    "bd3935d0237466e6c80b450900bba67d",
+  "src/tests/perf_tests/restricted_traces/gen_restricted_traces.py":
+    "f61ccd2c8ce98674527909d567083963",
+  "src/tests/perf_tests/restricted_traces/manhattan_10.tar.gz.sha1":
+    "b4d333cd5cf3977c339350be0a819928",
+  "src/tests/perf_tests/restricted_traces/restricted_traces.json":
+    "ed50690d8fd713ad6ed7908af3e70b7e",
+  "src/tests/perf_tests/restricted_traces/restricted_traces_autogen.gni":
+    "2e5d0ed5afca04a7a38eb5bec4259008",
+  "src/tests/perf_tests/restricted_traces/restricted_traces_autogen.h":
+    "2b831956463e2c30d6116c17b89743fa",
+  "src/tests/perf_tests/restricted_traces/temple_run_300.tar.gz.sha1":
+    "934983876ac5f3d9bc9b43698bb94b9d",
+  "src/tests/perf_tests/restricted_traces/trex_200.tar.gz.sha1":
+    "605cf71846da2309a002baa78abf28e1"
+}
\ No newline at end of file
index df089db..7206573 100644 (file)
@@ -34,7 +34,7 @@
             <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
         </command>
         <command>
-            <proto><ptype>EGLBoolean</ptype> <name>eglGetMscRateCHROMIUM</name></proto>
+            <proto><ptype>EGLBoolean</ptype> <name>eglGetMscRateANGLE</name></proto>
             <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
             <param><ptype>EGLSurface</ptype> <name>surface</name></param>
             <param><ptype>EGLint</ptype> *<name>numerator</name></param>
         <extension name="EGL_CHROMIUM_sync_control" supported="egl">
             <require>
                 <command name="eglGetSyncValuesCHROMIUM"/>
-                <command name="eglGetMscRateCHROMIUM"/>
+            </require>
+        </extension>
+        <extension name="EGL_ANGLE_sync_control_rate" supported="egl">
+            <require>
+                <command name="eglGetMscRateANGLE"/>
             </require>
         </extension>
         <extension name="EGL_ANGLE_program_cache_control" supported="egl">
index bbed934..4ff9aae 100755 (executable)
@@ -198,6 +198,7 @@ IGNORED_INCLUDES = {
     b'libANGLE/renderer/vulkan/mac/DisplayVkMac.h',
     b'libANGLE/renderer/vulkan/win32/DisplayVkWin32.h',
     b'libANGLE/renderer/vulkan/xcb/DisplayVkXcb.h',
+    b'third_party/volk/volk.h',
     b'kernel/image.h',
 }
 
index c4317f6..0d614f5 100755 (executable)
@@ -73,6 +73,11 @@ std::string GLbitfieldToString(GLenumGroup enumGroup, unsigned int value)
 {{
     std::stringstream st;
 
+    if (value == 0)
+    {{
+        return "0";
+    }}
+
     const angle::BitSet<32> bitSet(value);
     bool first = true;
     for (const auto index : bitSet)
index fdc953d..1a52188 100644 (file)
@@ -82,13 +82,30 @@ def gn_target_to_blueprint_target(target, target_info):
     if 'output_name' in target_info:
         return target_info['output_name']
 
-    # Prefix all targets with angle_
-    # Remove the prefix //: from gn target names
-    cleaned_path = re.sub(r'^//.*:', '', target)
-    prefix = "angle_"
-    if not cleaned_path.startswith(prefix):
-        cleaned_path = prefix + cleaned_path
-    return cleaned_path
+    # Split the gn target name (in the form of //gn_file_path:target_name) into gn_file_path and
+    # target_name
+    target_regex = re.compile(r"^//([a-zA-Z0-9\-_/]*):([a-zA-Z0-9\-_\.]+)$")
+    match = re.match(target_regex, target)
+    assert match != None
+
+    gn_file_path = match.group(1)
+    target_name = match.group(2)
+    assert len(target_name) > 0
+
+    # Clean up the gn file path to be a valid blueprint target name.
+    gn_file_path = gn_file_path.replace("/", "_").replace(".", "_").replace("-", "_")
+
+    # Generate a blueprint target name by merging the gn path and target so each target is unique.
+    # Prepend the 'angle' prefix to all targets in the root path (empty gn_file_path). Skip this step if the target name already starts with 'angle' to avoid target names such as 'angle_angle_common'.
+    root_prefix = "angle"
+    if len(gn_file_path) == 0 and not target_name.startswith(root_prefix):
+        gn_file_path = root_prefix
+
+    # Avoid names such as _angle_common if the gn_file_path is empty.
+    if len(gn_file_path) > 0:
+        gn_file_path += "_"
+
+    return gn_file_path + target_name
 
 
 def remap_gn_path(path):
@@ -365,6 +382,8 @@ def action_target_to_blueprint(target, build_info):
                                                              target_info['args'])
     bp['cmd'] = ' '.join(cmd)
 
+    bp['sdk_version'] = sdk_version
+
     return (blueprint_type, bp)
 
 
@@ -445,6 +464,7 @@ def main():
                 '--extra-packages com.android.angle.common',
             ],
             'srcs': [':ANGLE_srcs'],
+            'plugins': ['java_api_finder',],
             'privileged':
                 True,
             'owner':
@@ -488,7 +508,7 @@ def main():
     for (blueprint_type, blueprint_data) in blueprint_targets:
         write_blueprint(output, blueprint_type, blueprint_data)
 
-    print '\n'.join(output)
+    print('\n'.join(output))
 
 
 if __name__ == '__main__':
index 8c1674e..40c10ff 100755 (executable)
@@ -13,6 +13,9 @@ from datetime import date
 import registry_xml
 
 
+internal_prefix = "l_"
+
+
 def write_header(data_source_name,
                  all_cmds,
                  api,
@@ -31,13 +34,19 @@ def write_header(data_source_name,
         return prefix + cmd[len(api):]
 
     with open(header_path, "w") as out:
+        defines = [
+            "#define %s%s %s%s%s" % (ns, pre(cmd), internal_prefix, ns, pre(cmd))
+            for cmd in all_cmds
+        ]
         var_protos = [
-            "%sextern PFN%sPROC %s%s;" % (export, cmd.upper(), ns, pre(cmd)) for cmd in all_cmds
+            "%sextern PFN%sPROC %s%s%s;" % (export, cmd.upper(), internal_prefix, ns, pre(cmd))
+            for cmd in all_cmds
         ]
         loader_header = template_loader_h.format(
             script_name=os.path.basename(sys.argv[0]),
             data_source_name=data_source_name,
             year=date.today().year,
+            defines="\n".join(defines),
             function_pointers="\n".join(var_protos),
             api_upper=api.upper(),
             api_lower=api,
@@ -60,10 +69,15 @@ def write_source(data_source_name, all_cmds, api, path, ns="", prefix=None, expo
         return prefix + cmd[len(api):]
 
     with open(source_path, "w") as out:
-        var_defs = ["%sPFN%sPROC %s%s;" % (export, cmd.upper(), ns, pre(cmd)) for cmd in all_cmds]
+        var_defs = [
+            "%sPFN%sPROC %s%s%s;" % (export, cmd.upper(), internal_prefix, ns, pre(cmd))
+            for cmd in all_cmds
+        ]
 
-        setter = "    %s%s = reinterpret_cast<PFN%sPROC>(loadProc(\"%s\"));"
-        setters = [setter % (ns, pre(cmd), cmd.upper(), pre(cmd)) for cmd in all_cmds]
+        setter = "    %s%s%s = reinterpret_cast<PFN%sPROC>(loadProc(\"%s\"));"
+        setters = [
+            setter % (internal_prefix, ns, pre(cmd), cmd.upper(), pre(cmd)) for cmd in all_cmds
+        ]
 
         loader_source = template_loader_cpp.format(
             script_name=os.path.basename(sys.argv[0]),
@@ -97,9 +111,16 @@ def gen_libegl_loader():
     all_cmds = xml.all_cmd_names.get_all_commands()
 
     path = os.path.join("..", "src", "libEGL")
-    write_header(data_source_name, all_cmds, "egl", libegl_preamble, path, "LIBEGL", "", "EGL_",
-                 "ANGLE_NO_EXPORT ")
-    write_source(data_source_name, all_cmds, "egl", path, "", "EGL_")
+    write_header(
+        data_source_name,
+        all_cmds,
+        "egl",
+        libegl_preamble,
+        path,
+        "LIBEGL",
+        prefix="EGL_",
+        export="ANGLE_NO_EXPORT ")
+    write_source(data_source_name, all_cmds, "egl", path, prefix="EGL_")
 
 
 def gen_gl_loader():
@@ -266,6 +287,7 @@ template_loader_h = """// GENERATED FILE - DO NOT EDIT.
 #define {lib}_{api_upper}_LOADER_AUTOGEN_H_
 
 {preamble}
+{defines}
 {function_pointers}
 
 namespace angle
index c48ad07..8924b7e 100755 (executable)
@@ -360,13 +360,16 @@ def get_step_info(build_name, step_name):
 def get_bot_info(bot_name):
     info = get_latest_success_build_info(bot_name)
     info['step_names'] = get_step_names(info['build_name'])
+    broken_step_names = []
     for step_name in info['step_names']:
         LOGGER.info("Parsing step '" + step_name + "'...")
         step_info = get_step_info(info['build_name'], step_name)
         if validate_step_info(step_info, info['build_name'], step_name):
             info[step_name] = step_info
         else:
-            info['step_names'].remove(step_name)
+            broken_step_names += step_name
+    for step_name in broken_step_names:
+        info['step_names'].remove(step_name)
     return info
 
 
@@ -563,6 +566,8 @@ def update_headers(service, spreadsheet_id, headers, info):
     sheet_names = []
     for bot_name in info:
         for step_name in info[bot_name]['step_names']:
+            if not step_name in info[bot_name]:
+                LOGGER.error("Missing info for step name: '" + step_name + "'")
             sheet_name = format_sheet_name(bot_name, step_name)
             headers_stale = False
             # Headers should always contain the following columns
@@ -588,7 +593,6 @@ def update_headers(service, spreadsheet_id, headers, info):
         LOGGER.info('Updating sheet headers...')
         batch_update_values(service, spreadsheet_id, data)
 
-
 # Calls values().append() to append a list of values to a given sheet.
 def append_values(service, spreadsheet_id, sheet_name, values):
     header_range = sheet_name + '!A1:Z'
index 87ca969..9748e31 100644 (file)
@@ -68,6 +68,7 @@ gles_extensions = [
     "GL_EXT_draw_buffers",
     "GL_EXT_draw_buffers_indexed",
     "GL_EXT_draw_elements_base_vertex",
+    "GL_EXT_EGL_image_array",
     "GL_EXT_geometry_shader",
     "GL_EXT_instanced_arrays",
     "GL_EXT_map_buffer_range",
@@ -88,10 +89,12 @@ gles_extensions = [
     "GL_EXT_texture_filter_anisotropic",
     "GL_EXT_texture_format_BGRA8888",
     "GL_EXT_texture_storage",
+    "GL_EXT_texture_sRGB_R8",
     "GL_KHR_debug",
     "GL_KHR_parallel_shader_compile",
     "GL_NV_fence",
     "GL_OES_compressed_ETC1_RGB8_texture",
+    "GL_EXT_compressed_ETC1_RGB8_sub_texture",
     "GL_OES_depth32",
     "GL_OES_draw_buffers_indexed",
     "GL_OES_draw_elements_base_vertex",
@@ -128,8 +131,10 @@ supported_egl_extensions = [
     "EGL_ANGLE_swap_with_frame_token",
     "EGL_ANGLE_window_fixed_size",
     "EGL_CHROMIUM_sync_control",
+    "EGL_ANGLE_sync_control_rate",
     "EGL_EXT_create_context_robustness",
     "EGL_EXT_device_query",
+    "EGL_EXT_image_gl_colorspace",
     "EGL_EXT_pixel_format_float",
     "EGL_EXT_platform_base",
     "EGL_EXT_platform_device",
index 7fcbd4b..819974e 100755 (executable)
@@ -6,8 +6,6 @@
 #
 # Generates a roll CL within the ANGLE repository of AOSP.
 
-git merge -X theirs aosp/upstream-mirror
-
 deps=(
     "third_party/spirv-tools/src"
     "third_party/glslang/src"
@@ -15,11 +13,12 @@ deps=(
     "third_party/vulkan-headers/src"
     "third_party/jsoncpp"
     "third_party/jsoncpp/source"
+    "third_party/vulkan_memory_allocator"
 )
 
 # Delete dep directories so that gclient can check them out
 for dep in ${deps[@]}; do
-    rm -rf --preserve-root $dep
+    rm -rf $dep
 done
 
 # Sync all of ANGLE's deps so that 'gn gen' works
@@ -68,7 +67,18 @@ git add Android.bp
 # Delete the .git files in each dep so that it can be added to this repo. Some deps like jsoncpp
 # have multiple layers of deps so delete everything before adding them.
 for dep in ${deps[@]}; do
-    rm -rf --preserve-root $dep/.git
+    rm -rf $dep/.git
+done
+
+extra_removal_files=(
+    # The jsoncpp OWNERS and VulkanMemoryAllocator file contains users that have not logged into
+    # the Android gerrit so it fails to upload.
+    "third_party/jsoncpp/OWNERS"
+    "third_party/vulkan_memory_allocator/OWNERS"
+)
+
+for removal_file in ${extra_removal_files[@]}; do
+    rm $removal_file
 done
 
 for dep in ${deps[@]}; do
index 805f24e..fab9a9e 100644 (file)
@@ -37,10 +37,10 @@ ANGLE_CHROMIUM_DEPS = [
     'third_party/googletest',
     'third_party/libjpeg_turbo',
     'third_party/jsoncpp',
+    'third_party/nasm',
     'third_party/Python-Markdown',
     'third_party/qemu-linux-x64',
     'third_party/qemu-mac-x64',
-    'third_party/yasm',
     'third_party/zlib',
     'tools/clang',
     'tools/md_browser',
index a3a0eae..5d4103f 100755 (executable)
@@ -85,8 +85,12 @@ generators = {
         'src/libANGLE/renderer/d3d/d3d11/gen_dxgi_format_table.py',
     'DXGI format support':
         'src/libANGLE/renderer/d3d/d3d11/gen_dxgi_support_tables.py',
+    'Emulated HLSL functions':
+        'src/compiler/translator/gen_emulated_builtin_function_tables.py',
     'GL copy conversion table':
         'src/libANGLE/gen_copy_conversion_table.py',
+    'GL CTS (dEQP) build files':
+        'scripts/gen_vk_gl_cts_build.py',
     'GL/EGL/WGL loader':
         'scripts/generate_loader.py',
     'GL/EGL entry points':
@@ -95,34 +99,32 @@ generators = {
         'scripts/gen_gl_enum_utils.py',
     'GL format map':
         'src/libANGLE/gen_format_map.py',
-    'uniform type':
-        'src/common/gen_uniform_type_table.py',
+    'Metal format table':
+        'src/libANGLE/renderer/metal/gen_mtl_format_table.py',
+    'Metal default shaders':
+        'src/libANGLE/renderer/metal/shaders/gen_mtl_internal_shaders.py',
     'OpenGL dispatch table':
         'src/libANGLE/renderer/gl/generate_gl_dispatch_table.py',
+    'overlay fonts':
+        'src/libANGLE/gen_overlay_fonts.py',
+    'overlay widgets':
+        'src/libANGLE/gen_overlay_widgets.py',
     'packed enum':
         'src/common/gen_packed_gl_enums.py',
     'proc table':
         'scripts/gen_proc_table.py',
+    'restricted traces':
+        'src/tests/perf_tests/restricted_traces/gen_restricted_traces.py',
+    'Static builtins':
+        'src/compiler/translator/gen_builtin_symbols.py',
+    'uniform type':
+        'src/common/gen_uniform_type_table.py',
     'Vulkan format':
         'src/libANGLE/renderer/vulkan/gen_vk_format_table.py',
     'Vulkan mandatory format support table':
         'src/libANGLE/renderer/vulkan/gen_vk_mandatory_format_support_table.py',
     'Vulkan internal shader programs':
         'src/libANGLE/renderer/vulkan/gen_vk_internal_shaders.py',
-    'overlay fonts':
-        'src/libANGLE/gen_overlay_fonts.py',
-    'overlay widgets':
-        'src/libANGLE/gen_overlay_widgets.py',
-    'Emulated HLSL functions':
-        'src/compiler/translator/gen_emulated_builtin_function_tables.py',
-    'Static builtins':
-        'src/compiler/translator/gen_builtin_symbols.py',
-    'Metal format table':
-        'src/libANGLE/renderer/metal/gen_mtl_format_table.py',
-    'Metal default shaders':
-        'src/libANGLE/renderer/metal/shaders/gen_mtl_internal_shaders.py',
-    'GL CTS (dEQP) build files':
-        'scripts/gen_vk_gl_cts_build.py',
 }
 
 
@@ -228,9 +230,7 @@ def main():
 
     if any_dirty:
         args = ['git.bat'] if os.name == 'nt' else ['git']
-        # The diff can be so large the arguments to clang-format can break the Windows command
-        # line length limits. Work around this by calling git cl format with --full.
-        args += ['cl', 'format', '--full']
+        args += ['cl', 'format']
         print('Calling git cl format')
         if subprocess.call(args) != 0:
             sys.exit(1)
index b2f90a7..aeb8023 100644 (file)
@@ -254,6 +254,102 @@ std::ostream &operator<<(std::ostream &os, DrawElementsType value)
     return os;
 }
 
+std::ostream &operator<<(std::ostream &os, BlendEquationType value)
+{
+    switch (value)
+    {
+        case BlendEquationType::Add:
+            os << "GL_FUNC_ADD";
+            break;
+        case BlendEquationType::Min:
+            os << "GL_MIN";
+            break;
+        case BlendEquationType::Max:
+            os << "GL_MAX";
+            break;
+        case BlendEquationType::Subtract:
+            os << "GL_FUNC_SUBTRACT";
+            break;
+        case BlendEquationType::ReverseSubtract:
+            os << "GL_FUNC_REVERSE_SUBTRACT";
+            break;
+        default:
+            os << "GL_INVALID_ENUM";
+            break;
+    }
+
+    return os;
+}
+
+std::ostream &operator<<(std::ostream &os, BlendFactorType value)
+{
+    switch (value)
+    {
+        case BlendFactorType::Zero:
+            os << "GL_ZERO";
+            break;
+        case BlendFactorType::One:
+            os << "GL_ONE";
+            break;
+        case BlendFactorType::SrcColor:
+            os << "GL_SRC_COLOR";
+            break;
+        case BlendFactorType::OneMinusSrcColor:
+            os << "GL_ONE_MINUS_SRC_COLOR";
+            break;
+        case BlendFactorType::SrcAlpha:
+            os << "GL_SRC_ALPHA";
+            break;
+        case BlendFactorType::OneMinusSrcAlpha:
+            os << "GL_ONE_MINUS_SRC_ALPHA";
+            break;
+        case BlendFactorType::DstAlpha:
+            os << "GL_DST_ALPHA";
+            break;
+        case BlendFactorType::OneMinusDstAlpha:
+            os << "GL_ONE_MINUS_DST_ALPHA";
+            break;
+        case BlendFactorType::DstColor:
+            os << "GL_DST_COLOR";
+            break;
+        case BlendFactorType::OneMinusDstColor:
+            os << "GL_ONE_MINUS_DST_COLOR";
+            break;
+        case BlendFactorType::SrcAlphaSaturate:
+            os << "GL_SRC_ALPHA_SATURATE";
+            break;
+        case BlendFactorType::ConstantColor:
+            os << "GL_CONSTANT_COLOR";
+            break;
+        case BlendFactorType::OneMinusConstantColor:
+            os << "GL_ONE_MINUS_CONSTANT_COLOR";
+            break;
+        case BlendFactorType::ConstantAlpha:
+            os << "GL_CONSTANT_ALPHA";
+            break;
+        case BlendFactorType::OneMinusConstantAlpha:
+            os << "GL_ONE_MINUS_CONSTANT_ALPHA";
+            break;
+        case BlendFactorType::Src1Alpha:
+            os << "GL_SRC1_ALPHA_EXT";
+            break;
+        case BlendFactorType::Src1Color:
+            os << "GL_SRC1_COLOR_EXT";
+            break;
+        case BlendFactorType::OneMinusSrc1Color:
+            os << "GL_ONE_MINUS_SRC1_COLOR_EXT";
+            break;
+        case BlendFactorType::OneMinusSrc1Alpha:
+            os << "GL_ONE_MINUS_SRC1_ALPHA_EXT";
+            break;
+        default:
+            os << "GL_INVALID_ENUM";
+            break;
+    }
+
+    return os;
+}
+
 std::ostream &operator<<(std::ostream &os, VertexAttribType value)
 {
     switch (value)
index 38c6910..aa576d1 100644 (file)
@@ -323,6 +323,129 @@ ANGLE_VALIDATE_PACKED_ENUM(DrawElementsType, UnsignedInt, GL_UNSIGNED_INT);
 
 std::ostream &operator<<(std::ostream &os, DrawElementsType value);
 
+enum class BlendEquationType
+{
+    Add             = 0,  // GLenum == 0x8006
+    Min             = 1,  // GLenum == 0x8007
+    Max             = 2,  // GLenum == 0x8008
+    Unused          = 3,
+    Subtract        = 4,  // GLenum == 0x800A
+    ReverseSubtract = 5,  // GLenum == 0x800B
+    InvalidEnum     = 6,
+    EnumCount       = 6
+};
+
+template <>
+constexpr BlendEquationType FromGLenum<BlendEquationType>(GLenum from)
+{
+    const GLenum scaled = (from - GL_FUNC_ADD);
+    return (scaled == static_cast<GLenum>(BlendEquationType::Unused) ||
+            scaled >= static_cast<GLenum>(BlendEquationType::EnumCount))
+               ? BlendEquationType::InvalidEnum
+               : static_cast<BlendEquationType>(scaled);
+}
+
+constexpr GLenum ToGLenum(BlendEquationType from)
+{
+    return static_cast<GLenum>(from) + GL_FUNC_ADD;
+}
+
+ANGLE_VALIDATE_PACKED_ENUM(BlendEquationType, Add, GL_FUNC_ADD);
+ANGLE_VALIDATE_PACKED_ENUM(BlendEquationType, Min, GL_MIN);
+ANGLE_VALIDATE_PACKED_ENUM(BlendEquationType, Max, GL_MAX);
+ANGLE_VALIDATE_PACKED_ENUM(BlendEquationType, Subtract, GL_FUNC_SUBTRACT);
+ANGLE_VALIDATE_PACKED_ENUM(BlendEquationType, ReverseSubtract, GL_FUNC_REVERSE_SUBTRACT);
+
+std::ostream &operator<<(std::ostream &os, BlendEquationType value);
+
+enum class BlendFactorType
+{
+    Zero = 0,  // GLenum == 0
+    One  = 1,  // GLenum == 1
+
+    MinSrcDstType    = 2,
+    SrcColor         = 2,   // GLenum == 0x0300
+    OneMinusSrcColor = 3,   // GLenum == 0x0301
+    SrcAlpha         = 4,   // GLenum == 0x0302
+    OneMinusSrcAlpha = 5,   // GLenum == 0x0303
+    DstAlpha         = 6,   // GLenum == 0x0304
+    OneMinusDstAlpha = 7,   // GLenum == 0x0305
+    DstColor         = 8,   // GLenum == 0x0306
+    OneMinusDstColor = 9,   // GLenum == 0x0307
+    SrcAlphaSaturate = 10,  // GLenum == 0x0308
+    MaxSrcDstType    = 10,
+
+    MinConstantType       = 11,
+    ConstantColor         = 11,  // GLenum == 0x8001
+    OneMinusConstantColor = 12,  // GLenum == 0x8002
+    ConstantAlpha         = 13,  // GLenum == 0x8003
+    OneMinusConstantAlpha = 14,  // GLenum == 0x8004
+    MaxConstantType       = 14,
+
+    // GL_EXT_blend_func_extended
+
+    Src1Alpha = 15,  // GLenum == 0x8589
+
+    Src1Color         = 16,  // GLenum == 0x88F9
+    OneMinusSrc1Color = 17,  // GLenum == 0x88FA
+    OneMinusSrc1Alpha = 18,  // GLenum == 0x88FB
+
+    InvalidEnum = 19,
+    EnumCount   = 19
+};
+
+template <>
+constexpr BlendFactorType FromGLenum<BlendFactorType>(GLenum from)
+{
+    if (from <= 1)
+        return static_cast<BlendFactorType>(from);
+    if (from >= GL_SRC_COLOR && from <= GL_SRC_ALPHA_SATURATE)
+        return static_cast<BlendFactorType>(from - GL_SRC_COLOR + 2);
+    if (from >= GL_CONSTANT_COLOR && from <= GL_ONE_MINUS_CONSTANT_ALPHA)
+        return static_cast<BlendFactorType>(from - GL_CONSTANT_COLOR + 11);
+    if (from == GL_SRC1_ALPHA_EXT)
+        return BlendFactorType::Src1Alpha;
+    if (from >= GL_SRC1_COLOR_EXT && from <= GL_ONE_MINUS_SRC1_ALPHA_EXT)
+        return static_cast<BlendFactorType>(from - GL_SRC1_COLOR_EXT + 16);
+    return BlendFactorType::InvalidEnum;
+}
+
+constexpr GLenum ToGLenum(BlendFactorType from)
+{
+    const GLenum value = static_cast<GLenum>(from);
+    if (value <= 1)
+        return value;
+    if (from >= BlendFactorType::MinSrcDstType && from <= BlendFactorType::MaxSrcDstType)
+        return value - 2 + GL_SRC_COLOR;
+    if (from >= BlendFactorType::MinConstantType && from <= BlendFactorType::MaxConstantType)
+        return value - 11 + GL_CONSTANT_COLOR;
+    if (from == BlendFactorType::Src1Alpha)
+        return GL_SRC1_ALPHA_EXT;
+    return value - 16 + GL_SRC1_COLOR_EXT;
+}
+
+ANGLE_VALIDATE_PACKED_ENUM(BlendFactorType, Zero, GL_ZERO);
+ANGLE_VALIDATE_PACKED_ENUM(BlendFactorType, One, GL_ONE);
+ANGLE_VALIDATE_PACKED_ENUM(BlendFactorType, SrcColor, GL_SRC_COLOR);
+ANGLE_VALIDATE_PACKED_ENUM(BlendFactorType, OneMinusSrcColor, GL_ONE_MINUS_SRC_COLOR);
+ANGLE_VALIDATE_PACKED_ENUM(BlendFactorType, SrcAlpha, GL_SRC_ALPHA);
+ANGLE_VALIDATE_PACKED_ENUM(BlendFactorType, OneMinusSrcAlpha, GL_ONE_MINUS_SRC_ALPHA);
+ANGLE_VALIDATE_PACKED_ENUM(BlendFactorType, DstAlpha, GL_DST_ALPHA);
+ANGLE_VALIDATE_PACKED_ENUM(BlendFactorType, OneMinusDstAlpha, GL_ONE_MINUS_DST_ALPHA);
+ANGLE_VALIDATE_PACKED_ENUM(BlendFactorType, DstColor, GL_DST_COLOR);
+ANGLE_VALIDATE_PACKED_ENUM(BlendFactorType, OneMinusDstColor, GL_ONE_MINUS_DST_COLOR);
+ANGLE_VALIDATE_PACKED_ENUM(BlendFactorType, SrcAlphaSaturate, GL_SRC_ALPHA_SATURATE);
+ANGLE_VALIDATE_PACKED_ENUM(BlendFactorType, ConstantColor, GL_CONSTANT_COLOR);
+ANGLE_VALIDATE_PACKED_ENUM(BlendFactorType, OneMinusConstantColor, GL_ONE_MINUS_CONSTANT_COLOR);
+ANGLE_VALIDATE_PACKED_ENUM(BlendFactorType, ConstantAlpha, GL_CONSTANT_ALPHA);
+ANGLE_VALIDATE_PACKED_ENUM(BlendFactorType, OneMinusConstantAlpha, GL_ONE_MINUS_CONSTANT_ALPHA);
+ANGLE_VALIDATE_PACKED_ENUM(BlendFactorType, Src1Alpha, GL_SRC1_ALPHA_EXT);
+ANGLE_VALIDATE_PACKED_ENUM(BlendFactorType, Src1Color, GL_SRC1_COLOR_EXT);
+ANGLE_VALIDATE_PACKED_ENUM(BlendFactorType, OneMinusSrc1Color, GL_ONE_MINUS_SRC1_COLOR_EXT);
+ANGLE_VALIDATE_PACKED_ENUM(BlendFactorType, OneMinusSrc1Alpha, GL_ONE_MINUS_SRC1_ALPHA_EXT);
+
+std::ostream &operator<<(std::ostream &os, BlendFactorType value);
+
 enum class VertexAttribType
 {
     Byte               = 0,   // GLenum == 0x1400
index 1882e7d..fdcb9a1 100644 (file)
@@ -132,6 +132,8 @@ class BitSetT final
     Iterator begin() const { return Iterator(*this); }
     Iterator end() const { return Iterator(BitSetT()); }
 
+    constexpr static BitSetT Zero() { return BitSetT(); }
+
   private:
     // Produces a mask of ones up to the "x"th bit.
     constexpr static BitsT Mask(std::size_t x)
index f6b84cc..1c8fe94 100644 (file)
@@ -28,6 +28,8 @@ TYPED_TEST_SUITE(BitSetTest, BitSetTypes);
 
 TYPED_TEST(BitSetTest, Basic)
 {
+    EXPECT_EQ(TypeParam::Zero().bits(), 0u);
+
     TypeParam mBits = this->mBits;
     EXPECT_FALSE(mBits.all());
     EXPECT_FALSE(mBits.any());
diff --git a/Source/ThirdParty/ANGLE/src/common/fuchsia_egl/OWNERS b/Source/ThirdParty/ANGLE/src/common/fuchsia_egl/OWNERS
new file mode 100644 (file)
index 0000000..35a2760
--- /dev/null
@@ -0,0 +1 @@
+spang@chromium.org
index 9dda144..3c472a8 100644 (file)
@@ -68,6 +68,7 @@ enum class SearchType
 };
 
 Library *OpenSharedLibrary(const char *libraryName, SearchType searchType);
+Library *OpenSharedLibraryWithExtension(const char *libraryName);
 
 // Returns true if the process is currently being debugged.
 bool IsDebuggerAttached();
index f9c0195..a27b8db 100644 (file)
@@ -72,19 +72,11 @@ std::string GetHelperExecutableDir()
 class PosixLibrary : public Library
 {
   public:
-    PosixLibrary(const char *libraryName, SearchType searchType)
+    PosixLibrary(const std::string &fullPath) : mModule(dlopen(fullPath.c_str(), RTLD_NOW))
     {
-        std::string directory;
-        if (searchType == SearchType::ApplicationDir)
-        {
-            directory = GetHelperExecutableDir();
-        }
-
-        std::string fullPath = directory + libraryName + "." + GetSharedLibraryExtension();
-        mModule              = dlopen(fullPath.c_str(), RTLD_NOW);
         if (!mModule)
         {
-            std::cerr << "Failed to load " << libraryName << ": " << dlerror() << std::endl;
+            std::cerr << "Failed to load " << fullPath << ": " << dlerror() << std::endl;
         }
     }
 
@@ -114,7 +106,19 @@ class PosixLibrary : public Library
 
 Library *OpenSharedLibrary(const char *libraryName, SearchType searchType)
 {
-    return new PosixLibrary(libraryName, searchType);
+    std::string directory;
+    if (searchType == SearchType::ApplicationDir)
+    {
+        directory = GetHelperExecutableDir();
+    }
+
+    std::string fullPath = directory + libraryName + "." + GetSharedLibraryExtension();
+    return new PosixLibrary(fullPath);
+}
+
+Library *OpenSharedLibraryWithExtension(const char *libraryName)
+{
+    return new PosixLibrary(libraryName);
 }
 
 bool IsDirectory(const char *filename)
index d6504e4..fbe61df 100644 (file)
@@ -42,19 +42,14 @@ class Win32Library : public Library
   public:
     Win32Library(const char *libraryName, SearchType searchType)
     {
-        char buffer[MAX_PATH];
-        int ret = snprintf(buffer, MAX_PATH, "%s.%s", libraryName, GetSharedLibraryExtension());
-        if (ret > 0 && ret < MAX_PATH)
+        switch (searchType)
         {
-            switch (searchType)
-            {
-                case SearchType::ApplicationDir:
-                    mModule = LoadLibraryA(buffer);
-                    break;
-                case SearchType::SystemDir:
-                    mModule = LoadLibraryExA(buffer, nullptr, LOAD_LIBRARY_SEARCH_SYSTEM32);
-                    break;
-            }
+            case SearchType::ApplicationDir:
+                mModule = LoadLibraryA(libraryName);
+                break;
+            case SearchType::SystemDir:
+                mModule = LoadLibraryExA(libraryName, nullptr, LOAD_LIBRARY_SEARCH_SYSTEM32);
+                break;
         }
     }
 
@@ -84,6 +79,21 @@ class Win32Library : public Library
 
 Library *OpenSharedLibrary(const char *libraryName, SearchType searchType)
 {
-    return new Win32Library(libraryName, searchType);
+    char buffer[MAX_PATH];
+    int ret = snprintf(buffer, MAX_PATH, "%s.%s", libraryName, GetSharedLibraryExtension());
+    if (ret > 0 && ret < MAX_PATH)
+    {
+        return new Win32Library(buffer, searchType);
+    }
+    else
+    {
+        fprintf(stderr, "Error loading shared library: 0x%x", ret);
+        return nullptr;
+    }
+}
+
+Library *OpenSharedLibraryWithExtension(const char *libraryName)
+{
+    return new Win32Library(libraryName, SearchType::SystemDir);
 }
 }  // namespace angle
index b6da208..b3bbb78 100644 (file)
@@ -35,23 +35,17 @@ class UwpLibrary : public Library
   public:
     UwpLibrary(const char *libraryName, SearchType searchType)
     {
-        char buffer[MAX_PATH];
-        int ret = snprintf(buffer, MAX_PATH, "%s.%s", libraryName, GetSharedLibraryExtension());
-
         std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
-        std::wstring wideBuffer = converter.from_bytes(buffer);
+        std::wstring wideBuffer = converter.from_bytes(libraryName);
 
-        if (ret > 0 && ret < MAX_PATH)
+        switch (searchType)
         {
-            switch (searchType)
-            {
-                case SearchType::ApplicationDir:
-                    mModule = LoadPackagedLibrary(wideBuffer.c_str(), 0);
-                    break;
-                case SearchType::SystemDir:
-                    // Not supported in UWP
-                    break;
-            }
+            case SearchType::ApplicationDir:
+                mModule = LoadPackagedLibrary(wideBuffer.c_str(), 0);
+                break;
+            case SearchType::SystemDir:
+                // Not supported in UWP
+                break;
         }
     }
 
@@ -81,6 +75,24 @@ class UwpLibrary : public Library
 
 Library *OpenSharedLibrary(const char *libraryName, SearchType searchType)
 {
-    return new UwpLibrary(libraryName, searchType);
+    char buffer[MAX_PATH];
+    int ret = snprintf(buffer, MAX_PATH, "%s.%s", libraryName, GetSharedLibraryExtension());
+
+    if (ret > 0 && ret < MAX_PATH)
+    {
+        return new UwpLibrary(buffer, searchType);
+    }
+    else
+    {
+        fprintf(stderr, "Error loading shared library: 0x%x", ret);
+        return nullptr;
+    }
+}
+
+Library *OpenSharedLibraryWithExtension(const char *libraryName)
+{
+    // SystemDir is not implemented in UWP.
+    fprintf(stderr, "Error loading shared library with extension.\n");
+    return nullptr;
 }
 }  // namespace angle
index 0a6dcc2..46b05b0 100644 (file)
@@ -952,6 +952,13 @@ unsigned int ParseArrayIndex(const std::string &name, size_t *nameLengthWithoutA
                 indexIsValidDecimalNumber = false;
                 break;
             }
+
+            // Leading zeroes are invalid
+            if ((i == (open + 1)) && (name[i] == '0') && (name[i + 1] != ']'))
+            {
+                indexIsValidDecimalNumber = false;
+                break;
+            }
         }
         if (indexIsValidDecimalNumber)
         {
@@ -1153,6 +1160,7 @@ bool IsExternalImageTarget(EGLenum target)
     {
         case EGL_NATIVE_BUFFER_ANDROID:
         case EGL_D3D11_TEXTURE_ANGLE:
+        case EGL_LINUX_DMA_BUF_EXT:
             return true;
 
         default:
index 3db701c..3cdf1d2 100644 (file)
@@ -228,6 +228,15 @@ const char *GetDebugMessageSourceString(GLenum source);
 const char *GetDebugMessageTypeString(GLenum type);
 const char *GetDebugMessageSeverityString(GLenum severity);
 
+// For use with EXT_texture_format_sRGB_override and EXT_texture_sRGB_decode
+// A texture may either have SRGB decoding forced on, or use whatever decode state is default for
+// the texture format.
+enum class SrgbOverride
+{
+    Default = 0,
+    Enabled
+};
+
 }  // namespace gl
 
 namespace egl
diff --git a/Source/ThirdParty/ANGLE/src/common/vulkan/BUILD.gn b/Source/ThirdParty/ANGLE/src/common/vulkan/BUILD.gn
new file mode 100644 (file)
index 0000000..3a4831b
--- /dev/null
@@ -0,0 +1,64 @@
+# Copyright 2020 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.
+
+import("//build_overrides/swiftshader.gni")
+import("../../../gni/angle.gni")
+
+assert(angle_enable_vulkan)
+
+angle_source_set("vulkan") {
+  sources = [
+    "vulkan_icd.cpp",
+    "vulkan_icd.h",
+  ]
+
+  public_deps = [
+    "$angle_root:angle_common",
+    "$angle_root/src/libANGLE/renderer/vulkan:angle_vulkan_entry_points",
+  ]
+
+  defines = [
+    "ANGLE_VK_LAYERS_DIR=\"$angle_data_dir\"",
+    "ANGLE_VK_MOCK_ICD_JSON=\"$angle_data_dir/VkICD_mock_icd.json\"",
+  ]
+
+  deps = []
+  data_deps = []
+
+  if (!is_android && !is_fuchsia && !is_ggp) {
+    if (angle_shared_libvulkan) {
+      data_deps += [ "$angle_root/third_party/vulkan-loader/src:libvulkan" ]
+    } else {
+      deps += [ "$angle_root/third_party/vulkan-loader/src:libvulkan" ]
+    }
+    data_deps += [ "$angle_root/third_party/vulkan-tools/src:VkICD_mock_icd" ]
+  }
+
+  if (angle_enable_swiftshader) {
+    import("$swiftshader_dir/src/Vulkan/vulkan.gni")
+    _sws_icd = "./$swiftshader_icd_file_name"
+    if (is_win) {
+      _sws_icd = ".\\\\$swiftshader_icd_file_name"
+    }
+
+    defines += [ "ANGLE_VK_SWIFTSHADER_ICD_JSON=\"${_sws_icd}\"" ]
+
+    data_deps += [
+      "$swiftshader_dir/src/Vulkan:icd_file",
+      "$swiftshader_dir/src/Vulkan:swiftshader_libvulkan",
+    ]
+  }
+}
+
+group("vulkan_validation_layers") {
+  data_deps = []
+  if (is_fuchsia) {
+    data_deps += [ "//third_party/fuchsia-sdk:vulkan_validation" ]
+  } else {
+    data_deps += [ "$angle_root/third_party/vulkan-validation-layers/src:vulkan_validation_layers" ]
+    if (!is_android) {
+      data_deps += [ "$angle_root/third_party/vulkan-validation-layers/src:vulkan_gen_json_files" ]
+    }
+  }
+}
diff --git a/Source/ThirdParty/ANGLE/src/common/vulkan/vulkan_icd.cpp b/Source/ThirdParty/ANGLE/src/common/vulkan/vulkan_icd.cpp
new file mode 100644 (file)
index 0000000..bf56c7d
--- /dev/null
@@ -0,0 +1,213 @@
+//
+// Copyright 2020 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.
+//
+
+// vulkan_icd.cpp : Helper for creating vulkan instances & selecting physical device.
+
+#include "common/vulkan/vulkan_icd.h"
+
+#include <functional>
+#include <vector>
+
+#include "common/bitset_utils.h"
+#include "common/debug.h"
+#include "common/system_utils.h"
+
+namespace angle
+{
+
+namespace vk
+{
+
+namespace
+{
+
+// This function is unused on Android/Fuschia/GGP
+#if !defined(ANGLE_PLATFORM_ANDROID) && !defined(ANGLE_PLATFORM_FUCHSIA) && \
+    !defined(ANGLE_PLATFORM_GGP)
+const std::string WrapICDEnvironment(const char *icdEnvironment)
+{
+#    if defined(ANGLE_PLATFORM_APPLE)
+    // On MacOS the libraries are bundled into the application directory
+    std::string ret = angle::GetHelperExecutableDir() + icdEnvironment;
+    return ret;
+#    endif  // defined(ANGLE_PLATFORM_APPLE)
+    return icdEnvironment;
+}
+
+constexpr char kLoaderLayersPathEnv[] = "VK_LAYER_PATH";
+#endif
+
+constexpr char kLoaderICDFilenamesEnv[]   = "VK_ICD_FILENAMES";
+constexpr char kANGLEPreferredDeviceEnv[] = "ANGLE_PREFERRED_DEVICE";
+
+constexpr uint32_t kMockVendorID = 0xba5eba11;
+constexpr uint32_t kMockDeviceID = 0xf005ba11;
+constexpr char kMockDeviceName[] = "Vulkan Mock Device";
+
+constexpr uint32_t kGoogleVendorID      = 0x1AE0;
+constexpr uint32_t kSwiftShaderDeviceID = 0xC0DE;
+constexpr char kSwiftShaderDeviceName[] = "SwiftShader Device";
+
+using ICDFilterFunc = std::function<bool(const VkPhysicalDeviceProperties &)>;
+
+ICDFilterFunc GetFilterForICD(vk::ICD preferredICD)
+{
+    switch (preferredICD)
+    {
+        case vk::ICD::Mock:
+            return [](const VkPhysicalDeviceProperties &deviceProperties) {
+                return ((deviceProperties.vendorID == kMockVendorID) &&
+                        (deviceProperties.deviceID == kMockDeviceID) &&
+                        (strcmp(deviceProperties.deviceName, kMockDeviceName) == 0));
+            };
+        case vk::ICD::SwiftShader:
+            return [](const VkPhysicalDeviceProperties &deviceProperties) {
+                return ((deviceProperties.vendorID == kGoogleVendorID) &&
+                        (deviceProperties.deviceID == kSwiftShaderDeviceID) &&
+                        (strncmp(deviceProperties.deviceName, kSwiftShaderDeviceName,
+                                 strlen(kSwiftShaderDeviceName)) == 0));
+            };
+        default:
+            const std::string anglePreferredDevice =
+                angle::GetEnvironmentVar(kANGLEPreferredDeviceEnv);
+            return [anglePreferredDevice](const VkPhysicalDeviceProperties &deviceProperties) {
+                return (anglePreferredDevice.empty() ||
+                        anglePreferredDevice == deviceProperties.deviceName);
+            };
+    }
+}
+
+}  // namespace
+
+// If we're loading the validation layers, we could be running from any random directory.
+// Change to the executable directory so we can find the layers, then change back to the
+// previous directory to be safe we don't disrupt the application.
+ScopedVkLoaderEnvironment::ScopedVkLoaderEnvironment(bool enableValidationLayers, vk::ICD icd)
+    : mEnableValidationLayers(enableValidationLayers),
+      mICD(icd),
+      mChangedCWD(false),
+      mChangedICDEnv(false)
+{
+// Changing CWD and setting environment variables makes no sense on Android,
+// since this code is a part of Java application there.
+// Android Vulkan loader doesn't need this either.
+#if !defined(ANGLE_PLATFORM_ANDROID) && !defined(ANGLE_PLATFORM_FUCHSIA) && \
+    !defined(ANGLE_PLATFORM_GGP)
+    if (icd == vk::ICD::Mock)
+    {
+        if (!setICDEnvironment(WrapICDEnvironment(ANGLE_VK_MOCK_ICD_JSON).c_str()))
+        {
+            ERR() << "Error setting environment for Mock/Null Driver.";
+        }
+    }
+#    if defined(ANGLE_VK_SWIFTSHADER_ICD_JSON)
+    else if (icd == vk::ICD::SwiftShader)
+    {
+        if (!setICDEnvironment(WrapICDEnvironment(ANGLE_VK_SWIFTSHADER_ICD_JSON).c_str()))
+        {
+            ERR() << "Error setting environment for SwiftShader.";
+        }
+    }
+#    endif  // defined(ANGLE_VK_SWIFTSHADER_ICD_JSON)
+    if (mEnableValidationLayers || icd != vk::ICD::Default)
+    {
+        const auto &cwd = angle::GetCWD();
+        if (!cwd.valid())
+        {
+            ERR() << "Error getting CWD for Vulkan layers init.";
+            mEnableValidationLayers = false;
+            mICD                    = vk::ICD::Default;
+        }
+        else
+        {
+            mPreviousCWD       = cwd.value();
+            std::string exeDir = angle::GetExecutableDirectory();
+            mChangedCWD        = angle::SetCWD(exeDir.c_str());
+            if (!mChangedCWD)
+            {
+                ERR() << "Error setting CWD for Vulkan layers init.";
+                mEnableValidationLayers = false;
+                mICD                    = vk::ICD::Default;
+            }
+        }
+    }
+
+    // Override environment variable to use the ANGLE layers.
+    if (mEnableValidationLayers)
+    {
+        if (!angle::PrependPathToEnvironmentVar(kLoaderLayersPathEnv, ANGLE_VK_LAYERS_DIR))
+        {
+            ERR() << "Error setting environment for Vulkan layers init.";
+            mEnableValidationLayers = false;
+        }
+    }
+#endif  // !defined(ANGLE_PLATFORM_ANDROID)
+}
+
+ScopedVkLoaderEnvironment::~ScopedVkLoaderEnvironment()
+{
+    if (mChangedCWD)
+    {
+#if !defined(ANGLE_PLATFORM_ANDROID)
+        ASSERT(mPreviousCWD.valid());
+        angle::SetCWD(mPreviousCWD.value().c_str());
+#endif  // !defined(ANGLE_PLATFORM_ANDROID)
+    }
+    if (mChangedICDEnv)
+    {
+        if (mPreviousICDEnv.value().empty())
+        {
+            angle::UnsetEnvironmentVar(kLoaderICDFilenamesEnv);
+        }
+        else
+        {
+            angle::SetEnvironmentVar(kLoaderICDFilenamesEnv, mPreviousICDEnv.value().c_str());
+        }
+    }
+}
+
+bool ScopedVkLoaderEnvironment::setICDEnvironment(const char *icd)
+{
+    // Override environment variable to use built Mock ICD
+    // ANGLE_VK_ICD_JSON gets set to the built mock ICD in BUILD.gn
+    mPreviousICDEnv = angle::GetEnvironmentVar(kLoaderICDFilenamesEnv);
+    mChangedICDEnv  = angle::SetEnvironmentVar(kLoaderICDFilenamesEnv, icd);
+
+    if (!mChangedICDEnv)
+    {
+        mICD = vk::ICD::Default;
+    }
+    return mChangedICDEnv;
+}
+
+void ChoosePhysicalDevice(const std::vector<VkPhysicalDevice> &physicalDevices,
+                          vk::ICD preferredICD,
+                          VkPhysicalDevice *physicalDeviceOut,
+                          VkPhysicalDeviceProperties *physicalDevicePropertiesOut)
+{
+    ASSERT(!physicalDevices.empty());
+
+    ICDFilterFunc filter = GetFilterForICD(preferredICD);
+
+    for (const VkPhysicalDevice &physicalDevice : physicalDevices)
+    {
+        vkGetPhysicalDeviceProperties(physicalDevice, physicalDevicePropertiesOut);
+        if (filter(*physicalDevicePropertiesOut))
+        {
+            *physicalDeviceOut = physicalDevice;
+            return;
+        }
+    }
+    WARN() << "Preferred device ICD not found. Using default physicalDevice instead.";
+
+    // Fall back to first device.
+    *physicalDeviceOut = physicalDevices[0];
+    vkGetPhysicalDeviceProperties(*physicalDeviceOut, physicalDevicePropertiesOut);
+}
+
+}  // namespace vk
+
+}  // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/common/vulkan/vulkan_icd.h b/Source/ThirdParty/ANGLE/src/common/vulkan/vulkan_icd.h
new file mode 100644 (file)
index 0000000..f3631a3
--- /dev/null
@@ -0,0 +1,59 @@
+//
+// Copyright 2020 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.
+//
+// vulkan_icd.h : Helper for creating vulkan instances & selecting physical device.
+
+#ifndef COMMON_VULKAN_VULKAN_ICD_H_
+#define COMMON_VULKAN_VULKAN_ICD_H_
+
+#include <string>
+
+#include "common/Optional.h"
+#include "common/angleutils.h"
+#include "libANGLE/renderer/vulkan/vk_headers.h"
+
+namespace angle
+{
+
+namespace vk
+{
+
+enum class ICD
+{
+    Default,
+    Mock,
+    SwiftShader,
+};
+
+class ScopedVkLoaderEnvironment : angle::NonCopyable
+{
+  public:
+    ScopedVkLoaderEnvironment(bool enableValidationLayers, vk::ICD icd);
+    ~ScopedVkLoaderEnvironment();
+
+    bool canEnableValidationLayers() const { return mEnableValidationLayers; }
+    vk::ICD getEnabledICD() const { return mICD; }
+
+  private:
+    bool setICDEnvironment(const char *icd);
+
+    bool mEnableValidationLayers;
+    vk::ICD mICD;
+    bool mChangedCWD;
+    Optional<std::string> mPreviousCWD;
+    bool mChangedICDEnv;
+    Optional<std::string> mPreviousICDEnv;
+};
+
+void ChoosePhysicalDevice(const std::vector<VkPhysicalDevice> &physicalDevices,
+                          vk::ICD preferredICD,
+                          VkPhysicalDevice *physicalDeviceOut,
+                          VkPhysicalDeviceProperties *physicalDevicePropertiesOut);
+
+}  // namespace vk
+
+}  // namespace angle
+
+#endif  // COMMON_VULKAN_VULKAN_ICD_H_
index 5230a41..95b0571 100644 (file)
@@ -124,6 +124,8 @@ angle_translator_sources = [
   "src/compiler/translator/tree_ops/DeclareAndInitBuiltinsForInstancedMultiview.h",
   "src/compiler/translator/tree_ops/DeferGlobalInitializers.cpp",
   "src/compiler/translator/tree_ops/DeferGlobalInitializers.h",
+  "src/compiler/translator/tree_ops/EarlyFragmentTestsOptimization.cpp",
+  "src/compiler/translator/tree_ops/EarlyFragmentTestsOptimization.h",
   "src/compiler/translator/tree_ops/EmulateGLFragColorBroadcast.cpp",
   "src/compiler/translator/tree_ops/EmulateGLFragColorBroadcast.h",
   "src/compiler/translator/tree_ops/EmulateMultiDrawShaderBuiltins.cpp",
@@ -215,6 +217,8 @@ angle_translator_sources = [
   "src/compiler/translator/tree_util/IntermTraverse.cpp",
   "src/compiler/translator/tree_util/IntermTraverse.h",
   "src/compiler/translator/tree_util/NodeSearch.h",
+  "src/compiler/translator/tree_util/ReplaceClipDistanceVariable.cpp",
+  "src/compiler/translator/tree_util/ReplaceClipDistanceVariable.h",
   "src/compiler/translator/tree_util/ReplaceShadowingVariables.cpp",
   "src/compiler/translator/tree_util/ReplaceShadowingVariables.h",
   "src/compiler/translator/tree_util/ReplaceVariable.cpp",
index cced207..07df161 100644 (file)
@@ -161,8 +161,10 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
         resources.NV_shader_framebuffer_fetch     = 1;
         resources.ARM_shader_framebuffer_fetch    = 1;
         resources.EXT_YUV_target                  = 1;
+        resources.APPLE_clip_distance             = 1;
         resources.MaxDualSourceDrawBuffers        = 1;
         resources.EXT_gpu_shader5                 = 1;
+        resources.MaxClipDistances                = 1;
 
         if (!translator->Init(resources))
         {
index 18d0142..a474c31 100644 (file)
@@ -965,19 +965,24 @@ enum TQualifier
     EvqViewIDOVR,      // OVR_multiview
     EvqViewportIndex,  // gl_ViewportIndex
 
+    EvqClipDistance,  // APPLE_clip_distance/EXT_clip_cull_distance
+
     // built-ins written by the shader_framebuffer_fetch extension(s)
     EvqLastFragColor,
     EvqLastFragData,
 
     // GLSL ES 3.0 vertex output and fragment input
-    EvqSmooth,    // Incomplete qualifier, smooth is the default
-    EvqFlat,      // Incomplete qualifier
-    EvqCentroid,  // Incomplete qualifier
+    EvqSmooth,         // Incomplete qualifier, smooth is the default
+    EvqFlat,           // Incomplete qualifier
+    EvqNoPerspective,  // Incomplete qualifier
+    EvqCentroid,       // Incomplete qualifier
     EvqSmoothOut,
     EvqFlatOut,
+    EvqNoPerspectiveOut,
     EvqCentroidOut,  // Implies smooth
     EvqSmoothIn,
     EvqFlatIn,
+    EvqNoPerspectiveIn,
     EvqCentroidIn,  // Implies smooth
 
     // GLSL ES 3.1 compute shader special variables
@@ -1034,6 +1039,7 @@ inline bool IsShaderIn(TQualifier qualifier)
         case EvqVaryingIn:
         case EvqSmoothIn:
         case EvqFlatIn:
+        case EvqNoPerspectiveIn:
         case EvqCentroidIn:
             return true;
         default:
@@ -1051,6 +1057,7 @@ inline bool IsShaderOut(TQualifier qualifier)
         case EvqVaryingOut:
         case EvqSmoothOut:
         case EvqFlatOut:
+        case EvqNoPerspectiveOut:
         case EvqCentroidOut:
             return true;
         default:
@@ -1301,11 +1308,14 @@ inline const char *getQualifierString(TQualifier q)
     case EvqSmoothOut:              return "smooth out";
     case EvqCentroidOut:            return "smooth centroid out";
     case EvqFlatOut:                return "flat out";
+    case EvqNoPerspectiveOut:       return "noperspective out";
     case EvqSmoothIn:               return "smooth in";
     case EvqFlatIn:                 return "flat in";
+    case EvqNoPerspectiveIn:        return "noperspective in";
     case EvqCentroidIn:             return "smooth centroid in";
     case EvqCentroid:               return "centroid";
     case EvqFlat:                   return "flat";
+    case EvqNoPerspective:          return "noperspective";
     case EvqSmooth:                 return "smooth";
     case EvqShared:                 return "shared";
     case EvqComputeIn:              return "in";
@@ -1321,6 +1331,7 @@ inline const char *getQualifierString(TQualifier q)
     case EvqGeometryOut:            return "out";
     case EvqPerVertexIn:            return "gl_in";
     case EvqPrecise:                return "precise";
+    case EvqClipDistance:           return "ClipDistance";
     default: UNREACHABLE();         return "unknown qualifier";
     }
     // clang-format on
index 2db3b17..f200248 100644 (file)
@@ -188,6 +188,7 @@ class CollectVariablesTraverser : public TIntermTraverser
 
     // Vertex Shader and Geometry Shader builtins
     bool mPositionAdded;
+    bool mClipDistanceAdded;
 
     // Fragment Shader builtins
     bool mPointCoordAdded;
@@ -257,6 +258,7 @@ CollectVariablesTraverser::CollectVariablesTraverser(
       mBaseVertexAdded(false),
       mBaseInstanceAdded(false),
       mPositionAdded(false),
+      mClipDistanceAdded(false),
       mPointCoordAdded(false),
       mFrontFacingAdded(false),
       mHelperInvocationAdded(false),
@@ -609,6 +611,9 @@ void CollectVariablesTraverser::visitSymbol(TIntermSymbol *symbol)
                                              mSharedVariables);
                 }
                 break;
+            case EvqClipDistance:
+                recordBuiltInVaryingUsed(symbol->variable(), &mClipDistanceAdded, mOutputVaryings);
+                return;
             default:
                 break;
         }
@@ -724,6 +729,7 @@ ShaderVariable CollectVariablesTraverser::recordVarying(const TIntermSymbol &var
         case EvqVertexOut:
         case EvqSmoothOut:
         case EvqFlatOut:
+        case EvqNoPerspectiveOut:
         case EvqCentroidOut:
         case EvqGeometryOut:
             if (mSymbolTable->isVaryingInvariant(variable.variable()) || type.isInvariant())
index 87565eb..9fa105b 100644 (file)
@@ -26,6 +26,7 @@
 #include "compiler/translator/tree_ops/ClampPointSize.h"
 #include "compiler/translator/tree_ops/DeclareAndInitBuiltinsForInstancedMultiview.h"
 #include "compiler/translator/tree_ops/DeferGlobalInitializers.h"
+#include "compiler/translator/tree_ops/EarlyFragmentTestsOptimization.h"
 #include "compiler/translator/tree_ops/EmulateGLFragColorBroadcast.h"
 #include "compiler/translator/tree_ops/EmulateMultiDrawShaderBuiltins.h"
 #include "compiler/translator/tree_ops/EmulatePrecision.h"
@@ -930,6 +931,16 @@ bool TCompiler::checkAndSimplifyAST(TIntermBlock *root,
         }
     }
 
+    mEarlyFragmentTestsOptimized = false;
+    if (compileOptions & SH_EARLY_FRAGMENT_TESTS_OPTIMIZATION)
+    {
+        if (mShaderVersion <= 300 && mShaderType == GL_FRAGMENT_SHADER &&
+            !isEarlyFragmentTestsSpecified())
+        {
+            mEarlyFragmentTestsOptimized = CheckEarlyFragmentTestsFeasible(this, root);
+        }
+    }
+
     return true;
 }
 
@@ -1075,6 +1086,7 @@ void TCompiler::setResourceString()
         << ":WEBGL_debug_shader_precision:" << mResources.WEBGL_debug_shader_precision
         << ":ANGLE_multi_draw:" << mResources.ANGLE_multi_draw
         << ":ANGLE_base_vertex_base_instance:" << mResources.ANGLE_base_vertex_base_instance
+        << ":APPLE_clip_distance:" << mResources.APPLE_clip_distance
         << ":MinProgramTextureGatherOffset:" << mResources.MinProgramTextureGatherOffset
         << ":MaxProgramTextureGatherOffset:" << mResources.MaxProgramTextureGatherOffset
         << ":MaxImageUnits:" << mResources.MaxImageUnits
@@ -1112,7 +1124,8 @@ void TCompiler::setResourceString()
         << ":MaxGeometryAtomicCounters:" << mResources.MaxGeometryAtomicCounters
         << ":MaxGeometryShaderStorageBlocks:" << mResources.MaxGeometryShaderStorageBlocks
         << ":MaxGeometryShaderInvocations:" << mResources.MaxGeometryShaderInvocations
-        << ":MaxGeometryImageUniforms:" << mResources.MaxGeometryImageUniforms;
+        << ":MaxGeometryImageUniforms:" << mResources.MaxGeometryImageUniforms
+        << ":MaxClipDistances" << mResources.MaxClipDistances;
     // clang-format on
 
     mBuiltInResourcesString = strstream.str();
@@ -1492,7 +1505,7 @@ bool TCompiler::isVaryingDefined(const char *varyingName)
 
 void EmitEarlyFragmentTestsGLSL(const TCompiler &compiler, TInfoSinkBase &sink)
 {
-    if (compiler.isEarlyFragmentTestsSpecified())
+    if (compiler.isEarlyFragmentTestsSpecified() || compiler.isEarlyFragmentTestsOptimized())
     {
         sink << "layout (early_fragment_tests) in;\n";
     }
index 950b6a1..d0b24ba 100644 (file)
@@ -99,6 +99,7 @@ class TCompiler : public TShHandleBase
     TInfoSink &getInfoSink() { return mInfoSink; }
 
     bool isEarlyFragmentTestsSpecified() const { return mEarlyFragmentTestsSpecified; }
+    bool isEarlyFragmentTestsOptimized() const { return mEarlyFragmentTestsOptimized; }
 
     bool isComputeShaderLocalSizeDeclared() const { return mComputeShaderLocalSizeDeclared; }
     const sh::WorkGroupSize &getComputeShaderLocalSize() const { return mComputeShaderLocalSize; }
@@ -278,6 +279,7 @@ class TCompiler : public TShHandleBase
 
     // fragment shader early fragment tests
     bool mEarlyFragmentTestsSpecified;
+    bool mEarlyFragmentTestsOptimized;
 
     // compute shader local group size
     bool mComputeShaderLocalSizeDeclared;
index f2b5b68..0c3425c 100644 (file)
@@ -25,6 +25,7 @@
     OP(EXT_shader_texture_lod)                      \
     OP(EXT_YUV_target)                              \
     OP(EXT_shader_non_constant_global_initializers) \
+    OP(NV_shader_noperspective_interpolation)       \
     OP(NV_EGL_stream_consumer_external)             \
     OP(NV_shader_framebuffer_fetch)                 \
     OP(OES_EGL_image_external)                      \
@@ -36,7 +37,8 @@
     OP(OVR_multiview2)                              \
     OP(ANGLE_multi_draw)                            \
     OP(ANGLE_base_vertex_base_instance)             \
-    OP(WEBGL_video_texture)
+    OP(WEBGL_video_texture)                         \
+    OP(APPLE_clip_distance)
 
 namespace sh
 {
index 59e8ef7..b0f854d 100644 (file)
@@ -32,6 +32,7 @@ enum class TExtension
     EXT_shader_non_constant_global_initializers,
     NV_EGL_stream_consumer_external,
     NV_shader_framebuffer_fetch,
+    NV_shader_noperspective_interpolation,
     OES_EGL_image_external,
     OES_EGL_image_external_essl3,
     OES_standard_derivatives,
@@ -42,6 +43,7 @@ enum class TExtension
     ANGLE_multi_draw,
     ANGLE_base_vertex_base_instance,
     WEBGL_video_texture,
+    APPLE_clip_distance,
 };
 
 enum TBehavior
index cf61fad..6e2eb6d 100644 (file)
@@ -53,6 +53,35 @@ ImmutableString HashName(const ImmutableString &name,
             // have as long names and could conflict.
             return name;
         }
+        if (name == "gl_ClipDistance")
+        {
+            // NOTE(hqle): When gl_ClipDistance is re-declared, it will become an UserDefined
+            // symbol. Normally, UserDefined symbols will have "_u" prefix added to their names by
+            // ANGLE. However, gl_ClipDistance is an exception. If we add "_u" to its name, the
+            // backend won't be able to handle it properly. So for gl_ClipDistance, we won't add
+            // "_u" prefix, instead we return it original name.
+            //
+            // The other way is treating gl_ClipDistance as an AngleInternal symbol when a
+            // re-declaration occurs. AngleInternal symbols will have their name intact. However,
+            // the issue is that the current code put a lot of restrictions on AngleInternal
+            // symbols. For examples:
+            //  - CollectVariables.cpp will not consider AngleInternal as varying output variales.
+            //  - SymbolTable.cpp will throw an exception if AngleInternal symbols are declared by
+            //  users. In this case, it would be gl_ClipDistance. This is because
+            //  TSymbolTable::declare() only accepts an UserDefined symbol.
+            //  - And potentially many other places that have some assumptions that haven't been
+            //  discovered yet.
+            //
+            // If re-declared gl_ClipDistance was to be an AngleInternal symbol, a special "if (name
+            // == "gl_ClipDistance")" handling would have to be put into all the above mentioned
+            // cases. TParseContext::declareVariable() function would also have to be modified in
+            // order to assign AngleInternal symbol type to the re-declared gl_ClipDistance
+            // variable.
+            // Compare to only this place has to be handled if re-declared gl_ClipDistance is
+            // treated as an UserDefined symbol.
+            //
+            return name;
+        }
         ImmutableStringBuilder prefixedName(kUnhashedNamePrefix.length() + name.length());
         prefixedName << kUnhashedNamePrefix << name;
         return prefixedName;
index 022220d..38e16b9 100644 (file)
@@ -24,140 +24,129 @@ std::ostream &operator<<(std::ostream &os, const sh::ImmutableString &str)
 namespace
 {
 
-constexpr int mangledkT1[] = {843,  1411, 1006, 814, 1696, 1696, 363,  1756, 83,  206,
-                              203,  679,  658,  7,   423,  1083, 728,  1753, 519, 221,
-                              22,   265,  1927, 702, 1552, 623,  1283, 1185, 527, 570,
-                              1194, 1669, 842,  353, 1512, 58,   1640};
-constexpr int mangledkT2[] = {908,  1530, 528,  154,  570,  249,  1822, 24,   154,  1693,
-                              337,  1383, 664,  955,  1965, 1327, 501,  1141, 1305, 1740,
-                              72,   215,  1441, 1626, 325,  299,  986,  1478, 1188, 1623,
-                              1858, 179,  1589, 1247, 1628, 1890, 471};
+constexpr int mangledkT1[] = {576,  1799, 1318, 442,  700,  1751, 1287, 678,  1525, 206,
+                              1170, 550,  1470, 1009, 1178, 1566, 842,  605,  1223, 1577,
+                              476,  175,  132,  18,   774,  1001, 217,  1124, 1447, 1736,
+                              1792, 378,  1483, 993,  90,   1452, 902};
+constexpr int mangledkT2[] = {387, 1455, 891,  850,  1815, 915,  378,  591,  905, 1053,
+                              906, 1369, 1680, 39,   406,  1514, 1170, 728,  206, 1497,
+                              596, 667,  1461, 12,   25,   375,  1578, 1123, 322, 502,
+                              62,  32,   1393, 1552, 1715, 947,  526};
 constexpr int mangledkG[]  = {
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    966,  0,    0,    0,    0,    0,    0,    170,  448,  0,    0,    0,    0,    0,    0,
-    0,    0,    0,    1479, 0,    0,    0,    200,  0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    1139, 0,    0,    376,  0,    0,    0,    0,    0,    0,    744,  0,    0,    0,
-    0,    0,    0,    0,    1888, 0,    1668, 0,    0,    0,    0,    0,    0,    616,  0,    0,
-    0,    0,    0,    0,    0,    852,  0,    0,    0,    0,    814,  0,    0,    0,    0,    0,
-    0,    0,    0,    8,    0,    0,    149,  0,    0,    0,    0,    0,    0,    0,    789,  113,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    242,  0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    1554, 0,    0,    997,  0,    0,    0,
-    0,    1872, 0,    0,    0,    0,    786,  0,    0,    0,    1121, 0,    748,  0,    0,    409,
-    0,    501,  147,  0,    0,    656,  0,    0,    335,  1603, 274,  0,    1328, 0,    0,    0,
-    0,    0,    355,  0,    0,    0,    910,  0,    0,    248,  845,  0,    0,    0,    1110, 82,
-    0,    1701, 0,    0,    0,    0,    563,  0,    0,    817,  1696, 0,    0,    305,  0,    0,
-    0,    387,  998,  0,    0,    0,    0,    0,    0,    0,    0,    785,  0,    1944, 0,    0,
-    0,    0,    0,    1821, 0,    190,  0,    1830, 0,    0,    0,    0,    0,    0,    0,    0,
-    757,  0,    0,    1891, 0,    0,    29,   143,  0,    1979, 1949, 832,  226,  0,    1872, 0,
-    0,    0,    0,    0,    1716, 0,    1190, 0,    1750, 0,    0,    0,    0,    0,    0,    0,
-    431,  292,  0,    0,    1489, 82,   0,    0,    0,    0,    0,    967,  0,    0,    585,  0,
-    0,    1955, 0,    0,    0,    1646, 670,  0,    0,    0,    0,    398,  0,    313,  0,    0,
-    0,    653,  0,    0,    0,    557,  669,  0,    206,  15,   536,  0,    639,  0,    1310, 0,
-    0,    354,  0,    1887, 0,    0,    1875, 0,    0,    0,    0,    0,    1827, 498,  0,    402,
-    1223, 0,    698,  0,    0,    0,    0,    0,    0,    875,  119,  0,    0,    1635, 1313, 0,
-    870,  0,    0,    0,    0,    0,    0,    744,  89,   0,    0,    0,    345,  964,  0,    438,
-    18,   0,    0,    0,    807,  0,    0,    0,    1669, 0,    0,    0,    0,    1568, 772,  0,
-    522,  926,  0,    923,  0,    0,    0,    0,    1889, 0,    513,  1222, 0,    0,    0,    0,
-    0,    0,    0,    485,  960,  0,    1151, 518,  1202, 0,    0,    7,    0,    0,    1073, 1870,
-    530,  1492, 0,    1854, 0,    0,    326,  0,    0,    665,  1378, 311,  0,    0,    368,  0,
-    0,    122,  1743, 603,  0,    0,    0,    0,    0,    509,  214,  0,    6,    0,    0,    130,
-    938,  1942, 0,    184,  714,  0,    0,    0,    93,   0,    739,  307,  0,    1696, 530,  0,
-    0,    1258, 184,  958,  61,   472,  614,  1953, 0,    1320, 573,  0,    0,    0,    266,  749,
-    0,    441,  845,  805,  0,    441,  570,  0,    0,    0,    0,    89,   718,  187,  748,  35,
-    0,    0,    0,    794,  1993, 0,    149,  0,    0,    592,  0,    0,    1431, 0,    430,  1479,
-    0,    48,   894,  172,  0,    89,   0,    864,  1975, 0,    337,  672,  0,    1738, 0,    1653,
-    0,    139,  0,    690,  0,    0,    0,    813,  0,    1368, 395,  145,  15,   0,    344,  44,
-    0,    0,    0,    211,  0,    0,    0,    634,  1346, 444,  0,    0,    0,    678,  0,    1692,
-    366,  0,    0,    0,    0,    0,    0,    0,    0,    0,    652,  0,    381,  406,  0,    0,
-    0,    0,    547,  1985, 353,  0,    0,    0,    1369, 35,   0,    876,  1803, 0,    206,  0,
-    0,    0,    530,  119,  0,    0,    1714, 207,  0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    277,  1660, 0,    695,  0,    1978, 632,  0,    0,    0,
-    0,    0,    0,    0,    0,    0,    711,  0,    1667, 0,    621,  0,    696,  0,    0,    14,
-    725,  0,    512,  0,    459,  713,  34,   0,    0,    883,  0,    1270, 3,    0,    0,    999,
-    0,    947,  679,  0,    0,    0,    0,    1700, 164,  0,    0,    0,    0,    1901, 269,  0,
-    1888, 927,  1815, 0,    1998, 401,  591,  0,    1976, 0,    957,  253,  132,  0,    0,    0,
-    8,    0,    0,    1854, 1447, 229,  0,    363,  1554, 253,  38,   1712, 0,    0,    33,   0,
-    207,  0,    1916, 0,    0,    840,  1651, 0,    213,  0,    489,  57,   0,    0,    0,    820,
-    612,  715,  0,    0,    1252, 0,    0,    0,    220,  1876, 0,    121,  31,   120,  196,  0,
-    867,  924,  1468, 1884, 752,  842,  0,    0,    89,   1951, 11,   0,    329,  1626, 0,    0,
-    0,    0,    731,  0,    0,    487,  0,    0,    1688, 0,    1368, 0,    210,  1616, 1384, 0,
-    1458, 1448, 0,    0,    0,    0,    1076, 380,  184,  344,  0,    405,  248,  0,    0,    0,
-    1368, 820,  517,  0,    0,    190,  1077, 585,  0,    364,  0,    0,    127,  45,   17,   0,
-    0,    0,    0,    4,    0,    1207, 0,    0,    317,  552,  444,  432,  367,  0,    0,    0,
-    0,    320,  311,  554,  0,    443,  1054, 0,    0,    0,    1849, 0,    0,    633,  1437, 0,
-    876,  484,  0,    0,    0,    0,    0,    48,   0,    0,    1926, 718,  0,    0,    0,    164,
-    0,    0,    544,  1784, 800,  0,    0,    1562, 0,    565,  0,    0,    0,    0,    0,    0,
-    0,    0,    905,  798,  0,    1170, 0,    0,    0,    1551, 407,  0,    0,    0,    929,  0,
-    0,    986,  0,    1409, 0,    1999, 1142, 1178, 1042, 114,  0,    0,    362,  964,  56,   0,
-    232,  0,    0,    0,    702,  1561, 0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    1450, 851,  0,    0,    0,    1878, 1635, 0,    1756, 376,  0,    417,  0,    1676, 630,  0,
-    21,   920,  108,  1679, 0,    1770, 160,  0,    829,  1828, 0,    0,    0,    464,  1067, 0,
-    1607, 322,  727,  12,   0,    0,    618,  0,    287,  0,    0,    0,    240,  1593, 531,  449,
-    810,  0,    0,    0,    0,    0,    551,  0,    733,  0,    0,    283,  1796, 0,    192,  0,
-    0,    559,  1213, 0,    0,    0,    0,    204,  146,  28,   236,  1875, 0,    680,  0,    761,
-    410,  0,    0,    0,    934,  638,  0,    0,    849,  0,    1286, 81,   0,    928,  1931, 0,
-    1762, 0,    1485, 1203, 1771, 0,    478,  50,   159,  382,  0,    824,  0,    0,    216,  0,
-    347,  0,    0,    0,    0,    446,  925,  0,    295,  1874, 0,    1142, 0,    0,    908,  0,
-    419,  0,    1394, 80,   0,    0,    1697, 0,    415,  0,    0,    1691, 0,    0,    0,    0,
-    0,    0,    360,  0,    0,    200,  77,   726,  284,  1501, 483,  0,    0,    0,    0,    0,
-    164,  667,  664,  586,  578,  1911, 99,   1737, 0,    0,    950,  0,    361,  0,    0,    0,
-    23,   0,    0,    219,  1677, 0,    462,  0,    0,    0,    0,    732,  54,   248,  548,  1738,
-    0,    0,    0,    0,    0,    0,    308,  0,    0,    0,    274,  0,    0,    0,    123,  0,
-    0,    665,  670,  468,  747,  0,    906,  1407, 0,    257,  1439, 858,  85,   404,  269,  1783,
-    858,  774,  115,  0,    0,    0,    321,  1625, 1621, 298,  0,    224,  0,    0,    369,  707,
-    881,  534,  822,  0,    0,    1794, 488,  0,    0,    0,    655,  743,  0,    965,  472,  1548,
-    564,  0,    0,    306,  1205, 1759, 0,    789,  0,    962,  0,    0,    583,  359,  0,    0,
-    0,    0,    823,  1986, 615,  1120, 257,  709,  0,    0,    0,    1748, 0,    233,  0,    0,
-    0,    0,    0,    1700, 0,    0,    560,  855,  219,  165,  0,    0,    52,   0,    413,  360,
-    0,    0,    0,    0,    722,  126,  231,  0,    0,    0,    808,  0,    0,    0,    0,    0,
-    1487, 1953, 1706, 1474, 0,    1126, 1429, 1790, 0,    659,  0,    0,    1369, 40,   1193, 185,
-    0,    1141, 0,    255,  0,    0,    0,    0,    1671, 0,    0,    1131, 242,  0,    732,  0,
-    0,    0,    1746, 0,    1681, 0,    1505, 0,    0,    0,    515,  0,    0,    0,    1288, 0,
-    343,  0,    0,    0,    217,  0,    88,   1921, 0,    0,    0,    0,    832,  941,  0,    0,
-    180,  0,    161,  0,    0,    153,  233,  0,    700,  0,    205,  209,  1267, 0,    1502, 159,
-    0,    0,    1886, 6,    0,    0,    1809, 0,    126,  1572, 613,  1901, 0,    348,  1853, 0,
-    0,    285,  1081, 0,    1324, 0,    1659, 922,  0,    1622, 0,    0,    464,  229,  913,  0,
-    1136, 335,  248,  0,    138,  0,    0,    0,    393,  0,    779,  820,  144,  0,    0,    531,
-    1,    0,    0,    0,    0,    0,    1833, 1993, 1902, 0,    0,    912,  0,    0,    332,  331,
-    0,    328,  776,  1931, 0,    0,    0,    450,  1837, 0,    0,    0,    158,  0,    411,  0,
-    549,  413,  0,    0,    0,    0,    624,  1412, 0,    0,    353,  361,  0,    1615, 1557, 445,
-    0,    0,    78,   107,  402,  0,    0,    0,    1767, 0,    1709, 600,  0,    735,  810,  0,
-    0,    0,    414,  1102, 193,  224,  0,    0,    0,    431,  1000, 701,  454,  312,  702,  849,
-    224,  1853, 0,    811,  1459, 499,  0,    880,  562,  66,   0,    1520, 0,    0,    0,    0,
-    730,  0,    0,    1189, 590,  404,  0,    0,    0,    210,  136,  0,    0,    687,  789,  256,
-    0,    630,  626,  0,    364,  0,    314,  0,    0,    638,  1645, 0,    1697, 1740, 0,    0,
-    87,   15,   381,  370,  27,   0,    564,  557,  1655, 257,  48,   0,    902,  269,  239,  0,
-    1726, 1214, 1464, 292,  1055, 65,   275,  451,  0,    0,    0,    0,    848,  414,  246,  716,
-    31,   0,    0,    0,    119,  658,  0,    474,  0,    1004, 127,  825,  592,  240,  1249, 0,
-    0,    0,    766,  0,    558,  0,    1656, 0,    1360, 0,    1913, 0,    50,   0,    0,    129,
-    229,  0,    0,    130,  0,    371,  550,  0,    535,  0,    911,  0,    456,  835,  0,    238,
-    0,    878,  0,    617,  0,    810,  1839, 138,  1161, 1347, 0,    906,  214,  265,  0,    796,
-    556,  876,  1852, 262,  1649, 358,  713,  934,  0,    0,    237,  258,  575,  106,  0,    0,
-    821,  1088, 826,  0,    0,    516,  384,  0,    1747, 0,    1397, 808,  366,  0,    252,  145,
-    752,  49,   0,    1976, 521,  0,    0,    1076, 180,  799,  1930, 14,   1046, 510,  0,    0,
-    137,  0,    0,    0,    481,  0,    704,  366,  0,    0,    0,    681,  379,  0,    0,    692,
-    479,  0,    0,    0,    0,    0,    891,  0,    1401, 684,  561,  0,    698,  0,    512,  1930,
-    0,    286,  1460, 0,    0,    0,    614,  0,    563,  0,    0,    0,    0,    0,    0,    730,
-    844,  1220, 0,    124,  605,  1049, 1739, 20,   194,  0,    100,  0,    0,    0,    24,   0,
-    0,    805,  129,  22,   1910, 425,  1857, 530,  870,  243,  0,    590,  492,  850,  1783, 497,
-    1967, 0,    1693, 348,  0,    0,    0,    86,   0,    1698, 799,  677,  48,   0,    0,    0,
-    566,  0,    102,  793,  0,    60,   905,  0,    0,    251,  672,  342,  194,  0,    685,  439,
-    1509, 0,    764,  0,    0,    1277, 0,    1528, 0,    1633, 176,  0,    766,  0,    200,  0,
-    1746, 380,  1014, 288,  1907, 0,    553,  0,    0,    0,    1736, 1607, 0,    0,    21,   615,
-    0,    860,  750,  0,    0,    369,  451,  0,    1993, 669,  123,  0,    0,    841,  96,   1793,
-    0,    964,  153,  595,  192,  0,    583,  666,  0,    0,    0,    0,    280,  27,   0,    0,
-    375,  0,    469,  0,    0,    0,    1594, 595,  1949, 0,    0,    356,  1885, 359,  447,  0,
-    589,  226,  1785, 1298, 0,    480,  0,    0,    0,    1364, 250,  832,  0,    600,  0,    804,
-    234,  149,  395,  0,    0,    188,  1499, 366,  594,  152,  0,    728,  1960, 1824, 0,    0,
-    0,    1413, 401,  620,  0,    1125, 0,    509,  790,  0,    273,  0,    305,  1016, 1409, 0,
-    0,    856,  325,  375,  1609, 0,    317,  788,  375,  0,    0,    379,  1693, 0,    0,    1462,
-    165,  874,  1997, 420,  0,    459,  228,  0,    0,    0,    0,    0,    0,    0,    836,  0,
-    1992, 1922, 0,    849,  0,    1610, 345,  437,  0,    739,  643,  289,  0,    0,    867,  366,
-    0,    1999, 660,  15,   0,    0,    555,  0,    0,    0,    1248, 420,  0,    0,    511,  353,
-    469,  1877, 440,  0,    0,    1960, 755,  819,  426,  814,  92,   0,    1362, 0,    723,  709,
-    1410, 70,   0,    854,  252,  632,  99,   1748, 381,  882,  0,    679,  0,    255,  197,  1000,
-    0,    0,    1584, 1473, 84,   0,    6,    0,    878,  1098, 0,    335,  254,  461,  0,    86,
-    0,    66,   0,    610,  385,  1782, 0,    0,    405,  0,    1872, 0,    1705, 0,    516,  1748};
+    0,    0,    0,    577,  0,    0,    0,    0,    0,    52,   0,    799,  0,    0,    0,    0,
+    0,    0,    0,    0,    0,    977,  0,    0,    797,  0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    262,  0,    1594, 0,    0,    0,    0,    0,    0,    0,
+    0,    0,    1311, 0,    0,    0,    654,  0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    307,  0,    0,    0,    48,   0,    0,    0,    0,    104,  0,    1196, 1352, 0,    1056,
+    0,    253,  0,    824,  0,    0,    994,  0,    0,    808,  1366, 0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    166,  1315, 0,    0,    148,  0,    0,
+    1699, 0,    0,    0,    1085, 0,    0,    0,    91,   0,    0,    0,    1123, 0,    0,    0,
+    1150, 0,    735,  0,    0,    0,    0,    0,    0,    0,    0,    0,    1465, 780,  196,  0,
+    0,    0,    0,    345,  1662, 0,    718,  895,  0,    1329, 1148, 0,    0,    1516, 926,  0,
+    0,    0,    0,    0,    0,    1581, 0,    0,    1408, 428,  0,    1312, 0,    1127, 544,  0,
+    0,    0,    0,    0,    0,    214,  716,  0,    0,    1182, 0,    0,    0,    330,  1138, 0,
+    0,    1781, 0,    0,    780,  636,  0,    157,  0,    0,    0,    0,    0,    0,    0,    1089,
+    0,    0,    436,  110,  0,    1572, 1494, 0,    0,    1595, 0,    0,    0,    709,  991,  0,
+    0,    0,    1355, 0,    1201, 1786, 0,    312,  235,  1386, 0,    0,    1582, 1448, 0,    1574,
+    620,  0,    0,    0,    0,    493,  7,    0,    952,  912,  0,    170,  0,    0,    0,    1564,
+    585,  0,    0,    0,    0,    0,    1481, 0,    278,  0,    535,  0,    0,    1634, 29,   611,
+    1486, 106,  0,    0,    1070, 0,    0,    0,    266,  0,    0,    1806, 0,    216,  0,    98,
+    676,  0,    651,  0,    0,    0,    0,    0,    0,    0,    0,    105,  72,   0,    317,  133,
+    0,    0,    146,  354,  0,    677,  0,    110,  0,    1097, 0,    1674, 0,    0,    57,   0,
+    1574, 587,  0,    242,  188,  0,    196,  864,  1330, 735,  0,    339,  0,    739,  0,    58,
+    193,  0,    0,    165,  0,    823,  0,    128,  0,    0,    1077, 0,    0,    0,    0,    0,
+    0,    872,  1782, 1692, 0,    0,    664,  1270, 0,    1199, 0,    0,    61,   0,    0,    0,
+    662,  0,    489,  0,    1029, 0,    0,    0,    1333, 69,   466,  0,    0,    1360, 0,    0,
+    251,  153,  445,  173,  0,    1181, 0,    0,    325,  0,    0,    342,  391,  0,    901,  0,
+    707,  0,    0,    0,    0,    1272, 0,    490,  0,    0,    0,    0,    721,  0,    0,    0,
+    0,    1220, 1228, 811,  1359, 1353, 1262, 72,   0,    0,    683,  0,    1339, 0,    0,    0,
+    1343, 0,    717,  0,    0,    1723, 728,  0,    0,    0,    78,   533,  243,  0,    0,    1416,
+    363,  0,    0,    0,    426,  0,    514,  0,    1132, 501,  262,  0,    0,    42,   1647, 1775,
+    903,  803,  607,  0,    0,    905,  237,  0,    0,    309,  1164, 0,    0,    730,  1700, 0,
+    0,    0,    0,    0,    0,    234,  1663, 0,    0,    383,  1018, 0,    1665, 0,    0,    1252,
+    0,    0,    0,    785,  0,    346,  1420, 0,    0,    0,    0,    0,    0,    1755, 1334, 0,
+    990,  1230, 0,    1479, 927,  1760, 233,  852,  0,    712,  103,  1512, 436,  0,    0,    133,
+    0,    0,    0,    0,    0,    419,  1746, 193,  0,    0,    1280, 832,  744,  0,    0,    826,
+    0,    1600, 0,    963,  485,  238,  0,    217,  1374, 1715, 867,  0,    877,  569,  438,  599,
+    0,    0,    429,  920,  850,  0,    0,    0,    141,  0,    138,  0,    0,    0,    1513, 0,
+    0,    0,    0,    643,  0,    0,    1275, 0,    0,    1541, 1451, 0,    87,   0,    0,    0,
+    0,    0,    0,    179,  1089, 0,    0,    0,    0,    0,    0,    486,  0,    0,    313,  0,
+    339,  324,  1465, 0,    0,    390,  0,    0,    0,    767,  0,    0,    828,  377,  1779, 151,
+    0,    0,    1694, 0,    671,  0,    627,  1483, 0,    0,    631,  422,  0,    29,   0,    540,
+    1147, 0,    1461, 0,    1509, 262,  0,    0,    368,  1384, 1624, 1602, 876,  0,    820,  396,
+    844,  1671, 277,  0,    0,    1364, 0,    0,    0,    875,  0,    440,  0,    0,    0,    0,
+    232,  0,    0,    47,   295,  10,   0,    0,    0,    412,  311,  0,    1318, 76,   1064, 0,
+    0,    1386, 726,  0,    0,    1237, 0,    957,  986,  0,    771,  1508, 292,  0,    0,    291,
+    995,  394,  0,    0,    0,    0,    1363, 11,   867,  0,    534,  302,  124,  0,    0,    0,
+    1743, 0,    0,    104,  912,  272,  0,    0,    0,    0,    227,  0,    0,    0,    1579, 710,
+    1031, 0,    0,    0,    0,    901,  0,    483,  0,    390,  755,  474,  1270, 0,    305,  0,
+    559,  0,    352,  0,    0,    401,  0,    1348, 0,    840,  0,    108,  0,    0,    0,    794,
+    0,    441,  1049, 338,  0,    857,  0,    334,  272,  960,  0,    0,    461,  326,  856,  1246,
+    1607, 767,  381,  286,  0,    351,  0,    0,    0,    1309, 0,    150,  350,  0,    367,  708,
+    0,    0,    36,   0,    0,    1157, 1713, 559,  246,  484,  680,  149,  0,    0,    0,    329,
+    734,  0,    0,    1796, 137,  0,    56,   98,   0,    0,    656,  0,    655,  0,    0,    167,
+    0,    0,    177,  0,    1391, 0,    0,    0,    0,    719,  913,  1751, 642,  478,  1387, 0,
+    0,    1677, 612,  1120, 0,    482,  294,  753,  0,    882,  723,  13,   0,    1586, 616,  0,
+    1624, 918,  687,  1383, 0,    802,  923,  1781, 0,    0,    198,  1475, 90,   0,    0,    927,
+    0,    0,    0,    1454, 0,    791,  1180, 0,    1687, 1763, 80,   61,   1326, 0,    0,    0,
+    0,    870,  782,  0,    448,  1407, 713,  1080, 0,    0,    0,    880,  612,  0,    0,    1706,