2020-02-12  Michael Catanzaro  <mcatanzaro@gnome.org>

        Multiple GCC 10 build failures in ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=207365

        Reviewed by Carlos Alberto Lopez Perez.

        * changes.diff: Updated.
        * include/platform/Platform.h: Add missing #include to get size_t.
        * src/common/PackedEnums.h: Remove problematic const_casts.

2020-02-12  Dean Jackson  <dino@apple.com>

        ANGLE has unused bison and glmark2 code
        https://bugs.webkit.org/show_bug.cgi?id=207597
        rdar://59361460

        Reviewed by Maciej Stachowiak.

        Remove some unused files.

        * changes.diff:
        * src/tests/perf_tests/glmark2Benchmark.cpp: Removed.
        * third_party/glmark2/BUILD.gn: Removed.
        * third_party/glmark2/README.angle: Removed.
        * tools/flex-bison/README.md: Removed.
        * tools/flex-bison/linux/bison.sha1: Removed.
        * tools/flex-bison/linux/flex.sha1: Removed.
        * tools/flex-bison/third_party/.gitattributes: Removed.
        * tools/flex-bison/third_party/m4sugar/LICENSE: Removed.
        * tools/flex-bison/third_party/m4sugar/README.chromium: Removed.
        * tools/flex-bison/third_party/m4sugar/foreach.m4: Removed.
        * tools/flex-bison/third_party/m4sugar/m4sugar.m4: Removed.
        * tools/flex-bison/third_party/skeletons/LICENSE: Removed.
        * tools/flex-bison/third_party/skeletons/README.chromium: Removed.
        * tools/flex-bison/third_party/skeletons/bison.m4: Removed.
        * tools/flex-bison/third_party/skeletons/c-like.m4: Removed.
        * tools/flex-bison/third_party/skeletons/c.m4: Removed.
        * tools/flex-bison/third_party/skeletons/yacc.c: Removed.
        * tools/flex-bison/update_flex_bison_binaries.py: Removed.
        * tools/flex-bison/windows/bison.exe.sha1: Removed.
        * tools/flex-bison/windows/flex.exe.sha1: Removed.
        * tools/flex-bison/windows/m4.exe.sha1: Removed.
        * tools/flex-bison/windows/msys-2.0.dll.sha1: Removed.
        * tools/flex-bison/windows/msys-iconv-2.dll.sha1: Removed.
        * tools/flex-bison/windows/msys-intl-8.dll.sha1: Removed.

2020-02-09  Keith Rollin  <krollin@apple.com>

        Re-enable LTO for ARM builds
        https://bugs.webkit.org/show_bug.cgi?id=207402
        <rdar://problem/49190767>

        Reviewed by Sam Weinig.

        Bug 190758 re-enabled LTO for Production builds for x86-family CPUs.
        Enabling it for ARM was left out due to a compiler issue. That issue
        has been fixed, and so now we can re-enable LTO for ARM.

        * Configurations/Base.xcconfig:

2020-02-07  Kenneth Russell  <kbr@chromium.org>

        Try adding glBindFramebuffer flush workaround to ANGLE as remedy for flaky WebGL tests
        https://bugs.webkit.org/show_bug.cgi?id=206625

        Reviewed by Dean Jackson.

        * include/platform/FeaturesGL.h:
        * src/libANGLE/renderer/gl/StateManagerGL.cpp:
        (rx::StateManagerGL::bindFramebuffer):
        * src/libANGLE/renderer/gl/renderergl_utils.cpp:
        (rx::nativegl_gl::InitializeFeatures):

2020-02-05  Dean Jackson  <dino@apple.com>

        Fix MacCatalyst build.

        * src/libANGLE/validationEGL.cpp:
        (egl::ValidateCreatePbufferFromClientBuffer):

2020-02-04  James Darpinian  <jdarpinian@chromium.org>

        Update ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=206318

        Several important changes to fix layout test failures and timeouts in this update.
        - Made expensive validation non-default in debug mode to reduce timeouts.
        - Optimize disabling ARB_texture_rectangle to make shader compilation much faster.
        - Flush before texture deletion to work around Mac Intel driver bug.

        Reviewed by Dean Jackson.

        * ANGLE.plist: update commit hash
        * ANGLE.xcodeproj/project.pbxproj: Add/remove files
        * Compiler.cmake: Translated from compiler.gni
        * GLESv2.cmake: Translated from libGLESv2.gni
        * changes.diff: Now lists all changes from upstream.
        * update-angle.sh: Diff command was wrong.
        * Plus a whole lot of changes from upstream.

2020-01-30  James Darpinian  <jdarpinian@chromium.org>

        Update ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=206318

        Take two!

        Several important changes to fix layout test failures and timeouts in this update.
        - Made expensive validation non-default in debug mode to reduce timeouts.
        - Optimize disabling ARB_texture_rectangle to make shader compilation much faster.
        - Flush before texture deletion to work around Mac Intel driver bug.

        Reviewed by Dean Jackson.

        * ANGLE.plist: update commit hash
        * ANGLE.xcodeproj/project.pbxproj: Add/remove files
        * Compiler.cmake: Translated from compiler.gni
        * GLESv2.cmake: Translated from libGLESv2.gni
        * changes.diff: Now lists all changes from upstream.
        * update-angle.sh: Diff command was wrong.
        * Plus a whole lot of changes from upstream.

2020-01-22  James Darpinian  <jdarpinian@chromium.org>

        Update ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=206318

        Several important changes to fix layout test failures and timeouts in this update.
        - Made expensive validation non-default in debug mode to reduce timeouts.
        - Optimize disabling ARB_texture_rectangle to make shader compilation much faster.
        - Flush before texture deletion to work around Mac Intel driver bug.

        Reviewed by Dean Jackson.

        * ANGLE.plist: update commit hash
        * ANGLE.xcodeproj/project.pbxproj: Add/remove files
        * Compiler.cmake: Translated from compiler.gni
        * GLESv2.cmake: Translated from libGLESv2.gni
        * changes.diff: Now lists all changes from upstream.
        * update-angle.sh: Diff command was wrong.
        * Plus a whole lot of changes from upstream.

2020-01-22  James Darpinian  <jdarpinian@chromium.org>

        REGRESSION (r253926): webgl/1.0.3/conformance/rendering/many-draw-calls.html is much slower, times out in debug
        https://bugs.webkit.org/show_bug.cgi?id=205668

        Disable asserts when compiling ANGLE in release mode by defining
        NDEBUG.

        Reviewed by Dean Jackson.

        * Configurations/ANGLE.xcconfig:

2020-01-14  Dean Jackson  <dino@apple.com>

        Build ANGLE as a dynamic library
        https://bugs.webkit.org/show_bug.cgi?id=204708
        rdar://57349384

        Rolling this out for the 2nd time.

        - it caused issues with the shared dyld cache, because the
        cache doesn't know to include the libary until it already
        exists in the build
        - probably related to the above, we saw some performance
        regressions directly related to this change

        * ANGLE.xcodeproj/project.pbxproj:
        * Configurations/ANGLE.xcconfig:
        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:
        * include/CMakeLists.txt:
        * include/GLSLANG/ShaderLang.h:
        * include/GLSLANG/ShaderVars.h:
        * src/libANGLE/renderer/gl/cgl/DisplayCGL.mm:
        (rx::DisplayCGL::isValidNativeWindow const):
        * src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm:
        (rx::WindowSurfaceCGL::WindowSurfaceCGL):
        (rx::WindowSurfaceCGL::~WindowSurfaceCGL):
        * src/libANGLE/renderer/gl/eagl/DisplayEAGL.mm:
        (rx::DisplayEAGL::terminate):
        (rx::DisplayEAGL::isValidNativeWindow const):
        (rx::WorkerContextEAGL::~WorkerContextEAGL):
        * src/libANGLE/renderer/gl/eagl/WindowSurfaceEAGL.mm:
        (rx::WindowSurfaceEAGL::WindowSurfaceEAGL):
        (rx::WindowSurfaceEAGL::~WindowSurfaceEAGL):

2020-01-14  Kenneth Russell  <kbr@chromium.org>

        Need workaround for crash in Intel OpenGL driver related to texture copying feedback loops
        https://bugs.webkit.org/show_bug.cgi?id=205843

        Remove ANGLE workaround introduced in bug 205707, as it was
        discovered to be incomplete, and was never upstreamed. The correct
        workaround will be integrated in the next ANGLE roll.

        Reviewed by Dean Jackson.

        * include/platform/FeaturesGL.h:
        * src/libANGLE/renderer/gl/StateManagerGL.cpp:
        (rx::StateManagerGL::bindFramebuffer):
        * src/libANGLE/renderer/gl/renderergl_utils.cpp:
        (rx::nativegl_gl::InitializeFeatures):

2020-01-08  Kenneth Russell  <kbr@chromium.org>

        Remove some #ifdefs related to iOS port of ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=205781

        Since the port to the iOS Simulator in
        https://bugs.webkit.org/show_bug.cgi?id=205618 , these #ifdefs
        should no longer be needed.

        Reviewed by Dean Jackson.

        * src/common/PackedEnums.cpp:
        (egl_gl::EGLTextureTargetToTextureType):
        * src/libANGLE/validationES2.cpp:
        (gl::ValidateFramebufferTexture2D):

2020-01-05  Kenneth Russell  <kbr@chromium.org>

        REGRESSION (r253926): Flaky crashes on webgl/1.0.3/conformance/textures/texture-copying-feedback-loops.html and webgl/2.0.0/conformance/textures/misc/texture-copying-feedback-loops.html
        https://bugs.webkit.org/show_bug.cgi?id=205707

        Work around bugs in Intel's graphics driver where operations can
        be incorrectly reordered across glBindFramebuffer calls by
        flushing before/after these calls. Conclusively addresses this
        crash; may also address other layout test flakiness seen when
        switching to ANGLE backend for WebGL.

        Reviewed by Dean Jackson.

        * include/platform/FeaturesGL.h:
        * src/libANGLE/renderer/gl/StateManagerGL.cpp:
        (rx::StateManagerGL::bindFramebuffer):
        * src/libANGLE/renderer/gl/renderergl_utils.cpp:
        (rx::nativegl_gl::InitializeFeatures):

2020-01-04  Kenneth Russell  <kbr@chromium.org>

        Add support for iOS Simulator to ANGLE backend for WebGL
        https://bugs.webkit.org/show_bug.cgi?id=205618

        Extend EGL_ANGLE_iosurface_client_buffer extension to require use
        of TEXTURE_2D target on iOS, and to provide read/write usage hints
        for the pbuffer created from the IOSurface.

        Emulate missing [EAGLContext texImageIOSurface:...] via texture
        upload in eglBindTexImage and readback in eglReleaseTexImage.

        These changes will be upstreamed in
        https://bugs.chromium.org/p/angleproject/issues/detail?id=4256 .

        Reviewed by Dean Jackson.

        * extensions/EGL_ANGLE_iosurface_client_buffer.txt:
        * include/EGL/eglext_angle.h:
        * src/libANGLE/renderer/gl/eagl/DisplayEAGL.mm:
        (rx::DisplayEAGL::initialize):
        * src/libANGLE/renderer/gl/eagl/IOSurfaceSurfaceEAGL.h:
        * src/libANGLE/renderer/gl/eagl/IOSurfaceSurfaceEAGL.mm:
        (rx::IOSurfaceSurfaceEAGL::IOSurfaceSurfaceEAGL):
        (rx::IOSurfaceSurfaceEAGL::bindTexImage):
        (rx::IOSurfaceSurfaceEAGL::releaseTexImage):
        (rx::IOSurfaceSurfaceEAGL::validateAttributes):
        (rx::IOSurfaceSurfaceEAGL::createDefaultFramebuffer):
        (rx::IOSurfaceSurfaceEAGL::getIOSurfaceLockOptions const):
        * src/libANGLE/validationEGL.cpp:
        (egl::ValidateCreatePbufferFromClientBuffer):

2019-12-25  Dean Jackson  <dino@apple.com>

        [WebGL] Enable ANGLE by default for Cocoa platforms (except simulator)
        https://bugs.webkit.org/show_bug.cgi?id=205483
        rdar://56925821

        Reviewed by Simon Fraser.

        Export entry_points_gles_ext_autogen.h.

        * ANGLE.xcodeproj/project.pbxproj:

2019-12-19  Dean Jackson  <dino@apple.com>

        Build ANGLE as a dynamic library
        https://bugs.webkit.org/show_bug.cgi?id=204708
        rdar://57349384

        Reviewed by Tim Horton.

        Take 2 at attempting this. The first time was rolled out
        due to failures in Apple's upstream build system.

        Modify ANGLE to build as a dynamic library. My (not thorough) testing suggests
        this will reduce the in-flight binary size on Apple's build systems by at least
        a factor of 10 (it was over 1G). Building release for x86_64-only:
            - Previously: libANGLE.a -- 306 MB
            - Now: libANGLE-shared.dylib -- 6.7 MB

        In order to do this, some symbols needed to be exported from the
        "sh" namespace (which are used in ANGLEWebKitBridge, but not when
        ANGLE's rendering backend is active).

        While here, I turned on some more build options, like ARC.

        Lastly, I added a build phase that creates a fake libANGLE.a
        because Apple's build system thinks that WebCore still needs it.

        * ANGLE.xcodeproj/project.pbxproj: Link with IOKit and IOSurface frameworks, and
        product a dylib product.
        * Configurations/ANGLE.xcconfig: Update the configuration for a dynamic library.
        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:
        * include/GLSLANG/ShaderLang.h: Add ANGLE_EXPORT to some functions to make
        sure they will be visible in the exported library.
        * include/GLSLANG/ShaderVars.h:
        * src/libANGLE/renderer/gl/cgl/DisplayCGL.mm: Change reinterpret_cast to a normal
        C cast so it can be annotated with __bridge.
        (rx::DisplayCGL::isValidNativeWindow const):
        * src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm: Ditto.
        (rx::WindowSurfaceCGL::WindowSurfaceCGL):
        (rx::WindowSurfaceCGL::~WindowSurfaceCGL):
        * src/libANGLE/renderer/gl/eagl/DisplayEAGL.mm: Ditto.
        * src/libANGLE/renderer/gl/eagl/WindowSurfaceEAGL.mm: Ditto.

2019-12-19  ChangSeok Oh  <changseok@webkit.org>

        [GTK] Build fix for ANGLE_WEBGL after r253650
        https://bugs.webkit.org/show_bug.cgi?id=205426

        Reviewed by Carlos Alberto Lopez Perez.

        libglesv2_entry_points_headers was removed in r253650 that updated CMake for ANGLE.
        GLESv2.cmake seems to be susceptible to ANGLE changes, so it might not be
        a good place where any platform specific configuration is located.
        Let's move the entry points header set to CMakeLists.txt.

        * CMakeLists.txt:

2019-12-18  Dean Jackson  <dino@apple.com>

        Reverting libANGLE.a -> libANGLE-shared.dylib.

        Follow-up to remove the build phase that was trying
        to fool Apple's build system.

        * ANGLE.xcodeproj/project.pbxproj:

2019-12-18  Dean Jackson  <dino@apple.com>

        Reverting libANGLE.a -> libANGLE-shared.dylib.

        The internal Apple build systems are still unhappy with
        this change, so I'm reverting it until I can be sure
        they'll accept it.

        * ANGLE.xcodeproj/project.pbxproj:
        * Configurations/ANGLE.xcconfig:
        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:
        * include/CMakeLists.txt:
        * include/GLSLANG/ShaderLang.h:
        * include/GLSLANG/ShaderVars.h:
        * src/libANGLE/renderer/gl/cgl/DisplayCGL.mm:
        (rx::DisplayCGL::isValidNativeWindow const):
        * src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm:
        (rx::WindowSurfaceCGL::WindowSurfaceCGL):
        (rx::WindowSurfaceCGL::~WindowSurfaceCGL):
        * src/libANGLE/renderer/gl/eagl/DisplayEAGL.mm:
        (rx::DisplayEAGL::terminate):
        (rx::DisplayEAGL::isValidNativeWindow const):
        (rx::WorkerContextEAGL::~WorkerContextEAGL):
        * src/libANGLE/renderer/gl/eagl/WindowSurfaceEAGL.mm:
        (rx::WindowSurfaceEAGL::WindowSurfaceEAGL):
        (rx::WindowSurfaceEAGL::~WindowSurfaceEAGL):

2019-12-17  Fujii Hironori  <Hironori.Fujii@sony.com>

        Unreviewed build fix for WinCairo port
        https://bugs.webkit.org/show_bug.cgi?id=204914
        <rdar://problem/58023118>

        * include/CMakeLists.txt: Replaced '$libangle_includes' with '${libangle_includes}".

2019-12-17  James Darpinian  <jdarpinian@chromium.org>

        Improve update-angle.sh and add gni-to-cmake.py
        https://bugs.webkit.org/show_bug.cgi?id=204914

        update-angle.sh now performs a git rebase. This automatically merges
        upstream changes with WebKit's local changes where possible and
        highlights any conflicts for manual resolution.

        Also, it runs a new script gni-to-cmake.py to automatically update the
        CMake files with upstream changes to the gni files. Along with the
        changes to include/CMakeLists.txt, this should prevent build breaks
        like the recently fixed WinCairo one. Additionally, diffing the CMake
        files provides a concise list of build changes that can be referenced
        when manually updating the XCode project file.

        Reviewed by Dean Jackson.

        * CMakeLists.txt:
        * Compiler.cmake:
        * GLESv2.cmake:
        * gni-to-cmake.py: Added.
        * include/CMakeLists.txt:
        * update-angle.sh:

2019-12-17  ChangSeok Oh  <changseok@webkit.org>

        Unreviewed build fix for USE_ANGLE_WEBGL after r252994

        * CMakeLists.txt: Add a missing directory separator.

2019-12-13  Dean Jackson  <dino@apple.com>

        MacCatalyst build of libANGLE is installed in the incorrect location
        https://bugs.webkit.org/show_bug.cgi?id=205219
        <rdar://problem/57713353>

        Reviewed by Simon Fraser.

        Rename libANGLE.dylib into libANGLE-shared.dylib, so we can
        avoid accidentally trying to link to the libANGLE.a that was
        removed recently (but still exists in the SDK for now).

        Also, make sure that we install into the correct location for
        a Catalyst build.

        * ANGLE.xcodeproj/project.pbxproj:
        * Configurations/ANGLE.xcconfig:
        * Configurations/Base.xcconfig:

2019-12-11  Dean Jackson  <dino@apple.com>

        Produce a dummy libANGLE.a file to fool Apple's build test infrastructure
        https://bugs.webkit.org/show_bug.cgi?id=205068
        <rdar://problem/57713353>

        Unreviewed followup to apply the script to Mac Catalyst builds.

        Note that this phase can be removed in a few days when Apple's Test
        Platform realises it doesn't need libANGLE.a any more.

        * ANGLE.xcodeproj/project.pbxproj:

2019-12-10  Dean Jackson  <dino@apple.com>

        Produce a dummy libANGLE.a file to fool Apple's build test infrastructure
        https://bugs.webkit.org/show_bug.cgi?id=205068
        <rdar://problem/57713353>

        Reviewed by Alex Christensen.

        Create a dummy libANGLE.a file until our infrastructure realises it
        doesn't need that file any more. Hopefully the fact that it isn't
        really a static library, but just a text file, is ok.

        * ANGLE.xcodeproj/project.pbxproj: Add a new shell script phase that
        creates a dummy file.

2019-12-06  Dean Jackson  <dino@apple.com>

        Restrict libANGLE to link only with WebCore
        https://bugs.webkit.org/show_bug.cgi?id=204957
        <rdar://problem/57708644>

        Reviewed by Brian Burg.

        Restrict to WebCore and WebCoreTestSupport.

        * Configurations/ANGLE.xcconfig:

2019-12-05  James Darpinian  <jdarpinian@chromium.org>

        Finish ANGLE update
        https://bugs.webkit.org/show_bug.cgi?id=204911

        The last ANGLE update patch didn't include all the changed files.
        This patch updates the rest of the files.

        Reviewed by Alex Christensen.

        * src/tests: Lots of changed files from upstream ANGLE.
        * src/third_party/compiler/README.chromium:
        * third_party/VK-GL-CTS/README.angle: Added.
        * third_party/deqp/README.angle: Removed.
        * third_party/googletest/README.angle: Removed.
        * third_party/libpng/BUILD.gn:
        * third_party/spirv-cross/README.angle: Added.
        * util/OSWindow.h:
        * util/egl_loader_autogen.cpp:
        (angle::LoadEGL):
        * util/egl_loader_autogen.h:
        * util/fuchsia/ScenicWindow.cpp:
        (ScenicWindow::resetNativeWindow):
        * util/fuchsia/ScenicWindow.h:
        * util/gles_loader_autogen.cpp:
        (angle::LoadGLES):
        * util/gles_loader_autogen.h:
        * util/osx/OSXWindow.h:
        * util/osx/OSXWindow.mm:
        (OSXWindow::initialize):
        * util/ozone/OzoneWindow.h:
        * util/posix/crash_handler_posix.cpp:
        (angle::InitCrashHandler):
        * util/posix/test_utils_posix.cpp:
        (angle::GetTempDir):
        (angle::CreateTemporaryFileInDir):
        (angle::DeleteFile):
        (angle::LaunchProcess):
        (angle::NumberOfProcessors):
        * util/shader_utils.cpp:
        (CompileShaderFromFile):
        (CompileProgramFromFiles):
        * util/test_utils.cpp: Added.
        (angle::CreateTemporaryFile):
        (angle::GetFileSize):
        (angle::ReadEntireFileToString):
        (angle::ProcessHandle::ProcessHandle):
        (angle::ProcessHandle::~ProcessHandle):
        (angle::ProcessHandle::operator=):
        (angle::ProcessHandle::reset):
        * util/test_utils.h:
        * util/test_utils_unittest.cpp: Added.
        (angle::NormalizeNewLines):
        (angle::TEST):
        * util/test_utils_unittest_helper.cpp: Added.
        (main):
        * util/test_utils_unittest_helper.h: Added.
        * util/util.gni:
        * util/windows/WGLWindow.cpp:
        * util/windows/test_utils_win.cpp:
        (angle::InitCrashHandler):
        (angle::TerminateCrashHandler):
        (angle::LaunchProcess):
        (angle::GetTempDir):
        (angle::CreateTemporaryFileInDir):
        (angle::DeleteFile):
        (angle::NumberOfProcessors):
        * util/windows/win32/Win32Window.cpp:
        (Win32Window::initialize):
        * util/windows/win32/test_utils_win32.cpp:
        (angle::StabilizeCPUForBenchmarking):
        * util/x11/X11Window.h:

2019-12-02  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed WinCairo build fix following r252989.

        * include/CMakeLists.txt:

2019-12-02  Dean Jackson  <dino@apple.com>

        Clean up ANGLE header post-process script
        https://bugs.webkit.org/show_bug.cgi?id=204711

        Reviewed by Tim Horton.

        Since `sed` on macOS requires the in-place argument to have a zero-length string
        to avoid making backups, this script was attempting to pass ''. However, this was
        being evaluated, creating a bunch of files with \'\' suffixes. Fix this by using
        an array when expanding the arguments.

        Also fix a typo where the character "3" was being printed.

        Lastly, only print out the basename of the header file being converted.

        * adjust-angle-include-paths.sh:

2019-11-30  Dean Jackson  <dino@apple.com>

        Build ANGLE as a dynamic library
        https://bugs.webkit.org/show_bug.cgi?id=204708
        rdar://57349384

        Reviewed by Tim Horton.

        Modify ANGLE to build as a dynamic library. My (not thorough) testing suggests
        this will reduce the in-flight binary size on Apple's build systems by at least
        a factor of 10 (it was over 1G). Building release for x86_64-only:
            - Previously: libANGLE.a -- 306 MB
            - Now: libANGLE.dylib -- 6.7 MB

        In order to do this, some symbols needed to be exported from the
        "sh" namespace (which are used in ANGLEWebKitBridge, but not when
        ANGLE's rendering backend is active).

        While here, I turned on some more build options, like ARC.

        * ANGLE.xcodeproj/project.pbxproj: Link with IOKit and IOSurface frameworks, and
        product a dylib product.
        * Configurations/ANGLE.xcconfig: Update the configuration for a dynamic library.
        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:
        * Configurations/Version.xcconfig: Added.
        * Configurations/WebKitTargetConditionals.xcconfig: Added.

        * include/GLSLANG/ShaderLang.h: Add ANGLE_EXPORT to some functions to make
        sure they will be visible in the exported library.
        * include/GLSLANG/ShaderVars.h:
        * src/libANGLE/renderer/gl/cgl/DisplayCGL.mm: Change reinterpret_cast to a normal
        C cast so it can be annotated with __bridge.
        (rx::DisplayCGL::isValidNativeWindow const):
        * src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm: Ditto.
        (rx::WindowSurfaceCGL::WindowSurfaceCGL):
        (rx::WindowSurfaceCGL::~WindowSurfaceCGL):
        * src/libANGLE/renderer/gl/eagl/DisplayEAGL.mm: Ditto.
        * src/libANGLE/renderer/gl/eagl/WindowSurfaceEAGL.mm: Ditto.

2019-12-02  James Darpinian  <jdarpinian@chromium.org>

        Update ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=204595

        Reviewed by Alex Christensen.

        * ANGLE.plist: Updated commit hash.
        * ANGLE.xcodeproj/project.pbxproj: Changes mirroring gn changes upstream.
        * Compiler.cmake: Changes mirroring gn changes upstream.
        * GLESv2.cmake: Changes mirroring gn changes upstream.
        * CMakeLists.txt: Changes mirroring gn changes upstream.

        * Many other files added/removed/changed from upstream.


2019-11-20  ChangSeok Oh  <changseok@webkit.org>

        [GTK] Add ANGLE backend to GTK port
        https://bugs.webkit.org/show_bug.cgi?id=199060

        Reviewed by Žan Doberšek.

        * CMakeLists.txt: When USE_ANGLE_WEBGL is enabled, necessary glesv2 entry points headers
          are installed in the derived source directory. And then adjust-angle-include-path.sh is applied
          to change include paths in the entry points header files.
        * GLESv2.cmake: libglesv2_entry_points_headers is newly defined, which is a gathering of
          entry point headers of libGLESv2.
        * PlatformGTK.cmake: In this file, we append gl and glx related angle code as a build target.
          Since we want gl context and gles context simultaneously, we remove gl prototype calls
          from the generated libGLESv2 library. Instead, we invoke egl and gl calls of ANGLE
          via their non-prototype function names.
        * adjust-angle-include-paths.sh: sed is slightly different in unix and linux systems.
          In particular, its inplace option needs to be changed for better compatibility on linux.
        * include/CMakeLists.txt: ANGLE_WEBGL_HEADERS is newly defined. It gathers header files of ANGLE
          for WebGL support.

2019-11-08  Dean Jackson  <dino@apple.com>

        Add ANGLE backend for iOS device
        https://bugs.webkit.org/show_bug.cgi?id=202159
        <rdar://57000166>

        Build fix. Don't include IOSurface.h on iOS (public SDK doesn't have it).

        * src/libANGLE/renderer/gl/eagl/IOSurfaceSurfaceEAGL.mm:

2019-11-07  Dean Jackson  <dino@apple.com>

        Add ANGLE backend for iOS device
        https://bugs.webkit.org/show_bug.cgi?id=202159
        <rdar://57000166>

        Reviewed by Myles Maxfield.

        Add an OpenGLES backend over EAGL for iOS to ANGLE.

        This is basically a copy of all the files in
        libANGLE/renderer/gl/cgl into libANGLE/renderer/gl/eagl, then with
        modifications to make it work on iOS's OpenGL ES. Most notably,
        some format enums and the manner in which you bind an IOSurface to
        a GL texture are different.

        This introduces a few places where we have to do a compile time
        switch for iOS, some of which might actually be applicable to
        other OpenGL ES backends.

        The biggest missing piece is support for the iOS simulator. At the moment
        this backend relies on an IOSurface binding as a rendering target.
        But the iOS Simulator does not have the required ability to have a
        GL ES texture backed by an IOSurface.

        The WindowSurfaceEAGL code is incomplete, but was not necessary
        in order to get WebGL operational. And even if you are using ANGLE
        directly, you can have the client code render into a CALayer without
        going through the WindowSurface.

        * ANGLE.xcodeproj/project.pbxproj:
        * include/EGL/eglext_angle.h:
        * src/common/PackedEnums.cpp:
        (egl_gl::EGLTextureTargetToTextureType):
        * src/common/platform.h:
        * src/gpu_info_util/SystemInfo_ios.cpp: Added.
        (angle::GetSystemInfo):
        * src/gpu_info_util/SystemInfo_macos.cpp: Renamed from Source/ThirdParty/ANGLE/src/gpu_info_util/SystemInfo_mac.cpp.
        (angle::GetSystemInfo):
        * src/libANGLE/Caps.h:
        * src/libANGLE/Display.cpp:
        * src/libANGLE/formatutils.cpp:
        (gl::BuildInternalFormatInfoMap):
        * src/libANGLE/renderer/gl/cgl/DeviceCGL.cpp:
        * src/libANGLE/renderer/gl/cgl/DisplayCGL.mm:
        * src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.cpp:
        (rx::IOSurfaceSurfaceCGL::bindTexImage):
        * src/libANGLE/renderer/gl/cgl/PbufferSurfaceCGL.cpp:
        * src/libANGLE/renderer/gl/cgl/RendererCGL.cpp:
        * src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm:
        * src/libANGLE/renderer/gl/eagl/ContextEAGL.cpp: Added.
        (rx::ContextEAGL::ContextEAGL):
        * src/libANGLE/renderer/gl/eagl/ContextEAGL.h: Added.
        * src/libANGLE/renderer/gl/eagl/DeviceEAGL.cpp: Added.
        (rx::DeviceEAGL::DeviceEAGL):
        (rx::DeviceEAGL::~DeviceEAGL):
        (rx::DeviceEAGL::initialize):
        (rx::DeviceEAGL::getAttribute):
        (rx::DeviceEAGL::getType):
        (rx::DeviceEAGL::generateExtensions const):
        * src/libANGLE/renderer/gl/eagl/DeviceEAGL.h: Added.
        * src/libANGLE/renderer/gl/eagl/DisplayEAGL.h: Added.
        * src/libANGLE/renderer/gl/eagl/DisplayEAGL.mm: Added.
        (rx::FunctionsGLEAGL::FunctionsGLEAGL):
        (rx::DisplayEAGL::DisplayEAGL):
        (rx::DisplayEAGL::~DisplayEAGL):
        (rx::DisplayEAGL::initialize):
        (rx::DisplayEAGL::terminate):
        (rx::DisplayEAGL::createWindowSurface):
        (rx::DisplayEAGL::createPbufferSurface):
        (rx::DisplayEAGL::createPbufferFromClientBuffer):
        (rx::DisplayEAGL::createPixmapSurface):
        (rx::DisplayEAGL::createContext):
        (rx::DisplayEAGL::createDevice):
        (rx::DisplayEAGL::generateConfigs):
        (rx::DisplayEAGL::testDeviceLost):
        (rx::DisplayEAGL::restoreLostDevice):
        (rx::DisplayEAGL::isValidNativeWindow const):
        (rx::DisplayEAGL::validateClientBuffer const):
        (rx::DisplayEAGL::getVendorString const):
        (rx::DisplayEAGL::getEAGLContext const):
        (rx::DisplayEAGL::getEAGLPixelFormat const):
        (rx::DisplayEAGL::generateExtensions const):
        (rx::DisplayEAGL::generateCaps const):
        (rx::DisplayEAGL::waitClient):
        (rx::DisplayEAGL::waitNative):
        (rx::DisplayEAGL::getMaxSupportedESVersion const):
        (rx::DisplayEAGL::makeCurrentSurfaceless):
        (rx::WorkerContextEAGL::WorkerContextEAGL):
        (rx::WorkerContextEAGL::~WorkerContextEAGL):
        (rx::WorkerContextEAGL::makeCurrent):
        (rx::WorkerContextEAGL::unmakeCurrent):
        (rx::DisplayEAGL::createWorkerContext):
        (rx::DisplayEAGL::initializeFrontendFeatures const):
        (rx::DisplayEAGL::populateFeatureList):
        * src/libANGLE/renderer/gl/eagl/IOSurfaceSurfaceEAGL.h: Added.
        * src/libANGLE/renderer/gl/eagl/IOSurfaceSurfaceEAGL.mm: Copied from Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.cpp.
        (rx::IOSurfaceSurfaceEAGL::IOSurfaceSurfaceEAGL):
        (rx::IOSurfaceSurfaceEAGL::~IOSurfaceSurfaceEAGL):
        (rx::IOSurfaceSurfaceEAGL::initialize):
        (rx::IOSurfaceSurfaceEAGL::makeCurrent):
        (rx::IOSurfaceSurfaceEAGL::unMakeCurrent):
        (rx::IOSurfaceSurfaceEAGL::swap):
        (rx::IOSurfaceSurfaceEAGL::postSubBuffer):
        (rx::IOSurfaceSurfaceEAGL::querySurfacePointerANGLE):
        (rx::IOSurfaceSurfaceEAGL::bindTexImage):
        (rx::IOSurfaceSurfaceEAGL::releaseTexImage):
        (rx::IOSurfaceSurfaceEAGL::setSwapInterval):
        (rx::IOSurfaceSurfaceEAGL::getWidth const):
        (rx::IOSurfaceSurfaceEAGL::getHeight const):
        (rx::IOSurfaceSurfaceEAGL::isPostSubBufferSupported const):
        (rx::IOSurfaceSurfaceEAGL::getSwapBehavior const):
        (rx::IOSurfaceSurfaceEAGL::validateAttributes):
        (rx::IOSurfaceFramebuffer::IOSurfaceFramebuffer):
        (rx::IOSurfaceSurfaceEAGL::createDefaultFramebuffer):
        (rx::IOSurfaceSurfaceEAGL::initializeAlphaChannel):
        (rx::IOSurfaceSurfaceEAGL::hasEmulatedAlphaChannel const):
        * src/libANGLE/renderer/gl/eagl/PbufferSurfaceEAGL.cpp: Copied from Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/PbufferSurfaceCGL.cpp.
        (rx::PbufferSurfaceEAGL::PbufferSurfaceEAGL):
        (rx::PbufferSurfaceEAGL::~PbufferSurfaceEAGL):
        (rx::PbufferSurfaceEAGL::initialize):
        (rx::PbufferSurfaceEAGL::makeCurrent):
        (rx::PbufferSurfaceEAGL::swap):
        (rx::PbufferSurfaceEAGL::postSubBuffer):
        (rx::PbufferSurfaceEAGL::querySurfacePointerANGLE):
        (rx::PbufferSurfaceEAGL::bindTexImage):
        (rx::PbufferSurfaceEAGL::releaseTexImage):
        (rx::PbufferSurfaceEAGL::setSwapInterval):
        (rx::PbufferSurfaceEAGL::getWidth const):
        (rx::PbufferSurfaceEAGL::getHeight const):
        (rx::PbufferSurfaceEAGL::isPostSubBufferSupported const):
        (rx::PbufferSurfaceEAGL::getSwapBehavior const):
        (rx::PbufferSurfaceEAGL::createDefaultFramebuffer):
        * src/libANGLE/renderer/gl/eagl/PbufferSurfaceEAGL.h: Added.
        * src/libANGLE/renderer/gl/eagl/RendererEAGL.cpp: Added.
        (rx::RendererEAGL::RendererEAGL):
        (rx::RendererEAGL::~RendererEAGL):
        (rx::RendererEAGL::createWorkerContext):
        * src/libANGLE/renderer/gl/eagl/RendererEAGL.h: Added.
        * src/libANGLE/renderer/gl/eagl/WindowSurfaceEAGL.h: Added.
        * src/libANGLE/renderer/gl/eagl/WindowSurfaceEAGL.mm: Copied from Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm.
        (-[WebSwapLayer initWithSharedState:withContext:withFunctions:]):
        (-[WebSwapLayer display]):
        (rx::WindowSurfaceEAGL::WindowSurfaceEAGL):
        (rx::WindowSurfaceEAGL::~WindowSurfaceEAGL):
        (rx::WindowSurfaceEAGL::initialize):
        (rx::WindowSurfaceEAGL::makeCurrent):
        (rx::WindowSurfaceEAGL::swap):
        (rx::WindowSurfaceEAGL::postSubBuffer):
        (rx::WindowSurfaceEAGL::querySurfacePointerANGLE):
        (rx::WindowSurfaceEAGL::bindTexImage):
        (rx::WindowSurfaceEAGL::releaseTexImage):
        (rx::WindowSurfaceEAGL::setSwapInterval):
        (rx::WindowSurfaceEAGL::getWidth const):
        (rx::WindowSurfaceEAGL::getHeight const):
        (rx::WindowSurfaceEAGL::isPostSubBufferSupported const):
        (rx::WindowSurfaceEAGL::getSwapBehavior const):
        (rx::WindowSurfaceEAGL::createDefaultFramebuffer):
        * src/libANGLE/renderer/gl/renderergl_utils.cpp:
        (rx::nativegl_gl::GenerateCaps):
        * src/libANGLE/validationES2.cpp:
        (gl::ValidateFramebufferTexture2D):
        * src/libGLESv2/entry_points_egl_ext.cpp:

2019-11-06  Dean Jackson  <dino@apple.com>

        [ANGLE] IOSurfaceSurfaceCGL has format and internalFormat flipped
        https://bugs.webkit.org/show_bug.cgi?id=203911
        <rdar://problem/56954291>

        Reviewed by Simon Fraser.

        Fix a typo where internalFormat and format are used in the
        wrong order. The table of formats also had them backwards.

        * src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.cpp:
        (rx::IOSurfaceSurfaceCGL::bindTexImage):

2019-10-29  Dean Jackson  <dino@apple.com>

        [ANGLE] Put Apple platform compilation guards in a better place
        https://bugs.webkit.org/show_bug.cgi?id=203590
        <rdar://problem/56722345>

        Reviewed by Simon Fraser.

        Move the #define to platform.h.

        * src/common/platform.h:
        * src/libANGLE/renderer/gl/cgl/DeviceCGL.cpp:
        * src/libANGLE/renderer/gl/cgl/DisplayCGL.mm:
        * src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.cpp:
        * src/libANGLE/renderer/gl/cgl/PbufferSurfaceCGL.cpp:
        * src/libANGLE/renderer/gl/cgl/RendererCGL.cpp:
        * src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm:

2019-10-29  Dean Jackson  <dino@apple.com>

        [ANGLE] Window Server blocking stops single GPU systems from creating a CGLPixelFormat
        https://bugs.webkit.org/show_bug.cgi?id=203522
        <rdar://problem/56685302>

        Reviewed by Alex Christensen.

        The Web Content Process blocks access to the Window Server. For that reason, we
        must create all CGLPixelFormats with the "offline renderer" flag, even if we're
        not on a dual-GPU system.

        * src/libANGLE/renderer/gl/cgl/DisplayCGL.mm: Always enable kCGLPFAAllowOfflineRenderers.
        (rx::DisplayCGL::initialize):

2019-10-23  Dean Jackson  <dino@apple.com>

        [ANGLE] Improve compile-time macOS guards and avoid ObjC if possible
        https://bugs.webkit.org/show_bug.cgi?id=203343

        Reviewed by Simon Fraser.

        Use the more official compile-time detection of Apple platforms, so that
        it will be easier to differentiate between macOS and iOS. Also move some
        .mm files to .cpp where possible.

        * ANGLE.xcodeproj/project.pbxproj:
        * src/gpu_info_util/SystemInfo_mac.cpp: Renamed from Source/ThirdParty/ANGLE/src/gpu_info_util/SystemInfo_mac.mm.
        (angle::GetSystemInfo):
        * src/libANGLE/renderer/gl/cgl/DeviceCGL.cpp:
        * src/libANGLE/renderer/gl/cgl/DisplayCGL.mm:
        * src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.cpp: Renamed from Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.mm.
        * src/libANGLE/renderer/gl/cgl/PbufferSurfaceCGL.cpp: Renamed from Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/PbufferSurfaceCGL.mm.
        * src/libANGLE/renderer/gl/cgl/RendererCGL.cpp: Renamed from Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/RendererCGL.mm.
        * src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm:

2019-10-23  Dean Jackson  <dino@apple.com>

        Don't try to compile .inc files in ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=203315

        Reviewed by Simon Fraser.

        These are headers, not files we need to compile directly.

        * ANGLE.xcodeproj/project.pbxproj:

2019-10-15  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed build fix after r251018


        * PlatformFTW.cmake: Add missing dxgi library.

2019-10-12  Stephan Szabo  <stephan.szabo@sony.com>

        Regression (251018): Wincairo build broken: unresolved external symbol
        https://bugs.webkit.org/show_bug.cgi?id=202879

        Reviewed by Alex Christensen.

        * PlatformWin.cmake: Add dxgi library for CreateDXGIFactory1

2019-10-11  Kenneth Russell  <kbr@chromium.org>

        USE_ANGLE=1 build broken with last ANGLE roll
        https://bugs.webkit.org/show_bug.cgi?id=202872

        Add FrameCapture_mock.cpp to Xcode and CMake builds.

        Reviewed by Alex Christensen.

        * ANGLE.xcodeproj/project.pbxproj:
        * CMakeLists.txt:
        * GLESv2.cmake:

2019-10-11  Kenneth Russell  <kbr@chromium.org>

        Roll ANGLE for ETC extensions and EGL_ANGLE_device_cgl
        https://bugs.webkit.org/show_bug.cgi?id=202780

        Roll ANGLE to c5e0ac757a112a24a0118d434e652fd7b558e6a8 via new
        update-angle.sh script.

        Reviewed by Alex Christensen.

        * .gitignore:
        * ANGLE.plist:
        * ANGLE.xcodeproj/project.pbxproj:
        * BUILD.gn:
        * CMakeLists.txt:
        * CONTRIBUTORS:
        * DEPS:
        * GLESv2.cmake:
        * OWNERS:
        * PRESUBMIT.py:
        (_CheckExportValidity):
        (CheckChangeOnUpload):
        (CheckChangeOnCommit):
        * README.md:
        * android/angle_apk.gni:
        * build_overrides/angle.gni:
        * changes.diff:
        * doc/DevSetup.md:
        * dotfile_settings.gni:
        * extensions/ANGLE_compressed_texture_etc.txt: Added.
        * extensions/EGL_ANGLE_device_cgl.txt: Added.
        * extensions/EGL_ANGLE_feature_control.txt:
        * extensions/EGL_ANGLE_platform_angle_d3d11on12.txt: Added.
        * extensions/EGL_ANGLE_platform_angle_device_type_swiftshader.txt: Added.
        * extensions/EGL_ANGLE_platform_angle_metal.txt: Added.
        * gni/angle.gni:
        * include/EGL/eglext_angle.h:
        * include/platform/Feature.h:
        (angle::Feature::Feature):
        * include/platform/FeaturesD3D.h:
        * include/platform/FeaturesGL.h:
        * include/platform/FeaturesVk.h:
        * include/platform/FrontendFeatures.h:
        * samples/WindowTest/WindowTest.cpp:
        * samples/gles1/DrawTexture.cpp:
        * samples/multi_texture/MultiTexture.cpp:
        * samples/multiple_draw_buffers/MultipleDrawBuffers.cpp:
        * samples/particle_system/ParticleSystem.cpp:
        * samples/sample_util/SampleApplication.cpp:
        (SampleApplication::SampleApplication):
        * samples/sample_util/SampleApplication.h:
        * scripts/code_generation_hashes/ANGLE_format.json:
        * scripts/code_generation_hashes/ANGLE_load_functions_table.json:
        * scripts/code_generation_hashes/D3D11_format.json:
        * scripts/code_generation_hashes/DXGI_format.json:
        * scripts/code_generation_hashes/GL_EGL_WGL_loader.json:
        * scripts/code_generation_hashes/GL_EGL_entry_points.json:
        * scripts/code_generation_hashes/OpenGL_dispatch_table.json:
        * scripts/code_generation_hashes/Static_builtins.json:
        * scripts/code_generation_hashes/Vulkan_format.json:
        * scripts/code_generation_hashes/Vulkan_internal_shader_programs.json:
        * scripts/code_generation_hashes/Vulkan_mandatory_format_support_table.json:
        * scripts/code_generation_hashes/proc_table.json:
        * scripts/export_targets.py:
        (has_all_includes):
        * scripts/generate_entry_points.py:
        (get_resource_id_types):
        (format_resource_id_types):
        (write_capture_helper_header):
        (get_resource_id_type_from_param_type):
        (format_param_type_to_resource_id_type_case):
        (format_param_type_resource_id_cases):
        (format_resource_id_type_name_case):
        (write_capture_helper_source):
        * scripts/generate_vulkan_layers_json.py:
        (main):
        * scripts/registry_xml.py:
        * src/common/PackedEnums.cpp:
        (gl::operator<<):
        * src/common/PackedEnums.h:
        (angle::EnumSize<E>):
        (gl::FromGLenum<VertexAttribType>):
        (gl::ToGLenum):
        (gl::ValueEquals):
        (gl::operator==):
        (gl::operator!=):
        * src/common/android_util.cpp:
        (angle::android::NativePixelFormatToGLInternalFormat):
        * src/common/angleutils.h:
        * src/common/debug.h:
        * src/common/platform.h:
        * src/common/system_utils_winuwp.cpp: Added.
        (angle::SetEnvironmentVar):
        (angle::GetEnvironmentVar):
        (angle::GetSharedLibraryExtension):
        (angle::GetPathSeparator):
        (angle::GetCurrentTime):
        (angle::UwpLibrary::UwpLibrary):
        (angle::OpenSharedLibrary):
        (angle::IsDebuggerAttached):
        (angle::BreakDebugger):
        * src/common/tls.cpp:
        (CreateTLSIndex):
        (DestroyTLSIndex):
        (SetTLSValue):
        (GetTLSValue):
        * src/common/tls.h:
        * src/common/utilities.cpp:
        (gl::StripLastArrayIndex):
        * src/common/utilities.h:
        * src/compiler.gni:
        * src/compiler/translator/Compiler.cpp:
        (sh::TCompiler::compileTreeImpl):
        * src/compiler/translator/ImmutableString_ESSL_autogen.cpp:
        * src/compiler/translator/ImmutableString_autogen.cpp:
        * src/compiler/translator/IntermNode.h:
        (sh::TIntermPreprocessorDirective::getDirective const): Deleted.
        (sh::TIntermPreprocessorDirective::getCommand const): Deleted.
        * src/compiler/translator/ParseContext.cpp:
        (sh::TParseContext::TParseContext):
        (sh::TParseContext::checkIsValidArraySize):
        (sh::TParseContext::parseFunctionDeclarator):
        * src/compiler/translator/ParseContext.h:
        (sh::TParseContext::getOutputType const):
        * src/compiler/translator/ShaderVars.cpp:
        (sh::ShaderVariable::operator=):
        * src/compiler/translator/SymbolTable.cpp:
        (sh::TSymbolTable::setGlInArraySize):
        (sh::TSymbolTable::gl_FragData const):
        (sh::TSymbolTable::gl_SecondaryFragDataEXT const):
        (sh::SymbolRule::get const):
        (sh::FindMangledBuiltIn):
        (sh::UnmangledEntry::matches const):
        * src/compiler/translator/SymbolTable.h:
        (sh::SymbolRule::SymbolRule):
        (sh::SymbolRule::Get):
        (sh::UnmangledEntry::UnmangledEntry):
        (sh::SymbolEntry::SymbolEntry): Deleted.
        * src/compiler/translator/SymbolTable_ESSL_autogen.cpp:
        (sh::BuiltInVariable::angle_BaseInstance):
        (sh::BuiltInVariable::angle_BaseVertex):
        (sh::BuiltInVariable::gl_BaseInstance):
        (sh::BuiltInVariable::gl_BaseVertex):
        (sh::BuiltInVariable::gl_DrawID):
        (sh::BuiltInVariable::gl_FragColor):
        (sh::BuiltInVariable::gl_FragCoord):
        (sh::BuiltInVariable::gl_FragDepth):
        (sh::BuiltInVariable::gl_FrontFacing):
        (sh::BuiltInVariable::gl_GlobalInvocationID):
        (sh::BuiltInVariable::gl_InstanceID):
        (sh::BuiltInVariable::gl_InstanceIndex):
        (sh::BuiltInVariable::gl_InvocationID):
        (sh::BuiltInVariable::gl_LastFragColor):
        (sh::BuiltInVariable::gl_LastFragColorARM):
        (sh::BuiltInVariable::gl_Layer):
        (sh::BuiltInVariable::gl_LayerGS):
        (sh::BuiltInVariable::gl_LayerVS):
        (sh::BuiltInVariable::gl_LocalInvocationID):
        (sh::BuiltInVariable::gl_LocalInvocationIndex):
        (sh::BuiltInVariable::gl_NumWorkGroups):
        (sh::BuiltInVariable::gl_PointCoord):
        (sh::BuiltInVariable::gl_PointSize):
        (sh::BuiltInVariable::gl_Position):
        (sh::BuiltInVariable::gl_PrimitiveID):
        (sh::BuiltInVariable::gl_PrimitiveIDGS):
        (sh::BuiltInVariable::gl_PrimitiveIDIn):
        (sh::BuiltInVariable::gl_SecondaryFragColorEXT):
        (sh::BuiltInVariable::gl_VertexID):
        (sh::BuiltInVariable::gl_VertexIndex):
        (sh::BuiltInVariable::gl_ViewID_OVR):
        (sh::BuiltInVariable::gl_ViewportIndex):
        (sh::BuiltInVariable::gl_WorkGroupID):
        (sh::BuiltInVariable::gl_WorkGroupSize):
        (sh::TSymbolTable::initializeBuiltInVariables):
        (sh::TSymbolTable::findBuiltIn const):
        (sh::TSymbolTable::isUnmangledBuiltInName const):
        (sh::TSymbolTable::getSymbol const): Deleted.
        (sh::TSymbolTable::getUnmangled const): Deleted.
        (sh::TSymbolTable::getUnmangledBuiltInForShaderVersion): Deleted.
        * src/compiler/translator/SymbolTable_autogen.cpp:
        (sh::BuiltInVariable::angle_BaseInstance):
        (sh::BuiltInVariable::angle_BaseVertex):
        (sh::BuiltInVariable::gl_BaseInstance):
        (sh::BuiltInVariable::gl_BaseVertex):
        (sh::BuiltInVariable::gl_DrawID):
        (sh::BuiltInVariable::gl_FragColor):
        (sh::BuiltInVariable::gl_FragCoord):
        (sh::BuiltInVariable::gl_FragDepth):
        (sh::BuiltInVariable::gl_FrontFacing):
        (sh::BuiltInVariable::gl_GlobalInvocationID):
        (sh::BuiltInVariable::gl_InstanceID):
        (sh::BuiltInVariable::gl_InstanceIndex):
        (sh::BuiltInVariable::gl_InvocationID):
        (sh::BuiltInVariable::gl_LastFragColor):
        (sh::BuiltInVariable::gl_LastFragColorARM):
        (sh::BuiltInVariable::gl_Layer):
        (sh::BuiltInVariable::gl_LayerGS):
        (sh::BuiltInVariable::gl_LayerVS):
        (sh::BuiltInVariable::gl_LocalInvocationID):
        (sh::BuiltInVariable::gl_LocalInvocationIndex):
        (sh::BuiltInVariable::gl_NumWorkGroups):
        (sh::BuiltInVariable::gl_PointCoord):
        (sh::BuiltInVariable::gl_PointSize):
        (sh::BuiltInVariable::gl_Position):
        (sh::BuiltInVariable::gl_PrimitiveID):
        (sh::BuiltInVariable::gl_PrimitiveIDGS):
        (sh::BuiltInVariable::gl_PrimitiveIDIn):
        (sh::BuiltInVariable::gl_SecondaryFragColorEXT):
        (sh::BuiltInVariable::gl_VertexID):
        (sh::BuiltInVariable::gl_VertexIndex):
        (sh::BuiltInVariable::gl_ViewID_OVR):
        (sh::BuiltInVariable::gl_ViewportIndex):
        (sh::BuiltInVariable::gl_WorkGroupID):
        (sh::BuiltInVariable::gl_WorkGroupSize):
        (sh::TSymbolTable::initializeBuiltInVariables):
        (sh::TSymbolTable::findBuiltIn const):
        (sh::TSymbolTable::isUnmangledBuiltInName const):
        (sh::TSymbolTable::getSymbol const): Deleted.
        (sh::TSymbolTable::getUnmangled const): Deleted.
        (sh::TSymbolTable::getUnmangledBuiltInForShaderVersion): Deleted.
        * src/compiler/translator/SymbolTable_autogen.h:
        * src/compiler/translator/TranslatorVulkan.cpp:
        (sh::TranslatorVulkan::translate):
        * src/compiler/translator/gen_builtin_symbols.py:
        (get_shader_version_for_level):
        (GroupedList.__init__):
        (GroupedList.add_entry):
        (GroupedList.format_rule):
        (GroupedList):
        (GroupedList.format_rules):
        (GroupedList.get_rules):
        (GroupedList.get_names):
        (GroupedList.get_offsets):
        (GroupedList.update_arrays):
        (GroupedList.update_arrays.add_rule):
        (UnmangledGroupedList.add_entry):
        (UnmangledGroupedList.get_array):
        (define_constexpr_variable):
        (process_single_function_group):
        (process_function_group):
        (process_single_variable_group):
        (GroupedList.add_obj): Deleted.
        (GroupedList.get_array): Deleted.
        (UnmangledGroupedList.add_obj): Deleted.
        * src/feature_support_util/feature_support_util.cpp:
        * src/gpu_info_util/SystemInfo_win.cpp:
        (angle::GetSystemInfo):
        * src/image_util/loadimage.cpp:
        (angle::LoadD24S8ToD32F):
        (angle::LoadD32ToD32FX32):
        (angle::LoadD32ToD32F):
        * src/image_util/loadimage.h:
        * src/libANGLE/Buffer.cpp:
        (gl::Buffer::Buffer):
        * src/libANGLE/Buffer.h:
        * src/libANGLE/Caps.cpp:
        (gl::DetermineHalfFloatTextureFilteringSupport):
        (gl::DetermineFloatTextureFilteringSupport):
        (gl::Extensions::setTextureExtensionSupport):
        (gl::GetExtensionInfoMap):
        (egl::DisplayExtensions::getStrings const):
        (egl::DeviceExtensions::getStrings const):
        (egl::ClientExtensions::getStrings const):
        * src/libANGLE/Caps.h:
        * src/libANGLE/Constants.h:
        * src/libANGLE/Context.cpp:
        (gl::Context::Context):
        (gl::Context::initialize):
        (gl::Context::onDestroy):
        (gl::Context::bindImageTexture):
        (gl::Context::getQueryiv):
        (gl::Context::detachTexture):
        (gl::Context::generateSupportedExtensions const):
        (gl::Context::initCaps):
        (gl::Context::onSubjectStateChange):
        (gl::StateCache::updateActiveAttribsMask):
        (gl::StateCache::updateVertexAttribTypesValidation):
        * src/libANGLE/Context.h:
        * src/libANGLE/Device.cpp:
        (egl::Device::getAttribute):
        (egl::Device::getDevice): Deleted.
        * src/libANGLE/Device.h:
        * src/libANGLE/Display.cpp:
        (egl::Display::createContext):
        (egl::GenerateClientExtensions):
        (egl::Display::isValidNativeDisplay):
        (egl::Display::initializeFrontendFeatures):
        (egl::Display::queryStringi):
        * src/libANGLE/ErrorStrings.h:
        * src/libANGLE/Fence.h:
        * src/libANGLE/FrameCapture.cpp:
        (angle::ParamCapture::ParamCapture):
        (angle::ParamCapture::operator=):
        (angle::ParamBuffer::ParamBuffer):
        (angle::ParamBuffer::operator=):
        (angle::ParamBuffer::getParam):
        (angle::ParamBuffer::getParam const):
        (angle::ParamBuffer::addParam):
        (angle::ParamBuffer::addReturnValue):
        (angle::ParamBuffer::getClientArrayPointerParameter):
        (angle::CallCapture::CallCapture):
        (angle::CallCapture::operator=):
        (angle::CallCapture::name const):
        (angle::ReplayContext::ReplayContext):
        (angle::ReplayContext::~ReplayContext):
        (angle::FrameCapture::FrameCapture):
        (angle::FrameCapture::maybeCaptureClientData):
        (angle::FrameCapture::captureCall):
        (angle::FrameCapture::captureUpdateResourceIDs):
        (angle::FrameCapture::maybeUpdateResourceIDs):
        (angle::FrameCapture::captureClientArraySnapshot):
        (angle::FrameCapture::onEndFrame):
        (angle::DataCounters::getAndIncrement):
        (angle::FrameCapture::reset):
        (angle::CaptureGenHandlesImpl):
        (angle::WriteParamValueToStream<ParamType::TBufferID>):
        (angle::WriteParamValueToStream<ParamType::TFenceNVID>):
        (angle::WriteParamValueToStream<ParamType::TFramebufferID>):
        (angle::WriteParamValueToStream<ParamType::TMemoryObjectID>):
        (angle::WriteParamValueToStream<ParamType::TPathID>):
        (angle::WriteParamValueToStream<ParamType::TProgramPipelineID>):
        (angle::WriteParamValueToStream<ParamType::TQueryID>):
        (angle::WriteParamValueToStream<ParamType::TRenderbufferID>):
        (angle::WriteParamValueToStream<ParamType::TSamplerID>):
        (angle::WriteParamValueToStream<ParamType::TSemaphoreID>):
        (angle::WriteParamValueToStream<ParamType::TShaderProgramID>):
        (angle::WriteParamValueToStream<ParamType::TTextureID>):
        (angle::WriteParamValueToStream<ParamType::TTransformFeedbackID>):
        (angle::WriteParamValueToStream<ParamType::TVertexArrayID>):
        (angle::CallCapture::~CallCapture): Deleted.
        (angle::ParamBuffer::~ParamBuffer): Deleted.
        (angle::ParamCapture::~ParamCapture): Deleted.
        (angle::FrameCapture::~FrameCapture): Deleted.
        (angle::FrameCapture::anyClientArray const): Deleted.
        (angle::FrameCapture::saveCapturedFrameAsCpp): Deleted.
        (angle::FrameCapture::getAndIncrementCounter): Deleted.
        (angle::FrameCapture::writeStringPointerParamReplay): Deleted.
        (angle::FrameCapture::writeRenderbufferIDPointerParamReplay): Deleted.
        (angle::FrameCapture::writeBinaryParamReplay): Deleted.
        (angle::FrameCapture::writeCallReplay): Deleted.
        * src/libANGLE/FrameCapture.h:
        (angle::CaptureGenHandles):
        * src/libANGLE/FrameCapture_mock.cpp: Added.
        (angle::CallCapture::~CallCapture):
        (angle::ParamBuffer::~ParamBuffer):
        (angle::ParamCapture::~ParamCapture):
        (angle::FrameCapture::FrameCapture):
        (angle::FrameCapture::~FrameCapture):
        (angle::FrameCapture::onEndFrame):
        (angle::FrameCapture::replay):
        * src/libANGLE/Framebuffer.cpp:
        (gl::Framebuffer::formsRenderingFeedbackLoopWith const):
        (gl::Framebuffer::formsCopyingFeedbackLoopWith const):
        * src/libANGLE/Framebuffer.h:
        * src/libANGLE/FramebufferAttachment.cpp:
        (gl::FramebufferAttachment::getRedSize const):
        (gl::FramebufferAttachment::getGreenSize const):
        (gl::FramebufferAttachment::getBlueSize const):
        (gl::FramebufferAttachment::getAlphaSize const):
        (gl::FramebufferAttachment::getDepthSize const):
        (gl::FramebufferAttachment::getStencilSize const):
        * src/libANGLE/FramebufferAttachment.h:
        * src/libANGLE/GLES1State.cpp:
        (gl::GLES1State::getActiveAttributesMask const):
        * src/libANGLE/GLES1State.h:
        * src/libANGLE/ImageIndex.cpp:
        * src/libANGLE/ImageIndex.h:
        * src/libANGLE/MemoryObject.cpp:
        (gl::MemoryObject::MemoryObject):
        * src/libANGLE/MemoryObject.h:
        * src/libANGLE/MemoryProgramCache.cpp:
        * src/libANGLE/Program.cpp:
        (gl::ProgramBindings::bindLocation):
        (gl::ProgramBindings::getBindingByName const):
        (gl::ProgramBindings::getBinding const):
        (gl::ProgramBindings::begin const):
        (gl::ProgramBindings::end const):
        (gl::ProgramAliasedBindings::ProgramAliasedBindings):
        (gl::ProgramAliasedBindings::~ProgramAliasedBindings):
        (gl::ProgramAliasedBindings::bindLocation):
        (gl::ProgramAliasedBindings::getBindingByName const):
        (gl::ProgramAliasedBindings::getBinding const):
        (gl::ProgramAliasedBindings::begin const):
        (gl::ProgramAliasedBindings::end const):
        (gl::ProgramState::getAttributeLocation const):
        (gl::ProgramState::getFirstAttachedShaderStageType const):
        (gl::ProgramState::getLastAttachedShaderStageType const):
        (gl::Program::getFragmentInputBindingInfo const):
        (gl::Program::link):
        (gl::ProgramState::updateProgramInterfaceInputs):
        (gl::ProgramState::updateProgramInterfaceOutputs):
        (gl::Program::unlink):
        (gl::Program::getActiveAttribute const):
        (gl::Program::getActiveAttributeCount const):
        (gl::Program::getActiveAttributeMaxLength const):
        (gl::Program::getAttributes const):
        (gl::Program::getInputResource const):
        (gl::Program::getInputResourceIndex const):
        (gl::Program::getResourceMaxNameSize const):
        (gl::Program::getInputResourceMaxNameSize const):
        (gl::Program::getOutputResourceMaxNameSize const):
        (gl::Program::getResourceLocation const):
        (gl::Program::getInputResourceLocation const):
        (gl::Program::getOutputResourceLocation const):
        (gl::Program::getOutputResourceIndex const):
        (gl::Program::getResourceName const):
        (gl::Program::getInputResourceName const):
        (gl::Program::getOutputResourceName const):
        (gl::Program::getUniformResourceName const):
        (gl::Program::getBufferVariableResourceName const):
        (gl::Program::getOutputResource const):
        (gl::Program::getUniformLocationBindings const):
        (gl::Program::linkUniforms):
        (gl::Program::linkAttributes):
        (gl::Program::linkValidateGlobalNames const):
        (gl::Program::getMergedVaryings const):
        (gl::Program::linkOutputVariables):
        (gl::Program::serialize const):
        (gl::Program::deserialize):
        * src/libANGLE/Program.h:
        (gl::ProgramVaryingRef::get const):
        * src/libANGLE/ProgramLinkedResources.cpp:
        (gl::UniformLinker::link):
        (gl::UniformLinker::indexUniforms):
        (gl::UniformLinker::gatherUniformLocationsAndCheckConflicts):
        * src/libANGLE/ProgramLinkedResources.h:
        * src/libANGLE/ProgramPipeline.cpp:
        (gl::ProgramPipeline::ProgramPipeline):
        * src/libANGLE/ProgramPipeline.h:
        * src/libANGLE/Query.cpp:
        (gl::Query::Query):
        * src/libANGLE/Query.h:
        * src/libANGLE/RefCountObject.h:
        (gl::RefCountObject::RefCountObject):
        (gl::RefCountObject::id const):
        (gl::BindingPointer::id const):
        * src/libANGLE/Renderbuffer.cpp:
        (gl::Renderbuffer::Renderbuffer):
        (gl::Renderbuffer::getId const):
        * src/libANGLE/Renderbuffer.h:
        * src/libANGLE/Sampler.cpp:
        (gl::Sampler::Sampler):
        * src/libANGLE/Sampler.h:
        * src/libANGLE/Semaphore.cpp:
        (gl::Semaphore::Semaphore):
        * src/libANGLE/Semaphore.h:
        * src/libANGLE/Shader.cpp:
        (gl::Shader::resolveCompile):
        (gl::Shader::getTransformFeedbackVaryingMappedName):
        * src/libANGLE/State.cpp:
        (gl::State::getSamplerTextureId const):
        (gl::State::detachTexture):
        (gl::State::detachSampler):
        (gl::State::detachRenderbuffer):
        (gl::State::removeTransformFeedbackBinding):
        (gl::State::getActiveQueryId const):
        (gl::State::detachBuffer):
        (gl::State::getIntegerv):
        (gl::State::getIntegeri_v):
        (gl::State::syncImages):
        (gl::State::onImageStateChange):
        * src/libANGLE/State.h:
        (gl::State::getSamplerId const):
        (gl::State::getRenderbufferId const):
        * src/libANGLE/Texture.cpp:
        (gl::Texture::Texture):
        (gl::Texture::setStorage):
        (gl::Texture::getId const):
        * src/libANGLE/Texture.h:
        * src/libANGLE/TransformFeedback.cpp:
        (gl::TransformFeedback::TransformFeedback):
        (gl::TransformFeedback::detachBuffer):
        * src/libANGLE/TransformFeedback.h:
        * src/libANGLE/VaryingPacking.cpp:
        (gl::VaryingPacking::collectAndPackUserVaryings):
        (gl::VaryingPacking::packUserVaryings):
        * src/libANGLE/VertexArray.cpp:
        (gl::VertexArray::detachBuffer):
        (gl::VertexArray::bindVertexBufferImpl):
        * src/libANGLE/VertexArray.h:
        * src/libANGLE/capture_gles_2_0_params.cpp:
        (gl::CaptureDeleteBuffers_buffersPacked):
        (gl::CaptureDeleteFramebuffers_framebuffersPacked):
        (gl::CaptureDeleteTextures_texturesPacked):
        (gl::CaptureGenBuffers_buffersPacked):
        (gl::CaptureGenFramebuffers_framebuffersPacked):
        (gl::CaptureGenRenderbuffers_renderbuffersPacked):
        (gl::CaptureGenTextures_texturesPacked):
        (gl::CaptureShaderSource_string):
        * src/libANGLE/capture_gles_3_0_params.cpp:
        (gl::CaptureDeleteQueries_idsPacked):
        (gl::CaptureDeleteSamplers_samplersPacked):
        (gl::CaptureDeleteTransformFeedbacks_idsPacked):
        (gl::CaptureDeleteVertexArrays_arraysPacked):
        (gl::CaptureGenQueries_idsPacked):
        (gl::CaptureGenSamplers_samplersPacked):
        (gl::CaptureGenTransformFeedbacks_idsPacked):
        (gl::CaptureGenVertexArrays_arraysPacked):
        * src/libANGLE/capture_gles_3_1_params.cpp:
        (gl::CaptureDeleteProgramPipelines_pipelinesPacked):
        (gl::CaptureGenProgramPipelines_pipelinesPacked):
        * src/libANGLE/capture_gles_ext_params.cpp:
        (gl::CaptureDeleteQueriesEXT_idsPacked):
        (gl::CaptureGenQueriesEXT_idsPacked):
        * src/libANGLE/features.h:
        * src/libANGLE/formatutils.cpp:
        (gl::UnsizedHalfFloatOESRGBATextureAttachmentSupport):
        (gl::BuildInternalFormatInfoMap):
        (gl::InternalFormat::computeDepthPitch const):
        (gl::GetVertexFormatID):
        (gl::GetVertexFormatFromID):
        (gl::GetVertexFormatSize):
        * src/libANGLE/frame_capture_utils_autogen.cpp:
        (angle::GetResourceIDTypeFromParamType):
        (angle::GetResourceIDTypeName):
        * src/libANGLE/frame_capture_utils_autogen.h:
        * src/libANGLE/queryutils.cpp:
        (gl::GetBufferVariableResourceProperty):
        (gl::QueryProgramResourceLocation):
        (gl::QueryProgramResourceiv):
        (egl::QueryContextAttrib):
        * src/libANGLE/renderer/DeviceImpl.h:
        * src/libANGLE/renderer/Format.h:
        (angle::Format::isVertexTypeHalfFloat const):
        * src/libANGLE/renderer/FormatID_autogen.h:
        * src/libANGLE/renderer/Format_table_autogen.cpp:
        (angle::Format::InternalFormatToID):
        * src/libANGLE/renderer/angle_format.py:
        (gl_format_channels):
        (get_vertex_copy_function):
        * src/libANGLE/renderer/angle_format_map.json:
        * src/libANGLE/renderer/copyvertex.h:
        * src/libANGLE/renderer/copyvertex.inc.h:
        (rx::CopyTo32FVertexData):
        (rx::CopyXYZ10ToXYZW32FVertexData):
        (rx::CopyW2XYZ10ToXYZW32FVertexData):
        * src/libANGLE/renderer/d3d/DeviceD3D.cpp:
        (rx::DeviceD3D::getAttribute):
        (rx::DeviceD3D::getDevice): Deleted.
        * src/libANGLE/renderer/d3d/DeviceD3D.h:
        * src/libANGLE/renderer/d3d/HLSLCompiler.cpp:
        (rx::HLSLCompiler::ensureInitialized):
        (rx::HLSLCompiler::compileToBinary):
        * src/libANGLE/renderer/d3d/ProgramD3D.cpp:
        (rx::ProgramD3D::getVertexExecutableForCachedInputLayout):
        * src/libANGLE/renderer/d3d/RendererD3D.cpp:
        (rx::DefaultGLErrorCode):
        * src/libANGLE/renderer/d3d/ShaderD3D.cpp:
        (rx::ShaderD3D::compile):
        * src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp:
        (rx::Buffer11::getConstantBufferRange):
        (rx::Buffer11::NativeStorage::FillBufferDesc):
        * src/libANGLE/renderer/d3d/d3d11/Context11.cpp:
        (rx::Context11::drawArrays):
        (rx::Context11::drawArraysInstanced):
        (rx::Context11::drawArraysInstancedBaseInstance):
        (rx::Context11::drawArraysIndirect):
        * src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp:
        (rx::DebugAnnotator11::initialize):
        * src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp:
        (rx::Renderer11::Renderer11):
        (rx::Renderer11::initialize):
        (rx::Renderer11::callD3D11On12CreateDevice):
        (rx::Renderer11::initializeD3DDevice):
        (rx::Renderer11::generateDisplayExtensions const):
        (rx::Renderer11::isValidNativeWindow const):
        (rx::Renderer11::createNativeWindow const):
        (rx::Renderer11::drawArrays):
        (rx::Renderer11::release):
        (rx::Renderer11::getShareHandleSupport const):
        (rx::Renderer11::copyImageInternal):
        * src/libANGLE/renderer/d3d/d3d11/Renderer11.h:
        * src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp:
        (rx::TextureStorage11::getSRVForImage):
        (rx::TextureStorage11::getUAVForImage):
        * src/libANGLE/renderer/d3d/d3d11/Trim11.cpp:
        (rx::Trim11::trim):
        (rx::Trim11::registerForRendererTrimRequest):
        (rx::Trim11::unregisterForRendererTrimRequest):
        * src/libANGLE/renderer/d3d/d3d11/Trim11.h:
        * src/libANGLE/renderer/d3d/d3d11/converged/CompositorNativeWindow11.cpp:
        (rx::RoHelper::SupportedWindowsRelease):
        * src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp:
        (rx::d3d11_gl::GenerateCaps):
        (rx::d3d11::InitializeFeatures):
        * src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h:
        * src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.cpp:
        (rx::NativeWindow11WinRT::createSwapChain):
        * src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.h:
        * src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h:
        * src/libANGLE/renderer/d3d/d3d9/renderer9_utils.cpp:
        (rx::d3d9::InitializeFeatures):
        * src/libANGLE/renderer/gen_angle_format_table.py:
        (ceil_int):
        (get_channel_struct):
        (get_mip_generation_function):
        * src/libANGLE/renderer/gl/BlitGL.cpp:
        (rx::BlitGL::copyImageToLUMAWorkaroundTexture):
        (rx::BlitGL::copySubImageToLUMAWorkaroundTexture):
        (rx::BlitGL::blitColorBufferWithShader):
        (rx::BlitGL::copySubTexture):
        (rx::BlitGL::copySubTextureCPUReadback):
        (rx::BlitGL::copyTexSubImage):
        (rx::BlitGL::clearRenderableTexture):
        (rx::BlitGL::clearRenderbuffer):
        (rx::BlitGL::clearFramebuffer):
        (rx::BlitGL::clearRenderableTextureAlphaToOne):
        (rx::BlitGL::initializeResources):
        (rx::BlitGL::orphanScratchTextures):
        (rx::BlitGL::setScratchTextureParameter):
        (rx::BlitGL::getBlitProgram):
        (rx::BlitGL::getBlitProgramType): Deleted.
        * src/libANGLE/renderer/gl/BlitGL.h:
        * src/libANGLE/renderer/gl/ContextGL.cpp:
        (rx::ContextGL::createRenderbuffer):
        (rx::ContextGL::setDrawArraysState):
        (rx::ContextGL::setDrawElementsState):
        (rx::ContextGL::drawArrays):
        (rx::ContextGL::updateAttributesForBaseInstance):
        (rx::ContextGL::resetUpdatedAttributes):
        (rx::ContextGL::drawArraysInstancedBaseInstance):
        (rx::ContextGL::drawElements):
        (rx::ContextGL::drawElementsInstancedBaseVertexBaseInstance):
        (rx::ContextGL::validateState const):
        * src/libANGLE/renderer/gl/ContextGL.h:
        * src/libANGLE/renderer/gl/ProgramGL.cpp:
        (rx::ProgramGL::link):
        * src/libANGLE/renderer/gl/RenderbufferGL.cpp:
        (rx::RenderbufferGL::RenderbufferGL):
        (rx::RenderbufferGL::~RenderbufferGL):
        (rx::RenderbufferGL::onDestroy):
        (rx::RenderbufferGL::setStorage):
        (rx::RenderbufferGL::setStorageMultisample):
        (rx::RenderbufferGL::initializeContents):
        * src/libANGLE/renderer/gl/RenderbufferGL.h:
        * src/libANGLE/renderer/gl/ShaderGL.cpp:
        (rx::ShaderGL::compile):
        * src/libANGLE/renderer/gl/StateManagerGL.cpp:
        (rx::StateManagerGL::bindBufferBase):
        (rx::StateManagerGL::bindBufferRange):
        (rx::StateManagerGL::validateState const):
        * src/libANGLE/renderer/gl/StateManagerGL.h:
        * src/libANGLE/renderer/gl/SurfaceGL.cpp:
        (rx::SurfaceGL::initializeContents):
        * src/libANGLE/renderer/gl/TextureGL.cpp:
        (rx::TextureGL::setImageHelper):
        (rx::TextureGL::setSubImage):
        (rx::TextureGL::setCompressedImage):
        (rx::TextureGL::setCompressedSubImage):
        (rx::TextureGL::copyImage):
        (rx::TextureGL::copySubTextureHelper):
        (rx::TextureGL::setStorage):
        (rx::TextureGL::setImageExternal):
        (rx::TextureGL::setStorageMultisample):
        (rx::TextureGL::setStorageExternalMemory):
        (rx::TextureGL::setEGLImageTarget):
        (rx::TextureGL::setLevelInfo):
        (rx::TextureGL::initializeContents):
        * src/libANGLE/renderer/gl/VertexArrayGL.cpp:
        (rx::VertexArrayGL::streamAttributes const):
        (rx::VertexArrayGL::validateState const):
        * src/libANGLE/renderer/gl/VertexArrayGL.h:
        * src/libANGLE/renderer/gl/cgl/DeviceCGL.cpp: Added.
        (rx::DeviceCGL::DeviceCGL):
        (rx::DeviceCGL::~DeviceCGL):
        (rx::DeviceCGL::initialize):
        (rx::DeviceCGL::getAttribute):
        (rx::DeviceCGL::getType):
        (rx::DeviceCGL::generateExtensions const):
        * src/libANGLE/renderer/gl/cgl/DeviceCGL.h: Added.
        * src/libANGLE/renderer/gl/cgl/DisplayCGL.h:
        * src/libANGLE/renderer/gl/cgl/DisplayCGL.mm:
        (rx::DisplayCGL::createDevice):
        (rx::DisplayCGL::getCGLPixelFormat const):
        (rx::DisplayCGL::generateExtensions const):
        * src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.mm:
        (rx::IOSurfaceSurfaceCGL::initializeAlphaChannel):
        * src/libANGLE/renderer/gl/egl/DisplayEGL.cpp:
        (rx::DisplayEGL::generateExtensions const):
        * src/libANGLE/renderer/gl/glx/DisplayGLX.cpp:
        (rx::DisplayGLX::makeCurrent):
        * src/libANGLE/renderer/gl/glx/WindowSurfaceGLX.cpp:
        (rx::WindowSurfaceGLX::initialize):
        * src/libANGLE/renderer/gl/renderergl_utils.cpp:
        (rx::nativegl_gl::GenerateCaps):
        (rx::nativegl_gl::InitializeFeatures):
        (rx::nativegl_gl::InitializeFrontendFeatures):
        (rx::nativegl::SupportsCompute):
        (rx::nativegl::GetBufferBindingQuery):
        (rx::nativegl::GetBufferBindingString):
        * src/libANGLE/renderer/gl/renderergl_utils.h:
        * src/libANGLE/renderer/load_functions_data.json:
        * src/libANGLE/renderer/load_functions_table_autogen.cpp:
        (angle::GetLoadFunctionsMap):
        * src/libANGLE/renderer/null/DeviceNULL.cpp:
        (rx::DeviceNULL::getAttribute):
        (rx::DeviceNULL::getDevice): Deleted.
        * src/libANGLE/renderer/null/DeviceNULL.h:
        * src/libANGLE/renderer/renderer_utils.cpp:
        (rx::ShouldUseDebugLayers):
        * src/libANGLE/renderer/vulkan/BufferVk.cpp:
        (rx::BufferVk::release):
        (rx::BufferVk::mapRangeImpl):
        (rx::BufferVk::setDataImpl):
        * src/libANGLE/renderer/vulkan/CommandGraph.cpp:
        (rx::vk::CommandGraphResource::CommandGraphResource):
        (rx::vk::CommandGraphResource::~CommandGraphResource):
        (rx::vk::CommandGraphResource::isResourceInUse const):
        (rx::vk::CommandGraphResource::recordCommands):
        (rx::vk::CommandGraphResource::addWriteDependency):
        (rx::vk::CommandGraphResource::addReadDependency):
        (rx::vk::CommandGraphResource::startNewCommands):
        (rx::vk::CommandGraphResource::onWriteImpl):
        (rx::vk::SharedGarbage::SharedGarbage):
        (rx::vk::SharedGarbage::operator=):
        (rx::vk::SharedGarbage::destroyIfComplete):
        (rx::vk::CommandGraph::~CommandGraph):
        (rx::vk::CommandGraph::submitCommands):
        (rx::vk::CommandGraph::releaseResourceUses):
        (rx::vk::CommandGraph::releaseResourceUsesAndUpdateSerials):
        (rx::vk::CommandGraphResource::resetQueueSerial): Deleted.
        * src/libANGLE/renderer/vulkan/CommandGraph.h:
        (rx::vk::CommandGraphResource::getLatestSerial const):
        (rx::vk::CommandGraphResource::hasStartedRenderPass const):
        (rx::vk::CommandGraphResource::updateCurrentAccessNodes):
        (rx::vk::CommandGraphResource::onGraphAccess):
        (rx::vk::CommandGraphResource::appendToStartedRenderPass):
        (rx::vk::CommandGraphResource::renderPassStartedButEmpty const):
        (rx::vk::CommandGraphResource::clearRenderPassColorAttachment):
        (rx::vk::CommandGraphResource::clearRenderPassDepthAttachment):
        (rx::vk::CommandGraphResource::clearRenderPassStencilAttachment):
        (rx::vk::CommandGraphResource::invalidateRenderPassColorAttachment):
        (rx::vk::CommandGraphResource::invalidateRenderPassDepthAttachment):
        (rx::vk::CommandGraphResource::invalidateRenderPassStencilAttachment):
        (rx::vk::CommandGraphResource::getRenderPassRenderArea const):
        (rx::vk::CommandGraphResource::addGlobalMemoryBarrier):
        (rx::vk::CommandGraphResource::hasChildlessWritingNode const):
        (rx::vk::CommandGraph::onResourceUse):
        (rx::vk::CommandGraphResource::getStoredQueueSerial const): Deleted.
        (rx::vk::CommandGraphResource::updateQueueSerial): Deleted.
        * src/libANGLE/renderer/vulkan/ContextVk.cpp:
        (rx::CommandBatch::CommandBatch):
        (rx::CommandBatch::operator=):
        (rx::CommandBatch::destroy):
        (rx::CommandQueue::destroy):
        (rx::CommandQueue::init):
        (rx::CommandQueue::checkCompletedCommands):
        (rx::CommandQueue::releaseToCommandBatch):
        (rx::CommandQueue::clearAllGarbage):
        (rx::CommandQueue::allocatePrimaryCommandBuffer):
        (rx::CommandQueue::releasePrimaryCommandBuffer):
        (rx::CommandQueue::handleDeviceLost):
        (rx::CommandQueue::hasInFlightCommands const):
        (rx::CommandQueue::finishToSerialOrTimeout):
        (rx::CommandQueue::submitFrame):
        (rx::CommandQueue::getLastSubmittedFence const):
        (rx::ContextVk::ContextVk):
        (rx::ContextVk::onDestroy):
        (rx::ContextVk::initialize):
        (rx::ContextVk::setupDraw):
        (rx::ContextVk::setupIndirectDraw):
        (rx::ContextVk::setupIndexedIndirectDraw):
        (rx::ContextVk::setupLineLoopIndexedIndirectDraw):
        (rx::ContextVk::handleDirtyGraphicsVertexBuffers):
        (rx::ContextVk::handleDirtyGraphicsIndexBuffer):
        (rx::ContextVk::submitFrame):
        (rx::ContextVk::flushCommandGraph):
        (rx::ContextVk::synchronizeCpuGpuTime):
        (rx::ContextVk::traceGpuEventImpl):
        (rx::ContextVk::checkCompletedGpuEvents):
        (rx::ContextVk::flushGpuEvents):
        (rx::ContextVk::clearAllGarbage):
        (rx::ContextVk::handleDeviceLost):
        (rx::ContextVk::drawArraysIndirect):
        (rx::ContextVk::drawElementsIndirect):
        (rx::ContextVk::syncState):
        (rx::ContextVk::onMakeCurrent):
        (rx::ContextVk::dispatchComputeIndirect):
        (rx::ContextVk::memoryBarrier):
        (rx::ContextVk::writeAtomicCounterBufferDriverUniformOffsets):
        (rx::ContextVk::updateActiveTextures):
        (rx::ContextVk::updateActiveImages):
        (rx::ContextVk::shouldFlush):
        (rx::ContextVk::flushImpl):
        (rx::ContextVk::finishImpl):
        (rx::ContextVk::isSerialInUse const):
        (rx::ContextVk::checkCompletedCommands):
        (rx::ContextVk::finishToSerial):
        (rx::ContextVk::finishToSerialOrTimeout):
        (rx::ContextVk::getCompatibleRenderPass):
        (rx::ContextVk::getRenderPassWithOps):
        (rx::ContextVk::ensureSubmitFenceInitialized):
        (rx::ContextVk::getNextSubmitFence):
        (rx::ContextVk::getLastSubmittedFence const):
        (rx::ContextVk::getTimestamp):
        (rx::ContextVk::updateDefaultAttribute):
        (rx::ContextVk::waitForSwapchainImageIfNecessary):
        (rx::ContextVk::CommandBatch::CommandBatch): Deleted.
        (rx::ContextVk::CommandBatch::operator=): Deleted.
        (rx::ContextVk::CommandBatch::destroy): Deleted.
        (rx::ContextVk::releaseToCommandBatch): Deleted.
        (rx::ContextVk::recycleCommandBatch): Deleted.
        (rx::ContextVk::getCommandGraph): Deleted.
        * src/libANGLE/renderer/vulkan/ContextVk.h:
        (rx::ContextVk::onVertexAttributeChange):
        (rx::ContextVk::getCurrentQueueSerial const):
        (rx::ContextVk::getLastSubmittedQueueSerial const):
        (rx::ContextVk::getLastCompletedQueueSerial const):
        (rx::ContextVk::addGarbage):
        (rx::ContextVk::getCommandGraph):
        (rx::ContextVk::releaseObject): Deleted.
        * src/libANGLE/renderer/vulkan/DeviceVk.cpp:
        (rx::DeviceVk::getAttribute):
        (rx::DeviceVk::getDevice): Deleted.
        * src/libANGLE/renderer/vulkan/DeviceVk.h:
        * src/libANGLE/renderer/vulkan/DisplayVk.cpp:
        (rx::DisplayVk::generateExtensions const):
        * src/libANGLE/renderer/vulkan/FramebufferVk.cpp:
        (rx::FramebufferVk::destroy):
        (rx::FramebufferVk::invalidate):
        (rx::FramebufferVk::invalidateSub):
        (rx::FramebufferVk::clearImpl):
        (rx::FramebufferVk::getImplementationColorReadType const):
        (rx::FramebufferVk::blitWithCommand):
        (rx::FramebufferVk::blit):
        (rx::FramebufferVk::resolveColorWithCommand):
        (rx::FramebufferVk::readPixelsImpl):
        (rx::FramebufferVk::onScissorChange):
        * src/libANGLE/renderer/vulkan/FramebufferVk.h:
        (rx::FramebufferVk::appendToStartedRenderPass):
        * src/libANGLE/renderer/vulkan/GlslangWrapper.cpp:
        * src/libANGLE/renderer/vulkan/ImageVk.cpp:
        (rx::ImageVk::onDestroy):
        (rx::ImageVk::orphan):
        * src/libANGLE/renderer/vulkan/ImageVk.h:
        * src/libANGLE/renderer/vulkan/MemoryObjectVk.cpp:
        (rx::MemoryObjectVk::createImage):
        * src/libANGLE/renderer/vulkan/OverlayVk.cpp:
        (rx::OverlayVk::createFont):
        (rx::OverlayVk::cullWidgets):
        (rx::OverlayVk::onPresent):
        * src/libANGLE/renderer/vulkan/PersistentCommandPool.cpp:
        (rx::vk::PersistentCommandPool::destroy):
        (rx::vk::PersistentCommandPool::allocate):
        (rx::vk::PersistentCommandPool::alloc): Deleted.
        * src/libANGLE/renderer/vulkan/PersistentCommandPool.h:
        * src/libANGLE/renderer/vulkan/ProgramVk.cpp:
        (rx::ProgramVk::reset):
        (rx::ProgramVk::initDefaultUniformLayoutMapping):
        (rx::ProgramVk::updateDefaultUniformsDescriptorSet):
        (rx::ProgramVk::updateBuffersDescriptorSet):
        (rx::ProgramVk::updateAtomicCounterBuffersDescriptorSet):
        (rx::ProgramVk::updateImagesDescriptorSet):
        (rx::ProgramVk::updateTransformFeedbackDescriptorSetImpl):
        (rx::ProgramVk::updateDescriptorSets):
        * src/libANGLE/renderer/vulkan/ProgramVk.h:
        (rx::ProgramVk::getGraphicsPipeline):
        * src/libANGLE/renderer/vulkan/README.md:
        * src/libANGLE/renderer/vulkan/RenderTargetVk.cpp:
        (rx::RenderTargetVk::RenderTargetVk):
        (rx::RenderTargetVk::init):
        (rx::RenderTargetVk::reset):
        (rx::RenderTargetVk::onColorDraw):
        (rx::RenderTargetVk::onDepthStencilDraw):
        (rx::RenderTargetVk::updateSwapchainImage):
        (rx::RenderTargetVk::getImageForRead):
        (rx::RenderTargetVk::getImageForWrite const):
        (rx::RenderTargetVk::getFetchImageView const): Deleted.
        * src/libANGLE/renderer/vulkan/RenderTargetVk.h:
        * src/libANGLE/renderer/vulkan/RenderbufferVk.cpp:
        (rx::RenderbufferVk::setStorageImpl):
        (rx::RenderbufferVk::setStorageEGLImageTarget):
        (rx::RenderbufferVk::releaseImage):
        * src/libANGLE/renderer/vulkan/RenderbufferVk.h:
        * src/libANGLE/renderer/vulkan/RendererVk.cpp:
        (rx::RendererVk::~RendererVk):
        (rx::RendererVk::onDestroy):
        (rx::RendererVk::notifyDeviceLost):
        (rx::RendererVk::initialize):
        (rx::RendererVk::initializeDevice):
        (rx::RendererVk::initFeatures):
        (rx::RendererVk::queueSubmit):
        (rx::RendererVk::cleanupGarbage):
        (rx::RendererVk::getMaxFenceWaitTimeNs const):
        (rx::RendererVk::onCompletedSerial):
        (rx::RendererVk::nextSerial): Deleted.
        (rx::RendererVk::addGarbage): Deleted.
        * src/libANGLE/renderer/vulkan/RendererVk.h:
        (rx::CollectGarbage):
        (rx::RendererVk::getMaxVertexAttribDivisor const):
        (rx::RendererVk::collectGarbageAndReinit):
        (rx::RendererVk::getCurrentQueueSerial const):
        (rx::RendererVk::getLastSubmittedQueueSerial const):
        (rx::RendererVk::getLastCompletedQueueSerial const):
        (rx::RendererVk::shouldCleanupGarbage):
        * src/libANGLE/renderer/vulkan/SamplerVk.cpp:
        (rx::SamplerVk::onDestroy):
        (rx::SamplerVk::syncState):
        * src/libANGLE/renderer/vulkan/SecondaryCommandBuffer.cpp:
        (rx::vk::priv::SecondaryCommandBuffer::executeCommands):
        (rx::vk::priv::SecondaryCommandBuffer::dumpCommands const):
        * src/libANGLE/renderer/vulkan/SecondaryCommandBuffer.h:
        (rx::vk::priv::SecondaryCommandBuffer::drawIndirect):
        (rx::vk::priv::SecondaryCommandBuffer::drawIndexedIndirect):
        * src/libANGLE/renderer/vulkan/SemaphoreVk.cpp:
        (rx::SemaphoreVk::onDestroy):
        * src/libANGLE/renderer/vulkan/SurfaceVk.cpp:
        (rx::OffscreenSurfaceVk::AttachmentImage::initialize):
        (rx::OffscreenSurfaceVk::AttachmentImage::destroy):
        (rx::OffscreenSurfaceVk::OffscreenSurfaceVk):
        (rx::WindowSurfaceVk::WindowSurfaceVk):
        (rx::WindowSurfaceVk::createSwapChain):
        (rx::WindowSurfaceVk::releaseSwapchainImages):
        (rx::WindowSurfaceVk::destroySwapChainImages):
        (rx::WindowSurfaceVk::present):
        (rx::WindowSurfaceVk::nextSwapchainImage):
        * src/libANGLE/renderer/vulkan/SyncVk.cpp:
        (rx::vk::SyncHelper::SyncHelper):
        (rx::vk::SyncHelper::~SyncHelper):
        (rx::vk::SyncHelper::releaseToRenderer):
        (rx::vk::SyncHelper::initialize):
        (rx::vk::SyncHelper::clientWait):
        (rx::vk::SyncHelper::serverWait):
        (rx::vk::SyncHelper::getStatus):
        (rx::SyncVk::onDestroy):
        (rx::SyncVk::serverWait):
        (rx::EGLSyncVk::onDestroy):
        (rx::EGLSyncVk::serverWait):
        (rx::FenceSyncVk::FenceSyncVk): Deleted.
        (rx::FenceSyncVk::~FenceSyncVk): Deleted.
        (rx::FenceSyncVk::onDestroy): Deleted.
        (rx::FenceSyncVk::initialize): Deleted.
        (rx::FenceSyncVk::clientWait): Deleted.
        (rx::FenceSyncVk::serverWait): Deleted.
        (rx::FenceSyncVk::getStatus): Deleted.
        * src/libANGLE/renderer/vulkan/SyncVk.h:
        * src/libANGLE/renderer/vulkan/TextureVk.cpp:
        (rx::TextureVk::onDestroy):
        (rx::TextureVk::copySubImageImpl):
        (rx::TextureVk::copySubTextureImpl):
        (rx::TextureVk::copySubImageImplWithTransfer):
        (rx::TextureVk::copySubImageImplWithDraw):
        (rx::TextureVk::setStorageExternalMemory):
        (rx::TextureVk::setEGLImageTarget):
        (rx::TextureVk::ensureImageAllocated):
        (rx::TextureVk::setImageHelper):
        (rx::TextureVk::copyImageDataToBufferAndGetData):
        (rx::TextureVk::copyImageDataToBuffer):
        (rx::TextureVk::generateMipmapsWithCPU):
        (rx::TextureVk::generateMipmap):
        (rx::TextureVk::setBaseLevel):
        (rx::TextureVk::changeLevels):
        (rx::TextureVk::bindTexImage):
        (rx::TextureVk::getAttachmentRenderTarget):
        (rx::TextureVk::ensureImageInitialized):
        (rx::TextureVk::initLayerRenderTargets):
        (rx::TextureVk::syncState):
        (rx::TextureVk::getReadImageView const):
        (rx::TextureVk::getFetchImageView const):
        (rx::TextureVk::getLayerLevelDrawImageView):
        (rx::TextureVk::getLayerLevelStorageImageView):
        (rx::TextureVk::initImage):
        (rx::TextureVk::initImageViews):
        (rx::TextureVk::releaseImage):
        (rx::TextureVk::releaseImageViews):
        (rx::TextureVk::releaseStagingBuffer):
        (rx::TextureVk::getLevelCount const):
        (rx::TextureVk::generateMipmapLevelsWithCPU):
        (rx::TextureVk::TextureVkViews::TextureVkViews): Deleted.
        (rx::TextureVk::TextureVkViews::~TextureVkViews): Deleted.
        (rx::TextureVk::TextureVkViews::release): Deleted.
        (rx::TextureVk::init3DRenderTargets): Deleted.
        (rx::TextureVk::initCubeMapRenderTargets): Deleted.
        (rx::TextureVk::getTextureViews const): Deleted.
        (rx::TextureVk::initImageViewImpl): Deleted.
        * src/libANGLE/renderer/vulkan/TextureVk.h:
        (): Deleted.
        * src/libANGLE/renderer/vulkan/TransformFeedbackVk.cpp:
        (rx::TransformFeedbackVk::onBeginOrEnd):
        * src/libANGLE/renderer/vulkan/UtilsVk.cpp:
        (rx::UtilsVk::ensureConvertIndexIndirectResourcesInitialized):
        (rx::UtilsVk::ensureConvertIndexIndirectLineLoopResourcesInitialized):
        (rx::UtilsVk::convertIndexIndirectBuffer):
        (rx::UtilsVk::convertLineLoopIndexIndirectBuffer):
        (rx::UtilsVk::startRenderPass):
        (rx::UtilsVk::clearFramebuffer):
        (rx::UtilsVk::blitResolveImpl):
        (rx::UtilsVk::stencilBlitResolveNoShaderExport):
        (rx::UtilsVk::copyImage):
        (rx::UtilsVk::cullOverlayWidgets):
        (rx::UtilsVk::drawOverlay):
        * src/libANGLE/renderer/vulkan/UtilsVk.h:
        * src/libANGLE/renderer/vulkan/VertexArrayVk.cpp:
        (rx::VertexArrayVk::destroy):
        (rx::VertexArrayVk::convertIndexBufferIndirectGPU):
        (rx::VertexArrayVk::handleLineLoopIndirect):
        (rx::VertexArrayVk::convertVertexBufferCPU):
        (rx::VertexArrayVk::syncDirtyAttrib):
        (rx::VertexArrayVk::updateStreamedAttribs):
        (rx::VertexArrayVk::updateDefaultAttrib):
        (rx::VertexArrayVk::updateClientAttribs): Deleted.
        * src/libANGLE/renderer/vulkan/VertexArrayVk.h:
        (rx::VertexArrayVk::getStreamingVertexAttribsMask const):
        * src/libANGLE/renderer/vulkan/android/HardwareBufferImageSiblingVkAndroid.cpp:
        (rx::HardwareBufferImageSiblingVkAndroid::initImpl):
        (rx::HardwareBufferImageSiblingVkAndroid::release):
        * src/libANGLE/renderer/vulkan/android/HardwareBufferImageSiblingVkAndroid.h:
        * src/libANGLE/renderer/vulkan/doc/FastOpenGLStateTransitions.md:
        * src/libANGLE/renderer/vulkan/doc/FormatTablesAndEmulation.md:
        * src/libANGLE/renderer/vulkan/doc/OpenGLLineSegmentRasterization.md:
        * src/libANGLE/renderer/vulkan/doc/ShaderModuleCompilation.md:
        * src/libANGLE/renderer/vulkan/gen_vk_internal_shaders.py:
        (shader_path):
        * src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000000.inc:
        * src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000001.inc:
        * src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000008.inc:
        * src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000009.inc:
        * src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000018.inc:
        * src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000019.inc:
        * src/libANGLE/renderer/vulkan/shaders/src/ConvertIndex.comp:
        * src/libANGLE/renderer/vulkan/shaders/src/ConvertIndex.comp.json:
        * src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp:
        * src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp.json:
        * src/libANGLE/renderer/vulkan/vk_cache_utils.cpp:
        (rx::vk::GraphicsPipelineDesc::initializePipeline const):
        (rx::vk::GraphicsPipelineDesc::updateVertexInput):
        (rx::vk::PipelineLayoutDesc::updatePushConstantRange):
        (rx::RenderPassCache::addRenderPass):
        (rx::GraphicsPipelineCache::release):
        (rx::GraphicsPipelineCache::insertPipeline):
        * src/libANGLE/renderer/vulkan/vk_cache_utils.h:
        * src/libANGLE/renderer/vulkan/vk_caps_utils.cpp:
        (rx::RendererVk::ensureCapsInitialized const):
        * src/libANGLE/renderer/vulkan/vk_format_map.json:
        * src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp:
        (rx::vk::Format::initialize):
        * src/libANGLE/renderer/vulkan/vk_format_utils.cpp:
        (rx::MapSwizzleState):
        * src/libANGLE/renderer/vulkan/vk_helpers.cpp:
        (rx::vk::DynamicBuffer::allocate):
        (rx::vk::DynamicBuffer::releaseBufferListToRenderer):
        (rx::vk::DynamicBuffer::release):
        (rx::vk::DynamicBuffer::releaseInFlightBuffers):
        (rx::vk::DescriptorPoolHelper::release):
        (rx::vk::LineLoopHelper::LineLoopHelper):
        (rx::vk::LineLoopHelper::streamIndicesIndirect):
        (rx::vk::LineLoopHelper::release):
        (rx::vk::LineLoopHelper::destroy):
        (rx::vk::BufferHelper::init):
        (rx::vk::BufferHelper::release):
        (rx::vk::ImageHelper::ImageHelper):
        (rx::vk::ImageHelper::init):
        (rx::vk::ImageHelper::initExternal):
        (rx::vk::ImageHelper::releaseImage):
        (rx::vk::ImageHelper::releaseStagingBuffer):
        (rx::vk::ImageHelper::destroy):
        (rx::vk::ImageHelper::getBaseLevel):
        (rx::vk::ImageHelper::setBaseAndMaxLevels):
        (rx::vk::ImageHelper::generateMipmapsWithBlit):
        (rx::vk::ImageHelper::removeStagedUpdates):
        (rx::vk::ImageHelper::stageSubresourceUpdate):
        (rx::vk::ImageHelper::stageSubresourceUpdateAndGetData):
        (rx::vk::ImageHelper::stageSubresourceUpdateFromBuffer):
        (rx::vk::ImageHelper::stageSubresourceUpdateFromFramebuffer):
        (rx::vk::ImageHelper::allocateStagingMemory):
        (rx::vk::ImageHelper::flushStagedUpdates):
        (rx::vk::ImageHelper::isUpdateStaged):
        (rx::vk::ImageHelper::SubresourceUpdate::SubresourceUpdate):
        (rx::vk::ImageHelper::SubresourceUpdate::release):
        (rx::vk::FramebufferHelper::release):
        (rx::vk::ShaderProgramHelper::release):
        (rx::vk::DynamicBuffer::releaseBufferListToContext): Deleted.
        (rx::vk::DynamicBuffer::releaseBufferListToDisplay): Deleted.
        (rx::vk::ImageHelper::dumpResources): Deleted.
        * src/libANGLE/renderer/vulkan/vk_helpers.h:
        (rx::vk::ShaderProgramHelper::getShader):
        (rx::vk::ShaderProgramHelper::getGraphicsPipeline):
        * src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp:
        (rx::vk::ShaderLibrary::destroy):
        (rx::vk::ShaderLibrary::getConvertIndexIndirectLineLoop_comp):
        * src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.gni:
        * src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h:
        * src/libANGLE/renderer/vulkan/vk_utils.cpp:
        (rx::HasKhronosValidationLayer):
        (rx::HasStandardValidationLayer):
        (rx::GetAvailableValidationLayers):
        (rx::vk::StagingBuffer::init):
        (rx::vk::StagingBuffer::release):
        (rx::vk::GarbageObject::GarbageObject):
        (rx::vk::GarbageObject::operator=):
        (rx::vk::GarbageObject::destroy):
        (rx::gl_vk::GetSamplerMipmapMode):
        (rx::vk::StagingBuffer::dumpResources): Deleted.
        (rx::vk::GarbageObjectBase::GarbageObjectBase): Deleted.
        (rx::vk::GarbageObjectBase::destroy): Deleted.
        (rx::vk::GarbageObject::destroyIfComplete): Deleted.
        * src/libANGLE/renderer/vulkan/vk_utils.h:
        (rx::vk::GarbageObject::valid const):
        (rx::vk::GarbageObject::Get):
        (rx::vk::GetGarbage):
        (rx::vk::GarbageObjectBase::GarbageObjectBase): Deleted.
        * src/libANGLE/renderer/vulkan/vk_wrapper.h:
        (rx::vk::WrappedObject::getHandle const):
        (rx::vk::WrappedObject::valid const):
        (rx::vk::WrappedObject::ptr const):
        (rx::vk::WrappedObject::release):
        (rx::vk::WrappedObject::WrappedObject):
        (rx::vk::WrappedObject::~WrappedObject):
        (rx::vk::WrappedObject::operator=):
        (rx::vk::priv::CommandBuffer::SupportsQueries):
        (rx::vk::priv::CommandBuffer::getMemoryUsageStats const):
        (rx::vk::priv::CommandBuffer::drawIndexedIndirect):
        (rx::vk::priv::CommandBuffer::drawIndirect):
        (rx::vk::WrappedObject::dumpResources): Deleted.
        (rx::vk::priv::CommandBuffer::getMemoryUsageStats): Deleted.
        * src/libANGLE/validationEGL.cpp:
        (egl::ValidateCreateContext):
        (egl::ValidateMakeCurrent):
        (egl::ValidateCompatibleSurface):
        (egl::ValidateStreamConsumerGLTextureExternalKHR):
        (egl::ValidateStreamConsumerGLTextureExternalAttribsNV):
        (egl::ValidateQueryStringiANGLE):
        (egl::ValidateCompatibleConfigs): Deleted.
        * src/libANGLE/validationEGL.h:
        * src/libANGLE/validationES.cpp:
        (gl::ValidateRenderbufferStorageParametersBase):
        (gl::ValidateTexStorageMultisample):
        * src/libANGLE/validationES.h:
        (gl::ValidateVertexFormat):
        * src/libANGLE/validationES2.cpp:
        (gl::ValidateES2TexStorageParameters):
        * src/libANGLE/validationES3.cpp:
        (gl::ValidateES3TexStorageParametersBase):
        * src/libANGLE/validationES31.cpp:
        (gl::err::ValidateProgramResourceIndex):
        * src/libGLESv2.gni:
        * src/libGLESv2/entry_points_egl_ext.cpp:
        * src/tests/BUILD.gn:
        * src/tests/angle_deqp_tests_main.cpp:
        (main):
        * src/tests/angle_end2end_tests.gni:
        * src/tests/compiler_tests/DebugShaderPrecision_test.cpp:
        (TEST_F):
        * src/tests/compiler_tests/ImmutableString_test_ESSL_autogen.cpp:
        (sh::TEST):
        * src/tests/compiler_tests/ImmutableString_test_autogen.cpp:
        (sh::TEST):
        * src/tests/compiler_tests/QualificationOrder_test.cpp:
        (TEST_F):
        * src/tests/deqp_support/angle_deqp_gtest.cpp:
        (angle::InitTestHarness):
        * src/tests/deqp_support/angle_deqp_libtester_main.cpp:
        * src/tests/deqp_support/deqp_egl_TestExpectations: Removed.
        * src/tests/deqp_support/deqp_gles2_TestExpectations: Removed.
        * src/tests/deqp_support/deqp_gles31_TestExpectations: Removed.
        * src/tests/deqp_support/deqp_gles3_TestExpectations: Removed.
        * src/tests/deqp_support/deqp_khr_gles2_TestExpectations: Removed.
        * src/tests/deqp_support/deqp_khr_gles31_TestExpectations: Removed.
        * src/tests/deqp_support/deqp_khr_gles3_TestExpectations: Removed.
        * src/tests/deqp_support/tcuANGLENativeDisplayFactory.cpp:
        * src/tests/deqp_support/tcuANGLEPlatform.cpp:
        (tcu::ANGLEPlatform::ANGLEPlatform):
        * src/tests/deqp_support/tes31Context_override.cpp:
        (deqp::gles31::Context::Context):
        (deqp::gles31::Context::~Context):
        (deqp::gles31::Context::createRenderContext):
        (deqp::gles31::Context::destroyRenderContext):
        (deqp::gles31::Context::getRenderTarget const):
        * src/tests/egl_tests/EGLDeviceCGLTest.cpp: Added.
        (EGLDeviceCGLQueryTest::EGLDeviceCGLQueryTest):
        (TEST_P):
        * src/tests/egl_tests/EGLDirectCompositionTest.cpp:
        * src/tests/egl_tests/EGLFeatureControlTest.cpp:
        (TEST_P):
        * src/tests/egl_tests/EGLNoConfigContextTest.cpp: Added.
        (EGLNoConfigContextTest::EGLNoConfigContextTest):
        (TEST_P):
        * src/tests/gl_tests/BlendFuncExtendedTest.cpp:
        (angle::EXTBlendFuncExtendedDrawTestES3::LinkProgram):
        * src/tests/gl_tests/ComputeShaderTest.cpp:
        * src/tests/gl_tests/CopyTexImageTest.cpp:
        (angle::TEST_P):
        * src/tests/gl_tests/CopyTextureTest.cpp:
        (angle::CopyTextureVariationsTest::initializeSourceTexture):
        (angle::CopyTextureVariationsTest::testCopyTexture):
        (angle::CopyTextureVariationsTest::testCopySubTexture):
        (angle::TEST_P):
        * src/tests/gl_tests/DrawBaseVertexBaseInstanceTest.cpp:
        (angle::DrawBaseVertexBaseInstanceTest::DrawBaseVertexBaseInstanceTest):
        (angle::DrawBaseVertexBaseInstanceTest::vertexShaderSource300):
        * src/tests/gl_tests/FramebufferTest.cpp:
        (TEST_P):
        * src/tests/gl_tests/GLSLTest.cpp:
        * src/tests/gl_tests/IndexBufferOffsetTest.cpp:
        * src/tests/gl_tests/InstancingTest.cpp:
        * src/tests/gl_tests/LineLoopTest.cpp:
        (LineLoopTest::checkPixels):
        (LineLoopTest::runTest):
        (LineLoopIndirectTest::runTest):
        (TEST_P):
        * src/tests/gl_tests/LinkAndRelinkTest.cpp:
        (angle::TEST_P):
        * src/tests/gl_tests/MipmapTest.cpp:
        * src/tests/gl_tests/OcclusionQueriesTest.cpp:
        * src/tests/gl_tests/ParallelShaderCompileTest.cpp:
        (angle::ParallelShaderCompileTest::TaskRunner::run):
        * src/tests/gl_tests/ProgramInterfaceTest.cpp:
        * src/tests/gl_tests/SimpleOperationTest.cpp:
        * src/tests/gl_tests/StateChangeTest.cpp:
        * src/tests/gl_tests/TextureTest.cpp:
        (angle::SliceFormatColor):
        (angle::SliceFormatColor32F):
        * src/tests/gl_tests/TimerQueriesTest.cpp:
        * src/tests/gl_tests/UniformBufferTest.cpp:
        * src/tests/gl_tests/VertexAttributeTest.cpp:
        (angle::TypeStride):
        (angle::Normalize10):
        (angle::Normalize2):
        (angle::Pack1010102):
        (angle::VertexAttributeTest::checkPixels):
        (angle::VertexAttributeTest::checkRGBPixels):
        (angle::VertexAttributeTest::runTest):
        (angle::TEST_P):
        * src/tests/gles1_conformance_tests/ConformanceTests.cpp:
        (angle::TEST_P):
        * src/tests/perf_tests/ANGLEPerfTest.cpp:
        * src/tests/perf_tests/DrawCallPerf.cpp:
        (angle::DrawArraysPerfParams::DrawArraysPerfParams): Deleted.
        (angle::DrawArraysPerfParams::story const): Deleted.
        (angle::operator<<): Deleted.
        (angle::CreateSimpleTexture2D): Deleted.
        (angle::DrawCallPerfBenchmark::DrawCallPerfBenchmark): Deleted.
        (angle::DrawCallPerfBenchmark::initializeBenchmark): Deleted.
        (): Deleted.
        * src/tests/perf_tests/EGLMakeCurrentPerf.cpp:
        * src/tests/perf_tests/LinkProgramPerfTest.cpp:
        (angle::TEST_P):
        * src/tests/perf_tests/MultiviewPerf.cpp:
        (angle::MultiviewCPUBoundBenchmark::initializeBenchmark):
        (angle::MultiviewGPUBoundBenchmark::initializeBenchmark):
        (angle::TEST_P):
        * src/tests/perf_tests/UniformsPerf.cpp:
        (TEST_P):
        * src/tests/perf_tests/VulkanPipelineCachePerf.cpp:
        (rx::VulkanPipelineCachePerfTest::step):
        * src/tests/perf_tests/glmark2Benchmark.cpp:
        * src/tests/test_expectations/GPUTestConfig.cpp:
        (angle::GPUTestConfig::GPUTestConfig):
        * src/tests/test_expectations/GPUTestConfig.h:
        * src/tests/test_expectations/GPUTestExpectationsParser.cpp:
        (angle::GPUTestExpectationsParser::parseLine):
        * src/tests/test_utils/ANGLETest.cpp:
        * src/tests/test_utils/ANGLETest.h:
        * src/tests/test_utils/angle_test_configs.cpp:
        (angle::PlatformParameters::initDefaultParameters):
        (angle::operator<<):
        (angle::egl_platform::VULKAN_SWIFTSHADER):
        (angle::ES2_VULKAN_SWIFTSHADER):
        * src/tests/test_utils/angle_test_configs.h:
        * src/tests/test_utils/angle_test_instantiate.cpp:
        (angle::IsWindows7):
        * src/tests/test_utils/angle_test_instantiate.h:
        * src/third_party/compiler/README.chromium:
        * third_party/vulkan-headers/BUILD.gn: Removed.
        * third_party/vulkan-headers/vulkan_headers_script_deps.gni: Removed.
        * third_party/vulkan-loader/BUILD.gn:
        * third_party/vulkan-tools/BUILD.gn: Removed.
        * third_party/vulkan-validation-layers/BUILD.gn: Removed.
        * third_party/vulkan-validation-layers/dummy_spirv_tools_commit_id.h: Removed.
        * util/EGLWindow.cpp:
        * util/fuchsia/ScenicWindow.cpp:
        (ScenicWindow::resetNativeWindow):
        * util/posix/crash_handler_posix.cpp: Renamed from Source/ThirdParty/ANGLE/util/posix/Posix_crash_handler.cpp.
        * util/posix/test_utils_posix.cpp: Renamed from Source/ThirdParty/ANGLE/util/posix/Posix_system_utils.cpp.
        * util/test_utils.h: Renamed from Source/ThirdParty/ANGLE/util/system_utils.h.
        * util/util.gni:
        * util/util_gl.h:
        * util/windows/WGLWindow.cpp:
        * util/windows/test_utils_win.cpp: Renamed from Source/ThirdParty/ANGLE/util/windows/Windows_system_utils.cpp.
        (angle::PrintStackBacktrace):
        * util/windows/win32/test_utils_win32.cpp: Renamed from Source/ThirdParty/ANGLE/util/windows/win32/Win32_system_utils.cpp.
        * util/x11/X11Window.cpp:

2019-10-01  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo][Clang][ANGLE] global_state.cpp(39,1): error: static_assert failed due to requirement 'std::is_trivially_constructible<std::atomic<std::mutex *>>::value' "global mutex is not trivially constructible"
        https://bugs.webkit.org/show_bug.cgi?id=201751

        Reviewed by Alex Christensen.

        Clang-cl couldn't compile the latest ANGLE with MS STL owing to a
        static_assert failure.

        Fix it by cherri-picking the upstream fix.
        <https://chromium.googlesource.com/angle/angle/+/755417dd79071d6149c81418e1404b0c61d19672>

        * AUTHORS:
        * src/common/angleutils.h:
        * src/libGLESv2/global_state.cpp:

2019-09-24  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] ANGLE's eglplatform.h is build broken with -DENABLE_X11_PLATFORM=OFF
        https://bugs.webkit.org/show_bug.cgi?id=198621

        Reviewed by Carlos Garcia Campos.

        * PlatformGTK.cmake: Define WL_EGL_PLATFORM to prefer Wayland type
        definitions with ENABLE_WAYLAND_TARGET=ON and ENABLE_X11_TARGET=OFF
        to avoid ANGLE's eglplatform.h from trying to include the X11 headers.

2019-09-16  James Darpinian  <jdarpinian@chromium.org>

        Remove commit.h copying build steps
        https://bugs.webkit.org/show_bug.cgi?id=201785

        Reviewed by Alex Christensen.

        * ANGLE.xcodeproj/project.pbxproj: Remove leftover build step
        * CMakeLists.txt: Remove commit.h copying
        * src/common/version.h: Restore to upstream version
        * src/id/commit.h: Added.
        * update-angle.sh: Copy commit.h to id/commit.h at import time

2019-09-12  James Darpinian  <jdarpinian@chromium.org>

        Update ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=201156

        Reviewed by Alex Christensen.

        Update to 2019-9-9, revision 79ad0411911b2fc84834c3705f55707be9e4b498
        I merged a bunch of changes to upstream ANGLE, to minimize the changes
        necessary when updating ANGLE in WebKit.

        * ANGLE.plist: Update commit hashes
        * ANGLE.txt: Removed in favor of LICENSE
        * ANGLE.xcodeproj/project.pbxproj: Updated with upstream changes
          Also, copy src/commit.h to id/commit.h during build
        * CMakeLists.txt: Updated with upstream changes
          Also, copy src/commit.h to id/commit.h during build
        * Compiler.cmake: Updated with upstream changes
        * GLESv2.cmake: Updated with upstream changes
        * adjust-angle-include-paths-rule: Support "" as well as <> for includes
        * adjust-angle-include-paths.sh: Support "" as well as <> for includes
        * changes.diff: Pared down to just legal disclaimer and warning flag changes
        * update-angle.sh: Update ANGLE.plist

        * Many other files modified/added/removed upstream

2019-09-11  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r249791.

        Breaks internal production builds.

        Reverted changeset:

        "Update ANGLE"
        https://bugs.webkit.org/show_bug.cgi?id=201156
        https://trac.webkit.org/changeset/249791

2019-09-11  James Darpinian  <jdarpinian@chromium.org>

        Update ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=201156

        Reviewed by Alex Christensen.

        Update to 2019-9-9, revision 79ad0411911b2fc84834c3705f55707be9e4b498
        I merged a bunch of changes to upstream ANGLE, to minimize the changes
        necessary when updating ANGLE in WebKit.

        * ANGLE.plist: Update commit hashes
        * ANGLE.txt: Removed in favor of LICENSE
        * ANGLE.xcodeproj/project.pbxproj: Updated with upstream changes
        Also, copy src/commit.h to id/commit.h during build
        * CMakeLists.txt: Updated with upstream changes
        Also, copy src/commit.h to id/commit.h during build
        * Compiler.cmake: Updated with upstream changes
        * GLESv2.cmake: Updated with upstream changes
        * adjust-angle-include-paths-rule: Support "" as well as <> for includes
        * adjust-angle-include-paths.sh: Support "" as well as <> for includes
        * changes.diff: Pared down to just legal disclaimer and warning flag changes
        * update-angle.sh: Update ANGLE.plist

        * Many other files modified/added/removed upstream

2019-08-29  Keith Rollin  <krollin@apple.com>

        Update .xcconfig symbols to reflect the current set of past and future product versions.
        https://bugs.webkit.org/show_bug.cgi?id=200720
        <rdar://problem/54305032>

        Reviewed by Alex Christensen.

        Remove version symbols related to old OS's we no longer support,
        ensure that version symbols are defined for OS's we do support.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:

2019-08-26  James Darpinian  <jdarpinian@google.com>

        Add a script to update ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=201109

        Reviewed by Alex Christensen.

        * update-angle.sh: Added.

2019-08-16  Keith Rollin  <krollin@apple.com>

        Add XCBuild support to ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=200836
        <rdar://problem/54410420>

        Reviewed by Alex Christensen.

        The ANGLE Xcode project contains two Build Phases: one that copies
        some headers, and another that modifies those headers. This
        combination does not work with XCBuild, which gets confused when it
        finds that headers that it's copied have been changed. When it detects
        this, XCBuild thinks that it should recopy those headers on the next
        build, causing their modification dates to change and for all
        dependent files to be rebuilt. This essentially turns an incremental
        rebuild into a full rebuild.

        Address this problem by using a new facility in Xcode 11. This
        facility supports the copying and modifying headers files in a single
        step. It is achieved by first enabling the facility by setting
        APPLY_RULES_IN_COPY_HEADERS to YES. Next, we add a new Build Rule that
        invokes a custom script when the header files are copied. Third, we
        provide this script, which can essentially be a stripped down version
        of the one already used to modify the exported headers files. Finally,
        we disable the use of that old script when we are using Xcode 11. In
        this way, the old script that modifies the exported headers is used in
        Xcode 10, and the new facility is used in Xcode 11.

        See also Bug 197340 for where this process was also applied to
        JavaScriptCore, WebKit, and WebKitLegacy.

        * ANGLE.xcodeproj/project.pbxproj:
        * Configurations/ANGLE.xcconfig:
        * adjust-angle-include-paths-rule: Added.

2019-08-08  Brent Fulgham  <bfulgham@apple.com>

        [FTW] Get WebKit, WebKit2, and MiniBrowser building and executing
        https://bugs.webkit.org/show_bug.cgi?id=200539

        Reviewed by Dean Jackson.

        * PlatformFTW.cmake: Added.

2019-07-17  Kenneth Russell  <kbr@chromium.org>

        Make ANGLE work inside WebKit2's sandbox
        https://bugs.webkit.org/show_bug.cgi?id=199844

        Reviewed by Alex Christensen.

        Cherry-pick fix for crbug.com/angleproject/3383 to eliminate use
        of deprecated API in SystemInfo_mac.mm.

        * BUILD.gn:
        * src/gpu_info_util/SystemInfo.cpp:
        (angle::FindActiveGPU):
        (angle::PrintSystemInfo):
        (angle::FindPrimaryGPU): Deleted.
        * src/gpu_info_util/SystemInfo.h:
        * src/gpu_info_util/SystemInfo_internal.h:
        * src/gpu_info_util/SystemInfo_linux.cpp:
        (angle::GetSystemInfo):
        * src/gpu_info_util/SystemInfo_mac.mm:
        (angle::GetSystemInfo):
        * src/gpu_info_util/SystemInfo_win.cpp:
        (angle::GetSystemInfo):
        * src/tests/BUILD.gn:
        * src/tests/test_expectations/GPUTestConfig.cpp:
        * src/tests/test_utils/angle_test_instantiate.cpp:
        (angle::IsConfigWhitelisted):

2019-07-10  Alex Christensen  <achristensen@webkit.org>

        Allow CMake to build WebCore on Mac
        https://bugs.webkit.org/show_bug.cgi?id=198979

        Reviewed by Don Olmstead.

        * include/GLSLANG/ShaderLang.h:

2019-07-10  Kenneth Russell  <kbr@chromium.org>

        Hook up WebGL's back buffer in ANGLE backend on macOS
        https://bugs.webkit.org/show_bug.cgi?id=198982

        Reviewed by Alex Christensen.

        Add source files needed to implement and call ANGLE extensions, and
        export headers necessary for those extensions. Update the script which
        adjusts include paths to handle the new headers.

        Cherry-pick fix for ANGLE bug crbug.com/angleproject/3669 to support
        antialias:true for ANGLE-backed WebGL contexts.

        * ANGLE.xcodeproj/project.pbxproj:
        * adjust-angle-include-paths.sh:
        * src/libANGLE/FramebufferAttachment.cpp:
        (gl::FramebufferAttachment::getTextureImageIndex const): Deleted.
        * src/libANGLE/FramebufferAttachment.h:
        (gl::FramebufferAttachment::getTextureImageIndex const):
        * src/libANGLE/validationES2.cpp:
        (gl::ValidateBlitFramebufferANGLE):

2019-06-27  Beth Dakin  <bdakin@apple.com>

        Upstream use of MACCATALYST
        https://bugs.webkit.org/show_bug.cgi?id=199245
        rdar://problem/51687723

        Reviewed by Tim Horton.

        * Configurations/SDKVariant.xcconfig:

2019-06-25  Kenneth Russell  <kbr@chromium.org>

        Script which adjusts include paths in ANGLE's copied headers breaks incremental builds
        https://bugs.webkit.org/show_bug.cgi?id=199212

        Reviewed by Darin Adler.

        Maintain and test a timestamp in adjust-angle-include-paths.sh
        in order to avoid touching the headers during each build.

        * adjust-angle-include-paths.sh:

2019-06-25  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r246825.

        Breaks internal builds.

        Reverted changeset:

        "Script which adjusts include paths in ANGLE's copied headers
        breaks incremental builds"
        https://bugs.webkit.org/show_bug.cgi?id=199212
        https://trac.webkit.org/changeset/246825

2019-06-25  Kenneth Russell  <kbr@chromium.org>

        Script which adjusts include paths in ANGLE's copied headers breaks incremental builds
        https://bugs.webkit.org/show_bug.cgi?id=199212

        Reviewed by Darin Adler.

        Maintain and test a timestamp in adjust-angle-include-paths.sh
        in order to avoid touching the headers during each build.

        * adjust-angle-include-paths.sh:

2019-06-18  Kenneth Russell  <kbr@chromium.org>

        Add preliminary ANGLE backend to WebCore
        https://bugs.webkit.org/show_bug.cgi?id=197755

        Reviewed by Dean Jackson.

        Add a build step which processes ANGLE's copied public headers so they
        can all be referred to under the <ANGLE/xyz.h> prefix. This avoids
        touching ANGLE's headers and allows WebCore to include them with no
        additional include path modifications.

        * ANGLE.xcodeproj/project.pbxproj:
        * adjust-angle-include-paths.sh: Added.

2019-06-17  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r246501.

        Breaks Apple internal builds.

        Reverted changeset:

        "Support using ANGLE as the backend for the WebGL
        implementation"
        https://bugs.webkit.org/show_bug.cgi?id=197755
        https://trac.webkit.org/changeset/246501

2019-06-17  Kenneth Russell  <kbr@chromium.org>

        Support using ANGLE as the backend for the WebGL implementation
        https://bugs.webkit.org/show_bug.cgi?id=197755

        Reviewed by Dean Jackson.

        Add a build step which processes ANGLE's copied public headers so they
        can all be referred to under the <ANGLE/xyz.h> prefix. This avoids
        touching ANGLE's headers and allows WebCore to include them with no
        additional include path modifications.

        * ANGLE.xcodeproj/project.pbxproj:
        * adjust-angle-include-paths.sh: Added.

2019-06-12  Justin Fan  <justin_fan@apple.com>

        [WebGL] ANGLE Extension directive location incorrectly enforced for webgl 1.0
        https://bugs.webkit.org/show_bug.cgi?id=198811

        Reviewed by Dean Jackson.

        Apply ANGLE change from https://chromium-review.googlesource.com/c/angle/angle/+/1648661 to
        prevent enforcing ESSL late extension rule on WebGL 1.0 shaders.

        * src/compiler/preprocessor/DiagnosticsBase.cpp:
        (angle::pp::Diagnostics::message):
        * src/compiler/preprocessor/DiagnosticsBase.h:
        * src/compiler/preprocessor/DirectiveParser.cpp:
        (angle::pp::DirectiveParser::parseExtension):

2019-05-23  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Use target oriented design for bmalloc
        https://bugs.webkit.org/show_bug.cgi?id=198046

        Reviewed by Konstantin Tokarev.

        Remove WEBKIT_COPY_FILES from CMakelists.txt now that it is in WebKitMacros.

        * CMakeLists.txt:

2019-05-14  Miguel Gomez  <magomez@igalia.com>

        REGRESSION(r245088): [GTK] Several WebGL tests failing
        https://bugs.webkit.org/show_bug.cgi?id=197880

        Reviewed by Carlos Garcia Campos.

        Enable GLSL compiler output for WebKitGTK.

        * PlatformGTK.cmake: Added.

2019-05-13  Alex Christensen  <achristensen@webkit.org>

        Build more ANGLE files
        https://bugs.webkit.org/show_bug.cgi?id=197787

        Reviewed by Simon Fraser.

        * ANGLE.xcodeproj/project.pbxproj:
        * src/gpu_info_util/SystemInfo.cpp:
        (angle::ParseMacMachineModel):
        * src/gpu_info_util/SystemInfo_mac.mm:
        (angle::GetSystemInfo):
        * src/libANGLE/renderer/gl/cgl/DisplayCGL.mm:
        * src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.mm:
        (rx::IOSurfaceSurfaceCGL::IOSurfaceSurfaceCGL):
        (rx::IOSurfaceSurfaceCGL::validateAttributes):
        * src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.h:
        * src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm:
        (rx::WindowSurfaceCGL::initialize):
        (-[SwapLayer initWithSharedState:withContext:withFunctions:]): Deleted.

2019-05-10  Michael Catanzaro  <mcatanzaro@igalia.com>

        Fix a bunch of compiler warnings
        https://bugs.webkit.org/show_bug.cgi?id=197785

        Reviewed by Don Olmstead.

        Add compiler flags to suppress various warnings triggered by the new version of ANGLE.

        * CMakeLists.txt:

2019-05-09  Don Olmstead  <don.olmstead@sony.com>

        [ANGLE] Update ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=197676
        <rdar://problem/50609501>

        Reviewed by Alex Christensen.

        * changes.diff:
        Updated with all the previous fixes.
        * include/EGL/eglplatform.h:
        Use the more generic name USE_SYSTEM_EGL not USE_WPE.
        * src/common/debug.h:
        Fix a stray COMPILER_GCC to be __GNUC__.

2019-05-08  Alex Christensen  <achristensen@webkit.org>

        Fix internal and Windows builds.

        * ANGLE.txt: Added.
        Restore this file.  It was deleted, but it's needed.
        * GLESv2.cmake:
        It turns out CompositorNativeWindow11.cpp and Renderer11.cpp are needed, but the bot doesn't seem to have the right SDK.

2019-05-08  Alex Christensen  <achristensen@webkit.org>

        Fix High Sierra and Windows builds.

        * GLESv2.cmake:
        CompositorNativeWindow11.cpp was also having a hard time compiling on the bots.
        * src/libANGLE/validationES3.cpp:
        (gl::ValidateBindFragDataLocationIndexedEXT):
        Remove a check for if an unsigned integer is less than 0.

2019-05-08  Alex Christensen  <achristensen@webkit.org>

        Fix High Sierra and Windows builds.

        * src/common/utilities.cpp:
        (gl::priv::gLineModes):
        * src/common/utilities.h:
        (gl::IsLineMode):
        Don't have a global constructor.  Use a function scoped static variable instead.
        * GLESv2.cmake:
        Renderer11.cpp was not building successfully on the bots.
        I don't think it's needed, so just don't build it.

2019-05-08  Alex Christensen  <achristensen@webkit.org>

        Fix High Sierra build.

        * src/libANGLE/State.cpp:
        (gl::State::kBufferSetters):
        * src/libANGLE/State.h:
        (gl::State::setBufferBinding):
        Remove the need for a global constructor.

2019-05-08  Don Olmstead  <don.olmstead@sony.com>

        Update ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=197676

        Reviewed by Alex Christensen.

        Many changed files.  Updated to trunk ANGLE 565441b1078b.

2019-04-29  Alex Christensen  <achristensen@webkit.org>

        <rdar://problem/50299396> Fix internal High Sierra build
        https://bugs.webkit.org/show_bug.cgi?id=197388

        * Configurations/Base.xcconfig:

2019-04-25  Alex Christensen  <achristensen@webkit.org>

        Start using C++17
        https://bugs.webkit.org/show_bug.cgi?id=197131

        Reviewed by Darin Adler.

        * Configurations/Base.xcconfig:

2019-03-22  Keith Rollin  <krollin@apple.com>

        Enable ThinLTO support in Production builds
        https://bugs.webkit.org/show_bug.cgi?id=190758
        <rdar://problem/45413233>

        Reviewed by Daniel Bates.

        Enable building with Thin LTO in Production when using Xcode 10.2 or
        later. This change results in a 1.45% progression in PLT5. Full
        Production build times increase about 2-3%. Incremental build times
        are more severely affected, and so LTO is not enabled for local
        engineering builds.

        LTO is enabled only on macOS for now, until rdar://problem/49013399,
        which affects ARM builds, is fixed.

        To change the LTO setting when building locally:

        - If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
          command line.
        - If building with `build-webkit`, specify --lto-mode={none,thin,full}
          on the command line.
        - If building with `build-root`, specify --lto={none,thin,full} on the
          command line.
        - If building with Xcode, create a LocalOverrides.xcconfig file at the
          top level of your repository directory (if needed) and define
          WK_LTO_MODE to full, thin, or none.

        * Configurations/Base.xcconfig:

2019-02-23  Keith Miller  <keith_miller@apple.com>

        Add new mac target numbers
        https://bugs.webkit.org/show_bug.cgi?id=194955

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:

2019-02-20  Andy Estes  <aestes@apple.com>

        [Xcode] Add SDKVariant.xcconfig to various Xcode projects
        https://bugs.webkit.org/show_bug.cgi?id=194869

        Rubber-stamped by Jer Noble.

        * ANGLE.xcodeproj/project.pbxproj:

2019-01-18  Jer Noble  <jer.noble@apple.com>

        SDK_VARIANT build destinations should be separate from non-SDK_VARIANT builds
        https://bugs.webkit.org/show_bug.cgi?id=189553

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig:
        * Configurations/SDKVariant.xcconfig: Added.

2019-01-17  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r240124.

        This commit broke an internal build.

        Reverted changeset:

        "SDK_VARIANT build destinations should be separate from non-
        SDK_VARIANT builds"
        https://bugs.webkit.org/show_bug.cgi?id=189553
        https://trac.webkit.org/changeset/240124

2019-01-17  Jer Noble  <jer.noble@apple.com>

        SDK_VARIANT build destinations should be separate from non-SDK_VARIANT builds
        https://bugs.webkit.org/show_bug.cgi?id=189553

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig:
        * Configurations/SDKVariant.xcconfig: Added.

2019-01-15  David Kilzer  <ddkilzer@apple.com>

        clang-tidy: Fix unnecessary copy of for loop variables in ANGLE
        <https://webkit.org/b/193443>

        Reviewed by Alex Christensen.

        Fix unwanted copying of loop variables by making them const
        references.

        * src/compiler/preprocessor/MacroExpander.cpp:
        (pp::MacroExpander::ScopedMacroReenabler::~ScopedMacroReenabler):
        - Prevents copy and reference churn of std::shared_ptr<Macro>
          objects.
        * src/compiler/translator/Compiler.cpp:
        (sh::TCompiler::useAllMembersInUnusedStandardAndSharedBlocks):
        - Prevents copy of sh::InterfaceBlock structs.
        (sh::TCompiler::initializeOutputVariables):
        - Prevents copy of sh::Varying structs.
        * src/libANGLE/Program.cpp:
        (gl::(anonymous namespace)::IncludeSameArrayElement):
        - Prevents copy of std::string objects.

2018-10-03  Dan Bernstein  <mitz@apple.com>

        ANGLE part of [Xcode] Update some build settings as recommended by Xcode 10
        https://bugs.webkit.org/show_bug.cgi?id=190250

        Reviewed by Andy Estes.

        * ANGLE.xcodeproj/project.pbxproj: Kept the unreachable code warning off for four files that
          were generated by tools: glslang_lex.cpp, glslang_tab.cpp, Tokenizer.cpp, and
          ExpressionParser.cpp. Let Xcode update LastUpgradeCheck.

        * Configurations/Base.xcconfig: Enabled CLANG_WARN_COMMA, CLANG_WARN_INFINITE_RECURSION,
          CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS, CLANG_WARN_SUSPICIOUS_MOVE,
          CLANG_WARN_UNREACHABLE_CODE, CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF, and
          CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED.

2018-09-21  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] ANGLE's eglplatform.h does not support Wayland-only builds
        https://bugs.webkit.org/show_bug.cgi?id=189844

        Reviewed by Michael Catanzaro.

        This makes it possible to build WebKitGTK+ after r225340 when the
        build is configured to support only Wayland, and the X11 headers
        are not present.

        * changes.diff: Updated.
        * include/EGL/eglplatform.h: Include the X11 headers only when
        ANGLE_USE_X11 is defined and, for consistency with Mesa's version
        of the header, when MESA_EGL_NO_X11_HEADERS is not defined.

2018-08-29  David Kilzer  <ddkilzer@apple.com>

        Remove empty directories from from svn.webkit.org repository
        <https://webkit.org/b/189081>

        * src/angle.xcodeproj: Removed.
        * src/common/third_party/numerics: Removed.

2018-08-28  David Kilzer  <ddkilzer@apple.com>

        Move PMurHash.{cpp,h} into 'src' folder to match path on disk

        * ANGLE.xcodeproj/project.pbxproj:
        (src/common/third_party/smhasher/src): Add folder and move
        PMurHash.{cpp,h} into it.  This makes tidy-Xcode-project-file
        run smoothly when updating the ANGLE project.

2018-08-27  Keith Rollin  <krollin@apple.com>

        Unreviewed build fix -- disable LTO for production builds

        * Configurations/Base.xcconfig:

2018-08-27  Keith Rollin  <krollin@apple.com>

        Build system support for LTO
        https://bugs.webkit.org/show_bug.cgi?id=187785
        <rdar://problem/42353132>

        Reviewed by Dan Bernstein.

        Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
        LTO.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:

2018-08-03  Alex Christensen  <achristensen@webkit.org>

        Fix spelling of "overridden"
        https://bugs.webkit.org/show_bug.cgi?id=188315

        Reviewed by Darin Adler.

        * src/libANGLE/renderer/ProgramImpl.h:

2018-07-14  Kocsen Chung  <kocsen_chung@apple.com>

        Ensure WebKit stack is ad-hoc signed
        https://bugs.webkit.org/show_bug.cgi?id=187667

        Reviewed by Alexey Proskuryakov.

        * Configurations/Base.xcconfig:

2018-07-04  Tim Horton  <timothy_horton@apple.com>

        Introduce PLATFORM(IOSMAC)
        https://bugs.webkit.org/show_bug.cgi?id=187315

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:

2018-06-09  Dan Bernstein  <mitz@apple.com>

        [Xcode] Clean up and modernize some build setting definitions
        https://bugs.webkit.org/show_bug.cgi?id=186463

        Reviewed by Sam Weinig.

        * Configurations/Base.xcconfig: Removed definition for macOS 10.11.
        * Configurations/DebugRelease.xcconfig: Ditto.

2018-05-30  David Kilzer  <ddkilzer@apple.com>

        ANGLE: Fix clang static analyzer issues in GetExecutablePath() and GetExecutableDirectory()
        <https://webkit.org/b/186106>
        <rdar://problem/40659179>

        Reviewed by Alex Christensen.

        * src/common/system_utils_linux.cpp:
        (angle::GetExecutablePath):
        (angle::GetExecutableDirectory):
        * src/common/system_utils_mac.cpp:
        (angle::GetExecutablePath):
        (angle::GetExecutableDirectory):
        * src/common/system_utils_win.cpp:
        (angle::GetExecutablePath):
        (angle::GetExecutableDirectory):

2018-05-22  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r232052.

        Breaks internal builds.

        Reverted changeset:

        "Use more C++17"
        https://bugs.webkit.org/show_bug.cgi?id=185176
        https://trac.webkit.org/changeset/232052

2018-05-21  Yusuke Suzuki  <utatane.tea@gmail.com>

        Use more C++17
        https://bugs.webkit.org/show_bug.cgi?id=185176

        Reviewed by JF Bastien.

        * Configurations/Base.xcconfig:

2018-04-18  Jer Noble  <jer.noble@apple.com>

        Don't put build products into WK_ALTERNATE_WEBKIT_SDK_PATH for engineering builds
        https://bugs.webkit.org/show_bug.cgi?id=184762

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:

2018-04-19  David Kilzer  <ddkilzer@apple.com>

        Enable Objective-C weak references
        <https://webkit.org/b/184789>
        <rdar://problem/39571716>

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:
        (CLANG_ENABLE_OBJC_WEAK): Enable.

2018-03-19  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        REGRESSION(r225340): WPE port should not be getting EGL X11 types on ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=183749

        Reviewed by Alex Christensen.

        Add back the USE_WPE ifdef.

        * changes.diff:
        * include/EGL/eglplatform.h:

2018-03-15  Tim Horton  <timothy_horton@apple.com>

        Add and adopt WK_ALTERNATE_FRAMEWORKS_DIR in ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=183675
        <rdar://problem/38515281>

        Reviewed by Dan Bernstein.

        * ANGLE.xcodeproj/project.pbxproj:
        * Configurations/ANGLE.xcconfig:
        * Configurations/Base.xcconfig:

2018-01-27  Dan Bernstein  <mitz@apple.com>

        HaveInternalSDK includes should be "#include?"
        https://bugs.webkit.org/show_bug.cgi?id=179670

        * Configurations/Base.xcconfig:

2018-01-18  Dan Bernstein  <mitz@apple.com>

        [Xcode] Streamline and future-proof target-macOS-version-dependent build setting definitions
        https://bugs.webkit.org/show_bug.cgi?id=181803

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig: Updated.
        * Configurations/DebugRelease.xcconfig: Ditto.

2018-01-09  Dan Bernstein  <mitz@apple.com>

        Removed some empty directories that were left behind

        * src/third_party/murmurhash: Removed.
        * third_party: Removed.
        * third_party/deqp: Removed.

2017-12-14  David Kilzer  <ddkilzer@apple.com>

        Enable -Wstrict-prototypes for WebKit
        <https://webkit.org/b/180757>
        <rdar://problem/36024132>

        Rubber-stamped by Joseph Pecoraro.

        * Configurations/Base.xcconfig:
        (CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

2017-12-06  Dean Jackson  <dino@apple.com>

        Update ANGLE's changes.diff
        https://bugs.webkit.org/show_bug.cgi?id=180491

        Reviewed by Antoine Quint.

        Here is the list of things we've changed from the
        ANGLE commit that we merged in.

        * changes.diff:

2017-12-06  Dean Jackson  <dino@apple.com>

        Some iOS tests failing after ANGLE update
        https://bugs.webkit.org/show_bug.cgi?id=180487
        <rdar://problem/35885969>

        Reviewed by Antoine Quint.

        The iOS OpenGL compiler doesn't like function declarations with
        nameless array parameters. See:
        <rdar://problem/35885989> Nameless array parameters in function declaration cause compiler error

        While that is being fixed, tell ANGLE's translator to not cull
        the names from parameters. This is not a bug in ANGLE, so we won't
        fix it upstream at the moment.

        * src/compiler/translator/ParseContext.cpp:
        (sh::TParseContext::addFunctionPrototypeDeclaration):

2017-12-01  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix byte order macros and address new -Wunknown-pragmas warnings
        https://bugs.webkit.org/show_bug.cgi?id=180177
        <rdar://problem/35774734>

        I'm not sure how this code was developed, as it seems to have been designed for GCC, but it
        does not use any of GCC's documented byte order macros, and accordingly does not work. Let's
        fix it to guarantee there are no problems when building with GCC. I presume it should help
        Clang as well.

        This time, hopefully without breaking 32-bit macOS, where __BYTE_ORDER actually is defined.

        * src/common/third_party/smhasher/src/PMurHash.cpp:
        (angle::PMurHash32_Process):

2017-12-01  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r225412.

        Breaks 32-bit macOS builds.

        Reverted changeset:

        "Unreviewed, fix byte order macros and address new -Wunknown-
        pragmas warnings"
        https://bugs.webkit.org/show_bug.cgi?id=180177
        https://trac.webkit.org/changeset/225412

2017-12-01  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix byte order macros and address new -Wunknown-pragmas warnings
        https://bugs.webkit.org/show_bug.cgi?id=180177
        <rdar://problem/35774734>

        I'm not sure how this code was developed, as it seems to have been designed for GCC, but it
        does not use any of GCC's documented byte order macros, and accordingly does not work. Let's
        fix it to guarantee there are no problems when building with GCC. I presume it should help
        Clang as well.

        * src/common/third_party/smhasher/src/PMurHash.cpp:
        (angle::PMurHash32_Process):

2017-12-01  Tomoki Imai  <Tomoki.Imai@sony.com>

        Fix WinCairo build break after r225340
        https://bugs.webkit.org/show_bug.cgi?id=180230

        Unreviewed build fix.

        * CMakeLists.txt: Add missing sources.
        * PlatformWin.cmake: Add missing sources.

2017-12-01  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix -Wunknown-pragmas warnings.
        https://bugs.webkit.org/show_bug.cgi?id=180177

        It seems GCC has started to warn about unrecognized Clang pragmas. Oh well.

        This is not sent upstream, because the Clang pragmas appear to be downstream WebKit
        additions. changes.diff is not updated, because it was not updated in yesterday's ANGLE
        update.

        * include/GLSLANG/ShaderVars.h:
        * src/libANGLE/Platform.cpp:

2017-11-30  Alex Christensen  <achristensen@webkit.org>

        Speculative WinCairo fix.
        https://bugs.webkit.org/show_bug.cgi?id=180177

        * CMakeLists.txt:
        * PlatformWin.cmake:

2017-11-30  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed build fix, remove executable property from a header file.

        * include/KHR/khrplatform.h: Removed property svn:executable.

2017-11-30  Dean Jackson  <dino@apple.com>

        Update ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=180177
        <rdar://problem/35774734>

        Reviewed by Alex Christensen.

        Huge list of changed files omitted.

2017-07-18  Andy Estes  <aestes@apple.com>

        [Xcode] Enable CLANG_WARN_RANGE_LOOP_ANALYSIS
        https://bugs.webkit.org/show_bug.cgi?id=174631

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig:

2017-07-18  Andy Estes  <aestes@apple.com>

        [Xcode] Enable CLANG_WARN_OBJC_LITERAL_CONVERSION
        https://bugs.webkit.org/show_bug.cgi?id=174631

        Reviewed by Sam Weinig.

        * Configurations/Base.xcconfig:

2017-07-18  Andy Estes  <aestes@apple.com>

        [Xcode] Enable CLANG_WARN_NON_LITERAL_NULL_CONVERSION
        https://bugs.webkit.org/show_bug.cgi?id=174631

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:

2017-07-18  Andy Estes  <aestes@apple.com>

        [Xcode] Enable CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING
        https://bugs.webkit.org/show_bug.cgi?id=174631

        Reviewed by Darin Adler.

        * Configurations/Base.xcconfig:

2017-07-13  Adrian Perez de Castro  <aperez@igalia.com>

        eglplatform.h does not support Wayland
        https://bugs.webkit.org/show_bug.cgi?id=163482

        This makes it possible to build WebKitGTK+ when the target system has only Wayland support,
        but no X11 (and therefore the X11 headers are not present).

        Reviewed by Alex Christensen.

        * include/EGL/eglplatform.h: Add Wayland typedefs when WL_EGL_PLATFORM is defined (for example
        by including wayland-egl.h before including EGL/egl.h). Also, include the X11 headers only
        when ANGLE_USE_X11 is defined and, for consistency with Mesa's version of the header, when
        MESA_EGL_NO_X11_HEADERS is not defined.

2017-07-03  Andy Estes  <aestes@apple.com>

        [Xcode] Add an experimental setting to build with ccache
        https://bugs.webkit.org/show_bug.cgi?id=173875

        Reviewed by Tim Horton.

        * Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.

2017-07-01  Dan Bernstein  <mitz@apple.com>

        [macOS] Remove code only needed when building for OS X Yosemite
        https://bugs.webkit.org/show_bug.cgi?id=174067

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:

2017-06-10  Dan Bernstein  <mitz@apple.com>

        Reverted r218056 because it made the IDE reindex constantly.

        * Configurations/DebugRelease.xcconfig:

2017-06-10  Dan Bernstein  <mitz@apple.com>

        [Xcode] With Xcode 9 developer beta, everything rebuilds when switching between command-line and IDE
        https://bugs.webkit.org/show_bug.cgi?id=173223

        Reviewed by Sam Weinig.

        The rebuilds were happening due to a difference in the compiler options that the IDE and
        xcodebuild were specifying. Only the IDE was passing the -index-store-path option. To make
        xcodebuild pass that option, too, set CLANG_INDEX_STORE_ENABLE to YES if it is unset, and
        specify an appropriate path in CLANG_INDEX_STORE_PATH.

        * Configurations/DebugRelease.xcconfig:

2017-05-28  Dan Bernstein  <mitz@apple.com>

        [Xcode] ALWAYS_SEARCH_USER_PATHS is set to YES
        https://bugs.webkit.org/show_bug.cgi?id=172691

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig: Set ALWAYS_SEARCH_USER_PATHS to NO.

2017-05-09  Zan Dobersek  <zdobersek@igalia.com>

        Upstream the WPE port
        https://bugs.webkit.org/show_bug.cgi?id=171110

        Reviewed by Alex Christensen.

        * include/EGL/eglplatform.h:
        Allow building WPE on platforms that don't provide X11 libraries.

2017-05-04  Don Olmstead  <don.olmstead@am.sony.com>

        [Win] Remove redundant macros that are set in the CMake config
        https://bugs.webkit.org/show_bug.cgi?id=171571

        Reviewed by Brent Fulgham.

        * CMakeLists.txt:

2017-04-20  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Define FORWARDING_HEADERS_DIR in WebKitFS and use it everywhere
        https://bugs.webkit.org/show_bug.cgi?id=171071

        Reviewed by Michael Catanzaro.

        "${DERIVED_SOURCES_DIR}/ForwardingHeaders" path occurs very often in the
        build system files. GTK-specifc FORWARDING_HEADERS_DIR variable should
        be available for all ports.

        * CMakeLists.txt:

2017-04-20  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] Fix build break after updating ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=170980

        Reviewed by Brent Fulgham.

        * CMakeLists.txt: Added some new source files.
        * PlatformMac.cmake: Ditto.
        * PlatformWin.cmake: Ditto. Remove a macro 'ANGLE_WEBKIT_WIN'
        because SoftLinking is not used anymore.
        * src/third_party/systeminfo/: Restored.

2017-04-19  Ryan Haddad  <ryanhaddad@apple.com>

        Remove executable property from a header file.

        * include/KHR/khrplatform.h: Removed property svn:executable.

2017-04-18  Dean Jackson  <dino@apple.com>

        Add the actual content to the files, now that
        SVN knows they can have tabs.

        * src/third_party/murmurhash/MurmurHash3.cpp:
        * src/third_party/murmurhash/MurmurHash3.h:

2017-04-18  Dean Jackson  <dino@apple.com>

        WinCairo needs these files I recently removed
        from our copy of ANGLE.

        * src/third_party/murmurhash/LICENSE: Added.
        * src/third_party/murmurhash/MurmurHash3.cpp: Added.
        * src/third_party/murmurhash/MurmurHash3.h: Added.

2017-04-18  Dean Jackson  <dino@apple.com>

        Still trying to fix Windows.

        * PlatformWin.cmake:

2017-04-18  Dean Jackson  <dino@apple.com>

        Attempt to fix the Windows build.

        * PlatformWin.cmake:

2017-04-18  Dean Jackson  <dino@apple.com>

        Update ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=170941
        <rdar://problem/31633999>

        Reviewed by Alex Christensen.

        Huge list of changed files omitted.

2017-04-12  Dan Bernstein  <mitz@apple.com>

        [Mac] Future-proof .xcconfig files
        https://bugs.webkit.org/show_bug.cgi?id=170802

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:

2016-12-20  Tim Horton  <timothy_horton@apple.com>

        Remove an ANGLE Markdown file from the ANGLE target
        https://bugs.webkit.org/show_bug.cgi?id=166279

        Reviewed by Alex Christensen.

        * ANGLE.xcodeproj/project.pbxproj:
        We don't need to build this, it's not source code.

2016-12-15  Myles C. Maxfield  <mmaxfield@apple.com>

        Sort Xcode project files
        https://bugs.webkit.org/show_bug.cgi?id=165937

        Reviewed by Simon Fraser.

        * ANGLE.xcodeproj/project.pbxproj:

2016-12-15  Alex Christensen  <achristensen@webkit.org>

        Fix Windows WebGL build after r209832

        * CMakeLists.txt:
        * include/EGL/egl.h:
        * include/GLES2/gl2.h:

2016-12-14  Alex Christensen  <achristensen@webkit.org>

        Progress towards using ANGLE to do WebGL rendering
        https://bugs.webkit.org/show_bug.cgi?id=165864

        Reviewed by Dean Jackson.

        * ANGLE.xcodeproj/project.pbxproj:
        Compile more files, and add some more "public" headers.
        ANGLE is not a public framework, so these headers just go in 
        WebKitBuild/Release/usr/local/include/ANGLE to be included when compiling WebCore.
        * ANGLE/egl.h: Added.
        * ANGLE/eglext.h: Added.
        * ANGLE/eglplatform.h: Added.
        * ANGLE/entry_points_gles_2_0.h: Added.
        * ANGLE/entry_points_gles_2_0_ext.h: Added.
        * ANGLE/entry_points_gles_3_0.h: Added.
        * ANGLE/export.h: Added.
        * ANGLE/gl2.h: Added.
        * ANGLE/gl2ext.h: Added.
        * ANGLE/gl2platform.h: Added.
        * ANGLE/gl3.h: Added.
        * ANGLE/gl31.h: Added.
        * ANGLE/gl3platform.h: Added.
        * ANGLE/khrplatform.h: Added.
        Add more forwarding headers.  There are already a few, but we need more.
        * CMakeLists.txt:
        * PlatformMac.cmake:
        Make the frameworks linked to by ANGLE be private so frameworks that link with 
        ANGLE don't automatically link with them. This allows me to switch ANGLE from a 
        static library to a dynamic library to make sure WebCore isn't directly using OpenGL.
        * PlatformWin.cmake:
        Move HLSL-specific files to only be built on Windows.
        * include/EGL/egl.h:
        * include/EGL/eglplatform.h:
        * include/GLES2/gl2.h:
        * include/GLES2/gl2platform.h:
        * include/GLES3/gl3.h:
        * include/GLES3/gl31.h:
        * include/GLES3/gl32.h:
        * include/GLES3/gl3platform.h:
        * src/libGLESv2/entry_points_egl.h:
        * src/libGLESv2/entry_points_egl_ext.h:
        * src/libGLESv2/entry_points_gles_2_0.h:
        * src/libGLESv2/entry_points_gles_2_0_ext.h:
        * src/libGLESv2/entry_points_gles_3_0.h:
        * src/libGLESv2/entry_points_gles_3_1.h:
        Include ANGLE headers as #include <ANGLE/*> instead of #include <KHR/*> or #include <GLES/*>
        This is needed to distinguish the ANGLE headers from any system OpenGL/OpenGLES headers.
        We will eventually only include ANGLE's entry_points_*.h directly from WebCore.

2016-12-07  Alex Christensen  <achristensen@webkit.org>

        Build more of ANGLE on Mac and Windows
        https://bugs.webkit.org/show_bug.cgi?id=165543

        Reviewed by Dean Jackson.

        We will need to compile these files to use ANGLE's GLESv2 implementation instead of 
        using OpenGL directly. No functional change.

        * ANGLE.xcodeproj/project.pbxproj:
        * CMakeLists.txt:
        Move platform-specific files to Platform*.cmake.
        * PlatformMac.cmake: Added.
        * PlatformWin.cmake: Added.
        * src/libANGLE/renderer/Format.cpp:
        * src/libANGLE/renderer/Format_autogen.cpp:
        (angle::Format::Get):
        * src/libANGLE/renderer/gl/PathGL.cpp:
        * src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.h:
        * src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm:
        Rename SwapLayer to WebSwapLayer.  Otherwise, WebCore complains about improperly named ObjC classes.
        Since this is the only one, let's just rename it instead of adding an exception.
        (rx::WindowSurfaceCGL::initialize):
        (-[SwapLayer initWithSharedState:withContext:withFunctions:]): Deleted.
        * src/libANGLE/renderer/gl/formatutilsgl.cpp:
        (rx::nativegl::GetInternalFormatMap):
        (rx::nativegl::GetInternalFormatInfo):
        * src/libANGLE/renderer/renderer_utils.cpp:
        (rx::GetColorWriteFunction):
        * src/libGLESv2/entry_points_egl.cpp:
        (egl::GetProcAddress):

2016-12-06  Alexey Proskuryakov  <ap@apple.com>

        Correct SDKROOT values in xcconfig files
        https://bugs.webkit.org/show_bug.cgi?id=165487
        rdar://problem/29539209

        Reviewed by Dan Bernstein.

        Fix suggested by Dan Bernstein.

        * Configurations/DebugRelease.xcconfig:

2016-10-30  Michael Catanzaro  <mcatanzaro@igalia.com>

        -Wpragmas warning spam from angleutils.h
        https://bugs.webkit.org/show_bug.cgi?id=164207

        Reviewed by Darin Adler.

        Use #pragma clang instead of #pragma GCC since all of the warnings we need to suppress are
        Clang-specific warnings. GCC ignores unknown pragmas and does not warn, but it does warn if
        any GCC pragma is invalid.

        Note that this might still be broken for MSVCC, as MSVCC warns when it sees unknown pragmas.

        * changes.diff:
        * src/common/angleutils.cpp:
        (FormatString):
        * src/common/angleutils.h:
        (MakeStaticString):
        * src/common/debug.cpp:
        * src/common/mathutil.cpp:
        * src/libANGLE/Caps.cpp:
        (gl::TextureCapsMap::get):
        (gl::GetExtensionInfoMap):
        * src/libANGLE/Device.cpp:
        (egl::GetDeviceSet):
        * src/libANGLE/Display.cpp:
        (egl::Display::getClientExtensionString):
        * src/libANGLE/formatutils.cpp:
        (gl::GetInternalFormatMap):
        (gl::GetAllSizedInternalFormats):
        * src/libANGLE/validationES3.cpp:
        (gl::IsValidES3CopyTexImageCombination):

2016-10-28  Alex Christensen  <achristensen@webkit.org>

        Another build fix.

        * CMakeLists.txt:

2016-10-28  Alex Christensen  <achristensen@webkit.org>

        Fix Windows WebGL build after r208036
        https://bugs.webkit.org/show_bug.cgi?id=164101

        * CMakeLists.txt:

2016-10-27  Alex Christensen  <achristensen@webkit.org>

        Fix Windows WebGL build after r208036
        https://bugs.webkit.org/show_bug.cgi?id=164101

        * CMakeLists.txt:
        Add new files, remove deleted files.

2016-10-27  Alex Christensen  <achristensen@webkit.org>

        Update ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=164101

        Reviewed by Darin Adler.

        Updated to f01731530e7f754e5ebaf32d00f3e23b62376424
        Differences between upstream ANGLE and WebKit's copy of ANGLE are in changes.diff

2016-10-24  Alex Christensen  <achristensen@webkit.org>

        Remove unused ANGLE.vcxproj after switching to CMake on Windows

        * ANGLE.vcxproj: Removed.
        * ANGLE.vcxproj/ANGLERelease.props: Removed.
        * ANGLE.vcxproj/DirectX32.props: Removed.
        * ANGLE.vcxproj/DirectX64.props: Removed.
        * ANGLE.vcxproj/libEGL.vcxproj: Removed.
        * ANGLE.vcxproj/libEGL.vcxproj.filters: Removed.
        * ANGLE.vcxproj/libEGLCommon.props: Removed.
        * ANGLE.vcxproj/libGLESv2.vcxproj: Removed.
        * ANGLE.vcxproj/libGLESv2.vcxproj.filters: Removed.
        * ANGLE.vcxproj/libGLESv2Common.props: Removed.
        * ANGLE.vcxproj/preprocessor.vcxproj: Removed.
        * ANGLE.vcxproj/preprocessor.vcxproj.filters: Removed.
        * ANGLE.vcxproj/translatorCommon.props: Removed.
        * ANGLE.vcxproj/translator_common.vcxproj: Removed.
        * ANGLE.vcxproj/translator_common.vcxproj.filters: Removed.
        * ANGLE.vcxproj/translator_glsl.vcxproj: Removed.
        * ANGLE.vcxproj/translator_glsl.vcxproj.filters: Removed.
        * ANGLE.vcxproj/translator_hlsl.vcxproj: Removed.
        * ANGLE.vcxproj/translator_hlsl.vcxproj.filters: Removed.

2016-09-09  Dean Jackson  <dino@apple.com>

        [ANGLE] instantiation of variable 'gl::GLTypeToGLenum<float>::value' required here, but no definition is available
        https://bugs.webkit.org/show_bug.cgi?id=161829
        <rdar://problem/28051244>

        Reviewed by Alex Christensen.

        Newer versions of clang require explicit definition of some template types
        if they are in another translation unit.

        * src/libANGLE/Program.cpp: Add definitions for GLTypeToGLenum.

2016-07-29  David Kilzer  <ddkilzer@apple.com>

        ANGLE: Fix global constructors and exit-time destructors
        <https://webkit.org/b/160332>

        Reviewed by Darin Adler.

        * Configurations/Base.xcconfig:
        - Add warning flags.

        * src/common/angleutils.cpp:
        (FormatString):
        * src/common/angleutils.h:
        (MakeStaticString):
        * src/common/debug.cpp:
        * src/common/mathutil.cpp:
        (gl::g_sharedexp_max):
        (gl::convertRGBFloatsTo999E5):
        * src/compiler/translator/ShaderLang.cpp:
        (ShGetUniformRegisterMap):
        * src/libANGLE/Caps.cpp:
        (gl::TextureCapsMap::get):
        * src/libANGLE/Device.cpp:
        (egl::GetDeviceSet):
        * src/libANGLE/Display.cpp:
        (egl::Display::getClientExtensionString):
        * src/libANGLE/formatutils.cpp:
        (gl::BuildFormatMap):
        (gl::BuildInternalFormatInfoMap):
        (gl::GetInternalFormatMap):
        (gl::BuildAllSizedInternalFormatSet):
        (gl::GetSizedInternalFormat):
        (gl::GetAllSizedInternalFormats):
        * src/libANGLE/validationES3.cpp:
        (gl::BuildES3FormatSet):
        (gl::ValidateTexImageFormatCombination):
        (gl::BuildSizedEffectiveInternalFormatList):
        (gl::BuildUnsizedEffectiveInternalFormatList):
        (gl::GetEffectiveInternalFormat):
        (gl::BuildValidES3CopyTexImageCombinations):
        (gl::IsValidES3CopyTexImageCombination):
        - Fix global constructors and exit-time destructors.

2016-07-13  Enrica Casucci  <enrica@apple.com>

        Update supported platforms in xcconfig files to match the sdk names.
        https://bugs.webkit.org/show_bug.cgi?id=159728

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig:

2016-05-24  Alex Christensen  <achristensen@webkit.org>

        Fix iOS WebGL after r199738
        https://bugs.webkit.org/show_bug.cgi?id=158024
        rdar://problem/26446679

        Reviewed by Myles Maxfield.

        * ANGLE.xcodeproj/project.pbxproj:
        iOS needs the ESSL translator.

2016-05-22  Brady Eidson  <beidson@apple.com>

        Move to C++14.
        https://bugs.webkit.org/show_bug.cgi?id=157948

        Reviewed by Michael Catanzaro.

        * Configurations/Base.xcconfig:

2016-04-26  Per Arne Vollan  <peavo@outlook.com>

        [WinCairo][ANGLE] Display object is not created.
        https://bugs.webkit.org/show_bug.cgi?id=157042

        Reviewed by Alex Christensen.

        The CreateDisplayFromAttribs function will not create a DisplayD3D object when the requested
        type is EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE, because ANGLE_ENABLE_OPENGL is not defined.
        We should be able to create a DisplayD3D object without defining ANGLE_ENABLE_OPENGL.

        * src/libANGLE/Display.cpp:

2016-04-26  Per Arne Vollan  <peavo@outlook.com>

        [WinCairo][WebGL] Enable ESSL and GLSL translators.
        https://bugs.webkit.org/show_bug.cgi?id=157002

        Reviewed by Darin Adler.

        Enable support for ESSL and GLSL translators, and add missing files.

        * CMakeLists.txt:

2016-04-22  Joonghun Park  <jh718.park@samsung.com>

        [ANGLE] Remove deprecated auto_ptr warning. Unreviewed.
        https://bugs.webkit.org/show_bug.cgi?id=156894

        * src/compiler/preprocessor/MacroExpander.h: Use std::unique_ptr instead of std::auto_ptr.

2016-04-19  Alex Christensen  <achristensen@webkit.org>

        Build fix after r199738

        * CMakeLists.txt:

2016-04-19  Alex Christensen  <achristensen@webkit.org>

        Build fix after r199738

        * CMakeLists.txt:

2016-04-19  Alex Christensen  <achristensen@webkit.org>

        Build fix.

        * src/compiler/translator/Intermediate.h: Added.
        (TIntermediate::TIntermediate):
        * src/compiler/translator/intermediate.h: Removed.
        Changed case of Intermediate.h file name for case sensitive file systems.

2016-04-19  Alex Christensen  <achristensen@webkit.org>

        Update ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=156755

        Reviewed by Dean Jackson.

        Huge list of changed files omitted.

2016-04-12  Alex Christensen  <achristensen@webkit.org>

        Remove failing assertion in ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=156485

        Reviewed by Dean Jackson.

        * src/compiler/translator/glslang.l:
        * src/compiler/translator/glslang_lex.cpp:

2016-04-11  Fujii Hironori  <Hironori.Fujii@jp.sony.com>

        [CMake] Make FOLDER property INHERITED
        https://bugs.webkit.org/show_bug.cgi?id=156460

        Reviewed by Brent Fulgham.

        * CMakeLists.txt:
        Set FOLDER property as a directory property not a target property

2016-03-22  Alberto Garcia  <berto@igalia.com>

        Unreviewed typo fix.

        * src/compiler/translator/InfoSink.cpp:
        (TInfoSinkBase::prefix): "UNKOWN" => "UNKOWN".

2016-03-20  Dan Bernstein  <mitz@apple.com>

        [Mac] Determine TARGET_MAC_OS_X_VERSION_MAJOR from MACOSX_DEPLOYMENT_TARGET rather than from MAC_OS_X_VERSION_MAJOR
        https://bugs.webkit.org/show_bug.cgi?id=155707
        <rdar://problem/24980691>

        Reviewed by Darin Adler.

        * Configurations/Base.xcconfig: Set TARGET_MAC_OS_X_VERSION_MAJOR based on the last
          component of MACOSX_DEPLOYMENT_TARGET.
        * Configurations/DebugRelease.xcconfig: For engineering builds, preserve the behavior of
          TARGET_MAC_OS_X_VERSION_MAJOR being the host’s OS version.

2016-03-20  Dan Bernstein  <mitz@apple.com>

        Update build settings

        Rubber-stamped by Andy Estes.

        * Configurations/DebugRelease.xcconfig:

2016-02-23  Dan Bernstein  <mitz@apple.com>

        [Xcode] Linker errors display mangled names, but no longer should
        https://bugs.webkit.org/show_bug.cgi?id=154632

        Reviewed by Sam Weinig.

        * Configurations/Base.xcconfig: Stop setting LINKER_DISPLAYS_MANGLED_NAMES to YES.

2016-01-08  Brent Fulgham  <bfulgham@apple.com>

        [ANGLE] Correct UNREACHABLE runtime assertion for void constructors
        https://bugs.webkit.org/show_bug.cgi?id=152900
        <rdar://problem/24107501>

        Reviewed by Alex Christensen.

        Tested by Khronos WebGL 1.0.4 suite.

        Merge a small part of ANGLE upstream commit r284735:
        
            commit    01971113492d9aca386f2bca021b1f4b134fc277
            author    Dmitry Skiba <dskiba@google.com>  Fri Jul 10 18:54:00 2015
            committer Jamie Madill <jmadill@chromium.org>  Fri Jul 10 19:03:34 2015
            tree      47e42eac00f7d64cddb14b3cc21a4e605c189d20

        This issue was found by <https://www.khronos.org/registry/webgl/sdk/tests/conformance/glsl/bugs/angle-constructor-invalid-parameters.html?webglVersion=1&quiet=0>

        * src/compiler/translator/Types.cpp:
        (TType::buildMangledName): Don't assert with UNREACHABLE here.

2015-12-28  Joonghun Park  <jh718.park@samsung.com>

        [ANGLE][EFL][GTK] Remove 'template<class> class std::auto_ptr is deprecated' compile warning
        https://bugs.webkit.org/show_bug.cgi?id=152567

        Reviewed by Alex Christensen.

        Because auto_ptr is deprecated as of C++11, we should use unique_ptr instead.

        * src/compiler/preprocessor/MacroExpander.h:

2015-12-19  Dan Bernstein  <mitz@apple.com>

        [Mac] WebKit contains dead source code for OS X Mavericks and earlier
        https://bugs.webkit.org/show_bug.cgi?id=152462

        Reviewed by Alexey Proskuryakov.

        * Configurations/DebugRelease.xcconfig: Removed definitions of MACOSX_DEPLOYMENT_TARGET for
          OS X 10.8 and 10.9.

2015-12-03  Anders Carlsson  <andersca@apple.com>

        Remove Objective-C GC support
        https://bugs.webkit.org/show_bug.cgi?id=151819
        rdar://problem/23746991

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:

2015-11-30  Dana Burkart  <dburkart@apple.com>

        Remove Mountain Lion support from ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=151679

        Reviewed by Darin Adler.

        * Configurations/Base.xcconfig:

2015-11-02  Andy Estes  <aestes@apple.com>

        [Cocoa] Add tvOS and watchOS to SUPPORTED_PLATFORMS
        https://bugs.webkit.org/show_bug.cgi?id=150819

        Reviewed by Dan Bernstein.

        This tells Xcode to include these platforms in its Devices dropdown, making it possible to build in the IDE.

        * Configurations/Base.xcconfig:

2015-10-10  Dan Bernstein  <mitz@apple.com>

        [iOS] Remove project support for iOS 8
        https://bugs.webkit.org/show_bug.cgi?id=149993

        Reviewed by Alexey Proskuryakov.

        * Configurations/ANGLE.xcconfig:
        * Configurations/Base.xcconfig:

2015-08-20  Alex Christensen  <achristensen@webkit.org>

        Clean up CMake build after r188673
        https://bugs.webkit.org/show_bug.cgi?id=148234

        Reviewed by Tim Horton.

        * CMakeLists.txt:
        Copy headers to forwarding headers.

2015-08-11  Brent Fulgham  <bfulgham@apple.com>

        [Win] Switch Windows build to Visual Studio 2015
        https://bugs.webkit.org/show_bug.cgi?id=147887
        <rdar://problem/22235098>

        Reviewed by Alex Christensen.

        Update Visual Studio project file settings to use the current Visual
        Studio and compiler. Continue targeting binaries to run on our minimum
        supported configuration of Windows 7.

        * ANGLE.vcxproj/libEGL.vcxproj:
        * ANGLE.vcxproj/libGLESv2.vcxproj:
        * ANGLE.vcxproj/preprocessor.vcxproj:
        * ANGLE.vcxproj/translator_common.vcxproj:
        * ANGLE.vcxproj/translator_glsl.vcxproj:
        * ANGLE.vcxproj/translator_hlsl.vcxproj:

2015-08-04  Alex Christensen  <achristensen@webkit.org>

        Build fix after r187928.

        * CMakeLists.txt:
        Typo. Set libGLESv2 compile definitions instead of libEGL, which are set separately.

2015-08-04  Alex Christensen  <achristensen@webkit.org>

        Soft link libGLESv2 and libEGL on Windows again
        https://bugs.webkit.org/show_bug.cgi?id=147671

        Reviewed by Dean Jackson.

        * CMakeLists.txt:
        Clean up some warnings when compiling with CMake.
        * include/EGL/egl.h:
        * include/EGL/eglsoftlinking.h:
        * include/GLES2/gl2.h:
        Soft link egl optionally.

2015-08-04  Alex Christensen  <achristensen@webkit.org>

        Enable WebGL on Windows CMake build.
        https://bugs.webkit.org/show_bug.cgi?id=143311

        Reviewed by Csaba Osztrogonác.

        * CMakeLists.txt: Added.

2015-07-03  Dan Bernstein  <mitz@apple.com>

        [Xcode] Update some build settings as recommended by Xcode 7
        https://bugs.webkit.org/show_bug.cgi?id=146597

        Reviewed by Sam Weinig.

        * ANGLE.xcodeproj/project.pbxproj: Enabled CLANG_WARN_BOOL_CONVERSION,
        CLANG_WARN_ENUM_CONVERSION, CLANG_WARN_INT_CONVERSION, ENABLE_STRICT_OBJC_MSGSEND and
        GCC_NO_COMMON_BLOCKS.

        * Configurations/Base.xcconfig: Updated LastUpgradeCheck.

2015-07-03  Per Arne Vollan  <peavo@outlook.com>

        [WinCairo][WebGL] Enable HLSL.
        https://bugs.webkit.org/show_bug.cgi?id=146559

        Reviewed by Alex Christensen.

        High Level Shader Language needs to be enabled for WebGL to work on Windows.

        * ANGLE.vcxproj/translatorCommon.props:
        * ANGLE.vcxproj/translator_hlsl.vcxproj:
        * ANGLE.vcxproj/translator_hlsl.vcxproj.filters:

2015-07-01  Alex Christensen  <achristensen@webkit.org>

        Re-enable WebGL on WinCairo
        https://bugs.webkit.org/show_bug.cgi?id=146537

        Reviewed by Csaba Osztrogonác.

        * ANGLE.vcxproj/DirectX32.props:
        * ANGLE.vcxproj/DirectX64.props:
        * ANGLE.vcxproj/libGLESv2Common.props:
        Update DirectX directories to use the Windows SDK instead of the June 2010 DirectX SDK.

2015-07-01  Alex Christensen  <achristensen@webkit.org>

        Fix ANGLE Windows build after r186169.
        https://bugs.webkit.org/show_bug.cgi?id=146532

        Reviewed by Brent Fulgham.

        * ANGLE.vcxproj/libEGL.vcxproj:
        * ANGLE.vcxproj/libEGL.vcxproj.filters:
        * ANGLE.vcxproj/libGLESv2.vcxproj:
        * ANGLE.vcxproj/libGLESv2.vcxproj.filters:
        * ANGLE.vcxproj/libGLESv2Common.props:
        * ANGLE.vcxproj/translator_common.vcxproj:
        * ANGLE.vcxproj/translator_common.vcxproj.filters:
        * ANGLE.vcxproj/translator_glsl.vcxproj:
        * ANGLE.vcxproj/translator_glsl.vcxproj.filters:
        * ANGLE.vcxproj/translator_hlsl.vcxproj:
        * ANGLE.vcxproj/translator_hlsl.vcxproj.filters:
        Update Windows build to build new files.

2015-06-30  Alex Christensen  <achristensen@webkit.org>

        Update ANGLE to b11e2483742db884bd0af41f78f528240577356b.
        https://bugs.webkit.org/show_bug.cgi?id=145010

        Reviewed by Dean Jackson.

        Huge list of source changes omitted.
        ROLL DEPS!

2015-05-26  Dan Bernstein  <mitz@apple.com>

        <rdar://problem/21104551> Update build settings

        Reviewed by Anders Carlsson.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:

2015-05-19  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        REGRESSION(r181571): Build broken when USE(OPENGL_ES_2) is defined.
        https://bugs.webkit.org/show_bug.cgi?id=145156

        Reviewed by Alex Christensen.

        * include/GLES2/gl2softlinking.h: Revert r181589. Vertex Array Objects are not in GLESv2.

2015-05-11  Brent Fulgham  <bfulgham@apple.com>

        [Win] Move Windows build target to Windows 7 (or newer)
        https://bugs.webkit.org/show_bug.cgi?id=144890
        <rdar://problem/20707307>

        Reviewed by Anders Carlsson.

        Update linked SDK and minimal Windows level to be compatible with
        Windows 7 or newer.

        * ANGLE.vcxproj/libEGL.vcxproj:
        * ANGLE.vcxproj/libGLESv2.vcxproj:
        * ANGLE.vcxproj/preprocessor.vcxproj:
        * ANGLE.vcxproj/translator_common.vcxproj:
        * ANGLE.vcxproj/translator_glsl.vcxproj:
        * ANGLE.vcxproj/translator_hlsl.vcxproj:

2015-05-07  Dan Bernstein  <mitz@apple.com>

        <rdar://problem/19317140> [Xcode] Remove usage of AspenFamily.xcconfig in Source/
        https://bugs.webkit.org/show_bug.cgi?id=144727

        Reviewed by Darin Adler.

        * Configurations/Base.xcconfig: Don’t include AspenFamily.xcconfig, and define
        INSTALL_PATH_PREFIX and LD_DYLIB_INSTALL_NAME for the iOS 8.x Simulator.

2015-04-01  Alex Christensen  <achristensen@webkit.org>

        Progress towards CMake on Windows and Mac.
        https://bugs.webkit.org/show_bug.cgi?id=143293

        Reviewed by Filip Pizlo.

        * include/GLES2/gl2.h:
        Temporarily disabled WebGL on Windows CMake builds.

2015-03-17  Zan Dobersek  <zdobersek@igalia.com>

        [CMake] Use a forwarding header for ANGLE's ShaderLang.h to avoid picking up ANGLE's EGL headers
        https://bugs.webkit.org/show_bug.cgi?id=142530

        Reviewed by Darin Adler.

        * ANGLE/ShaderLang.h: Added. Includes include/GLSLANG/ShaderLang.h. Used in WebCore
        so we can avoid using ANGLE's EGL headers and use the system-default headers instead.

2015-03-16  Roger Fong  <roger_fong@apple.com>

        [Win] Unreviewed build fix after r181571.

        * include/GLES2/gl2softlinking.h:

2015-03-12  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed build fix (part 2).

        * ANGLE.vcxproj/libGLESv2Common.props: Missed a directory separator.

2015-03-12  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed build fix for some DirectX SDK Installs

        * ANGLE.vcxproj/libGLESv2Common.props: Correct path for Lib and
        Include paths based on problems others have had building WebKit
        under different Windows and DirectX revisions.

2015-02-20  Alexey Proskuryakov  <ap@apple.com>

        Remove svn:keywords property.

        As far as I can tell, the property had no effect on any of these files, but also,
        when it has effect it's likely harmful.

        * ANGLE.txt: Removed property svn:keywords.
        * src/common/RefCountObject.cpp: Removed property svn:keywords.
        * src/common/RefCountObject.h: Removed property svn:keywords.
        * src/compiler/translator/BaseTypes.h: Removed property svn:keywords.
        * src/compiler/translator/BuiltInFunctionEmulator.cpp: Removed property svn:keywords.
        * src/compiler/translator/BuiltInFunctionEmulator.h: Removed property svn:keywords.
        * src/compiler/translator/CodeGen.cpp: Removed property svn:keywords.
        * src/compiler/translator/Common.h: Removed property svn:keywords.
        * src/compiler/translator/Compiler.cpp: Removed property svn:keywords.
        * src/compiler/translator/ConstantUnion.h: Removed property svn:keywords.
        * src/compiler/translator/DetectCallDepth.cpp: Removed property svn:keywords.
        * src/compiler/translator/DetectCallDepth.h: Removed property svn:keywords.
        * src/compiler/translator/DetectDiscontinuity.cpp: Removed property svn:keywords.
        * src/compiler/translator/DetectDiscontinuity.h: Removed property svn:keywords.
        * src/compiler/translator/Diagnostics.cpp: Removed property svn:keywords.
        * src/compiler/translator/Diagnostics.h: Removed property svn:keywords.
        * src/compiler/translator/DirectiveHandler.cpp: Removed property svn:keywords.
        * src/compiler/translator/DirectiveHandler.h: Removed property svn:keywords.
        * src/compiler/translator/ExtensionBehavior.h: Removed property svn:keywords.
        * src/compiler/translator/ForLoopUnroll.cpp: Removed property svn:keywords.
        * src/compiler/translator/ForLoopUnroll.h: Removed property svn:keywords.
        * src/compiler/translator/HashNames.h: Removed property svn:keywords.
        * src/compiler/translator/InfoSink.cpp: Removed property svn:keywords.
        * src/compiler/translator/InfoSink.h: Removed property svn:keywords.
        * src/compiler/translator/Initialize.cpp: Removed property svn:keywords.
        * src/compiler/translator/Initialize.h: Removed property svn:keywords.
        * src/compiler/translator/InitializeDll.cpp: Removed property svn:keywords.
        * src/compiler/translator/InitializeDll.h: Removed property svn:keywords.
        * src/compiler/translator/InitializeGlobals.h: Removed property svn:keywords.
        * src/compiler/translator/InitializeParseContext.cpp: Removed property svn:keywords.
        * src/compiler/translator/InitializeParseContext.h: Removed property svn:keywords.
        * src/compiler/translator/InitializeVariables.cpp: Removed property svn:keywords.
        * src/compiler/translator/InitializeVariables.h: Removed property svn:keywords.
        * src/compiler/translator/IntermTraverse.cpp: Removed property svn:keywords.
        * src/compiler/translator/Intermediate.cpp: Removed property svn:keywords.
        * src/compiler/translator/MMap.h: Removed property svn:keywords.
        * src/compiler/translator/NodeSearch.h: Removed property svn:keywords.
        * src/compiler/translator/OutputESSL.cpp: Removed property svn:keywords.
        * src/compiler/translator/OutputESSL.h: Removed property svn:keywords.
        * src/compiler/translator/OutputGLSL.cpp: Removed property svn:keywords.
        * src/compiler/translator/OutputGLSL.h: Removed property svn:keywords.
        * src/compiler/translator/OutputGLSLBase.cpp: Removed property svn:keywords.
        * src/compiler/translator/OutputGLSLBase.h: Removed property svn:keywords.
        * src/compiler/translator/OutputHLSL.cpp: Removed property svn:keywords.
        * src/compiler/translator/OutputHLSL.h: Removed property svn:keywords.
        * src/compiler/translator/ParseContext.cpp: Removed property svn:keywords.
        * src/compiler/translator/ParseContext.h: Removed property svn:keywords.
        * src/compiler/translator/PoolAlloc.cpp: Removed property svn:keywords.
        * src/compiler/translator/PoolAlloc.h: Removed property svn:keywords.
        * src/compiler/translator/Pragma.h: Removed property svn:keywords.
        * src/compiler/translator/QualifierAlive.cpp: Removed property svn:keywords.
        * src/compiler/translator/QualifierAlive.h: Removed property svn:keywords.
        * src/compiler/translator/RemoveTree.cpp: Removed property svn:keywords.
        * src/compiler/translator/RemoveTree.h: Removed property svn:keywords.
        * src/compiler/translator/RenameFunction.h: Removed property svn:keywords.
        * src/compiler/translator/RewriteElseBlocks.cpp: Removed property svn:keywords.
        * src/compiler/translator/RewriteElseBlocks.h: Removed property svn:keywords.
        * src/compiler/translator/SearchSymbol.cpp: Removed property svn:keywords.
        * src/compiler/translator/SearchSymbol.h: Removed property svn:keywords.
        * src/compiler/translator/ShHandle.h: Removed property svn:keywords.
        * src/compiler/translator/ShaderLang.cpp: Removed property svn:keywords.
        * src/compiler/translator/SymbolTable.cpp: Removed property svn:keywords.
        * src/compiler/translator/SymbolTable.h: Removed property svn:keywords.
        * src/compiler/translator/TranslatorESSL.cpp: Removed property svn:keywords.
        * src/compiler/translator/TranslatorESSL.h: Removed property svn:keywords.
        * src/compiler/translator/TranslatorGLSL.cpp: Removed property svn:keywords.
        * src/compiler/translator/TranslatorGLSL.h: Removed property svn:keywords.
        * src/compiler/translator/TranslatorHLSL.cpp: Removed property svn:keywords.
        * src/compiler/translator/TranslatorHLSL.h: Removed property svn:keywords.
        * src/compiler/translator/Types.h: Removed property svn:keywords.
        * src/compiler/translator/UnfoldShortCircuit.cpp: Removed property svn:keywords.
        * src/compiler/translator/UnfoldShortCircuit.h: Removed property svn:keywords.
        * src/compiler/translator/UnfoldShortCircuitAST.cpp: Removed property svn:keywords.
        * src/compiler/translator/UnfoldShortCircuitAST.h: Removed property svn:keywords.
        * src/compiler/translator/ValidateLimitations.cpp: Removed property svn:keywords.
        * src/compiler/translator/ValidateLimitations.h: Removed property svn:keywords.
        * src/compiler/translator/VariableInfo.cpp: Removed property svn:keywords.
        * src/compiler/translator/VariableInfo.h: Removed property svn:keywords.
        * src/compiler/translator/VariablePacker.cpp: Removed property svn:keywords.
        * src/compiler/translator/VariablePacker.h: Removed property svn:keywords.
        * src/compiler/translator/VersionGLSL.cpp: Removed property svn:keywords.
        * src/compiler/translator/VersionGLSL.h: Removed property svn:keywords.
        * src/compiler/translator/compilerdebug.cpp: Removed property svn:keywords.
        * src/compiler/translator/compilerdebug.h: Removed property svn:keywords.
        * src/compiler/translator/depgraph/DependencyGraph.cpp: Removed property svn:keywords.
        * src/compiler/translator/depgraph/DependencyGraph.h: Removed property svn:keywords.
        * src/compiler/translator/depgraph/DependencyGraphBuilder.cpp: Removed property svn:keywords.
        * src/compiler/translator/depgraph/DependencyGraphBuilder.h: Removed property svn:keywords.
        * src/compiler/translator/depgraph/DependencyGraphOutput.cpp: Removed property svn:keywords.
        * src/compiler/translator/depgraph/DependencyGraphOutput.h: Removed property svn:keywords.
        * src/compiler/translator/depgraph/DependencyGraphTraverse.cpp: Removed property svn:keywords.
        * src/compiler/translator/generate_parser.sh: Removed property svn:keywords.
        * src/compiler/translator/glslang.h: Removed property svn:keywords.
        * src/compiler/translator/glslang_lex.cpp: Removed property svn:keywords.
        * src/compiler/translator/glslang_tab.cpp: Removed property svn:keywords.
        * src/compiler/translator/glslang_tab.h: Removed property svn:keywords.
        * src/compiler/translator/intermOut.cpp: Removed property svn:keywords.
        * src/compiler/translator/intermediate.h: Removed property svn:keywords.
        * src/compiler/translator/localintermediate.h: Removed property svn:keywords.
        * src/compiler/translator/osinclude.h: Removed property svn:keywords.
        * src/compiler/translator/ossource_posix.cpp: Removed property svn:keywords.
        * src/compiler/translator/ossource_win.cpp: Removed property svn:keywords.
        * src/compiler/translator/parseConst.cpp: Removed property svn:keywords.
        * src/compiler/translator/timing/RestrictFragmentShaderTiming.cpp: Removed property svn:keywords.
        * src/compiler/translator/timing/RestrictFragmentShaderTiming.h: Removed property svn:keywords.
        * src/compiler/translator/timing/RestrictVertexShaderTiming.cpp: Removed property svn:keywords.
        * src/compiler/translator/timing/RestrictVertexShaderTiming.h: Removed property svn:keywords.
        * src/compiler/translator/util.cpp: Removed property svn:keywords.
        * src/compiler/translator/util.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/BufferStorage11.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/BufferStorage11.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/Fence11.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/Fence11.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/Image11.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/Image11.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/IndexBuffer11.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/IndexBuffer11.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/InputLayoutCache.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/InputLayoutCache.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/Query11.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/Query11.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/RenderStateCache.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/RenderStateCache.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/RenderTarget11.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/RenderTarget11.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/Renderer11.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/Renderer11.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/ShaderExecutable11.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/ShaderExecutable11.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/SwapChain11.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/SwapChain11.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/TextureStorage11.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/TextureStorage11.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/VertexBuffer11.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/VertexBuffer11.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/renderer11_utils.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d11/renderer11_utils.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/BufferStorage9.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/BufferStorage9.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/Fence9.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/Fence9.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/Image9.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/Image9.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/IndexBuffer9.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/IndexBuffer9.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/Query9.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/Query9.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/RenderTarget9.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/RenderTarget9.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/Renderer9.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/Renderer9.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/ShaderExecutable9.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/ShaderExecutable9.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/SwapChain9.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/SwapChain9.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/TextureStorage9.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/TextureStorage9.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/VertexBuffer9.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/VertexBuffer9.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/VertexDeclarationCache.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/VertexDeclarationCache.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/renderer9_utils.cpp: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/renderer9_utils.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/shaders/compiled/componentmaskps.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/shaders/compiled/flipyvs.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/shaders/compiled/luminanceps.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/shaders/compiled/passthroughps.h: Removed property svn:keywords.
        * src/libGLESv2/renderer/d3d9/shaders/compiled/standardvs.h: Removed property svn:keywords.

2015-01-28  Dana Burkart  <dburkart@apple.com>

        Move ASan flag settings from DebugRelease.xcconfig to Base.xcconfig
        https://bugs.webkit.org/show_bug.cgi?id=136765

        Reviewed by Alexey Proskuryakov.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:

2014-12-26  Dan Bernstein  <mitz@apple.com>

        <rdar://problem/19348208> REGRESSION (r177027): iOS builds use the wrong toolchain
        https://bugs.webkit.org/show_bug.cgi?id=139950

        Reviewed by David Kilzer.

        * Configurations/Base.xcconfig: Only define TOOLCHAINS when building for OS X, doing so
        in a manner that works with Xcode 5.1.1.

2014-12-24  Dan Bernstein  <mitz@apple.com>

        ANGLE extern symbols are not hidden by default, but should be
        https://bugs.webkit.org/show_bug.cgi?id=139936

        Reviewed by Mark Rowe.

        * Configurations/Base.xcconfig: Changed GCC_SYMBOLS_PRIVATE_EXTERN to YES.

2014-12-24  Dan Bernstein  <mitz@apple.com>

        Removed the Derived Sources target.

        It has been empty since r159533.

        * ANGLE.xcodeproj/project.pbxproj:

2014-12-09  David Kilzer  <ddkilzer@apple.com>

        Switch from using PLATFORM_NAME to SDK selectors in ANGLE, bmalloc, gtest, JavaScriptCore, WTF
        <http://webkit.org/b/139212>

        Reviewed by Joseph Pecoraro.

        * Configurations/Base.xcconfig:
        - Only set GCC_ENABLE_OBJC_GC, GCC_MODEL_TUNING and TOOLCHAINS
          on OS X.
        * Configurations/DebugRelease.xcconfig:
        - Only set MACOSX_DEPLOYMENT_TARGET and SDKROOT on OS X.

2014-10-30  Dana Burkart  <dburkart@apple.com>

        <rdar://problem/18821260> Prepare for the mysterious future

        Reviewed by Lucas Forschler.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:

2014-10-08  Brent Fulgham  <bfulgham@apple.com>

        [Win] Use proper v120 target for 64-bit builds.

        * ANGLE.vcxproj/libEGL.vcxproj:

2014-09-29  peavo@outlook.com  <peavo@outlook.com>

        [WinCairo] D3D11 is not used by default.
        https://bugs.webkit.org/show_bug.cgi?id=137215

        Reviewed by Alex Christensen.

        ANGLE_DEFAULT_D3D11 needs to be defined for D3D11 to be used as default.

        * ANGLE.vcxproj/libGLESv2Common.props:

2014-09-19  Daniel Bates  <dabates@apple.com>

        Always assume internal SDK when building configuration Production
        https://bugs.webkit.org/show_bug.cgi?id=136925
        <rdar://problem/18362399>

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:

2014-09-10  Roger Fong  <roger_fong@apple.com>

        Check for varying packing restrictions per program instead of per shader.
        https://bugs.webkit.org/show_bug.cgi?id=136585.
        <rdar://problem/16308409>.

        Reviewed by Dean Jackson.

        Remove varying packing restrictions checks from ANGLE.
        * src/compiler/translator/Compiler.cpp:
        (TCompiler::compile):
        (TCompiler::enforcePackingRestrictions):
        * src/compiler/translator/ShHandle.h:

2014-09-06  Darin Adler  <darin@apple.com>

        Make updates suggested by new version of Xcode
        https://bugs.webkit.org/show_bug.cgi?id=136603

        Reviewed by Mark Rowe.

        * ANGLE.xcodeproj/project.pbxproj: Updated LastUpgradeCheck.

        * Configurations/ANGLE.xcconfig: Added CLANG_WARN_BOOL_CONVERSION,
        CLANG_WARN_ENUM_CONVERSION, CLANG_WARN_INT_CONVERSION, COMBINE_HIDPI_IMAGES,
        and ENABLE_STRICT_OBJC_MSGSEND as suggested by Xcode upgrade check.

2014-09-06  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r173335.
        https://bugs.webkit.org/show_bug.cgi?id=136597

        Broke webgl/1.0.2/conformance/glsl/misc/shader-varying-
        packing-restrictions.html (Requested by ap on #webkit).

        Reverted changeset:

        "Remove statically used varyings from packing restrictions
        check."
        https://bugs.webkit.org/show_bug.cgi?id=136585
        http://trac.webkit.org/changeset/173335

2014-09-05  Roger Fong  <roger_fong@apple.com>

        Remove statically used varyings from packing restrictions check.
        https://bugs.webkit.org/show_bug.cgi?id=136585.
        <rdar://problem/16308409>

        Reviewed by Dean Jackson.

        * src/compiler/translator/Compiler.cpp:
        (TCompiler::enforcePackingRestrictions):

2014-08-29  Csaba Osztrogonác  <ossy@webkit.org>

        Unreviwed, remove empty directories.

        * src/compiler/depgraph: Removed.
        * src/compiler/timing: Removed.
        * src/libGLESv2/renderer/shaders: Removed.
        * src/libGLESv2/renderer/shaders/compiled: Removed.

2014-08-11  Andy Estes  <aestes@apple.com>

        [iOS] Get rid of iOS.xcconfig
        https://bugs.webkit.org/show_bug.cgi?id=135809

        Reviewed by Joseph Pecoraro.

        All iOS.xcconfig did was include AspenFamily.xcconfig, so there's no need for the indirection.

        * ANGLE.xcodeproj/project.pbxproj:
        * Configurations/Base.xcconfig:
        * Configurations/iOS.xcconfig: Removed.

2014-08-07  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed gardening.

        DebugSuffix targets should use our debugsuffix property sheet, and
        will therefore build to the proper output location with the proper
        suffix tags.

        Also, we must use the WebKit_Libraries environment variable, not a set
        of relative paths to the property sheets.

        * ANGLE.vcxproj/libEGL.vcxproj: Use 'debugsuffix.props' sheet.
        * ANGLE.vcxproj/libGLESv2.vcxproj: Ditto.
        * ANGLE.vcxproj/preprocessor.vcxproj: Ditto.
        * ANGLE.vcxproj/translator_common.vcxproj: Ditto.
        * ANGLE.vcxproj/translator_glsl.vcxproj: Ditto.
        * ANGLE.vcxproj/translator_hlsl.vcxproj: Ditto.
        * ANGLE.vcxproj/libEGLCommon.props: Use $(DebugSuffix) endings.
        * ANGLE.vcxproj/libGLESv2Common.props: Ditto.
        * ANGLE.vcxproj/translatorCommon.props: Output to 'lib' folder,
        not 'bin' folder. These are libraries!

2014-08-02  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed build fix.

        * src/libGLESv2/renderer/d3d11/BufferStorage11.cpp:
        (rx::BufferStorage11::copyData): Help compiler make
        decision about types.

2014-07-25  peavo@outlook.com  <peavo@outlook.com>

        [Win][ANGLE] Enable D3D11.
        https://bugs.webkit.org/show_bug.cgi?id=135296

        Reviewed by Alex Christensen.

        Direct3D 11 is not enabled on Windows.

        * ANGLE.vcxproj/libGLESv2.vcxproj: Added files.
        * ANGLE.vcxproj/libGLESv2.vcxproj.filters: Ditto.
        * ANGLE.vcxproj/libGLESv2Common.props: Enable D3D11.
        * src/libGLESv2/precompiled.h: Header file does not exist, avoid include.
        * changes.diff: Updated diff.

2014-06-04  Alex Christensen  <achristensen@webkit.org>

        Enable WebGL on Windows.
        https://bugs.webkit.org/show_bug.cgi?id=133503

        Reviewed by Brent Fulgham.

        * changes.diff
        Recorded additional changes from ANGLE.
        * ANGLE.vcxproj/libEGL.vcxproj:
        * ANGLE.vcxproj/libEGL.vcxproj.filters:
        * ANGLE.vcxproj/libGLESv2.vcxproj:
        * ANGLE.vcxproj/libGLESv2.vcxproj.filters:
        * include/EGL/egl.h:
        * include/EGL/eglsoftlinking.h: Added.
        * include/GLES2/gl2.h:
        * include/GLES2/gl2softlinking.h: Added.
        Resurrected soft linking headers from r153664.
        * src/libGLESv2/renderer/VertexBuffer.cpp:
        (rx::VertexBufferInterface::directStoragePossible):
        Compile fix for Win64.

2014-05-02  Alex Christensen  <achristensen@webkit.org>

        Update ANGLE Windows build.
        https://bugs.webkit.org/show_bug.cgi?id=132456

        Reviewed by Brent Fulgham.

        * ANGLE.vcxproj/libEGLCommon.props:
        * ANGLE.vcxproj/libGLESv2.vcxproj:
        * ANGLE.vcxproj/libGLESv2.vcxproj.filters:
        * ANGLE.vcxproj/libGLESv2Common.props:
        * ANGLE.vcxproj/translator_common.vcxproj:
        * ANGLE.vcxproj/translator_common.vcxproj.filters:
        * ANGLE.vcxproj/translator_glsl.vcxproj:
        * ANGLE.vcxproj/translator_glsl.vcxproj.filters:
        * ANGLE.vcxproj/translator_hlsl.vcxproj:
        * ANGLE.vcxproj/translator_hlsl.vcxproj.filters:
        Updated ANGLE build.
        * src/ANGLE.sln: Removed.
        * src/build_angle.gyp: Removed.
        * src/commit.h: Added.
        * changes.diff:
        * src/libGLESv2/Program.cpp:
        (gl::InfoLog::append):
        Fixed typo.

2014-05-01  Alex Christensen  <achristensen@webkit.org>

        Finish updating ANGLE.
        https://bugs.webkit.org/show_bug.cgi?id=132434

        Reviewed by Dean Jackson.

        * ANGLE.xcodeproj/project.pbxproj:
        Removed Uniform.cpp which is no longer in ANGLE.
        * changes.diff:
        Added more changes from ANGLE which are already included in WebKit.

        Updated ANGLE source files to e7a453a5bd76705ccb151117fa844846d4aa90af.  Long list of changes omitted.

2014-04-30  Alex Christensen  <achristensen@webkit.org>

        Updated ANGLE.
        https://bugs.webkit.org/show_bug.cgi?id=132367
        <rdar://problem/16211451>

        Reviewed by Dean Jackson.

        * ANGLE.plist:
        Updated and xml encoded.
        * ANGLE.xcodeproj/project.pbxproj:
        Added needed new source files.
        * changes.diff: 
        Added to keep track of differences between WebKit's copy of ANGLE and the master repository.
        
        Updated ANGLE source files to e7a453a5bd76705ccb151117fa844846d4aa90af.  Long list of changes omitted.

2014-03-25  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Remove the autotools build
        https://bugs.webkit.org/show_bug.cgi?id=130717

        Reviewed by Anders Carlsson.

        * GNUmakefile.am: Removed.

2014-03-14  Mark Rowe  <mrowe@apple.com>

        Fix the production build.

        Don't rely on USE_INTERNAL_SDK being set for the Production configuration since UseInternalSDK.xcconfig won't
        be at the expected relative path when working from installed source.

        * Configurations/Base.xcconfig:

2014-03-13  Tim Horton  <timothy_horton@apple.com>

        Fix relative paths to UseInternalSDK.xcconfig for ANGLE and WebKit/mac

        Rubber-stamped by Mark Rowe.

        One-too-few "..".

        * Configurations/Base.xcconfig:

2014-03-13  Radu Stavila  <stavila@adobe.com>

        Webkit not building on XCode 5.1 due to garbage collection no longer being supported
        https://bugs.webkit.org/show_bug.cgi?id=130087

        Reviewed by Mark Rowe.

        Disable garbage collection on macosx when not using internal SDK.

        * Configurations/Base.xcconfig:

2014-02-24  Dean Jackson  <dino@apple.com>

        Unreviewed. This file should not be marked as executable (copied in from ANGLE).

        * include/KHR/khrplatform.h:

2014-02-23  David Kilzer  <ddkilzer@apple.com>

        ANGLE: Stop using unsafe strcpy method
        <http://webkit.org/b/129237>
        <rdar://problem/11077580>

        Reviewed by Dean Jackson.

        * include/GLSLANG/ShaderLang.h:
        - Drive-by fix for header documentation.

        * src/compiler/translator/ShaderLang.cpp:
        (ShGetInfoLog):
        (ShGetObjectCode):
        * src/libGLESv2/Program.cpp:
        (gl::InfoLog::append):
        - Switch to use strncpy(), and explicitly set NULL terminator at
          the end of the buffer.

2014-02-23  Brent Fulgham  <bfulgham@apple.com>

        [WinCairo] Unreviewed build fix after r164565.

        * ANGLE.vcxproj/libEGL.vcxproj: Use correct path to files.
        * ANGLE.vcxproj/libGLESv2.vcxproj: Ditto.
        * ANGLE.vcxproj/libGLESv2.vcxproj.filters: Ditto.
        * ANGLE.vcxproj/preprocessor.vcxproj: Ditto.
        * ANGLE.vcxproj/translator_common.vcxproj: Ditto.
        * ANGLE.vcxproj/translator_common.vcxproj.filters: Ditto.
        * ANGLE.vcxproj/translator_glsl.vcxproj: Ditto.
        * ANGLE.vcxproj/translator_glsl.vcxproj.filters: Ditto.
        * ANGLE.vcxproj/translator_hlsl.vcxproj: Ditto.
        * ANGLE.vcxproj/translator_hlsl.vcxproj.filters: Ditto.

2014-02-23  Dean Jackson  <dino@apple.com>

        Missing files from previous commit.

2014-02-23  Dean Jackson  <dino@apple.com>

        Update ANGLE to 836bd2176e5607b14846cf1fbc5932dbc91318f4
        https://bugs.webkit.org/show_bug.cgi?id=129232

        Reviewed by Brent Fulgham.

        I also reapplied some of our changes from previous updates, including disabling the clang deprecation
        warnings in some files, adding the Apple note about license and defining YY_NO_INPUT.

        Huge list of source changes omitted.

2013-12-18  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix make distcheck.

        * GNUmakefile.am:

2013-12-17  Gustavo Noronha Silva  <gustavo.noronha@collabora.com>

        [GTK] Some ANGLE headers missing from dist
        https://bugs.webkit.org/show_bug.cgi?id=125782

        Reviewed by Carlos Garcia Campos.

        * GNUmakefile.am: add a few headers that were missing from the build,
        causing build failures when the system headers were incompatible.

2013-12-16  Alex Christensen  <achristensen@webkit.org>

        Fixed Win64 build on VS2013.
        https://bugs.webkit.org/show_bug.cgi?id=125753

        Reviewed by Brent Fulgham.

        * ANGLE.vcxproj/libGLESv2.vcxproj:
        * ANGLE.vcxproj/preprocessor.vcxproj:
        * ANGLE.vcxproj/translator_common.vcxproj:
        * ANGLE.vcxproj/translator_glsl.vcxproj:
        * ANGLE.vcxproj/translator_hlsl.vcxproj:
        Added correct PlatformToolset for 64-bit builds.

2013-12-13  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed build fix after r160548

        I missed the ANGLE files, since we aren't building these
        on the Apple Windows port at the moment.

        * ANGLE.vcxproj/libEGL.vcxproj: Update to VS2013
        * ANGLE.vcxproj/libGLESv2.vcxproj: Ditto
        * ANGLE.vcxproj/preprocessor.vcxproj: Ditto
        * ANGLE.vcxproj/translator_common.vcxproj: Ditto
        * ANGLE.vcxproj/translator_glsl.vcxproj: Ditto
        * ANGLE.vcxproj/translator_hlsl.vcxproj: Ditto

2013-12-06  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r159543.
        http://trac.webkit.org/changeset/159543
        https://bugs.webkit.org/show_bug.cgi?id=125371

        Build fix for mac no longer needed (Requested by rfong on
        #webkit).

        * ANGLE.xcodeproj/project.pbxproj:
        * src/compiler/glslang_tab.cpp:
        (yysyntax_error):
        (glslang_parse):
        * src/compiler/glslang_tab.h:
        * src/compiler/preprocessor/ExpressionParser.cpp:
        (yy_symbol_print):
        (yy_stack_print):
        (yy_reduce_print):
        (yytnamerr):
        (yysyntax_error):
        (yydestruct):
        (yyparse):

2013-12-05  Roger Fong  <roger_fong@apple.com>

        [WebGL] Make sure we satisfy uniform and varying packing restrictions.
        https://bugs.webkit.org/show_bug.cgi?id=125124.
        <rdar://problem/15203291>

        Reviewed by Brent Fulgham.

        * src/compiler/Compiler.cpp: 
        Add a check to enforcePackingRestrictions to ensure we make sure packing restrictions for varyings are satisfied as well.
        (TCompiler::TCompiler):
        (TCompiler::Init):
        (TCompiler::compile):
        (TCompiler::enforcePackingRestrictions):
        * src/compiler/ShHandle.h: Keep track of maximum varying vectors.

2013-12-05  Matthew Hanson  <matthew_hanson@apple.com>

        Fix ANGLE build failures by re-comitting the changes in http://trac.webkit.org/changeset/154223
        on top of the library updates introduced by http://trac.webkit.org/changeset/159533.

        Rubber-stamped by Babak Shafiei.

        * src/compiler/glslang.l:
        * src/compiler/glslang_lex.cpp:
        * src/compiler/preprocessor/Tokenizer.cpp:
        * src/compiler/preprocessor/Tokenizer.l:

2013-12-03  Daniel Bates  <dabates@apple.com>

        ANGLE fails to build with trunk clang: unused constant kTraceBufferLen
        https://bugs.webkit.org/show_bug.cgi?id=125164
        https://code.google.com/p/angleproject/issues/detail?id=534

        Reviewed by Darin Adler.

        Move the definition of the constant kTraceBufferLen under the macro
        guard TRACE_ENABLED since it's only referenced in code guarded by
        TRACE_ENABLED.

        * src/compiler/debug.cpp:

2013-11-21  Alex Christensen  <achristensen@webkit.org>

        Remove ANGLEGenerated from Windows build.
        https://bugs.webkit.org/show_bug.cgi?id=124759

        Reviewed by Darin Adler.

        * ANGLE.vcxproj/ANGLEGenerated.vcxproj: Removed.
        * ANGLE.vcxproj/ANGLEGenerated.vcxproj.filters: Removed.

2013-11-21  Alex Christensen  <achristensen@webkit.org>

        Unreviewed build fix.

        * src/libGLESv2/Constants.h: Added from checkout a60e0805721f62c28a55faf2df74472cc5fc91fc.

2013-11-21  Mark Rowe  <mrowe@apple.com>

        <https://webkit.org/b/124701> Fix an error in a few Xcode configuration setting files.

        Reviewed by Alexey Proskuryakov.

        * Configurations/Base.xcconfig:

2013-11-21  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed gardening to hide annoying *.user files when.

        * ANGLE.vcxproj: Added property svn:ignore.

2013-11-21  peavo@outlook.com  <peavo@outlook.com>

        [WinCairo] Building ANGLE libraries fails.
        https://bugs.webkit.org/show_bug.cgi?id=124679

        Reviewed by Brent Fulgham.

        Added/removed files to/from project, and re-added constants.h file.

        * ANGLE.vcxproj/libEGL.vcxproj:
        * ANGLE.vcxproj/libEGL.vcxproj.filters:
        * ANGLE.vcxproj/libGLESv2.vcxproj:
        * ANGLE.vcxproj/libGLESv2.vcxproj.filters:
        * ANGLE.vcxproj/libGLESv2Common.props:
        * ANGLE.vcxproj/translator_common.vcxproj:
        * ANGLE.vcxproj/translator_common.vcxproj.filters:
        * ANGLE.vcxproj/translator_glsl.vcxproj:
        * ANGLE.vcxproj/translator_glsl.vcxproj.filters:
        * ANGLE.vcxproj/translator_hlsl.vcxproj:
        * ANGLE.vcxproj/translator_hlsl.vcxproj.filters:
        * src/libGLESv2/libGLESv2.def:

2013-11-20  Sergio Correia  <sergio.correia@openbossa.org>

        ANGLE doesn't build with bison 3.0
        https://bugs.webkit.org/show_bug.cgi?id=124642

        Reviewed by Gyuyoung Kim.

        This is a reedition of r154109, now that ANGLE source has been updated
        in r159533.

        * src/compiler/glslang.y: Use %lex-param to set YYLEX_PARAM and stop
        using the deprecated YYID macro.

2013-11-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix GTK build.

        * GNUmakefile.am: Remove duplicated entries.

2013-11-19  Martin Robinson  <mrobinson@igalia.com>

        Fix the GTK+ build after the ANGLE update in r159533

        * GNUmakefile.am: Update the source list.

2013-11-19  Roger Fong  <roger_fong@apple.com>

        Unreviewed. Build fix for Mac.

        * src/compiler/glslang_tab.cpp:
        (yysyntax_error):
        (yyerror):
        * src/compiler/glslang_tab.h:
        * src/compiler/preprocessor/ExpressionParser.cpp:
        (yysyntax_error):

2013-11-19  Roger Fong  <roger_fong@apple.com>

        Unreviewed. Prospective build fix for GTK port following r159533.

        * GNUmakefile.am:

2013-11-19  Roger Fong  <roger_fong@apple.com>

        Update ANGLE sources.
        https://bugs.webkit.org/show_bug.cgi?id=124615.

        Reviewed by Dean Jackson.

        Update ANGLE to checkout a60e0805721f62c28a55faf2df74472cc5fc91fc.
        Modify xcodeproj files as necessary, update plist.
        Stop using DerivedSources.make and just use the generated sources that are checked into ANGLE.
        Add a note to bison generated files indicating that Apple elects to distribute said files under the BSD license: 
        ExpressionParser.cpp, glslang_tab.cpp, glslang_tab.h.

        * ANGLE.plist:
        * ANGLE.xcodeproj/project.pbxproj:
        * DerivedSources.make: Removed.
        * include/EGL/egl.h:
        * include/EGL/eglsoftlinking.h: Removed.
        * include/GLES2/gl2.h:
        * include/GLES2/gl2softlinking.h: Removed.
        * include/GLSLANG/ShaderLang.h:
        * include/KHR/khrplatform.h:
        * src/ANGLE.sln: Added.
        * src/build_angle.gypi:
        * src/common/debug.h:
        * src/common/event_tracer.cpp: Added.
        (gl::TraceGetTraceCategoryEnabledFlag):
        (gl::TraceAddTraceEvent):
        * src/common/event_tracer.h: Added.
        * src/common/version.h:
        * src/compiler/CodeGen.cpp: Added.
        (ConstructCompiler):
        (DeleteCompiler):
        * src/compiler/CodeGenGLSL.cpp: Removed.
        * src/compiler/CodeGenHLSL.cpp: Removed.
        * src/compiler/Common.h:
        (NewPoolTString):
        * src/compiler/Compiler.cpp:
        (TCompiler::Init):
        (TCompiler::compile):
        (TCompiler::InitBuiltInSymbolTable):
        (TCompiler::clearResults):
        (TCompiler::collectVariables):
        * src/compiler/ConstantUnion.h:
        * src/compiler/DetectDiscontinuity.cpp:
        * src/compiler/InfoSink.h:
        * src/compiler/InitializeDll.cpp:
        (InitProcess):
        (DetachProcess):
        * src/compiler/InitializeDll.h:
        * src/compiler/InitializeGLPosition.cpp: Added.
        (InitializeGLPosition::visitAggregate):
        (InitializeGLPosition::insertCode):
        * src/compiler/InitializeGLPosition.h: Added.
        (InitializeGLPosition::InitializeGLPosition):
        (InitializeGLPosition::visitBinary):
        (InitializeGLPosition::visitUnary):
        (InitializeGLPosition::visitSelection):
        (InitializeGLPosition::visitLoop):
        (InitializeGLPosition::visitBranch):
        * src/compiler/InitializeGlobals.h:
        * src/compiler/InitializeParseContext.cpp:
        (InitializeParseContextIndex):
        (FreeParseContextIndex):
        (SetGlobalParseContext):
        (GetGlobalParseContext):
        * src/compiler/InitializeParseContext.h:
        * src/compiler/IntermTraverse.cpp:
        (TIntermSymbol::traverse):
        (TIntermConstantUnion::traverse):
        (TIntermBinary::traverse):
        (TIntermUnary::traverse):
        (TIntermAggregate::traverse):
        (TIntermSelection::traverse):
        (TIntermLoop::traverse):
        (TIntermBranch::traverse):
        * src/compiler/Intermediate.cpp:
        (GetHigherPrecision):
        (getOperatorString):
        (TIntermLoop::replaceChildNode):
        (TIntermBranch::replaceChildNode):
        (TIntermBinary::replaceChildNode):
        (TIntermUnary::replaceChildNode):
        (TIntermAggregate::replaceChildNode):
        (TIntermSelection::replaceChildNode):
        (TIntermOperator::isAssignment):
        (TIntermediate::promoteConstantUnion):
        * src/compiler/MapLongVariableNames.cpp:
        * src/compiler/MapLongVariableNames.h:
        * src/compiler/NodeSearch.h: Added.
        (sh::NodeSearchTraverser::NodeSearchTraverser):
        (sh::NodeSearchTraverser::found):
        (sh::NodeSearchTraverser::search):
        (sh::FindDiscard::visitBranch):
        (sh::FindSideEffectRewriting::visitBinary):
        * src/compiler/OutputGLSLBase.cpp:
        (TOutputGLSLBase::visitSelection):
        (TOutputGLSLBase::visitAggregate):
        (TOutputGLSLBase::visitLoop):
        * src/compiler/OutputGLSLBase.h:
        * src/compiler/OutputHLSL.cpp:
        (sh::OutputHLSL::OutputHLSL):
        (sh::OutputHLSL::header):
        (sh::OutputHLSL::visitBinary):
        (sh::OutputHLSL::visitSelection):
        (sh::OutputHLSL::visitBranch):
        (sh::OutputHLSL::handleExcessiveLoop):
        (sh::OutputHLSL::addConstructor):
        * src/compiler/OutputHLSL.h:
        * src/compiler/ParseContext.cpp: Added.
        (TParseContext::parseVectorFields):
        (TParseContext::parseMatrixFields):
        (TParseContext::recover):
        (TParseContext::error):
        (TParseContext::warning):
        (TParseContext::trace):
        (TParseContext::assignError):
        (TParseContext::unaryOpError):
        (TParseContext::binaryOpError):
        (TParseContext::precisionErrorCheck):
        (TParseContext::lValueErrorCheck):
        (TParseContext::constErrorCheck):
        (TParseContext::integerErrorCheck):
        (TParseContext::globalErrorCheck):
        (TParseContext::reservedErrorCheck):
        (TParseContext::constructorErrorCheck):
        (TParseContext::voidErrorCheck):
        (TParseContext::boolErrorCheck):
        (TParseContext::samplerErrorCheck):
        (TParseContext::structQualifierErrorCheck):
        (TParseContext::parameterSamplerErrorCheck):
        (TParseContext::containsSampler):
        (TParseContext::arraySizeErrorCheck):
        (TParseContext::arrayQualifierErrorCheck):
        (TParseContext::arrayTypeErrorCheck):
        (TParseContext::arrayErrorCheck):
        (TParseContext::nonInitConstErrorCheck):
        (TParseContext::nonInitErrorCheck):
        (TParseContext::paramErrorCheck):
        (TParseContext::extensionErrorCheck):
        (TParseContext::supportsExtension):
        (TParseContext::isExtensionEnabled):
        (TParseContext::findFunction):
        (TParseContext::executeInitializer):
        (TParseContext::areAllChildConst):
        (TParseContext::addConstructor):
        (TParseContext::foldConstConstructor):
        (TParseContext::constructBuiltIn):
        (TParseContext::constructStruct):
        (TParseContext::addConstVectorNode):
        (TParseContext::addConstMatrixNode):
        (TParseContext::addConstArrayNode):
        (TParseContext::addConstStruct):
        (TParseContext::enterStructDeclaration):
        (TParseContext::exitStructDeclaration):
        (TParseContext::structNestingErrorCheck):
        (TParseContext::addIndexExpression):
        (PaParseStrings):
        * src/compiler/ParseContext.h: Added.
        (TParseContext::TParseContext):
        (TParseContext::numErrors):
        (TParseContext::infoSink):
        (TParseContext::pragma):
        (TParseContext::extensionBehavior):
        * src/compiler/ParseHelper.cpp: Removed.
        * src/compiler/ParseHelper.h: Removed.
        * src/compiler/PoolAlloc.cpp:
        (InitializePoolIndex):
        (FreePoolIndex):
        (GetGlobalPoolAllocator):
        (SetGlobalPoolAllocator):
        * src/compiler/PoolAlloc.h:
        (pool_allocator::pool_allocator):
        * src/compiler/SearchSymbol.h:
        * src/compiler/ShHandle.h:
        (TCompiler::getVaryings):
        * src/compiler/ShaderLang.cpp:
        (checkVariableMaxLengths):
        (ShInitialize):
        (ShFinalize):
        (ShConstructCompiler):
        (ShCompile):
        (ShGetInfo):
        (ShGetVariableInfo):
        (ShCheckVariablesWithinPackingLimits):
        * src/compiler/SymbolTable.cpp:
        (TSymbolTable::~TSymbolTable):
        * src/compiler/SymbolTable.h:
        (TSymbol::TSymbol):
        (TSymbolTableLevel::insert):
        (TSymbolTable::push):
        (TSymbolTable::pop):
        (TSymbolTable::findBuiltIn):
        (TSymbolTable::relateToExtension):
        (TSymbolTable::setDefaultPrecision):
        (TSymbolTable::getDefaultPrecision):
        (TSymbolTable::supportsPrecision):
        * src/compiler/Types.h:
        (NewPoolTFieldList):
        (TType::TType):
        (TType::setNominalSize):
        (TPublicType::setAggregate):
        * src/compiler/UnfoldShortCircuit.cpp:
        (sh::UnfoldShortCircuit::visitBinary):
        (sh::UnfoldShortCircuit::visitSelection):
        * src/compiler/UnfoldShortCircuit.h:
        * src/compiler/UnfoldShortCircuitAST.cpp: Added.
        (UnfoldShortCircuitAST::visitBinary):
        (UnfoldShortCircuitAST::updateTree):
        * src/compiler/UnfoldShortCircuitAST.h: Added.
        (UnfoldShortCircuitAST::UnfoldShortCircuitAST):
        (UnfoldShortCircuitAST::NodeUpdateEntry::NodeUpdateEntry):
        * src/compiler/Uniform.cpp:
        (sh::Uniform::Uniform):
        * src/compiler/Uniform.h:
        * src/compiler/ValidateLimitations.cpp:
        (ValidateLimitations::validateFunctionCall):
        (ValidateLimitations::validateOperation):
        * src/compiler/VariableInfo.cpp:
        (TVariableInfo::TVariableInfo):
        (CollectVariables::CollectVariables):
        (CollectVariables::visitSymbol):
        (CollectVariables::visitAggregate):
        * src/compiler/VariableInfo.h:
        * src/compiler/debug.cpp:
        * src/compiler/depgraph/DependencyGraph.cpp:
        * src/compiler/depgraph/DependencyGraphBuilder.cpp:
        (TDependencyGraphBuilder::visitBinary):
        * src/compiler/generate_parser.sh:
        * src/compiler/glslang.l:
        * src/compiler/glslang.y:
        * src/compiler/glslang_lex.cpp:
        (input):
        (yyerror):
        (int_constant):
        (float_constant):
        (glslang_scan):
        * src/compiler/glslang_tab.cpp:
        (yysyntax_error):
        (glslang_parse):
        * src/compiler/glslang_tab.h:
        * src/compiler/intermediate.h:
        (TIntermSymbol::hasSideEffects):
        (TIntermSymbol::replaceChildNode):
        (TIntermConstantUnion::hasSideEffects):
        (TIntermConstantUnion::getIConst):
        (TIntermConstantUnion::getFConst):
        (TIntermConstantUnion::getBConst):
        (TIntermConstantUnion::replaceChildNode):
        (TIntermOperator::hasSideEffects):
        (TIntermBinary::hasSideEffects):
        (TIntermUnary::hasSideEffects):
        (TIntermAggregate::hasSideEffects):
        (TIntermSelection::hasSideEffects):
        (TIntermTraverser::~TIntermTraverser):
        (TIntermTraverser::incrementDepth):
        (TIntermTraverser::decrementDepth):
        (TIntermTraverser::getParentNode):
        * src/compiler/localintermediate.h:
        * src/compiler/parseConst.cpp:
        * src/compiler/preprocessor/ExpressionParser.cpp:
        (yy_symbol_print):
        (yy_stack_print):
        (yy_reduce_print):
        (yystrlen):
        (yystpcpy):
        (yytnamerr):
        (yysyntax_error):
        (yydestruct):
        (yyparse):
        * src/compiler/preprocessor/ExpressionParser.y:
        * src/compiler/preprocessor/Preprocessor.cpp:
        (pp::Preprocessor::setMaxTokenLength):
        (pp::Preprocessor::lex):
        * src/compiler/preprocessor/Preprocessor.h:
        * src/compiler/preprocessor/Tokenizer.cpp:
        (pp::Tokenizer::Tokenizer):
        (pp::Tokenizer::lex):
        * src/compiler/preprocessor/Tokenizer.h:
        (pp::Tokenizer::setMaxTokenLength):
        * src/compiler/preprocessor/Tokenizer.l:
        * src/compiler/preprocessor/generate_parser.sh:
        * src/compiler/preprocessor/preprocessor.vcxproj: Added.
        * src/compiler/preprocessor/preprocessor.vcxproj.filters: Added.
        * src/compiler/timing/RestrictFragmentShaderTiming.cpp:
        * src/compiler/translator.vcxproj: Added.
        * src/compiler/translator.vcxproj.filters: Added.
        * src/compiler/util.cpp:
        (atof_clamp):
        (atoi_clamp):
        * src/compiler/util.h:
        * src/libEGL/Surface.cpp:
        (egl::Surface::checkForOutOfDateSwapChain):
        * src/libEGL/libEGL.cpp:
        * src/libEGL/libEGL.rc:
        * src/libEGL/libEGL.vcxproj: Added.
        * src/libEGL/libEGL.vcxproj.filters: Added.
        * src/libGLESv2/Buffer.cpp:
        (gl::Buffer::bufferData):
        (gl::Buffer::bufferSubData):
        (gl::Buffer::size):
        (gl::Buffer::getIndexRangeCache):
        * src/libGLESv2/Buffer.h:
        * src/libGLESv2/Context.cpp:
        (gl::Context::applyTextures):
        (gl::Context::getBoundFramebufferTextureSerials):
        * src/libGLESv2/Context.h:
        (gl::Context::getRenderer):
        * src/libGLESv2/Framebuffer.h:
        * src/libGLESv2/ProgramBinary.cpp:
        (gl::DiscardWorkaround):
        (gl::ProgramBinary::load):
        (gl::ProgramBinary::link):
        (gl::ProgramBinary::linkAttributes):
        (gl::AttributeSorter::AttributeSorter):
        (gl::ProgramBinary::initAttributesByLayout):
        (gl::ProgramBinary::sortAttributesByLayout):
        * src/libGLESv2/ProgramBinary.h:
        * src/libGLESv2/Renderbuffer.cpp:
        (gl::RenderbufferTexture2D::getTextureSerial):
        (gl::RenderbufferTextureCubeMap::getTextureSerial):
        (gl::Renderbuffer::getTextureSerial):
        * src/libGLESv2/Renderbuffer.h:
        (gl::RenderbufferStorage::getTextureSerial):
        * src/libGLESv2/Shader.cpp:
        (gl::Shader::parseVaryings):
        (gl::Shader::uncompile):
        * src/libGLESv2/Shader.h:
        * src/libGLESv2/Texture.cpp:
        (gl::TextureCubeMap::storage):
        * src/libGLESv2/Uniform.cpp:
        (gl::Uniform::Uniform):
        (gl::Uniform::~Uniform):
        (gl::Uniform::isArray):
        (gl::Uniform::elementCount):
        * src/libGLESv2/Uniform.h:
        * src/libGLESv2/constants.h: Removed.
        * src/libGLESv2/libGLESv2.def:
        * src/libGLESv2/libGLESv2.rc:
        * src/libGLESv2/libGLESv2.vcxproj: Added.
        * src/libGLESv2/libGLESv2.vcxproj.filters: Added.
        * src/libGLESv2/precompiled.h:
        * src/libGLESv2/renderer/Image11.cpp:
        (rx::Image11::generateMipmap):
        (rx::Image11::loadData):
        (rx::Image11::loadCompressedData):
        (rx::Image11::copy):
        (rx::Image11::createStagingTexture):
        (rx::Image11::map):
        * src/libGLESv2/renderer/Image11.h:
        * src/libGLESv2/renderer/IndexBuffer.cpp:
        (rx::IndexBufferInterface::mapBuffer):
        (rx::StaticIndexBufferInterface::getIndexRangeCache):
        * src/libGLESv2/renderer/IndexBuffer.h:
        * src/libGLESv2/renderer/IndexBuffer11.cpp:
        (rx::IndexBuffer11::mapBuffer):
        * src/libGLESv2/renderer/IndexDataManager.cpp:
        (rx::IndexDataManager::prepareIndexData):
        (rx::IndexDataManager::getCountingIndices):
        * src/libGLESv2/renderer/IndexRangeCache.cpp: Added.
        (rx::IndexRangeCache::addRange):
        (rx::IndexRangeCache::invalidateRange):
        (rx::IndexRangeCache::findRange):
        (rx::IndexRangeCache::clear):
        (rx::IndexRangeCache::IndexRange::IndexRange):
        (rx::IndexRangeCache::IndexRange::operator<):
        (rx::IndexRangeCache::IndexBounds::IndexBounds):
        * src/libGLESv2/renderer/IndexRangeCache.h: Added.
        * src/libGLESv2/renderer/InputLayoutCache.cpp:
        (rx::InputLayoutCache::InputLayoutCache):
        (rx::InputLayoutCache::clear):
        (rx::InputLayoutCache::markDirty):
        (rx::InputLayoutCache::applyVertexBuffers):
        (rx::InputLayoutCache::hashInputLayout):
        (rx::InputLayoutCache::compareInputLayouts):
        * src/libGLESv2/renderer/InputLayoutCache.h:
        (rx::InputLayoutCache::InputLayoutKey::begin):
        (rx::InputLayoutCache::InputLayoutKey::end):
        * src/libGLESv2/renderer/RenderTarget11.cpp:
        (rx::RenderTarget11::getTexture):
        (rx::RenderTarget11::getRenderTargetView):
        (rx::RenderTarget11::getDepthStencilView):
        (rx::RenderTarget11::getShaderResourceView):
        * src/libGLESv2/renderer/RenderTarget11.h:
        * src/libGLESv2/renderer/Renderer.cpp:
        (rx::Renderer::initializeCompiler):
        * src/libGLESv2/renderer/Renderer.h:
        * src/libGLESv2/renderer/Renderer11.cpp:
        (rx::Renderer11::initialize):
        (rx::Renderer11::applyPrimitiveType):
        (rx::Renderer11::applyRenderTarget):
        (rx::Renderer11::drawLineLoop):
        (rx::Renderer11::drawTriangleFan):
        (rx::Renderer11::applyUniforms):
        (rx::Renderer11::clear):
        (rx::Renderer11::markAllStateDirty):
        (rx::Renderer11::copyImage):
        (rx::Renderer11::compileToExecutable):
        (rx::Renderer11::getRenderTargetResource):
        (rx::Renderer11::blitRenderbufferRect):
        * src/libGLESv2/renderer/Renderer11.h:
        * src/libGLESv2/renderer/Renderer9.cpp:
        (rx::Renderer9::initialize):
        (rx::Renderer9::setViewport):
        (rx::Renderer9::drawLineLoop):
        (rx::Renderer9::compileToExecutable):
        * src/libGLESv2/renderer/Renderer9.h:
        * src/libGLESv2/renderer/SwapChain.h:
        * src/libGLESv2/renderer/SwapChain11.cpp:
        (rx::SwapChain11::resetOffscreenTexture):
        (rx::SwapChain11::reset):
        (rx::SwapChain11::swapRect):
        * src/libGLESv2/renderer/SwapChain9.cpp:
        (rx::convertInterval):
        * src/libGLESv2/renderer/TextureStorage11.cpp:
        (rx::TextureStorage11::IsTextureFormatRenderable):
        (rx::TextureStorage11::generateMipmapLayer):
        (rx::TextureStorage11_Cube::getRenderTarget):
        * src/libGLESv2/renderer/VertexBuffer.cpp:
        (rx::VertexBufferInterface::storeVertexAttributes):
        (rx::VertexBufferInterface::storeRawData):
        (rx::VertexBufferInterface::reserveVertexSpace):
        (rx::StaticVertexBufferInterface::lookupAttribute):
        (rx::StaticVertexBufferInterface::storeVertexAttributes):
        * src/libGLESv2/renderer/VertexBuffer.h:
        * src/libGLESv2/renderer/VertexBuffer11.cpp:
        (rx::VertexBuffer11::getSpaceRequired):
        * src/libGLESv2/renderer/VertexBuffer11.h:
        * src/libGLESv2/renderer/VertexBuffer9.cpp:
        (rx::VertexBuffer9::storeVertexAttributes):
        (rx::VertexBuffer9::getSpaceRequired):
        (rx::VertexBuffer9::requiresConversion):
        (rx::VertexBuffer9::getVertexSize):
        (rx::VertexBuffer9::spaceRequired):
        * src/libGLESv2/renderer/VertexBuffer9.h:
        * src/libGLESv2/renderer/VertexDataManager.cpp:
        (rx::elementsInBuffer):
        (rx::StreamingBufferElementCount):
        (rx::VertexDataManager::prepareVertexData):
        * src/libGLESv2/renderer/VertexDataManager.h:
        * src/libGLESv2/renderer/renderer11_utils.cpp:
        (gl_d3d11::ConvertTextureFormat):
        * src/libGLESv2/renderer/shaders/compiled/clear11vs.h:
        * src/libGLESv2/renderer/shaders/compiled/clearmultiple11ps.h:
        * src/libGLESv2/renderer/shaders/compiled/clearsingle11ps.h:
        * src/libGLESv2/renderer/shaders/compiled/componentmaskps.h:
        * src/libGLESv2/renderer/shaders/compiled/flipyvs.h:
        * src/libGLESv2/renderer/shaders/compiled/luminanceps.h:
        * src/libGLESv2/renderer/shaders/compiled/passthrough11vs.h:
        * src/libGLESv2/renderer/shaders/compiled/passthroughlum11ps.h:
        * src/libGLESv2/renderer/shaders/compiled/passthroughlumalpha11ps.h:
        * src/libGLESv2/renderer/shaders/compiled/passthroughps.h:
        * src/libGLESv2/renderer/shaders/compiled/passthroughrgb11ps.h:
        * src/libGLESv2/renderer/shaders/compiled/passthroughrgba11ps.h:
        * src/libGLESv2/renderer/shaders/compiled/standardvs.h:
        * src/libGLESv2/renderer/shaders/generate_shaders.bat:
        * src/libGLESv2/utilities.cpp:
        (gl::ComputeTypeSize):
        * src/libGLESv2/utilities.h:
        * src/third_party/murmurhash/MurmurHash3.cpp:
        (rotl32):
        (rotl64):
        (getblock):
        (fmix):
        (MurmurHash3_x86_32):
        (MurmurHash3_x86_128):
        (MurmurHash3_x64_128):
        * src/third_party/murmurhash/MurmurHash3.h:
        * src/third_party/trace_event: Added.
        * src/third_party/trace_event/trace_event.h: Added.
        (gl::TraceEvent::TraceID::TraceID):
        (gl::TraceEvent::TraceID::data):
        (gl::TraceEvent::TraceStringWithCopy::TraceStringWithCopy):
        (gl::TraceEvent::TraceStringWithCopy::operator const char* ):
        (gl::TraceEvent::setTraceValue):
        (gl::TraceEvent::addTraceEvent):
        (gl::TraceEvent::TraceEndOnScopeClose::TraceEndOnScopeClose):
        (gl::TraceEvent::TraceEndOnScopeClose::~TraceEndOnScopeClose):
        (gl::TraceEvent::TraceEndOnScopeClose::initialize):
        (gl::TraceEvent::TraceEndOnScopeClose::addEventIfEnabled):
        (gl::TraceEvent::SamplingStateScope::SamplingStateScope):
        (gl::TraceEvent::SamplingStateScope::~SamplingStateScope):
        (gl::TraceEvent::SamplingStateScope::current):
        (gl::TraceEvent::SamplingStateScope::set):

2013-11-18  Mark Rowe  <mrowe@apple.com>

        Use hw.activecpu for determining how many processes to spawn.

        It's documented as the preferred way to determine the number of threads
        or processes to create in a SMP aware application.

        Rubber-stamped by Tim Horton.

        * ANGLE.xcodeproj/project.pbxproj:

2013-11-06  Dean Jackson  <dino@apple.com>

        kTraceBufferLen is unused in default builds
        https://bugs.webkit.org/show_bug.cgi?id=123941
        <rdar://problem/15409804>

        Reviewed by Tim Horton.

        kTraceBufferLen is not used in debug.cpp if TRACE_ENABLED is
        not defined. This causes a warning in newer builds of clang.
        For now, skip warnings on unused variables until we
        update from ANGLE.

        * src/compiler/debug.cpp: Add unused-variable ignore pragma.

2013-10-24  Mark Rowe  <mrowe@apple.com>

        Remove references to OS X 10.7 from Xcode configuration settings.

        Now that we're not building for OS X 10.7 they're no longer needed.

        Reviewed by Anders Carlsson.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:

2013-10-24  Mark Rowe  <mrowe@apple.com>

        <rdar://problem/15312643> Prepare for the mysterious future.

        Reviewed by David Kilzer.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:

2013-10-10  Mark Rowe  <mrowe@apple.com>

        <rdar://problem/13341666> WebKit should always build against an SDK.

        Have all projects default to building against the OS X Internal SDK for the Production
        configuration. For the Debug and Release configurations, look for UseInternalSDK.xcconfig
        to determine whether the OS X Internal SDK should be used. If not, use the normal OS X SDK.

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:

2013-10-08  Alex Christensen  <achristensen@webkit.org>

        Generate pdb files for debugging ANGLE DLLs.
        https://bugs.webkit.org/show_bug.cgi?id=122530

        Reviewed by Brent Fulgham.

        * ANGLE.vcxproj/libEGLCommon.props:
        * ANGLE.vcxproj/libGLESv2Common.props:
        Generate debug information.

2013-10-03  Dan Bernstein  <mitz@apple.com>

        <rdar://problem/15116673> [mac] Build failure when the source directory is not named ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=122307

        Reviewed by Mark Rowe.

        * ANGLE.xcodeproj/project.pbxproj: Ensure that the symlink to SRCROOT in
        DerivedSources/ANGLE is named ANGLE.

2013-09-29  Darin Adler  <darin@apple.com>

        Take some Xcode advice about turning on additional warnings in ANGLE and gtest
        https://bugs.webkit.org/show_bug.cgi?id=122087

        Reviewed by Mark Rowe.

        * Configurations/Base.xcconfig: Add some of the warnings that Xcode 5 suggested.
        * src/compiler/preprocessor/Tokenizer.l: Defined YY_NO_INPUT so we don't compile
        an unused function and get a warning.

2013-09-29  Darin Adler  <darin@apple.com>

        Use RenderElement instead of RenderObject in many places
        https://bugs.webkit.org/show_bug.cgi?id=122078

        Reviewed by Andreas Kling.

        * ANGLE.xcodeproj/project.pbxproj: Let Xcode do its thing to this file.

2013-09-24  Mark Rowe  <mrowe@apple.com>

        <rdar://problem/14971518> WebKit should build against the Xcode default toolchain when targeting OS X 10.8

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:

2013-09-06  peavo@outlook.com  <peavo@outlook.com>

        [Win][WebGL] WebGL rendering is slow.
        https://bugs.webkit.org/show_bug.cgi?id=120841

        Reviewed by Brent Fulgham.

        Rendering WebGL content is slow on Windows, because lots of debug information is written to debug.txt.

        * ANGLE.vcxproj/ANGLERelease.props: Disable logging in release builds.

2013-09-05  Dan Bernstein  <mitz@apple.com>

        INSTALL_PATH_PREFIX is used even when not installing
        https://bugs.webkit.org/show_bug.cgi?id=120818

        Reviewed by Darin Adler.

        * Configurations/ANGLE.xcconfig: Changed the definition of PRIVATE_HEADERS_FOLDER_PATH
        to include INSTALL_PATH_PREFIX only when installing.

2013-08-17  David Kilzer  <ddkilzer@apple.com>

        ANGLE fails to build with trunk clang: error: 'register' storage class specifier is deprecated [-Werror,-Wdeprecated-register]
        <http://webkit.org/b/119931>
        <rdar://problem/14763822>

        Reviewed by Darin Adler.

        * src/compiler/glslang.l:
        * src/compiler/glslang_lex.cpp:
        * src/compiler/preprocessor/Tokenizer.cpp:
        * src/compiler/preprocessor/Tokenizer.l:
        Add pragma statements to ignore -Wdeprecated-register warnings
        in generated code.  Also ignore -Wunknown-pragmas so this
        doesn't cause a build failure in older versions of clang.

2013-08-16  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r153749.
        http://trac.webkit.org/changeset/153749
        https://bugs.webkit.org/show_bug.cgi?id=119892

        The bison generation of the glslang* files has now been fixed. (Requested by zdobersek on #webkit).

        * GNUmakefile.am: Preserve the libANGLE.la dependency on the ANGLE's GNUmakefile.am.

2013-08-15  Allan Sandfeld Jensen  <allan.jensen@digia.com>

        ANGLE doesn't build with bison 3.0
        https://bugs.webkit.org/show_bug.cgi?id=119798

        Reviewed by Antti Koivisto.

        Make glslang.y compatible with bison 3.0, by using %lex-param
        to set YYLEX_PARAM and getting rid of useless YYID macro.

        * src/compiler/glslang.y:

2013-08-09  Zoltan Arvai  <zarvai@inf.u-szeged.hu>

        [Qt] Buidfix after r153664. Adding ANGLE_WEBKIT_WIN definition.
        https://bugs.webkit.org/show_bug.cgi?id=119577

        Reviewed by Allan Sandfeld Jensen.

        * Target.pri:

2013-08-08  Alex Christensen  <achristensen@apple.com>

        Link to correct DirectX libraries for Win64 ANGLE build.
        https://bugs.webkit.org/show_bug.cgi?id=119600

        Reviewed by Brent Fulgham.

        * ANGLE.vcxproj/DirectX32.props: Added with x86 DirectX library directory.
        * ANGLE.vcxproj/DirectX64.props: Added with x64 DirectX library directory.
        * ANGLE.vcxproj/libEGL.vcxproj:
        * ANGLE.vcxproj/libGLESv2.vcxproj:
        Use DirectX32.props and DirectX64.props.
        * ANGLE.vcxproj/libEGLCommon.props:
        * ANGLE.vcxproj/libGLESv2Common.props:
        Removed DirectX library directory.

2013-07-23  David Farler  <dfarler@apple.com>

        Provide optional OTHER_CFLAGS, OTHER_CPPFLAGS, OTHER_LDFLAGS additions for building with ASAN
        https://bugs.webkit.org/show_bug.cgi?id=117762

        Reviewed by Mark Rowe.

        * Configurations/DebugRelease.xcconfig:
        Add ASAN_OTHER_CFLAGS, CPLUSPLUSFLAGS.

2013-08-06  Zan Dobersek  <zdobersek@igalia.com>

        webkit-gtk fails to build with bison-3.0
        https://bugs.webkit.org/show_bug.cgi?id=119373

        Reviewed by Gustavo Noronha Silva.

        * GNUmakefile.am: Stop relying on generated glslang_tab.(cpp|h) and glslang.cpp sources as Bison 3.0
        produces non-compilable source code. Instead, compile these pregenerated files as they're included in
        the tree. Originally, the ANGLE source tree provides these files as generated by Bison 2.7, but they're
        at the moment regenerated with Bison 2.3 when the third-party ANGLE source is being updated.

2013-08-05  Alex Christensen  <achristensen@apple.com>

        Added optimizations to Windows ANGLE builds.
        https://bugs.webkit.org/show_bug.cgi?id=119500

        Reviewed by Brent Fulgham.

        * ANGLE.vcxproj/ANGLERelease.props: Added.
        * ANGLE.vcxproj/libEGL.vcxproj:
        * ANGLE.vcxproj/libGLESv2.vcxproj:
        * ANGLE.vcxproj/preprocessor.vcxproj:
        * ANGLE.vcxproj/translator_common.vcxproj:
        * ANGLE.vcxproj/translator_glsl.vcxproj:
        * ANGLE.vcxproj/translator_hlsl.vcxproj:
        Use ANGLERelease.props for Release, Release_WinCairo, and Production configurations.

2013-08-02  Alex Christensen  <achristensen@apple.com>

        Soft link ANGLE on Windows.
        https://bugs.webkit.org/show_bug.cgi?id=119452

        Reviewed by Dean Jackson.

        * ANGLE.vcxproj/libEGL.vcxproj:
        * ANGLE.vcxproj/libEGL.vcxproj.filters:
        * ANGLE.vcxproj/libGLESv2.vcxproj:
        * ANGLE.vcxproj/libGLESv2.vcxproj.filters:
        Added soft linking headers.
        * ANGLE.vcxproj/libEGLCommon.props:
        * ANGLE.vcxproj/libGLESv2Common.props:
        * ANGLE.vcxproj/translatorCommon.props:
        Added ANGLE_WEBKIT_WIN macro definition for egl.h and gl2.h.
        * include/EGL/egl.h:
        * include/GLES2/gl2.h:
        Conditionally include soft linking headers based on ANGLE_WEBKIT_WIN macro.
        * include/EGL/eglsoftlinking.h: Added.
        * include/GLES2/gl2softlinking.h: Added.

2013-08-01  Alex Christensen  <achristensen@apple.com>

        Fixed wrong static_casting in ANGLE from r153064.
        https://bugs.webkit.org/show_bug.cgi?id=119296

        Reviewed by Dean Jackson.

        * src/compiler/Intermediate.cpp:
        (TIntermediate::promoteConstantUnion):
        Undid erroneous static_cast change.
        * src/compiler/intermediate.h:
        (TIntermConstantUnion::getIConst):
        (TIntermConstantUnion::getFConst):
        (TIntermConstantUnion::getBConst):
        Made getters use size_t instead of int.

2013-07-29  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix make distcheck.

        * GNUmakefile.am: Add missing header files to compilation.

2013-07-29  Alex Christensen  <achristensen@apple.com>

        Separated translator into preprocessor, translator_common,
        translator_hlsl (for libGLESv2), and translator_glsl
        (for ANGLEWebKitBridge).
        https://bugs.webkit.org/show_bug.cgi?id=119221

        Reviewed by Brent Fulgham.

        * ANGLE.vcxproj/ANGLEGenerated.vcxproj:
        Removed unused preprocessor definitions.
        * ANGLE.vcxproj/libEGL.vcxproj:
        * ANGLE.vcxproj/libGLESv2.vcxproj:
        Removed dependency on removed translator project.
        * ANGLE.vcxproj/libGLESv2Common.props:
        Link to translator_hlsl libraries.
        * ANGLE.vcxproj/preprocessor.vcxproj: Added.
        * ANGLE.vcxproj/preprocessor.vcxproj.filters: Added.
        * ANGLE.vcxproj/translator.vcxproj: Removed.
        * ANGLE.vcxproj/translator.vcxproj.filters: Removed.
        * ANGLE.vcxproj/translator_common.vcxproj: Added.
        * ANGLE.vcxproj/translator_common.vcxproj.filters: Added.
        * ANGLE.vcxproj/translator_glsl.vcxproj: Added.
        * ANGLE.vcxproj/translator_glsl.vcxproj.filters: Added.
        * ANGLE.vcxproj/translator_hlsl.vcxproj: Added.
        * ANGLE.vcxproj/translator_hlsl.vcxproj.filters: Added.

2013-07-26  Alex Christensen  <achristensen@apple.com>

        Added module definition file for building libEGL.
        https://bugs.webkit.org/show_bug.cgi?id=119162

        Reviewed by Brent Fulgham.

        * ANGLE.vcxproj/libEGLCommon.props: Added reference to libEGL.def.

2013-07-25  Alex Christensen  <achristensen@apple.com>

        Made Windows build system for ANGLE and removed existing broken build system.
        Removed empty src/libGLESv2/shaders directory and old README files.
        https://bugs.webkit.org/show_bug.cgi?id=119103

        Reviewed by Brent Fulgham.

        * ANGLE.vcxproj: Added.
        * ANGLE.vcxproj/ANGLEGenerated.vcxproj: Added.
        * ANGLE.vcxproj/ANGLEGenerated.vcxproj.filters: Added.
        * ANGLE.vcxproj/libEGL.vcxproj: Added.
        * ANGLE.vcxproj/libEGL.vcxproj.filters: Added.
        * ANGLE.vcxproj/libEGLCommon.props: Added.
        * ANGLE.vcxproj/libGLESv2.vcxproj: Added.
        * ANGLE.vcxproj/libGLESv2.vcxproj.filters: Added.
        * ANGLE.vcxproj/libGLESv2Common.props: Added.
        * ANGLE.vcxproj/translator.vcxproj: Added.
        * ANGLE.vcxproj/translator.vcxproj.filters: Added.
        * ANGLE.vcxproj/translatorCommon.props: Added.
        * src/ANGLE.sln: Removed.
        * src/compiler/preprocessor/preprocessor.vcxproj: Removed.
        * src/compiler/preprocessor/preprocessor.vcxproj.filters: Removed.
        * src/compiler/translator_common.vcxproj: Removed.
        * src/compiler/translator_common.vcxproj.filters: Removed.
        * src/compiler/translator_hlsl.vcxproj: Removed.
        * src/compiler/translator_hlsl.vcxproj.filters: Removed.
        * src/libEGL/README: Removed.
        * src/libEGL/libEGL.vcxproj: Removed.
        * src/libEGL/libEGL.vcxproj.filters: Removed.
        * src/libGLESv2/README: Removed.
        * src/libGLESv2/libGLESv2.vcxproj: Removed.
        * src/libGLESv2/libGLESv2.vcxproj.filters: Removed.
        * src/libGLESv2/shaders: Removed.

2013-07-24  Alex Christensen  <achristensen@apple.com>

        Generate derived files in ANGLE at build time rather than when updating from upstream.
        https://bugs.webkit.org/show_bug.cgi?id=118872

        Reviewed by Mark Rowe.

        * ANGLE.xcodeproj/project.pbxproj: Made Derived Sources target which calls DerivedSources.make,
        moved generated files into Derived Sources group.
        * DerivedSources.make: Added.

2013-07-24  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed. Setting the svn:eol-style=native property on the ANGLE.sln file.

        * src/ANGLE.sln: Added property svn:eol-style.

2013-07-24  Gabor Abraham  <abrhm@inf.u-szeged.hu>

        [Qt] Buildfix after r153064. Add Uniform files to the Target.pri.

        Reviewed by Csaba Osztrogonác.

        * Target.pri:

2013-07-23  Alex Christensen  <achristensen@apple.com>

        Updated ANGLE to latest git commit (047373aa3eb408be62be52ade840fa5f11e72337).
        Added missing ANGLE files except unused tests, extensions, samples, build, and .git directories.
        Ran Bison after making some changes to fix compile errors (see below).

        https://bugs.webkit.org/show_bug.cgi?id=118550

        Reviewed by Dean Jackson.

        * ANGLE.plist: Updated from svn to git.
        * ANGLE.xcodeproj/project.pbxproj: Renamed DetectRecursion to DetectCallDepth.
        * AUTHORS: Added.
        * CONTRIBUTORS: Added.
        * DEPS: Added.
        * GNUmakefile.am: Renamed DetectRecursion to DetectCallDepth and added Uniform.cpp.
        * LICENSE: Added.
        * README.chromium: Added.
        * Target.pri: Renamed DetectRecursion to DetectCallDepth.
        * codereview.settings: Added.
        * include/EGL/eglext.h:
        * include/GLES2/gl2ext.h:
        * include/GLSLANG/ShaderLang.h:
        * src/ANGLE.sln: Added.
        * src/build_angle.gyp: Added.
        * src/build_angle.gypi: Added.
        * src/common/RefCountObject.cpp:
        * src/common/angleutils.h:
        (ArraySize):
        (SafeRelease):
        * src/common/debug.cpp:
        * src/common/debug.h:
        * src/common/system.h:
        * src/common/version.h:
        * src/compiler/64bit-lexer-safety.patch: Added.
        * src/compiler/BaseTypes.h:
        (getQualifierString):
        * src/compiler/CodeGenHLSL.cpp:
        (ConstructCompiler):
        * src/compiler/Common.h:
        * src/compiler/Compiler.cpp:
        (TCompiler::TCompiler):
        (TCompiler::Init):
        (TCompiler::compile):
        (TCompiler::InitBuiltInSymbolTable):
        (TCompiler::detectCallDepth):
        (TCompiler::limitExpressionComplexity):
        (TCompiler::getResources):
        * src/compiler/ConstantUnion.h:
        (ConstantUnion::ConstantUnion):
        * src/compiler/DetectCallDepth.cpp: Added.
        (DetectCallDepth::FunctionNode::FunctionNode):
        (DetectCallDepth::FunctionNode::getName):
        (DetectCallDepth::FunctionNode::addCallee):
        (DetectCallDepth::FunctionNode::detectCallDepth):
        (DetectCallDepth::FunctionNode::reset):
        (DetectCallDepth::DetectCallDepth):
        (DetectCallDepth::~DetectCallDepth):
        (DetectCallDepth::visitAggregate):
        (DetectCallDepth::checkExceedsMaxDepth):
        (DetectCallDepth::resetFunctionNodes):
        (DetectCallDepth::detectCallDepthForFunction):
        (DetectCallDepth::detectCallDepth):
        (DetectCallDepth::findFunctionByName):
        * src/compiler/DetectCallDepth.h: Added.
        (DetectCallDepth::getInfoSink):
        * src/compiler/DetectRecursion.cpp: Removed.
        * src/compiler/DetectRecursion.h: Removed.
        * src/compiler/Diagnostics.cpp:
        (TDiagnostics::writeInfo):
        * src/compiler/ForLoopUnroll.cpp:
        (ForLoopUnroll::evaluateIntConstant):
        * src/compiler/InfoSink.cpp:
        (TInfoSinkBase::prefix):
        (TInfoSinkBase::location):
        (TInfoSinkBase::message):
        * src/compiler/InfoSink.h:
        * src/compiler/Initialize.cpp:
        (InsertBuiltInFunctions):
        (IdentifyBuiltIns):
        (InitExtensionBehavior):
        * src/compiler/Initialize.h:
        * src/compiler/Intermediate.cpp:
        (TIntermediate::addSymbol):
        (TIntermediate::addBinaryMath):
        (TIntermediate::addAssign):
        (TIntermediate::addIndex):
        (TIntermediate::addUnaryMath):
        (TIntermediate::setAggregateOperator):
        (TIntermediate::addConversion):
        (TIntermediate::growAggregate):
        (TIntermediate::makeAggregate):
        (TIntermediate::addSelection):
        (TIntermediate::addComma):
        (TIntermediate::addConstantUnion):
        (TIntermediate::addSwizzle):
        (TIntermediate::addLoop):
        (TIntermediate::addBranch):
        (TIntermUnary::promote):
        (TIntermBinary::promote):
        (CompareStruct):
        (CompareStructure):
        (TIntermConstantUnion::fold): Added implied static_casts to fix compiling errors on Mac.
        (TIntermediate::promoteConstantUnion):
        * src/compiler/OutputGLSL.cpp:
        (TOutputGLSL::visitSymbol):
        * src/compiler/OutputGLSL.h:
        * src/compiler/OutputGLSLBase.cpp:
        (TOutputGLSLBase::writeVariableType):
        (TOutputGLSLBase::writeConstantUnion):
        (TOutputGLSLBase::visitBinary):
        (TOutputGLSLBase::visitAggregate):
        (TOutputGLSLBase::getTypeName):
        (TOutputGLSLBase::structDeclared):
        (TOutputGLSLBase::declareStruct):
        * src/compiler/OutputGLSLBase.h:
        * src/compiler/OutputHLSL.cpp:
        (sh::OutputHLSL::OutputHLSL):
        (sh::OutputHLSL::getUniforms):
        (sh::OutputHLSL::header):
        (sh::OutputHLSL::visitSymbol):
        (sh::OutputHLSL::visitBinary):
        (sh::OutputHLSL::visitAggregate):
        (sh::OutputHLSL::visitSelection):
        (sh::OutputHLSL::visitLoop):
        (sh::OutputHLSL::handleExcessiveLoop):
        (sh::OutputHLSL::argumentString):
        (sh::OutputHLSL::typeString):
        (sh::OutputHLSL::textureString):
        (sh::OutputHLSL::initializer):
        (sh::OutputHLSL::addConstructor):
        (sh::OutputHLSL::writeConstantUnion):
        (sh::OutputHLSL::decorateUniform):
        (sh::OutputHLSL::decorateField):
        (sh::OutputHLSL::registerString):
        (sh::OutputHLSL::samplerRegister):
        (sh::OutputHLSL::uniformRegister):
        (sh::OutputHLSL::declareUniform):
        (sh::OutputHLSL::glVariableType):
        (sh::OutputHLSL::glVariablePrecision):
        * src/compiler/OutputHLSL.h:
        * src/compiler/ParseHelper.cpp:
        (TParseContext::parseVectorFields):
        (TParseContext::parseMatrixFields):
        (TParseContext::error):
        (TParseContext::warning):
        (TParseContext::assignError):
        (TParseContext::unaryOpError):
        (TParseContext::binaryOpError):
        (TParseContext::precisionErrorCheck):
        (TParseContext::lValueErrorCheck):
        (TParseContext::globalErrorCheck):
        (TParseContext::reservedErrorCheck):
        (TParseContext::constructorErrorCheck):
        (TParseContext::voidErrorCheck):
        (TParseContext::boolErrorCheck):
        (TParseContext::samplerErrorCheck):
        (TParseContext::structQualifierErrorCheck):
        (TParseContext::parameterSamplerErrorCheck):
        (TParseContext::containsSampler):
        (TParseContext::arraySizeErrorCheck):
        (TParseContext::arrayQualifierErrorCheck):
        (TParseContext::arrayTypeErrorCheck):
        (TParseContext::arrayErrorCheck):
        (TParseContext::nonInitConstErrorCheck):
        (TParseContext::nonInitErrorCheck):
        (TParseContext::paramErrorCheck):
        (TParseContext::extensionErrorCheck):
        (TParseContext::isExtensionEnabled):
        Replaced auto with std::map<std::string, TBehavior>::const_iterator to fix Qt and EFL compiling errors.
        (TParseContext::findFunction):
        (TParseContext::executeInitializer):
        (TParseContext::addConstructor):
        (TParseContext::constructBuiltIn):
        (TParseContext::constructStruct):
        (TParseContext::addConstVectorNode):
        (TParseContext::addConstMatrixNode):
        (TParseContext::addConstArrayNode):
        (TParseContext::addConstStruct):
        (TParseContext::enterStructDeclaration):
        (TParseContext::structNestingErrorCheck):
        (TParseContext::addIndexExpression):
        * src/compiler/ParseHelper.h:
        (TParseContext::TParseContext):
        (TParseContext::pragma):
        * src/compiler/PoolAlloc.cpp:
        (TPoolAllocator::allocate):
        * src/compiler/ShHandle.h:
        (TShHandleBase::getAsTranslatorHLSL):
        * src/compiler/ShaderLang.cpp:
        (ShInitBuiltInResources):
        (ShGetInfoPointer):
        * src/compiler/SymbolTable.cpp:
        (TType::TType):
        (TType::buildMangledName):
        (TType::getObjectSize):
        (TStructure::containsArrays):
        (TStructure::buildMangledName):
        (TStructure::calculateObjectSize):
        (TStructure::calculateDeepestNesting):
        (TSymbolTableLevel::relateToExtension):
        * src/compiler/SymbolTable.h:
        (TSymbol::relateToExtension):
        (TSymbol::getExtension):
        (TVariable::TVariable):
        (TVariable::setQualifier):
        (TVariable::shareConstPointer):
        (TSymbolTableLevel::insert):
        (TSymbolTable::insertConstInt):
        (TSymbolTable::insertBuiltIn):
        * src/compiler/TranslatorHLSL.cpp:
        (TranslatorHLSL::TranslatorHLSL):
        (TranslatorHLSL::translate):
        * src/compiler/TranslatorHLSL.h:
        (TranslatorHLSL::getAsTranslatorHLSL):
        (TranslatorHLSL::getUniforms):
        * src/compiler/Types.h: Removed enum bit fields to fix gcc compiler errors.
        (TField::TField):
        (TField::type):
        (TField::name):
        (NewPoolTFieldList):
        (TStructure::TStructure):
        (TStructure::name):
        (TStructure::fields):
        (TStructure::mangledName):
        (TStructure::objectSize):
        (TStructure::deepestNesting):
        (TType::TType):
        (TType::elementRegisterCount):
        (TType::totalRegisterCount):
        (TType::clearArrayness):
        (TType::getStruct):
        (TType::setStruct):
        (TType::getMangledName):
        (TType::getDeepestStructNesting):
        (TType::isStructureContainingArrays):
        (TPublicType::setBasic):
        * src/compiler/Uniform.cpp: Added.
        (sh::Uniform::Uniform):
        * src/compiler/Uniform.h: Added.
        * src/compiler/VariableInfo.cpp:
        (getUserDefinedVariableInfo):
        * src/compiler/glslang.l:
        * src/compiler/glslang.y: Moved YYLTYPE definition into %union to work with Bison 2.3.
        * src/compiler/glslang_lex.cpp:
        (yy_get_previous_state):
        (yy_try_NUL_trans):
        (yyget_lloc):
        (yyset_lloc):
        (string_input):
        (check_type):
        (reserved_word):
        (glslang_scan):
        * src/compiler/glslang_tab.cpp:
        (yyerror):
        * src/compiler/glslang_tab.h:
        * src/compiler/intermOut.cpp:
        (TOutputTraverser::visitUnary):
        (TOutputTraverser::visitAggregate):
        (TOutputTraverser::visitConstantUnion):
        * src/compiler/intermediate.h:
        (TIntermNode::TIntermNode):
        (TIntermNode::~TIntermNode):
        (TIntermNode::getLine):
        (TIntermNode::setLine):
        (TIntermNode::getAsLoopNode):
        (TIntermTyped::totalRegisterCount):
        (TIntermTyped::elementRegisterCount):
        (TIntermTyped::getArraySize):
        (TIntermConstantUnion::getIConst):
        (TIntermConstantUnion::getFConst):
        (TIntermConstantUnion::getBConst):
        (TIntermAggregate::TIntermAggregate):
        (TIntermTraverser::TIntermTraverser):
        (TIntermTraverser::getMaxDepth):
        (TIntermTraverser::incrementDepth):
        * src/compiler/localintermediate.h:
        * src/compiler/parseConst.cpp:
        (TConstTraverser::visitSymbol):
        (TConstTraverser::visitBinary):
        (TConstTraverser::visitUnary):
        (TConstTraverser::visitAggregate):
        (TConstTraverser::visitSelection):
        (TConstTraverser::visitConstantUnion):
        (TConstTraverser::visitLoop):
        (TConstTraverser::visitBranch):
        (TIntermediate::parseConstTree):
        * src/compiler/preprocessor/64bit-tokenizer-safety.patch: Added.
        * src/compiler/preprocessor/Tokenizer.cpp:
        (yy_get_previous_state):
        (yy_try_NUL_trans):
        * src/compiler/preprocessor/Tokenizer.l:
        * src/compiler/preprocessor/preprocessor.vcxproj: Added.
        * src/compiler/preprocessor/preprocessor.vcxproj.filters: Added.
        * src/compiler/timing/RestrictVertexShaderTiming.cpp:
        (RestrictVertexShaderTiming::visitSymbol):
        * src/compiler/translator_common.vcxproj: Added.
        * src/compiler/translator_common.vcxproj.filters: Added.
        * src/compiler/translator_hlsl.vcxproj: Added.
        * src/compiler/translator_hlsl.vcxproj.filters: Added.
        * src/libEGL/Config.cpp: Added.
        (egl::Config::Config):
        (egl::Config::getHandle):
        (egl::SortConfig::SortConfig):
        (egl::SortConfig::scanForWantedComponents):
        (egl::SortConfig::wantedComponentsSize):
        (egl::SortConfig::operator()):
        (egl::ConfigSet::ConfigSet):
        (egl::ConfigSet::add):
        (egl::ConfigSet::size):
        (egl::ConfigSet::getConfigs):
        (egl::ConfigSet::get):
        * src/libEGL/Config.h: Added.
        * src/libEGL/Display.cpp: Added.
        (egl::Display::getDisplay):
        (egl::Display::Display):
        (egl::Display::~Display):
        (egl::Display::initialize):
        (egl::Display::terminate):
        (egl::Display::getConfigs):
        (egl::Display::getConfigAttrib):
        (egl::Display::createWindowSurface):
        (egl::Display::createOffscreenSurface):
        (egl::Display::createContext):
        (egl::Display::restoreLostDevice):
        (egl::Display::destroySurface):
        (egl::Display::destroyContext):
        (egl::Display::notifyDeviceLost):
        (egl::Display::recreateSwapChains):
        (egl::Display::isInitialized):
        (egl::Display::isValidConfig):
        (egl::Display::isValidContext):
        (egl::Display::isValidSurface):
        (egl::Display::hasExistingWindowSurface):
        (egl::Display::initExtensionString):
        (egl::Display::getExtensionString):
        (egl::Display::initVendorString):
        (egl::Display::getVendorString):
        * src/libEGL/Display.h: Added.
        (egl::Display::getRenderer):
        * src/libEGL/Surface.cpp: Added.
        (egl::Surface::Surface):
        (egl::Surface::~Surface):
        (egl::Surface::initialize):
        (egl::Surface::release):
        (egl::Surface::resetSwapChain):
        (egl::Surface::resizeSwapChain):
        (egl::Surface::swapRect):
        (egl::Surface::getWindowHandle):
        (egl::SurfaceWindowProc):
        (egl::Surface::subclassWindow):
        (egl::Surface::unsubclassWindow):
        (egl::Surface::checkForOutOfDateSwapChain):
        (egl::Surface::swap):
        (egl::Surface::postSubBuffer):
        (egl::Surface::getWidth):
        (egl::Surface::getHeight):
        (egl::Surface::isPostSubBufferSupported):
        (egl::Surface::getSwapChain):
        (egl::Surface::setSwapInterval):
        (egl::Surface::getTextureFormat):
        (egl::Surface::getTextureTarget):
        (egl::Surface::setBoundTexture):
        (egl::Surface::getBoundTexture):
        (egl::Surface::getFormat):
        * src/libEGL/Surface.h: Added.
        * src/libEGL/libEGL.cpp: Added.
        (validateDisplay):
        (validateConfig):
        (validateContext):
        (validateSurface):
        * src/libEGL/libEGL.def: Added.
        * src/libEGL/libEGL.rc: Added.
        * src/libEGL/libEGL.vcxproj: Added.
        * src/libEGL/libEGL.vcxproj.filters: Added.
        * src/libEGL/main.cpp: Added.
        (DllMain):
        (egl::setCurrentError):
        (egl::getCurrentError):
        (egl::setCurrentAPI):
        (egl::getCurrentAPI):
        (egl::setCurrentDisplay):
        (egl::getCurrentDisplay):
        (egl::setCurrentDrawSurface):
        (egl::getCurrentDrawSurface):
        (egl::setCurrentReadSurface):
        (egl::getCurrentReadSurface):
        (egl::error):
        * src/libEGL/main.h: Added.
        (egl::error):
        (egl::success):
        * src/libEGL/resource.h: Added.
        * src/libGLESv2/BinaryStream.h: Added.
        (gl::BinaryInputStream::BinaryInputStream):
        (gl::BinaryInputStream::read):
        (gl::BinaryInputStream::skip):
        (gl::BinaryInputStream::offset):
        (gl::BinaryInputStream::error):
        (gl::BinaryInputStream::endOfStream):
        (gl::BinaryOutputStream::BinaryOutputStream):
        (gl::BinaryOutputStream::write):
        (gl::BinaryOutputStream::length):
        (gl::BinaryOutputStream::data):
        * src/libGLESv2/Buffer.cpp: Added.
        (gl::Buffer::Buffer):
        (gl::Buffer::~Buffer):
        (gl::Buffer::bufferData):
        (gl::Buffer::bufferSubData):
        (gl::Buffer::getStorage):
        (gl::Buffer::size):
        (gl::Buffer::usage):
        (gl::Buffer::getStaticVertexBuffer):
        (gl::Buffer::getStaticIndexBuffer):
        (gl::Buffer::invalidateStaticData):
        (gl::Buffer::promoteStaticUsage):
        * src/libGLESv2/Buffer.h: Added.
        * src/libGLESv2/Context.cpp: Added.
        (gl::makeStaticString):
        (gl::Context::Context):
        (gl::Context::~Context):
        (gl::Context::makeCurrent):
        (gl::Context::markContextLost):
        (gl::Context::isContextLost):
        (gl::Context::setClearColor):
        (gl::Context::setClearDepth):
        (gl::Context::setClearStencil):
        (gl::Context::setCullFace):
        (gl::Context::isCullFaceEnabled):
        (gl::Context::setCullMode):
        (gl::Context::setFrontFace):
        (gl::Context::setDepthTest):
        (gl::Context::isDepthTestEnabled):
        (gl::Context::setDepthFunc):
        (gl::Context::setDepthRange):
        (gl::Context::setBlend):
        (gl::Context::isBlendEnabled):
        (gl::Context::setBlendFactors):
        (gl::Context::setBlendColor):
        (gl::Context::setBlendEquation):
        (gl::Context::setStencilTest):
        (gl::Context::isStencilTestEnabled):
        (gl::Context::setStencilParams):
        (gl::Context::setStencilBackParams):
        (gl::Context::setStencilWritemask):
        (gl::Context::setStencilBackWritemask):
        (gl::Context::setStencilOperations):
        (gl::Context::setStencilBackOperations):
        (gl::Context::setPolygonOffsetFill):
        (gl::Context::isPolygonOffsetFillEnabled):
        (gl::Context::setPolygonOffsetParams):
        (gl::Context::setSampleAlphaToCoverage):
        (gl::Context::isSampleAlphaToCoverageEnabled):
        (gl::Context::setSampleCoverage):
        (gl::Context::isSampleCoverageEnabled):
        (gl::Context::setSampleCoverageParams):
        (gl::Context::setScissorTest):
        (gl::Context::isScissorTestEnabled):
        (gl::Context::setDither):
        (gl::Context::isDitherEnabled):
        (gl::Context::setLineWidth):
        (gl::Context::setGenerateMipmapHint):
        (gl::Context::setFragmentShaderDerivativeHint):
        (gl::Context::setViewportParams):
        (gl::Context::setScissorParams):
        (gl::Context::setColorMask):
        (gl::Context::setDepthMask):
        (gl::Context::setActiveSampler):
        (gl::Context::getReadFramebufferHandle):
        (gl::Context::getDrawFramebufferHandle):
        (gl::Context::getRenderbufferHandle):
        (gl::Context::getArrayBufferHandle):
        (gl::Context::getActiveQuery):
        (gl::Context::setEnableVertexAttribArray):
        (gl::Context::getVertexAttribState):
        (gl::Context::setVertexAttribState):
        (gl::Context::getVertexAttribPointer):
        (gl::Context::setPackAlignment):
        (gl::Context::getPackAlignment):
        (gl::Context::setUnpackAlignment):
        (gl::Context::getUnpackAlignment):
        (gl::Context::setPackReverseRowOrder):
        (gl::Context::getPackReverseRowOrder):
        (gl::Context::createBuffer):
        (gl::Context::createProgram):
        (gl::Context::createShader):
        (gl::Context::createTexture):
        (gl::Context::createRenderbuffer):
        (gl::Context::createFramebuffer):
        (gl::Context::createFence):
        (gl::Context::createQuery):
        (gl::Context::deleteBuffer):
        (gl::Context::deleteShader):
        (gl::Context::deleteProgram):
        (gl::Context::deleteTexture):
        (gl::Context::deleteRenderbuffer):
        (gl::Context::deleteFramebuffer):
        (gl::Context::deleteFence):
        (gl::Context::deleteQuery):
        (gl::Context::getBuffer):
        (gl::Context::getShader):
        (gl::Context::getProgram):
        (gl::Context::getTexture):
        (gl::Context::getRenderbuffer):
        (gl::Context::getReadFramebuffer):
        (gl::Context::getDrawFramebuffer):
        (gl::Context::bindArrayBuffer):
        (gl::Context::bindElementArrayBuffer):
        (gl::Context::bindTexture2D):
        (gl::Context::bindTextureCubeMap):
        (gl::Context::bindReadFramebuffer):
        (gl::Context::bindDrawFramebuffer):
        (gl::Context::bindRenderbuffer):
        (gl::Context::useProgram):
        (gl::Context::linkProgram):
        (gl::Context::setProgramBinary):
        (gl::Context::beginQuery):
        (gl::Context::endQuery):
        (gl::Context::setFramebufferZero):
        (gl::Context::setRenderbufferStorage):
        (gl::Context::getFramebuffer):
        (gl::Context::getFence):
        (gl::Context::getQuery):
        (gl::Context::getArrayBuffer):
        (gl::Context::getElementArrayBuffer):
        (gl::Context::getCurrentProgramBinary):
        (gl::Context::getTexture2D):
        (gl::Context::getTextureCubeMap):
        (gl::Context::getSamplerTexture):
        (gl::Context::getBooleanv):
        (gl::Context::getFloatv):
        (gl::Context::getIntegerv):
        (gl::Context::getQueryParameterInfo):
        (gl::Context::applyRenderTarget):
        (gl::Context::applyState):
        (gl::Context::applyShaders):
        (gl::Context::applyTextures):
        (gl::Context::readPixels):
        (gl::Context::clear):
        (gl::Context::drawArrays):
        (gl::Context::drawElements):
        (gl::Context::sync):
        (gl::Context::recordInvalidEnum):
        (gl::Context::recordInvalidValue):
        (gl::Context::recordInvalidOperation):
        (gl::Context::recordOutOfMemory):
        (gl::Context::recordInvalidFramebufferOperation):
        (gl::Context::getError):
        (gl::Context::getResetStatus):
        (gl::Context::isResetNotificationEnabled):
        (gl::Context::getMajorShaderModel):
        (gl::Context::getMaximumPointSize):
        (gl::Context::getMaximumCombinedTextureImageUnits):
        (gl::Context::getMaxSupportedSamples):
        (gl::Context::getMaximumRenderTargets):
        (gl::Context::supportsEventQueries):
        (gl::Context::supportsOcclusionQueries):
        (gl::Context::supportsBGRATextures):
        (gl::Context::supportsDXT1Textures):
        (gl::Context::supportsDXT3Textures):
        (gl::Context::supportsDXT5Textures):
        (gl::Context::supportsFloat32Textures):
        (gl::Context::supportsFloat32LinearFilter):
        (gl::Context::supportsFloat32RenderableTextures):
        (gl::Context::supportsFloat16Textures):
        (gl::Context::supportsFloat16LinearFilter):
        (gl::Context::supportsFloat16RenderableTextures):
        (gl::Context::getMaximumRenderbufferDimension):
        (gl::Context::getMaximumTextureDimension):
        (gl::Context::getMaximumCubeTextureDimension):
        (gl::Context::getMaximumTextureLevel):
        (gl::Context::supportsLuminanceTextures):
        (gl::Context::supportsLuminanceAlphaTextures):
        (gl::Context::supportsDepthTextures):
        (gl::Context::supports32bitIndices):
        (gl::Context::supportsNonPower2Texture):
        (gl::Context::supportsInstancing):
        (gl::Context::supportsTextureFilterAnisotropy):
        (gl::Context::getTextureMaxAnisotropy):
        (gl::Context::getCurrentReadFormatType):
        (gl::Context::detachBuffer):
        (gl::Context::detachTexture):
        (gl::Context::detachFramebuffer):
        (gl::Context::detachRenderbuffer):
        (gl::Context::getIncompleteTexture):
        (gl::Context::skipDraw):
        (gl::Context::setVertexAttrib):
        (gl::Context::setVertexAttribDivisor):
        (gl::Context::initExtensionString):
        (gl::Context::getExtensionString):
        (gl::Context::initRendererString):
        (gl::Context::getRendererString):
        (gl::Context::blitFramebuffer):
        * src/libGLESv2/Context.h: Added.
        (gl::VertexAttribute::VertexAttribute):
        (gl::VertexAttribute::typeSize):
        (gl::VertexAttribute::stride):
        * src/libGLESv2/Fence.cpp: Added.
        (gl::Fence::Fence):
        (gl::Fence::~Fence):
        (gl::Fence::isFence):
        (gl::Fence::setFence):
        (gl::Fence::testFence):
        (gl::Fence::finishFence):
        (gl::Fence::getFenceiv):
        * src/libGLESv2/Fence.h: Added.
        * src/libGLESv2/Float16ToFloat32.cpp: Added.
        (gl::float16ToFloat32):
        * src/libGLESv2/Float16ToFloat32.py: Added.
        (convertMantissa):
        (convertExponent):
        (convertOffset):
        * src/libGLESv2/Framebuffer.cpp: Added.
        (gl::Framebuffer::Framebuffer):
        (gl::Framebuffer::~Framebuffer):
        (gl::Framebuffer::lookupRenderbuffer):
        (gl::Framebuffer::setColorbuffer):
        (gl::Framebuffer::setDepthbuffer):
        (gl::Framebuffer::setStencilbuffer):
        (gl::Framebuffer::detachTexture):
        (gl::Framebuffer::detachRenderbuffer):
        (gl::Framebuffer::getRenderTargetSerial):
        (gl::Framebuffer::getDepthbufferSerial):
        (gl::Framebuffer::getStencilbufferSerial):
        (gl::Framebuffer::getColorbuffer):
        (gl::Framebuffer::getDepthbuffer):
        (gl::Framebuffer::getStencilbuffer):
        (gl::Framebuffer::getDepthOrStencilbuffer):
        (gl::Framebuffer::getReadColorbuffer):
        (gl::Framebuffer::getReadColorbufferType):
        (gl::Framebuffer::getFirstColorbuffer):
        (gl::Framebuffer::getColorbufferType):
        (gl::Framebuffer::getDepthbufferType):
        (gl::Framebuffer::getStencilbufferType):
        (gl::Framebuffer::getColorbufferHandle):
        (gl::Framebuffer::getDepthbufferHandle):
        (gl::Framebuffer::getStencilbufferHandle):
        (gl::Framebuffer::getDrawBufferState):
        (gl::Framebuffer::setDrawBufferState):
        (gl::Framebuffer::isEnabledColorAttachment):
        (gl::Framebuffer::hasEnabledColorAttachment):
        (gl::Framebuffer::hasStencil):
        (gl::Framebuffer::usingExtendedDrawBuffers):
        (gl::Framebuffer::completeness):
        (gl::DefaultFramebuffer::DefaultFramebuffer):
        (gl::Framebuffer::getSamples):
        (gl::DefaultFramebuffer::completeness):
        * src/libGLESv2/Framebuffer.h: Added.
        * src/libGLESv2/HandleAllocator.cpp: Added.
        (gl::HandleAllocator::HandleAllocator):
        (gl::HandleAllocator::~HandleAllocator):
        (gl::HandleAllocator::setBaseHandle):
        (gl::HandleAllocator::allocate):
        (gl::HandleAllocator::release):
        * src/libGLESv2/HandleAllocator.h: Added.
        * src/libGLESv2/Program.cpp: Added.
        (gl::AttributeBindings::AttributeBindings):
        (gl::AttributeBindings::~AttributeBindings):
        (gl::InfoLog::InfoLog):
        (gl::InfoLog::~InfoLog):
        (gl::InfoLog::getLength):
        (gl::InfoLog::getLog):
        (gl::InfoLog::appendSanitized):
        (gl::InfoLog::append):
        (gl::InfoLog::reset):
        (gl::Program::Program):
        (gl::Program::~Program):
        (gl::Program::attachShader):
        (gl::Program::detachShader):
        (gl::Program::getAttachedShadersCount):
        (gl::AttributeBindings::bindAttributeLocation):
        (gl::Program::bindAttributeLocation):
        (gl::Program::link):
        (gl::AttributeBindings::getAttributeBinding):
        (gl::Program::unlink):
        (gl::Program::isLinked):
        (gl::Program::getProgramBinary):
        (gl::Program::setProgramBinary):
        (gl::Program::release):
        (gl::Program::addRef):
        (gl::Program::getRefCount):
        (gl::Program::getProgramBinaryLength):
        (gl::Program::getInfoLogLength):
        (gl::Program::getInfoLog):
        (gl::Program::getAttachedShaders):
        (gl::Program::getActiveAttribute):
        (gl::Program::getActiveAttributeCount):
        (gl::Program::getActiveAttributeMaxLength):
        (gl::Program::getActiveUniform):
        (gl::Program::getActiveUniformCount):
        (gl::Program::getActiveUniformMaxLength):
        (gl::Program::flagForDeletion):
        (gl::Program::isFlaggedForDeletion):
        (gl::Program::validate):
        (gl::Program::isValidated):
        * src/libGLESv2/Program.h: Added.
        * src/libGLESv2/ProgramBinary.cpp: Added.
        (gl::str):
        (gl::UniformLocation::UniformLocation):
        (gl::ProgramBinary::ProgramBinary):
        (gl::ProgramBinary::~ProgramBinary):
        (gl::ProgramBinary::getSerial):
        (gl::ProgramBinary::issueSerial):
        (gl::ProgramBinary::getPixelExecutable):
        (gl::ProgramBinary::getVertexExecutable):
        (gl::ProgramBinary::getGeometryExecutable):
        (gl::ProgramBinary::getAttributeLocation):
        (gl::ProgramBinary::getSemanticIndex):
        (gl::ProgramBinary::getUsedSamplerRange):
        (gl::ProgramBinary::usesPointSize):
        (gl::ProgramBinary::usesPointSpriteEmulation):
        (gl::ProgramBinary::usesGeometryShader):
        (gl::ProgramBinary::getSamplerMapping):
        (gl::ProgramBinary::getSamplerTextureType):
        (gl::ProgramBinary::getUniformLocation):
        (gl::ProgramBinary::setUniform1fv):
        (gl::ProgramBinary::setUniform2fv):
        (gl::ProgramBinary::setUniform3fv):
        (gl::ProgramBinary::setUniform4fv):
        (gl::transposeMatrix):
        (gl::ProgramBinary::setUniformMatrix2fv):
        (gl::ProgramBinary::setUniformMatrix3fv):
        (gl::ProgramBinary::setUniformMatrix4fv):
        (gl::ProgramBinary::setUniform1iv):
        (gl::ProgramBinary::setUniform2iv):
        (gl::ProgramBinary::setUniform3iv):
        (gl::ProgramBinary::setUniform4iv):
        (gl::ProgramBinary::getUniformfv):
        (gl::ProgramBinary::getUniformiv):
        (gl::ProgramBinary::dirtyAllUniforms):
        (gl::ProgramBinary::applyUniforms):
        (gl::ProgramBinary::packVaryings):
        (gl::ProgramBinary::linkVaryings):
        (gl::ProgramBinary::load):
        (gl::ProgramBinary::save):
        (gl::ProgramBinary::getLength):
        (gl::ProgramBinary::link):
        (gl::ProgramBinary::linkAttributes):
        (gl::ProgramBinary::linkUniforms):
        (gl::ProgramBinary::defineUniform):
        (gl::ProgramBinary::generateGeometryShaderHLSL):
        (gl::ProgramBinary::generatePointSpriteHLSL):
        (gl::ProgramBinary::decorateAttribute):
        (gl::ProgramBinary::isValidated):
        (gl::ProgramBinary::getActiveAttribute):
        (gl::ProgramBinary::getActiveAttributeCount):
        (gl::ProgramBinary::getActiveAttributeMaxLength):
        (gl::ProgramBinary::getActiveUniform):
        (gl::ProgramBinary::getActiveUniformCount):
        (gl::ProgramBinary::getActiveUniformMaxLength):
        (gl::ProgramBinary::validate):
        (gl::ProgramBinary::validateSamplers):
        (gl::ProgramBinary::Sampler::Sampler):
        (gl::AttributeSorter::AttributeSorter):
        (gl::AttributeSorter::operator()):
        (gl::ProgramBinary::sortAttributesByLayout):
        * src/libGLESv2/ProgramBinary.h: Added.
        (gl::UniformLocation::UniformLocation):
        * src/libGLESv2/Query.cpp: Added.
        (gl::Query::Query):
        (gl::Query::~Query):
        (gl::Query::begin):
        (gl::Query::end):
        (gl::Query::getResult):
        (gl::Query::isResultAvailable):
        (gl::Query::getType):
        * src/libGLESv2/Query.h: Added.
        * src/libGLESv2/Renderbuffer.cpp: Added.
        (gl::RenderbufferInterface::RenderbufferInterface):
        (gl::RenderbufferInterface::addProxyRef):
        (gl::RenderbufferInterface::releaseProxy):
        (gl::RenderbufferInterface::getRedSize):
        (gl::RenderbufferInterface::getGreenSize):
        (gl::RenderbufferInterface::getBlueSize):
        (gl::RenderbufferInterface::getAlphaSize):
        (gl::RenderbufferInterface::getDepthSize):
        (gl::RenderbufferInterface::getStencilSize):
        (gl::RenderbufferTexture2D::RenderbufferTexture2D):
        (gl::RenderbufferTexture2D::~RenderbufferTexture2D):
        (gl::RenderbufferTexture2D::addProxyRef):
        (gl::RenderbufferTexture2D::releaseProxy):
        (gl::RenderbufferTexture2D::getRenderTarget):
        (gl::RenderbufferTexture2D::getDepthStencil):
        (gl::RenderbufferTexture2D::getWidth):
        (gl::RenderbufferTexture2D::getHeight):
        (gl::RenderbufferTexture2D::getInternalFormat):
        (gl::RenderbufferTexture2D::getActualFormat):
        (gl::RenderbufferTexture2D::getSamples):
        (gl::RenderbufferTexture2D::getSerial):
        (gl::RenderbufferTextureCubeMap::RenderbufferTextureCubeMap):
        (gl::RenderbufferTextureCubeMap::~RenderbufferTextureCubeMap):
        (gl::RenderbufferTextureCubeMap::addProxyRef):
        (gl::RenderbufferTextureCubeMap::releaseProxy):
        (gl::RenderbufferTextureCubeMap::getRenderTarget):
        (gl::RenderbufferTextureCubeMap::getDepthStencil):
        (gl::RenderbufferTextureCubeMap::getWidth):
        (gl::RenderbufferTextureCubeMap::getHeight):
        (gl::RenderbufferTextureCubeMap::getInternalFormat):
        (gl::RenderbufferTextureCubeMap::getActualFormat):
        (gl::RenderbufferTextureCubeMap::getSamples):
        (gl::RenderbufferTextureCubeMap::getSerial):
        (gl::Renderbuffer::Renderbuffer):
        (gl::Renderbuffer::~Renderbuffer):
        (gl::Renderbuffer::addRef):
        (gl::Renderbuffer::release):
        (gl::Renderbuffer::getRenderTarget):
        (gl::Renderbuffer::getDepthStencil):
        (gl::Renderbuffer::getWidth):
        (gl::Renderbuffer::getHeight):
        (gl::Renderbuffer::getInternalFormat):
        (gl::Renderbuffer::getActualFormat):
        (gl::Renderbuffer::getRedSize):
        (gl::Renderbuffer::getGreenSize):
        (gl::Renderbuffer::getBlueSize):
        (gl::Renderbuffer::getAlphaSize):
        (gl::Renderbuffer::getDepthSize):
        (gl::Renderbuffer::getStencilSize):
        (gl::Renderbuffer::getSamples):
        (gl::Renderbuffer::getSerial):
        (gl::Renderbuffer::setStorage):
        (gl::RenderbufferStorage::RenderbufferStorage):
        (gl::RenderbufferStorage::~RenderbufferStorage):
        (gl::RenderbufferStorage::getRenderTarget):
        (gl::RenderbufferStorage::getDepthStencil):
        (gl::RenderbufferStorage::getWidth):
        (gl::RenderbufferStorage::getHeight):
        (gl::RenderbufferStorage::getInternalFormat):
        (gl::RenderbufferStorage::getActualFormat):
        (gl::RenderbufferStorage::getSamples):
        (gl::RenderbufferStorage::getSerial):
        (gl::RenderbufferStorage::issueSerial):
        (gl::RenderbufferStorage::issueCubeSerials):
        (gl::Colorbuffer::Colorbuffer):
        (gl::Colorbuffer::~Colorbuffer):
        (gl::Colorbuffer::getRenderTarget):
        (gl::DepthStencilbuffer::DepthStencilbuffer):
        (gl::DepthStencilbuffer::~DepthStencilbuffer):
        (gl::DepthStencilbuffer::getDepthStencil):
        (gl::Depthbuffer::Depthbuffer):
        (gl::Depthbuffer::~Depthbuffer):
        (gl::Stencilbuffer::Stencilbuffer):
        (gl::Stencilbuffer::~Stencilbuffer):
        * src/libGLESv2/Renderbuffer.h: Added.
        (gl::RenderbufferInterface::~RenderbufferInterface):
        * src/libGLESv2/ResourceManager.cpp: Added.
        (gl::ResourceManager::ResourceManager):
        (gl::ResourceManager::~ResourceManager):
        (gl::ResourceManager::addRef):
        (gl::ResourceManager::release):
        (gl::ResourceManager::createBuffer):
        (gl::ResourceManager::createShader):
        (gl::ResourceManager::createProgram):
        (gl::ResourceManager::createTexture):
        (gl::ResourceManager::createRenderbuffer):
        (gl::ResourceManager::deleteBuffer):
        (gl::ResourceManager::deleteShader):
        (gl::ResourceManager::deleteProgram):
        (gl::ResourceManager::deleteTexture):
        (gl::ResourceManager::deleteRenderbuffer):
        (gl::ResourceManager::getBuffer):
        (gl::ResourceManager::getShader):
        (gl::ResourceManager::getTexture):
        (gl::ResourceManager::getProgram):
        (gl::ResourceManager::getRenderbuffer):
        (gl::ResourceManager::setRenderbuffer):
        (gl::ResourceManager::checkBufferAllocation):
        (gl::ResourceManager::checkTextureAllocation):
        (gl::ResourceManager::checkRenderbufferAllocation):
        * src/libGLESv2/ResourceManager.h: Added.
        * src/libGLESv2/Shader.cpp: Added.
        (gl::Shader::Shader):
        (gl::Shader::~Shader):
        (gl::Shader::getHandle):
        (gl::Shader::setSource):
        (gl::Shader::getInfoLogLength):
        (gl::Shader::getInfoLog):
        (gl::Shader::getSourceLength):
        (gl::Shader::getTranslatedSourceLength):
        (gl::Shader::getSourceImpl):
        (gl::Shader::getSource):
        (gl::Shader::getTranslatedSource):
        (gl::Shader::getUniforms):
        (gl::Shader::isCompiled):
        (gl::Shader::getHLSL):
        (gl::Shader::addRef):
        (gl::Shader::release):
        (gl::Shader::getRefCount):
        (gl::Shader::isFlaggedForDeletion):
        (gl::Shader::flagForDeletion):
        (gl::Shader::initializeCompiler):
        (gl::Shader::releaseCompiler):
        (gl::Shader::parseVaryings):
        (gl::Shader::resetVaryingsRegisterAssignment):
        (gl::Shader::uncompile):
        (gl::Shader::compileToHLSL):
        (gl::Shader::parseType):
        (gl::Shader::compareVarying):
        (gl::VertexShader::VertexShader):
        (gl::VertexShader::~VertexShader):
        (gl::VertexShader::getType):
        (gl::VertexShader::uncompile):
        (gl::VertexShader::compile):
        (gl::VertexShader::getSemanticIndex):
        (gl::VertexShader::parseAttributes):
        (gl::FragmentShader::FragmentShader):
        (gl::FragmentShader::~FragmentShader):
        (gl::FragmentShader::getType):
        (gl::FragmentShader::compile):
        * src/libGLESv2/Shader.h: Added.
        (gl::Varying::Varying):
        (gl::Attribute::Attribute):
        * src/libGLESv2/Texture.cpp: Added.
        (gl::Texture::Texture):
        (gl::Texture::~Texture):
        (gl::Texture::setMinFilter):
        (gl::Texture::setMagFilter):
        (gl::Texture::setWrapS):
        (gl::Texture::setWrapT):
        (gl::Texture::setMaxAnisotropy):
        (gl::Texture::setUsage):
        (gl::Texture::getMinFilter):
        (gl::Texture::getMagFilter):
        (gl::Texture::getWrapS):
        (gl::Texture::getWrapT):
        (gl::Texture::getMaxAnisotropy):
        (gl::Texture::getLodOffset):
        (gl::Texture::getSamplerState):
        (gl::Texture::getUsage):
        (gl::Texture::isMipmapFiltered):
        (gl::Texture::setImage):
        (gl::Texture::setCompressedImage):
        (gl::Texture::subImage):
        (gl::Texture::subImageCompressed):
        (gl::Texture::getNativeTexture):
        (gl::Texture::hasDirtyImages):
        (gl::Texture::resetDirty):
        (gl::Texture::getTextureSerial):
        (gl::Texture::getRenderTargetSerial):
        (gl::Texture::isImmutable):
        (gl::Texture::creationLevels):
        (gl::Texture2D::Texture2D):
        (gl::Texture2D::~Texture2D):
        (gl::Texture2D::addProxyRef):
        (gl::Texture2D::releaseProxy):
        (gl::Texture2D::getTarget):
        (gl::Texture2D::getWidth):
        (gl::Texture2D::getHeight):
        (gl::Texture2D::getInternalFormat):
        (gl::Texture2D::getActualFormat):
        (gl::Texture2D::redefineImage):
        (gl::Texture2D::setImage):
        (gl::Texture2D::bindTexImage):
        (gl::Texture2D::releaseTexImage):
        (gl::Texture2D::setCompressedImage):
        (gl::Texture2D::commitRect):
        (gl::Texture2D::subImage):
        (gl::Texture2D::subImageCompressed):
        (gl::Texture2D::copyImage):
        (gl::Texture2D::copySubImage):
        (gl::Texture2D::storage):
        (gl::Texture2D::isSamplerComplete):
        (gl::Texture2D::isMipmapComplete):
        (gl::Texture2D::isCompressed):
        (gl::Texture2D::isDepth):
        (gl::Texture2D::createTexture):
        (gl::Texture2D::updateTexture):
        (gl::Texture2D::convertToRenderTarget):
        (gl::Texture2D::generateMipmaps):
        (gl::Texture2D::getRenderbuffer):
        (gl::Texture2D::getRenderTarget):
        (gl::Texture2D::getDepthStencil):
        (gl::Texture2D::levelCount):
        (gl::Texture2D::getStorage):
        (gl::TextureCubeMap::TextureCubeMap):
        (gl::TextureCubeMap::~TextureCubeMap):
        (gl::TextureCubeMap::addProxyRef):
        (gl::TextureCubeMap::releaseProxy):
        (gl::TextureCubeMap::getTarget):
        (gl::TextureCubeMap::getWidth):
        (gl::TextureCubeMap::getHeight):
        (gl::TextureCubeMap::getInternalFormat):
        (gl::TextureCubeMap::getActualFormat):
        (gl::TextureCubeMap::setImagePosX):
        (gl::TextureCubeMap::setImageNegX):
        (gl::TextureCubeMap::setImagePosY):
        (gl::TextureCubeMap::setImageNegY):
        (gl::TextureCubeMap::setImagePosZ):
        (gl::TextureCubeMap::setImageNegZ):
        (gl::TextureCubeMap::setCompressedImage):
        (gl::TextureCubeMap::commitRect):
        (gl::TextureCubeMap::subImage):
        (gl::TextureCubeMap::subImageCompressed):
        (gl::TextureCubeMap::isSamplerComplete):
        (gl::TextureCubeMap::isCubeComplete):
        (gl::TextureCubeMap::isMipmapCubeComplete):
        (gl::TextureCubeMap::isCompressed):
        (gl::TextureCubeMap::createTexture):
        (gl::TextureCubeMap::updateTexture):
        (gl::TextureCubeMap::convertToRenderTarget):
        (gl::TextureCubeMap::setImage):
        (gl::TextureCubeMap::faceIndex):
        (gl::TextureCubeMap::redefineImage):
        (gl::TextureCubeMap::copyImage):
        (gl::TextureCubeMap::copySubImage):
        (gl::TextureCubeMap::storage):
        (gl::TextureCubeMap::generateMipmaps):
        (gl::TextureCubeMap::getRenderbuffer):
        (gl::TextureCubeMap::getRenderTarget):
        (gl::TextureCubeMap::levelCount):
        (gl::TextureCubeMap::getStorage):
        * src/libGLESv2/Texture.h: Added.
        * src/libGLESv2/Uniform.cpp: Added.
        (gl::Uniform::Uniform):
        (gl::Uniform::~Uniform):
        (gl::Uniform::isArray):
        (gl::Uniform::elementCount):
        * src/libGLESv2/Uniform.h: Added.
        * src/libGLESv2/angletypes.h: Added.
        * src/libGLESv2/constants.h: Added.
        * src/libGLESv2/libGLESv2.cpp: Added.
        (validImageSize):
        (checkTextureFormatType):
        (validateSubImageParams2D):
        (validateSubImageParamsCube):
        (validReadFormatType):
        * src/libGLESv2/libGLESv2.def: Added.
        * src/libGLESv2/libGLESv2.rc: Added.
        * src/libGLESv2/libGLESv2.vcxproj: Added.
        * src/libGLESv2/libGLESv2.vcxproj.filters: Added.
        * src/libGLESv2/main.cpp: Added.
        (DllMain):
        (gl::makeCurrent):
        (gl::getContext):
        (gl::getNonLostContext):
        (gl::getDisplay):
        (gl::error):
        * src/libGLESv2/main.h: Added.
        (gl::error):
        * src/libGLESv2/mathutil.h: Added.
        (gl::Vector4::Vector4):
        (gl::isPow2):
        (gl::log2):
        (gl::ceilPow2):
        (gl::clamp):
        (gl::clamp01):
        (gl::unorm):
        (gl::supportsSSE2):
        (gl::float32ToFloat16):
        (rx::Range::Range):
        * src/libGLESv2/precompiled.cpp: Added.
        * src/libGLESv2/precompiled.h: Added.
        * src/libGLESv2/renderer: Added.
        * src/libGLESv2/renderer/Blit.cpp: Added.
        (rx::Blit::Blit):
        (rx::Blit::~Blit):
        (rx::Blit::initGeometry):
        (rx::Blit::setShader):
        (rx::Blit::setVertexShader):
        (rx::Blit::setPixelShader):
        (rx::Blit::getSurfaceRect):
        (rx::Blit::boxFilter):
        (rx::Blit::copy):
        (rx::Blit::formatConvert):
        (rx::Blit::setFormatConvertShaders):
        (rx::Blit::copySurfaceToTexture):
        (rx::Blit::setViewport):
        (rx::Blit::setCommonBlitState):
        (rx::Blit::render):
        (rx::Blit::saveState):
        (rx::Blit::restoreState):
        * src/libGLESv2/renderer/Blit.h: Added.
        * src/libGLESv2/renderer/BufferStorage.cpp: Added.
        (rx::BufferStorage::BufferStorage):
        (rx::BufferStorage::~BufferStorage):
        (rx::BufferStorage::getSerial):
        (rx::BufferStorage::updateSerial):
        (rx::BufferStorage::markBufferUsage):
        * src/libGLESv2/renderer/BufferStorage.h: Added.
        * src/libGLESv2/renderer/BufferStorage11.cpp: Added.
        (rx::BufferStorage11::BufferStorage11):
        (rx::BufferStorage11::~BufferStorage11):
        (rx::BufferStorage11::makeBufferStorage11):
        (rx::BufferStorage11::getData):
        (rx::BufferStorage11::setData):
        (rx::BufferStorage11::clear):
        (rx::BufferStorage11::getSize):
        (rx::BufferStorage11::supportsDirectBinding):
        (rx::BufferStorage11::markBufferUsage):
        (rx::BufferStorage11::getBuffer):
        * src/libGLESv2/renderer/BufferStorage11.h: Added.
        * src/libGLESv2/renderer/BufferStorage9.cpp: Added.
        (rx::BufferStorage9::BufferStorage9):
        (rx::BufferStorage9::~BufferStorage9):
        (rx::BufferStorage9::makeBufferStorage9):
        (rx::BufferStorage9::getData):
        (rx::BufferStorage9::setData):
        (rx::BufferStorage9::clear):
        (rx::BufferStorage9::getSize):
        (rx::BufferStorage9::supportsDirectBinding):
        * src/libGLESv2/renderer/BufferStorage9.h: Added.
        * src/libGLESv2/renderer/Fence11.cpp: Added.
        (rx::Fence11::Fence11):
        (rx::Fence11::~Fence11):
        (rx::Fence11::isFence):
        (rx::Fence11::setFence):
        (rx::Fence11::testFence):
        (rx::Fence11::finishFence):
        (rx::Fence11::getFenceiv):
        * src/libGLESv2/renderer/Fence11.h: Added.
        * src/libGLESv2/renderer/Fence9.cpp: Added.
        (rx::Fence9::Fence9):
        (rx::Fence9::~Fence9):
        (rx::Fence9::isFence):
        (rx::Fence9::setFence):
        (rx::Fence9::testFence):
        (rx::Fence9::finishFence):
        (rx::Fence9::getFenceiv):
        * src/libGLESv2/renderer/Fence9.h: Added.
        * src/libGLESv2/renderer/FenceImpl.h: Added.
        (rx::FenceImpl::FenceImpl):
        (rx::FenceImpl::~FenceImpl):
        (rx::FenceImpl::setStatus):
        (rx::FenceImpl::getStatus):
        (rx::FenceImpl::setCondition):
        (rx::FenceImpl::getCondition):
        * src/libGLESv2/renderer/Image.cpp: Added.
        (rx::Image::Image):
        (rx::Image::loadAlphaDataToBGRA):
        (rx::Image::loadAlphaDataToNative):
        (rx::Image::loadAlphaFloatDataToRGBA):
        (rx::Image::loadAlphaHalfFloatDataToRGBA):
        (rx::Image::loadLuminanceDataToNativeOrBGRA):
        (rx::Image::loadLuminanceFloatDataToRGBA):
        (rx::Image::loadLuminanceFloatDataToRGB):
        (rx::Image::loadLuminanceHalfFloatDataToRGBA):
        (rx::Image::loadLuminanceAlphaDataToNativeOrBGRA):
        (rx::Image::loadLuminanceAlphaFloatDataToRGBA):
        (rx::Image::loadLuminanceAlphaHalfFloatDataToRGBA):
        (rx::Image::loadRGBUByteDataToBGRX):
        (rx::Image::loadRGBUByteDataToRGBA):
        (rx::Image::loadRGB565DataToBGRA):
        (rx::Image::loadRGB565DataToRGBA):
        (rx::Image::loadRGBFloatDataToRGBA):
        (rx::Image::loadRGBFloatDataToNative):
        (rx::Image::loadRGBHalfFloatDataToRGBA):
        (rx::Image::loadRGBAUByteDataToBGRA):
        (rx::Image::loadRGBAUByteDataToNative):
        (rx::Image::loadRGBA4444DataToBGRA):
        (rx::Image::loadRGBA4444DataToRGBA):
        (rx::Image::loadRGBA5551DataToBGRA):
        (rx::Image::loadRGBA5551DataToRGBA):
        (rx::Image::loadRGBAFloatDataToRGBA):
        (rx::Image::loadRGBAHalfFloatDataToRGBA):
        (rx::Image::loadBGRADataToBGRA):
        * src/libGLESv2/renderer/Image.h: Added.
        (rx::Image::~Image):
        (rx::Image::getWidth):
        (rx::Image::getHeight):
        (rx::Image::getInternalFormat):
        (rx::Image::getActualFormat):
        (rx::Image::markDirty):
        (rx::Image::markClean):
        (rx::Image::setManagedSurface):
        * src/libGLESv2/renderer/Image11.cpp: Added.
        (rx::Image11::Image11):
        (rx::Image11::~Image11):
        (rx::Image11::makeImage11):
        (rx::Image11::generateMipmap):
        (rx::Image11::isDirty):
        (rx::Image11::updateSurface):
        (rx::Image11::redefine):
        (rx::Image11::isRenderableFormat):
        (rx::Image11::getDXGIFormat):
        (rx::Image11::loadData):
        (rx::Image11::loadCompressedData):
        (rx::Image11::copy):
        (rx::Image11::getStagingTexture):
        (rx::Image11::getStagingSubresource):
        (rx::Image11::createStagingTexture):
        (rx::Image11::map):
        (rx::Image11::unmap):
        * src/libGLESv2/renderer/Image11.h: Added.
        * src/libGLESv2/renderer/Image9.cpp: Added.
        (rx::Image9::Image9):
        (rx::Image9::~Image9):
        (rx::Image9::generateMip):
        (rx::Image9::makeImage9):
        (rx::Image9::generateMipmap):
        (rx::Image9::copyLockableSurfaces):
        (rx::Image9::redefine):
        (rx::Image9::createSurface):
        (rx::Image9::lock):
        (rx::Image9::unlock):
        (rx::Image9::isRenderableFormat):
        (rx::Image9::getD3DFormat):
        (rx::Image9::getSurface):
        (rx::Image9::setManagedSurface):
        (rx::Image9::updateSurface):
        (rx::Image9::loadData):
        (rx::Image9::loadCompressedData):
        (rx::Image9::copy):
        * src/libGLESv2/renderer/Image9.h: Added.
        (rx::Image9::isDirty):
        * src/libGLESv2/renderer/ImageSSE2.cpp: Added.
        (rx::Image::loadRGBAUByteDataToBGRASSE2):
        (rx::Image::loadAlphaDataToBGRASSE2):
        * src/libGLESv2/renderer/IndexBuffer.cpp: Added.
        (rx::IndexBuffer::IndexBuffer):
        (rx::IndexBuffer::~IndexBuffer):
        (rx::IndexBuffer::getSerial):
        (rx::IndexBuffer::updateSerial):
        (rx::IndexBufferInterface::IndexBufferInterface):
        (rx::IndexBufferInterface::~IndexBufferInterface):
        (rx::IndexBufferInterface::getIndexType):
        (rx::IndexBufferInterface::getBufferSize):
        (rx::IndexBufferInterface::getSerial):
        (rx::IndexBufferInterface::mapBuffer):
        (rx::IndexBufferInterface::unmapBuffer):
        (rx::IndexBufferInterface::getIndexBuffer):
        (rx::IndexBufferInterface::getWritePosition):
        (rx::IndexBufferInterface::setWritePosition):
        (rx::IndexBufferInterface::discard):
        (rx::IndexBufferInterface::setBufferSize):
        (rx::StreamingIndexBufferInterface::StreamingIndexBufferInterface):
        (rx::StreamingIndexBufferInterface::~StreamingIndexBufferInterface):
        (rx::StreamingIndexBufferInterface::reserveBufferSpace):
        (rx::StaticIndexBufferInterface::StaticIndexBufferInterface):
        (rx::StaticIndexBufferInterface::~StaticIndexBufferInterface):
        (rx::StaticIndexBufferInterface::reserveBufferSpace):
        (rx::StaticIndexBufferInterface::lookupRange):
        (rx::StaticIndexBufferInterface::addRange):
        * src/libGLESv2/renderer/IndexBuffer.h: Added.
        (rx::StaticIndexBufferInterface::IndexRange::operator<):
        * src/libGLESv2/renderer/IndexBuffer11.cpp: Added.
        (rx::IndexBuffer11::IndexBuffer11):
        (rx::IndexBuffer11::~IndexBuffer11):
        (rx::IndexBuffer11::initialize):
        (rx::IndexBuffer11::makeIndexBuffer11):
        (rx::IndexBuffer11::mapBuffer):
        (rx::IndexBuffer11::unmapBuffer):
        (rx::IndexBuffer11::getIndexType):
        (rx::IndexBuffer11::getBufferSize):
        (rx::IndexBuffer11::setSize):
        (rx::IndexBuffer11::discard):
        (rx::IndexBuffer11::getIndexFormat):
        (rx::IndexBuffer11::getBuffer):
        * src/libGLESv2/renderer/IndexBuffer11.h: Added.
        * src/libGLESv2/renderer/IndexBuffer9.cpp: Added.
        (rx::IndexBuffer9::IndexBuffer9):
        (rx::IndexBuffer9::~IndexBuffer9):
        (rx::IndexBuffer9::initialize):
        (rx::IndexBuffer9::makeIndexBuffer9):
        (rx::IndexBuffer9::mapBuffer):
        (rx::IndexBuffer9::unmapBuffer):
        (rx::IndexBuffer9::getIndexType):
        (rx::IndexBuffer9::getBufferSize):
        (rx::IndexBuffer9::setSize):
        (rx::IndexBuffer9::discard):
        (rx::IndexBuffer9::getIndexFormat):
        (rx::IndexBuffer9::getBuffer):
        * src/libGLESv2/renderer/IndexBuffer9.h: Added.
        * src/libGLESv2/renderer/IndexDataManager.cpp: Added.
        (rx::IndexDataManager::IndexDataManager):
        (rx::IndexDataManager::~IndexDataManager):
        (rx::indexTypeSize):
        (rx::convertIndices):
        (rx::computeRange):
        (rx::IndexDataManager::prepareIndexData):
        (rx::IndexDataManager::getCountingIndices):
        * src/libGLESv2/renderer/IndexDataManager.h: Added.
        * src/libGLESv2/renderer/InputLayoutCache.cpp: Added.
        (rx::InputLayoutCache::InputLayoutCache):
        (rx::InputLayoutCache::~InputLayoutCache):
        (rx::InputLayoutCache::initialize):
        (rx::InputLayoutCache::clear):
        (rx::InputLayoutCache::applyVertexBuffers):
        (rx::InputLayoutCache::hashInputLayout):
        (rx::InputLayoutCache::compareInputLayouts):
        * src/libGLESv2/renderer/InputLayoutCache.h: Added.
        * src/libGLESv2/renderer/Query11.cpp: Added.
        (rx::Query11::Query11):
        (rx::Query11::~Query11):
        (rx::Query11::begin):
        (rx::Query11::end):
        (rx::Query11::getResult):
        (rx::Query11::isResultAvailable):
        (rx::Query11::testQuery):
        * src/libGLESv2/renderer/Query11.h: Added.
        * src/libGLESv2/renderer/Query9.cpp: Added.
        (rx::Query9::Query9):
        (rx::Query9::~Query9):
        (rx::Query9::begin):
        (rx::Query9::end):
        (rx::Query9::getResult):
        (rx::Query9::isResultAvailable):
        (rx::Query9::testQuery):
        * src/libGLESv2/renderer/Query9.h: Added.
        * src/libGLESv2/renderer/QueryImpl.h: Added.
        (rx::QueryImpl::QueryImpl):
        (rx::QueryImpl::~QueryImpl):
        (rx::QueryImpl::getType):
        * src/libGLESv2/renderer/RenderStateCache.cpp: Added.
        (rx::RenderStateCache::RenderStateCache):
        (rx::RenderStateCache::~RenderStateCache):
        (rx::RenderStateCache::initialize):
        (rx::RenderStateCache::clear):
        (rx::RenderStateCache::hashBlendState):
        (rx::RenderStateCache::compareBlendStates):
        (rx::RenderStateCache::getBlendState):
        (rx::RenderStateCache::hashRasterizerState):
        (rx::RenderStateCache::compareRasterizerStates):
        (rx::RenderStateCache::getRasterizerState):
        (rx::RenderStateCache::hashDepthStencilState):
        (rx::RenderStateCache::compareDepthStencilStates):
        (rx::RenderStateCache::getDepthStencilState):
        (rx::RenderStateCache::hashSamplerState):
        (rx::RenderStateCache::compareSamplerStates):
        (rx::RenderStateCache::getSamplerState):
        * src/libGLESv2/renderer/RenderStateCache.h: Added.
        * src/libGLESv2/renderer/RenderTarget.h: Added.
        (rx::RenderTarget::RenderTarget):
        (rx::RenderTarget::~RenderTarget):
        (rx::RenderTarget::getWidth):
        (rx::RenderTarget::getHeight):
        (rx::RenderTarget::getInternalFormat):
        (rx::RenderTarget::getActualFormat):
        (rx::RenderTarget::getSamples):
        * src/libGLESv2/renderer/RenderTarget11.cpp: Added.
        (rx::getRTVSubresourceIndex):
        (rx::getDSVSubresourceIndex):
        (rx::RenderTarget11::RenderTarget11):
        (rx::RenderTarget11::~RenderTarget11):
        (rx::RenderTarget11::makeRenderTarget11):
        (rx::RenderTarget11::getTexture):
        (rx::RenderTarget11::getRenderTargetView):
        (rx::RenderTarget11::getDepthStencilView):
        (rx::RenderTarget11::getShaderResourceView):
        (rx::RenderTarget11::getSubresourceIndex):
        * src/libGLESv2/renderer/RenderTarget11.h: Added.
        * src/libGLESv2/renderer/RenderTarget9.cpp: Added.
        (rx::RenderTarget9::RenderTarget9):
        (rx::RenderTarget9::~RenderTarget9):
        (rx::RenderTarget9::makeRenderTarget9):
        (rx::RenderTarget9::getSurface):
        * src/libGLESv2/renderer/RenderTarget9.h: Added.
        * src/libGLESv2/renderer/Renderer.cpp: Added.
        (rx::Renderer::Renderer):
        (rx::Renderer::~Renderer):
        (rx::Renderer::initializeCompiler):
        (rx::Renderer::compileToBinary):
        * src/libGLESv2/renderer/Renderer.h: Added.
        (getComparableOSVersion):
        (rx::Renderer::getVertexTextureSupport):
        * src/libGLESv2/renderer/Renderer11.cpp: Added.
        (rx::Renderer11::Renderer11):
        (rx::Renderer11::~Renderer11):
        (rx::Renderer11::makeRenderer11):
        (rx::Renderer11::initialize):
        (rx::Renderer11::initializeDevice):
        (rx::Renderer11::generateConfigs):
        (rx::Renderer11::deleteConfigs):
        (rx::Renderer11::sync):
        (rx::Renderer11::createSwapChain):
        (rx::Renderer11::setSamplerState):
        (rx::Renderer11::setTexture):
        (rx::Renderer11::setRasterizerState):
        (rx::Renderer11::setBlendState):
        (rx::Renderer11::setDepthStencilState):
        (rx::Renderer11::setScissorRectangle):
        (rx::Renderer11::setViewport):
        (rx::Renderer11::applyPrimitiveType):
        (rx::Renderer11::applyRenderTarget):
        (rx::Renderer11::applyVertexBuffer):
        (rx::Renderer11::applyIndexBuffer):
        (rx::Renderer11::drawArrays):
        (rx::Renderer11::drawElements):
        (rx::Renderer11::drawLineLoop):
        (rx::Renderer11::drawTriangleFan):
        (rx::Renderer11::applyShaders):
        (rx::Renderer11::applyUniforms):
        (rx::Renderer11::clear):
        (rx::Renderer11::maskedClear):
        (rx::Renderer11::markAllStateDirty):
        (rx::Renderer11::releaseDeviceResources):
        (rx::Renderer11::notifyDeviceLost):
        (rx::Renderer11::isDeviceLost):
        (rx::Renderer11::testDeviceLost):
        (rx::Renderer11::testDeviceResettable):
        (rx::Renderer11::release):
        (rx::Renderer11::resetDevice):
        (rx::Renderer11::getAdapterVendor):
        (rx::Renderer11::getRendererDescription):
        (rx::Renderer11::getAdapterIdentifier):
        (rx::Renderer11::getBGRATextureSupport):
        (rx::Renderer11::getDXT1TextureSupport):
        (rx::Renderer11::getDXT3TextureSupport):
        (rx::Renderer11::getDXT5TextureSupport):
        (rx::Renderer11::getDepthTextureSupport):
        (rx::Renderer11::getFloat32TextureSupport):
        (rx::Renderer11::getFloat16TextureSupport):
        (rx::Renderer11::getLuminanceTextureSupport):
        (rx::Renderer11::getLuminanceAlphaTextureSupport):
        (rx::Renderer11::getTextureFilterAnisotropySupport):
        (rx::Renderer11::getTextureMaxAnisotropy):
        (rx::Renderer11::getEventQuerySupport):
        (rx::Renderer11::getViewportBounds):
        (rx::Renderer11::getMaxVertexTextureImageUnits):
        (rx::Renderer11::getMaxCombinedTextureImageUnits):
        (rx::Renderer11::getReservedVertexUniformVectors):
        (rx::Renderer11::getReservedFragmentUniformVectors):
        (rx::Renderer11::getMaxVertexUniformVectors):
        (rx::Renderer11::getMaxFragmentUniformVectors):
        (rx::Renderer11::getMaxVaryingVectors):
        (rx::Renderer11::getNonPower2TextureSupport):
        (rx::Renderer11::getOcclusionQuerySupport):
        (rx::Renderer11::getInstancingSupport):
        (rx::Renderer11::getShareHandleSupport):
        (rx::Renderer11::getDerivativeInstructionSupport):
        (rx::Renderer11::getPostSubBufferSupport):
        (rx::Renderer11::getMajorShaderModel):
        (rx::Renderer11::getMinorShaderModel):
        (rx::Renderer11::getMaxPointSize):
        (rx::Renderer11::getMaxViewportDimension):
        (rx::Renderer11::getMaxTextureWidth):
        (rx::Renderer11::getMaxTextureHeight):
        (rx::Renderer11::get32BitIndexSupport):
        (rx::Renderer11::getMinSwapInterval):
        (rx::Renderer11::getMaxSwapInterval):
        (rx::Renderer11::getMaxSupportedSamples):
        (rx::Renderer11::getNearestSupportedSamples):
        (rx::Renderer11::getMaxRenderTargets):
        (rx::Renderer11::copyToRenderTarget):
        (rx::Renderer11::copyImage):
        (rx::Renderer11::copyTexture):
        (rx::Renderer11::unapplyRenderTargets):
        (rx::Renderer11::setOneTimeRenderTarget):
        (rx::Renderer11::createRenderTarget):
        (rx::Renderer11::loadExecutable):
        (rx::Renderer11::compileToExecutable):
        (rx::Renderer11::createVertexBuffer):
        (rx::Renderer11::createIndexBuffer):
        (rx::Renderer11::createBufferStorage):
        (rx::Renderer11::createQuery):
        (rx::Renderer11::createFence):
        (rx::Renderer11::getRenderTargetResource):
        (rx::Renderer11::blitRect):
        (rx::Renderer11::readPixels):
        (rx::Renderer11::createImage):
        (rx::Renderer11::generateMipmap):
        (rx::Renderer11::createTextureStorage2D):
        (rx::Renderer11::createTextureStorageCube):
        (rx::getFastPixelCopySize):
        (rx::readPixelColor):
        (rx::writePixelColor):
        (rx::Renderer11::readTextureData):
        (rx::Renderer11::blitRenderbufferRect):
        (rx::Renderer11::resolveMultisampledTexture):
        (rx::Renderer11::getLUID):
        * src/libGLESv2/renderer/Renderer11.h: Added.
        (rx::Renderer11::getDevice):
        (rx::Renderer11::getDeviceContext):
        (rx::Renderer11::getDxgiFactory):
        * src/libGLESv2/renderer/Renderer9.cpp: Added.
        (rx::Renderer9::Renderer9):
        (rx::Renderer9::~Renderer9):
        (rx::Renderer9::makeRenderer9):
        (rx::Renderer9::initialize):
        (rx::Renderer9::initializeDevice):
        (rx::Renderer9::getDefaultPresentParameters):
        (rx::Renderer9::generateConfigs):
        (rx::Renderer9::deleteConfigs):
        (rx::Renderer9::startScene):
        (rx::Renderer9::endScene):
        (rx::Renderer9::sync):
        (rx::Renderer9::createSwapChain):
        (rx::Renderer9::allocateEventQuery):
        (rx::Renderer9::freeEventQuery):
        (rx::Renderer9::createVertexShader):
        (rx::Renderer9::createPixelShader):
        (rx::Renderer9::createVertexBuffer):
        (rx::Renderer9::createIndexBuffer):
        (rx::Renderer9::createBufferStorage):
        (rx::Renderer9::createQuery):
        (rx::Renderer9::createFence):
        (rx::Renderer9::setSamplerState):
        (rx::Renderer9::setTexture):
        (rx::Renderer9::setRasterizerState):
        (rx::Renderer9::setBlendState):
        (rx::Renderer9::setDepthStencilState):
        (rx::Renderer9::setScissorRectangle):
        (rx::Renderer9::setViewport):
        (rx::Renderer9::applyPrimitiveType):
        (rx::Renderer9::getNullColorbuffer):
        (rx::Renderer9::applyRenderTarget):
        (rx::Renderer9::applyVertexBuffer):
        (rx::Renderer9::applyIndexBuffer):
        (rx::Renderer9::drawArrays):
        (rx::Renderer9::drawElements):
        (rx::Renderer9::drawLineLoop):
        (rx::drawPoints):
        (rx::Renderer9::drawIndexedPoints):
        (rx::Renderer9::applyShaders):
        (rx::Renderer9::applyUniforms):
        (rx::Renderer9::applyUniformnfv):
        (rx::Renderer9::applyUniformniv):
        (rx::Renderer9::applyUniformnbv):
        (rx::Renderer9::clear):
        (rx::Renderer9::markAllStateDirty):
        (rx::Renderer9::releaseDeviceResources):
        (rx::Renderer9::notifyDeviceLost):
        (rx::Renderer9::isDeviceLost):
        (rx::Renderer9::testDeviceLost):
        (rx::Renderer9::testDeviceResettable):
        (rx::Renderer9::resetDevice):
        (rx::Renderer9::getAdapterVendor):
        (rx::Renderer9::getRendererDescription):
        (rx::Renderer9::getAdapterIdentifier):
        (rx::Renderer9::getMultiSampleSupport):
        (rx::Renderer9::getBGRATextureSupport):
        (rx::Renderer9::getDXT1TextureSupport):
        (rx::Renderer9::getDXT3TextureSupport):
        (rx::Renderer9::getDXT5TextureSupport):
        (rx::Renderer9::getDepthTextureSupport):
        (rx::Renderer9::getFloat32TextureSupport):
        (rx::Renderer9::getFloat16TextureSupport):
        (rx::Renderer9::getLuminanceTextureSupport):
        (rx::Renderer9::getLuminanceAlphaTextureSupport):
        (rx::Renderer9::getTextureFilterAnisotropySupport):
        (rx::Renderer9::getTextureMaxAnisotropy):
        (rx::Renderer9::getEventQuerySupport):
        (rx::Renderer9::getMaxVertexTextureImageUnits):
        (rx::Renderer9::getMaxCombinedTextureImageUnits):
        (rx::Renderer9::getReservedVertexUniformVectors):
        (rx::Renderer9::getReservedFragmentUniformVectors):
        (rx::Renderer9::getMaxVertexUniformVectors):
        (rx::Renderer9::getMaxFragmentUniformVectors):
        (rx::Renderer9::getMaxVaryingVectors):
        (rx::Renderer9::getNonPower2TextureSupport):
        (rx::Renderer9::getOcclusionQuerySupport):
        (rx::Renderer9::getInstancingSupport):
        (rx::Renderer9::getShareHandleSupport):
        (rx::Renderer9::getDerivativeInstructionSupport):
        (rx::Renderer9::getPostSubBufferSupport):
        (rx::Renderer9::getMajorShaderModel):
        (rx::Renderer9::getMaxPointSize):
        (rx::Renderer9::getMaxViewportDimension):
        (rx::Renderer9::getMaxTextureWidth):
        (rx::Renderer9::getMaxTextureHeight):
        (rx::Renderer9::get32BitIndexSupport):
        (rx::Renderer9::getCapsDeclTypes):
        (rx::Renderer9::getMinSwapInterval):
        (rx::Renderer9::getMaxSwapInterval):
        (rx::Renderer9::getMaxSupportedSamples):
        (rx::Renderer9::getNearestSupportedSamples):
        (rx::Renderer9::getMaxRenderTargets):
        (rx::Renderer9::ConvertTextureInternalFormat):
        (rx::Renderer9::copyToRenderTarget):
        (rx::Renderer9::getBufferPool):
        (rx::Renderer9::copyImage):
        (rx::Renderer9::blitRect):
        (rx::Renderer9::readPixels):
        (rx::Renderer9::createRenderTarget):
        (rx::Renderer9::loadExecutable):
        (rx::Renderer9::compileToExecutable):
        (rx::Renderer9::boxFilter):
        (rx::Renderer9::getTexturePool):
        (rx::Renderer9::createImage):
        (rx::Renderer9::generateMipmap):
        (rx::Renderer9::createTextureStorage2D):
        (rx::Renderer9::createTextureStorageCube):
        (rx::Renderer9::getLUID):
        * src/libGLESv2/renderer/Renderer9.h: Added.
        (rx::Renderer9::getDevice):
        * src/libGLESv2/renderer/ShaderCache.h: Added.
        (rx::ShaderCache::ShaderCache):
        (rx::ShaderCache::~ShaderCache):
        (rx::ShaderCache::initialize):
        (rx::ShaderCache::create):
        (rx::ShaderCache::clear):
        (rx::ShaderCache::createShader):
        * src/libGLESv2/renderer/ShaderExecutable.h: Added.
        (rx::ShaderExecutable::ShaderExecutable):
        (rx::ShaderExecutable::~ShaderExecutable):
        (rx::ShaderExecutable::getFunction):
        (rx::ShaderExecutable::getLength):
        * src/libGLESv2/renderer/ShaderExecutable11.cpp: Added.
        (rx::ShaderExecutable11::ShaderExecutable11):
        (rx::ShaderExecutable11::~ShaderExecutable11):
        (rx::ShaderExecutable11::makeShaderExecutable11):
        (rx::ShaderExecutable11::getVertexShader):
        (rx::ShaderExecutable11::getPixelShader):
        (rx::ShaderExecutable11::getGeometryShader):
        (rx::ShaderExecutable11::getConstantBuffer):
        * src/libGLESv2/renderer/ShaderExecutable11.h: Added.
        * src/libGLESv2/renderer/ShaderExecutable9.cpp: Added.
        (rx::ShaderExecutable9::ShaderExecutable9):
        (rx::ShaderExecutable9::~ShaderExecutable9):
        (rx::ShaderExecutable9::makeShaderExecutable9):
        (rx::ShaderExecutable9::getVertexShader):
        (rx::ShaderExecutable9::getPixelShader):
        * src/libGLESv2/renderer/ShaderExecutable9.h: Added.
        * src/libGLESv2/renderer/SwapChain.h: Added.
        (rx::SwapChain::SwapChain):
        (rx::SwapChain::~SwapChain):
        (rx::SwapChain::getShareHandle):
        * src/libGLESv2/renderer/SwapChain11.cpp: Added.
        (rx::SwapChain11::SwapChain11):
        (rx::SwapChain11::~SwapChain11):
        (rx::SwapChain11::release):
        (rx::SwapChain11::releaseOffscreenTexture):
        (rx::SwapChain11::resetOffscreenTexture):
        (rx::SwapChain11::resize):
        (rx::SwapChain11::reset):
        (rx::SwapChain11::initPassThroughResources):
        (rx::SwapChain11::swapRect):
        (rx::SwapChain11::getOffscreenTexture):
        (rx::SwapChain11::getRenderTarget):
        (rx::SwapChain11::getRenderTargetShaderResource):
        (rx::SwapChain11::getDepthStencil):
        (rx::SwapChain11::getDepthStencilTexture):
        (rx::SwapChain11::makeSwapChain11):
        (rx::SwapChain11::recreate):
        * src/libGLESv2/renderer/SwapChain11.h: Added.
        (rx::SwapChain11::getWidth):
        (rx::SwapChain11::getHeight):
        * src/libGLESv2/renderer/SwapChain9.cpp: Added.
        (rx::SwapChain9::SwapChain9):
        (rx::SwapChain9::~SwapChain9):
        (rx::SwapChain9::release):
        (rx::convertInterval):
        (rx::SwapChain9::resize):
        (rx::SwapChain9::reset):
        (rx::SwapChain9::swapRect):
        (rx::SwapChain9::getRenderTarget):
        (rx::SwapChain9::getDepthStencil):
        (rx::SwapChain9::getOffscreenTexture):
        (rx::SwapChain9::makeSwapChain9):
        (rx::SwapChain9::recreate):
        * src/libGLESv2/renderer/SwapChain9.h: Added.
        * src/libGLESv2/renderer/TextureStorage.cpp: Added.
        (rx::TextureStorageInterface::TextureStorageInterface):
        (rx::TextureStorageInterface::~TextureStorageInterface):
        (rx::TextureStorageInterface::isRenderTarget):
        (rx::TextureStorageInterface::isManaged):
        (rx::TextureStorageInterface::getTextureSerial):
        (rx::TextureStorageInterface::issueTextureSerial):
        (rx::TextureStorageInterface::getLodOffset):
        (rx::TextureStorageInterface::levelCount):
        (rx::TextureStorageInterface2D::TextureStorageInterface2D):
        (rx::TextureStorageInterface2D::~TextureStorageInterface2D):
        (rx::TextureStorageInterface2D::getRenderTarget):
        (rx::TextureStorageInterface2D::generateMipmap):
        (rx::TextureStorageInterface2D::getRenderTargetSerial):
        (rx::TextureStorageInterfaceCube::TextureStorageInterfaceCube):
        (rx::TextureStorageInterfaceCube::~TextureStorageInterfaceCube):
        (rx::TextureStorageInterfaceCube::getRenderTarget):
        (rx::TextureStorageInterfaceCube::generateMipmap):
        (rx::TextureStorageInterfaceCube::getRenderTargetSerial):
        * src/libGLESv2/renderer/TextureStorage.h: Added.
        (rx::TextureStorage::TextureStorage):
        (rx::TextureStorage::~TextureStorage):
        (rx::TextureStorageInterface::getStorageInstance):
        * src/libGLESv2/renderer/TextureStorage11.cpp: Added.
        (rx::TextureStorage11::TextureStorage11):
        (rx::TextureStorage11::~TextureStorage11):
        (rx::TextureStorage11::makeTextureStorage11):
        (rx::TextureStorage11::GetTextureBindFlags):
        (rx::TextureStorage11::IsTextureFormatRenderable):
        (rx::TextureStorage11::getBindFlags):
        (rx::TextureStorage11::getBaseTexture):
        (rx::TextureStorage11::getLodOffset):
        (rx::TextureStorage11::isRenderTarget):
        (rx::TextureStorage11::isManaged):
        (rx::TextureStorage11::levelCount):
        (rx::TextureStorage11::getSubresourceIndex):
        (rx::TextureStorage11::updateSubresourceLevel):
        (rx::TextureStorage11::generateMipmapLayer):
        (rx::TextureStorage11_2D::TextureStorage11_2D):
        (rx::TextureStorage11_2D::~TextureStorage11_2D):
        (rx::TextureStorage11_2D::makeTextureStorage11_2D):
        (rx::TextureStorage11_2D::getRenderTarget):
        (rx::TextureStorage11_2D::getSRV):
        (rx::TextureStorage11_2D::generateMipmap):
        (rx::TextureStorage11_Cube::TextureStorage11_Cube):
        (rx::TextureStorage11_Cube::~TextureStorage11_Cube):
        (rx::TextureStorage11_Cube::makeTextureStorage11_Cube):
        (rx::TextureStorage11_Cube::getRenderTarget):
        (rx::TextureStorage11_Cube::getSRV):
        (rx::TextureStorage11_Cube::generateMipmap):
        * src/libGLESv2/renderer/TextureStorage11.h: Added.
        (rx::TextureStorage11::getRenderTarget):
        (rx::TextureStorage11::generateMipmap):
        * src/libGLESv2/renderer/TextureStorage9.cpp: Added.
        (rx::TextureStorage9::TextureStorage9):
        (rx::TextureStorage9::~TextureStorage9):
        (rx::TextureStorage9::makeTextureStorage9):
        (rx::TextureStorage9::GetTextureUsage):
        (rx::TextureStorage9::IsTextureFormatRenderable):
        (rx::TextureStorage9::isRenderTarget):
        (rx::TextureStorage9::isManaged):
        (rx::TextureStorage9::getPool):
        (rx::TextureStorage9::getUsage):
        (rx::TextureStorage9::getLodOffset):
        (rx::TextureStorage9::levelCount):
        (rx::TextureStorage9_2D::TextureStorage9_2D):
        (rx::TextureStorage9_2D::~TextureStorage9_2D):
        (rx::TextureStorage9_2D::makeTextureStorage9_2D):
        (rx::TextureStorage9_2D::getSurfaceLevel):
        (rx::TextureStorage9_2D::getRenderTarget):
        (rx::TextureStorage9_2D::generateMipmap):
        (rx::TextureStorage9_2D::getBaseTexture):
        (rx::TextureStorage9_2D::initializeRenderTarget):
        (rx::TextureStorage9_Cube::TextureStorage9_Cube):
        (rx::TextureStorage9_Cube::~TextureStorage9_Cube):
        (rx::TextureStorage9_Cube::makeTextureStorage9_Cube):
        (rx::TextureStorage9_Cube::getCubeMapSurface):
        (rx::TextureStorage9_Cube::getRenderTarget):
        (rx::TextureStorage9_Cube::generateMipmap):
        (rx::TextureStorage9_Cube::getBaseTexture):
        (rx::TextureStorage9_Cube::initializeRenderTarget):
        * src/libGLESv2/renderer/TextureStorage9.h: Added.
        (rx::TextureStorage9::getRenderTarget):
        (rx::TextureStorage9::generateMipmap):
        * src/libGLESv2/renderer/VertexBuffer.cpp: Added.
        (rx::VertexBuffer::VertexBuffer):
        (rx::VertexBuffer::~VertexBuffer):
        (rx::VertexBuffer::updateSerial):
        (rx::VertexBuffer::getSerial):
        (rx::VertexBufferInterface::VertexBufferInterface):
        (rx::VertexBufferInterface::~VertexBufferInterface):
        (rx::VertexBufferInterface::getSerial):
        (rx::VertexBufferInterface::getBufferSize):
        (rx::VertexBufferInterface::setBufferSize):
        (rx::VertexBufferInterface::getWritePosition):
        (rx::VertexBufferInterface::setWritePosition):
        (rx::VertexBufferInterface::discard):
        (rx::VertexBufferInterface::storeVertexAttributes):
        (rx::VertexBufferInterface::storeRawData):
        (rx::VertexBufferInterface::reserveVertexSpace):
        (rx::VertexBufferInterface::reserveRawDataSpace):
        (rx::VertexBufferInterface::getVertexBuffer):
        (rx::StreamingVertexBufferInterface::StreamingVertexBufferInterface):
        (rx::StreamingVertexBufferInterface::~StreamingVertexBufferInterface):
        (rx::StreamingVertexBufferInterface::reserveSpace):
        (rx::StaticVertexBufferInterface::StaticVertexBufferInterface):
        (rx::StaticVertexBufferInterface::~StaticVertexBufferInterface):
        (rx::StaticVertexBufferInterface::lookupAttribute):
        (rx::StaticVertexBufferInterface::reserveSpace):
        (rx::StaticVertexBufferInterface::storeVertexAttributes):
        * src/libGLESv2/renderer/VertexBuffer.h: Added.
        * src/libGLESv2/renderer/VertexBuffer11.cpp: Added.
        (rx::VertexBuffer11::VertexBuffer11):
        (rx::VertexBuffer11::~VertexBuffer11):
        (rx::VertexBuffer11::initialize):
        (rx::VertexBuffer11::makeVertexBuffer11):
        (rx::VertexBuffer11::storeVertexAttributes):
        (rx::VertexBuffer11::storeRawData):
        (rx::VertexBuffer11::getSpaceRequired):
        (rx::VertexBuffer11::requiresConversion):
        (rx::VertexBuffer11::getBufferSize):
        (rx::VertexBuffer11::setBufferSize):
        (rx::VertexBuffer11::discard):
        (rx::VertexBuffer11::getVertexSize):
        (rx::VertexBuffer11::getDXGIFormat):
        (rx::VertexBuffer11::getBuffer):
        (rx::copyVertexData):
        (rx::copyFixedVertexData):
        (rx::copyToFloatVertexData):
        (rx::VertexBuffer11::getVertexConversion):
        * src/libGLESv2/renderer/VertexBuffer11.h: Added.
        * src/libGLESv2/renderer/VertexBuffer9.cpp: Added.
        (rx::VertexBuffer9::VertexBuffer9):
        (rx::VertexBuffer9::~VertexBuffer9):
        (rx::VertexBuffer9::initialize):
        (rx::VertexBuffer9::makeVertexBuffer9):
        (rx::VertexBuffer9::storeVertexAttributes):
        (rx::VertexBuffer9::storeRawData):
        (rx::VertexBuffer9::getSpaceRequired):
        (rx::VertexBuffer9::requiresConversion):
        (rx::VertexBuffer9::getVertexSize):
        (rx::VertexBuffer9::getDeclType):
        (rx::VertexBuffer9::getBufferSize):
        (rx::VertexBuffer9::setBufferSize):
        (rx::VertexBuffer9::discard):
        (rx::VertexBuffer9::getBuffer):
        (rx::VertexBuffer9::initializeTranslations):
        (rx::VertexBuffer9::typeIndex):
        (rx::VertexBuffer9::formatConverter):
        (rx::VertexBuffer9::spaceRequired):
        * src/libGLESv2/renderer/VertexBuffer9.h: Added.
        * src/libGLESv2/renderer/VertexDataManager.cpp: Added.
        (rx::elementsInBuffer):
        (rx::VertexDataManager::VertexDataManager):
        (rx::VertexDataManager::~VertexDataManager):
        (rx::directStoragePossible):
        (rx::VertexDataManager::prepareVertexData):
        * src/libGLESv2/renderer/VertexDataManager.h: Added.
        * src/libGLESv2/renderer/VertexDeclarationCache.cpp: Added.
        (rx::VertexDeclarationCache::VertexDeclarationCache):
        (rx::VertexDeclarationCache::~VertexDeclarationCache):
        (rx::VertexDeclarationCache::applyDeclaration):
        (rx::VertexDeclarationCache::markStateDirty):
        * src/libGLESv2/renderer/VertexDeclarationCache.h: Added.
        * src/libGLESv2/renderer/generatemip.h: Added.
        (rx::L8::average):
        (rx::A8L8::average):
        (rx::A8R8G8B8::average):
        (rx::A16B16G16R16F::average):
        (rx::R16F::average):
        (rx::R16G16F::average):
        (rx::A32B32G32R32F::average):
        (rx::R32F::average):
        (rx::R32G32F::average):
        (rx::R32G32B32F::average):
        (rx::GenerateMip):
        * src/libGLESv2/renderer/renderer11_utils.cpp: Added.
        (gl_d3d11::ConvertBlendFunc):
        (gl_d3d11::ConvertBlendOp):
        (gl_d3d11::ConvertColorMask):
        (gl_d3d11::ConvertCullMode):
        (gl_d3d11::ConvertComparison):
        (gl_d3d11::ConvertDepthMask):
        (gl_d3d11::ConvertStencilMask):
        (gl_d3d11::ConvertStencilOp):
        (gl_d3d11::ConvertFilter):
        (gl_d3d11::ConvertTextureWrap):
        (gl_d3d11::ConvertMinLOD):
        (gl_d3d11::ConvertMaxLOD):
        (d3d11_gl::ConvertBackBufferFormat):
        (d3d11_gl::ConvertDepthStencilFormat):
        (d3d11_gl::ConvertRenderbufferFormat):
        (d3d11_gl::ConvertTextureInternalFormat):
        (gl_d3d11::ConvertRenderbufferFormat):
        (gl_d3d11::ConvertTextureFormat):
        (d3d11::SetPositionTexCoordVertex):
        (d3d11::SetPositionDepthColorVertex):
        (d3d11::ComputePixelSizeBits):
        (d3d11::ComputeBlockSizeBits):
        (d3d11::IsCompressed):
        (d3d11::GetTextureFormatDimensionAlignment):
        (d3d11::IsDepthStencilFormat):
        (d3d11::GetDepthTextureFormat):
        (d3d11::GetDepthShaderResourceFormat):
        (d3d11::SetDebugName):
        * src/libGLESv2/renderer/renderer11_utils.h: Added.
        (d3d11::isDeviceLostError):
        * src/libGLESv2/renderer/renderer9_utils.cpp: Added.
        (gl_d3d9::ConvertComparison):
        (gl_d3d9::ConvertColor):
        (gl_d3d9::ConvertBlendFunc):
        (gl_d3d9::ConvertBlendOp):
        (gl_d3d9::ConvertStencilOp):
        (gl_d3d9::ConvertTextureWrap):
        (gl_d3d9::ConvertCullMode):
        (gl_d3d9::ConvertCubeFace):
        (gl_d3d9::ConvertColorMask):
        (gl_d3d9::ConvertMagFilter):
        (gl_d3d9::ConvertMinFilter):
        (gl_d3d9::ConvertRenderbufferFormat):
        (gl_d3d9::GetMultisampleTypeFromSamples):
        (d3d9_gl::GetStencilSize):
        (d3d9_gl::GetAlphaSize):
        (d3d9_gl::GetSamplesFromMultisampleType):
        (d3d9_gl::IsFormatChannelEquivalent):
        (d3d9_gl::ConvertBackBufferFormat):
        (d3d9_gl::ConvertDepthStencilFormat):
        (d3d9_gl::ConvertRenderTargetFormat):
        (d3d9_gl::GetEquivalentFormat):
        (d3d9::IsCompressedFormat):
        (d3d9::ComputeRowSize):
        * src/libGLESv2/renderer/renderer9_utils.h: Added.
        (d3d9::isDeviceLostError):
        * src/libGLESv2/renderer/shaders: Added.
        * src/libGLESv2/renderer/shaders/Blit.ps: Added.
        * src/libGLESv2/renderer/shaders/Blit.vs: Added.
        * src/libGLESv2/renderer/shaders/Clear11.hlsl: Added.
        * src/libGLESv2/renderer/shaders/Passthrough11.hlsl: Added.
        * src/libGLESv2/renderer/shaders/compiled: Added.
        * src/libGLESv2/renderer/shaders/compiled/clear11vs.h: Added.
        * src/libGLESv2/renderer/shaders/compiled/clearmultiple11ps.h: Added.
        * src/libGLESv2/renderer/shaders/compiled/clearsingle11ps.h: Added.
        * src/libGLESv2/renderer/shaders/compiled/componentmaskps.h: Added.
        * src/libGLESv2/renderer/shaders/compiled/flipyvs.h: Added.
        * src/libGLESv2/renderer/shaders/compiled/luminanceps.h: Added.
        * src/libGLESv2/renderer/shaders/compiled/passthrough11vs.h: Added.
        * src/libGLESv2/renderer/shaders/compiled/passthroughlum11ps.h: Added.
        * src/libGLESv2/renderer/shaders/compiled/passthroughlumalpha11ps.h: Added.
        * src/libGLESv2/renderer/shaders/compiled/passthroughps.h: Added.
        * src/libGLESv2/renderer/shaders/compiled/passthroughrgb11ps.h: Added.
        * src/libGLESv2/renderer/shaders/compiled/passthroughrgba11ps.h: Added.
        * src/libGLESv2/renderer/shaders/compiled/standardvs.h: Added.
        * src/libGLESv2/renderer/shaders/generate_shaders.bat: Added.
        * src/libGLESv2/renderer/vertexconversion.h: Added.
        (rx::Identity::convert):
        (rx::Cast::convert):
        (rx::Normalize::convert):
        (rx::FixedToFloat::convert):
        (rx::SimpleDefaultValues::zero):
        (rx::SimpleDefaultValues::one):
        (rx::NormalizedDefaultValues::zero):
        (rx::NormalizedDefaultValues::one):
        (rx::VertexDataConverter::convertArray):
        (rx::VertexDataConverter::pointerAddBytes):
        (rx::VertexDataConverter::copyComponent):
        * src/libGLESv2/resource.h: Added.
        * src/libGLESv2/utilities.cpp: Added.
        (gl::UniformComponentCount):
        (gl::UniformComponentType):
        (gl::UniformComponentSize):
        (gl::UniformInternalSize):
        (gl::UniformExternalSize):
        (gl::VariableRowCount):
        (gl::VariableColumnCount):
        (gl::AllocateFirstFreeBits):
        (gl::ComputePitch):
        (gl::ComputeCompressedPitch):
        (gl::ComputeCompressedSize):
        (gl::IsCompressed):
        (gl::IsDepthTexture):
        (gl::IsStencilTexture):
        (gl::MakeValidSize):
        (gl::ComputePixelSize):
        (gl::IsCubemapTextureTarget):
        (gl::IsInternalTextureTarget):
        (gl::ConvertSizedInternalFormat):
        (gl::ExtractFormat):
        (gl::ExtractType):
        (gl::IsColorRenderable):
        (gl::IsDepthRenderable):
        (gl::IsStencilRenderable):
        (gl::IsFloat32Format):
        (gl::IsFloat16Format):
        (gl::GetAlphaSize):
        (gl::GetRedSize):
        (gl::GetGreenSize):
        (gl::GetBlueSize):
        (gl::GetDepthSize):
        (gl::GetStencilSize):
        (gl::IsTriangleMode):
        (getTempPath):
        (writeFile):
        * src/libGLESv2/utilities.h: Added.
        * src/third_party/murmurhash: Added.
        * src/third_party/murmurhash/LICENSE: Added.
        * src/third_party/murmurhash/MurmurHash3.cpp: Added, replaced tabs with spaces.
        (rotl32):
        (rotl64):
        (getblock):
        (fmix):
        (MurmurHash3_x86_32):
        (MurmurHash3_x86_128):
        (MurmurHash3_x64_128):
        * src/third_party/murmurhash/MurmurHash3.h: Added, replaced tabs with spaces.

2013-07-20  Dean Jackson  <dino@apple.com>

        Updated ANGLE is leaking like a sieve
        https://bugs.webkit.org/show_bug.cgi?id=118939

        Rollout 152863, r152821, r152929 and r152755.

        * ANGLE.plist:
        * ANGLE.xcodeproj/project.pbxproj:
        * DerivedSources.make: Removed.
        * GNUmakefile.am:
        * Target.pri:
        * include/GLSLANG/ShaderLang.h:
        * src/compiler/BaseTypes.h:
        (getQualifierString):
        * src/compiler/Common.h:
        (EncodeSourceLoc):
        (DecodeSourceLoc):
        * src/compiler/Compiler.cpp:
        (TCompiler::TCompiler):
        (TCompiler::Init):
        (TCompiler::compile):
        (TCompiler::detectRecursion):
        * src/compiler/ConstantUnion.h:
        (ConstantUnion::ConstantUnion):
        * src/compiler/DetectCallDepth.cpp: Removed.
        * src/compiler/DetectRecursion.cpp: Added.
        (DetectRecursion::FunctionNode::FunctionNode):
        (DetectRecursion::FunctionNode::getName):
        (DetectRecursion::FunctionNode::addCallee):
        (DetectRecursion::FunctionNode::detectRecursion):
        (DetectRecursion::DetectRecursion):
        (DetectRecursion::~DetectRecursion):
        (DetectRecursion::visitAggregate):
        (DetectRecursion::detectRecursion):
        (DetectRecursion::findFunctionByName):
        * src/compiler/DetectRecursion.h: Renamed from Source/ThirdParty/ANGLE/src/compiler/DetectCallDepth.h.
        * src/compiler/Diagnostics.cpp:
        (TDiagnostics::writeInfo):
        * src/compiler/ForLoopUnroll.cpp:
        (ForLoopUnroll::evaluateIntConstant):
        * src/compiler/InfoSink.cpp:
        (TInfoSinkBase::prefix):
        (TInfoSinkBase::location):
        (TInfoSinkBase::message):
        * src/compiler/InfoSink.h:
        * src/compiler/Initialize.cpp:
        (BuiltInFunctionsCommon):
        (BuiltInFunctionsVertex):
        (TBuiltIns::initialize):
        (IdentifyBuiltIns):
        (InitExtensionBehavior):
        * src/compiler/Intermediate.cpp:
        (TIntermediate::addSymbol):
        (TIntermediate::addBinaryMath):
        (TIntermediate::addAssign):
        (TIntermediate::addIndex):
        (TIntermediate::addUnaryMath):
        (TIntermediate::setAggregateOperator):
        (TIntermediate::addConversion):
        (TIntermediate::growAggregate):
        (TIntermediate::makeAggregate):
        (TIntermediate::addSelection):
        (TIntermediate::addComma):
        (TIntermediate::addConstantUnion):
        (TIntermediate::addSwizzle):
        (TIntermediate::addLoop):
        (TIntermediate::addBranch):
        (TIntermUnary::promote):
        (TIntermBinary::promote):
        (CompareStruct):
        (CompareStructure):
        (TIntermConstantUnion::fold):
        (TIntermediate::promoteConstantUnion):
        * src/compiler/OutputGLSL.cpp:
        (TOutputGLSL::writeVariablePrecision):
        * src/compiler/OutputGLSL.h:
        * src/compiler/OutputGLSLBase.cpp:
        (TOutputGLSLBase::writeVariableType):
        (TOutputGLSLBase::writeConstantUnion):
        (TOutputGLSLBase::visitBinary):
        (TOutputGLSLBase::visitAggregate):
        (TOutputGLSLBase::getTypeName):
        (TOutputGLSLBase::hashFunctionName):
        * src/compiler/OutputGLSLBase.h:
        * src/compiler/OutputHLSL.cpp:
        (sh::OutputHLSL::OutputHLSL):
        (sh::OutputHLSL::header):
        (sh::OutputHLSL::visitSymbol):
        (sh::OutputHLSL::visitBinary):
        (sh::OutputHLSL::visitAggregate):
        (sh::OutputHLSL::visitSelection):
        (sh::OutputHLSL::visitLoop):
        (sh::OutputHLSL::handleExcessiveLoop):
        (sh::OutputHLSL::typeString):
        (sh::OutputHLSL::initializer):
        (sh::OutputHLSL::addConstructor):
        (sh::OutputHLSL::writeConstantUnion):
        (sh::OutputHLSL::decorateField):
        * src/compiler/OutputHLSL.h:
        * src/compiler/ParseHelper.cpp:
        (TParseContext::parseVectorFields):
        (TParseContext::parseMatrixFields):
        (TParseContext::error):
        (TParseContext::warning):
        (TParseContext::assignError):
        (TParseContext::unaryOpError):
        (TParseContext::binaryOpError):
        (TParseContext::precisionErrorCheck):
        (TParseContext::lValueErrorCheck):
        (TParseContext::globalErrorCheck):
        (TParseContext::reservedErrorCheck):
        (TParseContext::constructorErrorCheck):
        (TParseContext::voidErrorCheck):
        (TParseContext::boolErrorCheck):
        (TParseContext::samplerErrorCheck):
        (TParseContext::structQualifierErrorCheck):
        (TParseContext::parameterSamplerErrorCheck):
        (TParseContext::containsSampler):
        (TParseContext::arraySizeErrorCheck):
        (TParseContext::arrayQualifierErrorCheck):
        (TParseContext::arrayTypeErrorCheck):
        (TParseContext::arrayErrorCheck):
        (TParseContext::arraySetMaxSize):
        (TParseContext::nonInitConstErrorCheck):
        (TParseContext::nonInitErrorCheck):
        (TParseContext::paramErrorCheck):
        (TParseContext::extensionErrorCheck):
        (TParseContext::handleExtensionDirective):
        (TParseContext::handlePragmaDirective):
        (TParseContext::findFunction):
        (TParseContext::executeInitializer):
        (TParseContext::addConstructor):
        (TParseContext::constructBuiltIn):
        (TParseContext::constructStruct):
        (TParseContext::addConstVectorNode):
        (TParseContext::addConstMatrixNode):
        (TParseContext::addConstArrayNode):
        (TParseContext::addConstStruct):
        (TParseContext::enterStructDeclaration):
        (TParseContext::structNestingErrorCheck):
        * src/compiler/ParseHelper.h:
        (TParseContext::TParseContext):
        (TParseContext::pragma):
        * src/compiler/PoolAlloc.cpp:
        (TPoolAllocator::allocate):
        * src/compiler/ShHandle.h:
        * src/compiler/ShaderLang.cpp:
        (ShInitBuiltInResources):
        * src/compiler/SymbolTable.cpp:
        (TType::TType):
        (TType::buildMangledName):
        (TType::getStructSize):
        (TType::computeDeepestStructNesting):
        (TType::isStructureContainingArrays):
        (TSymbolTableLevel::relateToExtension):
        (TSymbol::TSymbol):
        (TVariable::TVariable):
        (TVariable::clone):
        (TFunction::TFunction):
        (TFunction::clone):
        (TSymbolTableLevel::clone):
        (TSymbolTable::copyTable):
        * src/compiler/SymbolTable.h:
        (TVariable::TVariable):
        (TVariable::updateArrayInformationType):
        (TVariable::getArrayInformationType):
        (TParameter::copyParam):
        (TFunction::relateToExtension):
        (TFunction::getExtension):
        * src/compiler/Types.h:
        (NewPoolTTypeList):
        (TType::TType):
        (TType::copyType):
        (TType::clone):
        (TType::getObjectSize):
        (TType::getMaxArraySize):
        (TType::setMaxArraySize):
        (TType::clearArrayness):
        (TType::setArrayInformationType):
        (TType::getArrayInformationType):
        (TType::getStruct):
        (TType::setStruct):
        (TType::getTypeName):
        (TType::setTypeName):
        (TType::isField):
        (TType::getFieldName):
        (TType::setFieldName):
        (TType::getMangledName):
        (TType::getDeepestStructNesting):
        (TPublicType::setBasic):
        * src/compiler/VariableInfo.cpp:
        (getUserDefinedVariableInfo):
        * src/compiler/builtin_symbol_table.cpp: Removed.
        * src/compiler/builtin_symbol_table.h: Removed.
        * src/compiler/builtin_symbols.json: Removed.
        * src/compiler/generate_builtin_symbol_table.py: Removed.
        * src/compiler/glslang.l:
        * src/compiler/glslang.y:
        * src/compiler/glslang_lex.cpp:
        (yy_get_previous_state):
        (yy_try_NUL_trans):
        (yy_push_state):
        (yy_pop_state):
        (yy_top_state):
        (string_input):
        (check_type):
        (reserved_word):
        (yyerror):
        (glslang_scan):
        * src/compiler/glslang_tab.cpp:
        * src/compiler/glslang_tab.h:
        * src/compiler/intermOut.cpp:
        (TOutputTraverser::visitUnary):
        (TOutputTraverser::visitAggregate):
        (TOutputTraverser::visitConstantUnion):
        * src/compiler/intermediate.h:
        (TIntermNode::TIntermNode):
        (TIntermNode::getLine):
        (TIntermNode::setLine):
        (TIntermNode::~TIntermNode):
        (TIntermConstantUnion::setUnionArrayPointer):
        (TIntermAggregate::TIntermAggregate):
        (TIntermAggregate::setEndLine):
        (TIntermAggregate::getEndLine):
        (TIntermTraverser::TIntermTraverser):
        (TIntermTraverser::incrementDepth):
        * src/compiler/localintermediate.h:
        * src/compiler/parseConst.cpp:
        (TConstTraverser::visitSymbol):
        (TConstTraverser::visitBinary):
        (TConstTraverser::visitUnary):
        (TConstTraverser::visitAggregate):
        (TConstTraverser::visitSelection):
        (TConstTraverser::visitConstantUnion):
        (TConstTraverser::visitLoop):
        (TConstTraverser::visitBranch):
        (TIntermediate::parseConstTree):
        * src/compiler/timing/RestrictVertexShaderTiming.cpp:
        (RestrictVertexShaderTiming::visitSymbol):
        * src/libEGL/Config.cpp: Removed.
        * src/libEGL/Config.h: Removed.
        * src/libEGL/Display.cpp: Removed.
        * src/libEGL/Display.h: Removed.
        * src/libEGL/README: Added.
        * src/libEGL/ShaderCache.h: Removed.
        * src/libEGL/Surface.cpp: Removed.
        * src/libEGL/Surface.h: Removed.
        * src/libEGL/libEGL.cpp: Removed.
        * src/libEGL/libEGL.def: Removed.
        * src/libEGL/libEGL.rc: Removed.
        * src/libEGL/libEGL.vcxproj: Removed.
        * src/libEGL/libEGL.vcxproj.filters: Removed.
        * src/libEGL/main.cpp: Removed.
        * src/libEGL/main.h: Removed.
        * src/libEGL/resource.h: Removed.
        * src/libGLESv2/BinaryStream.h: Removed.
        * src/libGLESv2/Blit.cpp: Removed.
        * src/libGLESv2/Blit.h: Removed.
        * src/libGLESv2/Buffer.cpp: Removed.
        * src/libGLESv2/Buffer.h: Removed.
        * src/libGLESv2/Context.cpp: Removed.
        * src/libGLESv2/Context.h: Removed.
        * src/libGLESv2/D3DConstantTable.cpp: Removed.
        * src/libGLESv2/D3DConstantTable.h: Removed.
        * src/libGLESv2/Fence.cpp: Removed.
        * src/libGLESv2/Fence.h: Removed.
        * src/libGLESv2/Float16ToFloat32.cpp: Removed.
        * src/libGLESv2/Float16ToFloat32.py: Removed.
        * src/libGLESv2/Framebuffer.cpp: Removed.
        * src/libGLESv2/Framebuffer.h: Removed.
        * src/libGLESv2/HandleAllocator.cpp: Removed.
        * src/libGLESv2/HandleAllocator.h: Removed.
        * src/libGLESv2/IndexDataManager.cpp: Removed.
        * src/libGLESv2/IndexDataManager.h: Removed.
        * src/libGLESv2/Program.cpp: Removed.
        * src/libGLESv2/Program.h: Removed.
        * src/libGLESv2/ProgramBinary.cpp: Removed.
        * src/libGLESv2/ProgramBinary.h: Removed.
        * src/libGLESv2/Query.cpp: Removed.
        * src/libGLESv2/Query.h: Removed.
        * src/libGLESv2/README: Added.
        * src/libGLESv2/Renderbuffer.cpp: Removed.
        * src/libGLESv2/Renderbuffer.h: Removed.
        * src/libGLESv2/ResourceManager.cpp: Removed.
        * src/libGLESv2/ResourceManager.h: Removed.
        * src/libGLESv2/Shader.cpp: Removed.
        * src/libGLESv2/Shader.h: Removed.
        * src/libGLESv2/Texture.cpp: Removed.
        * src/libGLESv2/Texture.h: Removed.
        * src/libGLESv2/TextureSSE2.cpp: Removed.
        * src/libGLESv2/VertexDataManager.cpp: Removed.
        * src/libGLESv2/VertexDataManager.h: Removed.
        * src/libGLESv2/libGLESv2.cpp: Removed.
        * src/libGLESv2/libGLESv2.def: Removed.
        * src/libGLESv2/libGLESv2.rc: Removed.
        * src/libGLESv2/libGLESv2.vcxproj: Removed.
        * src/libGLESv2/libGLESv2.vcxproj.filters: Removed.
        * src/libGLESv2/main.cpp: Removed.
        * src/libGLESv2/main.h: Removed.
        * src/libGLESv2/mathutil.h: Removed.
        * src/libGLESv2/resource.h: Removed.
        * src/libGLESv2/shaders/Blit.ps: Removed.
        * src/libGLESv2/shaders/Blit.vs: Removed.
        * src/libGLESv2/shaders/componentmaskps.h: Removed.
        * src/libGLESv2/shaders/flipyvs.h: Removed.
        * src/libGLESv2/shaders/generate_shaders.bat: Removed.
        * src/libGLESv2/shaders/luminanceps.h: Removed.
        * src/libGLESv2/shaders/passthroughps.h: Removed.
        * src/libGLESv2/shaders/standardvs.h: Removed.
        * src/libGLESv2/utilities.cpp: Removed.
        * src/libGLESv2/utilities.h: Removed.
        * src/libGLESv2/vertexconversion.h: Removed.

2013-07-19  Alex Christensen  <achristensen@apple.com>

        Generate derived files in ANGLE at build time rather than when updating from upstream.
        https://bugs.webkit.org/show_bug.cgi?id=118872

        Reviewed by Mark Rowe.

        * ANGLE.xcodeproj/project.pbxproj: Made Derived Sources target which calls DerivedSources.make,
        moved generated files into Derived Sources group.
        * DerivedSources.make: Added.

2013-07-18  Alex Christensen  <achristensen@apple.com>

        Added previously unincluded files from ANGLE r2426 with these exceptions:
        No gyp files are included.  No WebKit ports use them.
        ANGLE.sln is not included.  I will not use that.
        translator_common and translator_hlsl projects and filters are not included.
        I will need to make a customized translator  project that uses the GLSL translator instead of the HLSL.
        https://bugs.webkit.org/show_bug.cgi?id=118833

        Reviewed by Dean Jackson.

        * src/compiler/builtin_symbols.json: Added.
        * src/compiler/generate_builtin_symbol_table.py: Added.
        (parseBuiltin):
        * src/libEGL: Replaced.
        * src/libEGL/Config.cpp: Added.
        (egl::Config::Config):
        (egl::Config::setDefaults):
        (egl::Config::set):
        (egl::Config::getHandle):
        (egl::SortConfig::SortConfig):
        (egl::SortConfig::scanForWantedComponents):
        (egl::SortConfig::wantedComponentsSize):
        (egl::SortConfig::operator()):
        (egl::ConfigSet::ConfigSet):
        (egl::ConfigSet::add):
        (egl::ConfigSet::size):
        (egl::ConfigSet::getConfigs):
        (egl::ConfigSet::get):
        * src/libEGL/Config.h: Added.
        * src/libEGL/Display.cpp: Added.
        (egl::Display::getDisplay):
        (egl::Display::Display):
        (egl::Display::~Display):
        (egl::Display::initialize):
        (egl::Display::terminate):
        (egl::Display::startScene):
        (egl::Display::endScene):
        (egl::Display::getConfigs):
        (egl::Display::getConfigAttrib):
        (egl::Display::createDevice):
        (egl::Display::initializeDevice):
        (egl::Display::resetDevice):
        (egl::Display::createWindowSurface):
        (egl::Display::createOffscreenSurface):
        (egl::Display::createContext):
        (egl::Display::restoreLostDevice):
        (egl::Display::destroySurface):
        (egl::Display::destroyContext):
        (egl::Display::notifyDeviceLost):
        (egl::Display::isDeviceLost):
        (egl::Display::isInitialized):
        (egl::Display::isValidConfig):
        (egl::Display::isValidContext):
        (egl::Display::isValidSurface):
        (egl::Display::hasExistingWindowSurface):
        (egl::Display::getMinSwapInterval):
        (egl::Display::getMaxSwapInterval):
        (egl::Display::getDevice):
        (egl::Display::getDeviceCaps):
        (egl::Display::getAdapterIdentifier):
        (egl::Display::testDeviceLost):
        (egl::Display::testDeviceResettable):
        (egl::Display::sync):
        (egl::Display::allocateEventQuery):
        (egl::Display::freeEventQuery):
        (egl::Display::getMultiSampleSupport):
        (egl::Display::getDXT1TextureSupport):
        (egl::Display::getDXT3TextureSupport):
        (egl::Display::getDXT5TextureSupport):
        (egl::Display::getDepthTextureSupport):
        (egl::Display::getFloat32TextureSupport):
        (egl::Display::getFloat16TextureSupport):
        (egl::Display::getLuminanceTextureSupport):
        (egl::Display::getLuminanceAlphaTextureSupport):
        (egl::Display::getTextureFilterAnisotropySupport):
        (egl::Display::getBufferPool):
        (egl::Display::getTexturePool):
        (egl::Display::getEventQuerySupport):
        (egl::Display::getDefaultPresentParameters):
        (egl::Display::initExtensionString):
        (egl::Display::getExtensionString):
        (egl::Display::initVendorString):
        (egl::Display::getVendorString):
        (egl::Display::shareHandleSupported):
        (egl::Display::createVertexShader):
        (egl::Display::compileShaderSource):
        (egl::Display::createPixelShader):
        (egl::Display::getVertexTextureSupport):
        (egl::Display::getNonPower2TextureSupport):
        (egl::Display::getOcclusionQuerySupport):
        (egl::Display::getInstancingSupport):
        * src/libEGL/Display.h: Added.
        (getComparableOSVersion):
        (egl::Display::isD3d9ExDevice):
        * src/libEGL/README: Removed.
        * src/libEGL/ShaderCache.h: Added.
        (egl::ShaderCache::ShaderCache):
        (egl::ShaderCache::~ShaderCache):
        (egl::ShaderCache::initialize):
        (egl::ShaderCache::create):
        (egl::ShaderCache::clear):
        (egl::ShaderCache::createShader):
        * src/libEGL/Surface.cpp: Added.
        (egl::Surface::Surface):
        (egl::Surface::~Surface):
        (egl::Surface::initialize):
        (egl::Surface::release):
        (egl::Surface::resetSwapChain):
        (egl::Surface::swapRect):
        (egl::Surface::getWindowHandle):
        (egl::SurfaceWindowProc):
        (egl::Surface::subclassWindow):
        (egl::Surface::unsubclassWindow):
        (egl::Surface::checkForOutOfDateSwapChain):
        (egl::Surface::convertInterval):
        (egl::Surface::swap):
        (egl::Surface::postSubBuffer):
        (egl::Surface::getWidth):
        (egl::Surface::getHeight):
        (egl::Surface::isPostSubBufferSupported):
        (egl::Surface::getRenderTarget):
        (egl::Surface::getDepthStencil):
        (egl::Surface::getOffscreenTexture):
        (egl::Surface::setSwapInterval):
        (egl::Surface::getTextureFormat):
        (egl::Surface::getTextureTarget):
        (egl::Surface::setBoundTexture):
        (egl::Surface::getBoundTexture):
        (egl::Surface::getFormat):
        * src/libEGL/Surface.h: Added.
        (egl::Surface::getShareHandle):
        * src/libEGL/libEGL.cpp: Added.
        (validateDisplay):
        (validateConfig):
        (validateContext):
        (validateSurface):
        * src/libEGL/libEGL.def: Added.
        * src/libEGL/libEGL.rc: Added.
        * src/libEGL/libEGL.vcxproj: Added.
        * src/libEGL/libEGL.vcxproj.filters: Added.
        * src/libEGL/main.cpp: Added.
        (DllMain):
        (egl::setCurrentError):
        (egl::getCurrentError):
        (egl::setCurrentAPI):
        (egl::getCurrentAPI):
        (egl::setCurrentDisplay):
        (egl::getCurrentDisplay):
        (egl::setCurrentDrawSurface):
        (egl::getCurrentDrawSurface):
        (egl::setCurrentReadSurface):
        (egl::getCurrentReadSurface):
        (error):
        * src/libEGL/main.h: Added.
        (error):
        (success):
        * src/libEGL/resource.h: Added.
        * src/libGLESv2: Replaced.
        * src/libGLESv2/BinaryStream.h: Added.
        (gl::BinaryInputStream::BinaryInputStream):
        (gl::BinaryInputStream::read):
        (gl::BinaryInputStream::skip):
        (gl::BinaryInputStream::offset):
        (gl::BinaryInputStream::error):
        (gl::BinaryInputStream::endOfStream):
        (gl::BinaryOutputStream::BinaryOutputStream):
        (gl::BinaryOutputStream::write):
        (gl::BinaryOutputStream::length):
        (gl::BinaryOutputStream::data):
        * src/libGLESv2/Blit.cpp: Added.
        (gl::Blit::Blit):
        (gl::Blit::~Blit):
        (gl::Blit::initGeometry):
        (gl::Blit::setShader):
        (gl::Blit::setVertexShader):
        (gl::Blit::setPixelShader):
        (gl::Blit::getSurfaceRect):
        (gl::Blit::boxFilter):
        (gl::Blit::copy):
        (gl::Blit::formatConvert):
        (gl::Blit::setFormatConvertShaders):
        (gl::Blit::copySurfaceToTexture):
        (gl::Blit::setViewport):
        (gl::Blit::setCommonBlitState):
        (gl::Blit::render):
        (gl::Blit::saveState):
        (gl::Blit::restoreState):
        * src/libGLESv2/Blit.h: Added.
        * src/libGLESv2/Buffer.cpp: Added.
        (gl::Buffer::Buffer):
        (gl::Buffer::~Buffer):
        (gl::Buffer::bufferData):
        (gl::Buffer::bufferSubData):
        (gl::Buffer::getStaticVertexBuffer):
        (gl::Buffer::getStaticIndexBuffer):
        (gl::Buffer::invalidateStaticData):
        (gl::Buffer::promoteStaticUsage):
        * src/libGLESv2/Buffer.h: Added.
        (gl::Buffer::data):
        (gl::Buffer::size):
        (gl::Buffer::usage):
        * src/libGLESv2/Context.cpp: Added.
        (gl::makeStaticString):
        (gl::Context::Context):
        (gl::Context::~Context):
        (gl::Context::makeCurrent):
        (gl::Context::markAllStateDirty):
        (gl::Context::markDxUniformsDirty):
        (gl::Context::markContextLost):
        (gl::Context::isContextLost):
        (gl::Context::setClearColor):
        (gl::Context::setClearDepth):
        (gl::Context::setClearStencil):
        (gl::Context::setCullFace):
        (gl::Context::isCullFaceEnabled):
        (gl::Context::setCullMode):
        (gl::Context::setFrontFace):
        (gl::Context::setDepthTest):
        (gl::Context::isDepthTestEnabled):
        (gl::Context::setDepthFunc):
        (gl::Context::setDepthRange):
        (gl::Context::setBlend):
        (gl::Context::isBlendEnabled):
        (gl::Context::setBlendFactors):
        (gl::Context::setBlendColor):
        (gl::Context::setBlendEquation):
        (gl::Context::setStencilTest):
        (gl::Context::isStencilTestEnabled):
        (gl::Context::setStencilParams):
        (gl::Context::setStencilBackParams):
        (gl::Context::setStencilWritemask):
        (gl::Context::setStencilBackWritemask):
        (gl::Context::setStencilOperations):
        (gl::Context::setStencilBackOperations):
        (gl::Context::setPolygonOffsetFill):
        (gl::Context::isPolygonOffsetFillEnabled):
        (gl::Context::setPolygonOffsetParams):
        (gl::Context::setSampleAlphaToCoverage):
        (gl::Context::isSampleAlphaToCoverageEnabled):
        (gl::Context::setSampleCoverage):
        (gl::Context::isSampleCoverageEnabled):
        (gl::Context::setSampleCoverageParams):
        (gl::Context::setScissorTest):
        (gl::Context::isScissorTestEnabled):
        (gl::Context::setDither):
        (gl::Context::isDitherEnabled):
        (gl::Context::setLineWidth):
        (gl::Context::setGenerateMipmapHint):
        (gl::Context::setFragmentShaderDerivativeHint):
        (gl::Context::setViewportParams):
        (gl::Context::setScissorParams):
        (gl::Context::setColorMask):
        (gl::Context::setDepthMask):
        (gl::Context::setActiveSampler):
        (gl::Context::getReadFramebufferHandle):
        (gl::Context::getDrawFramebufferHandle):
        (gl::Context::getRenderbufferHandle):
        (gl::Context::getArrayBufferHandle):
        (gl::Context::getActiveQuery):
        (gl::Context::setEnableVertexAttribArray):
        (gl::Context::getVertexAttribState):
        (gl::Context::setVertexAttribState):
        (gl::Context::getVertexAttribPointer):
        (gl::Context::getVertexAttributes):
        (gl::Context::setPackAlignment):
        (gl::Context::getPackAlignment):
        (gl::Context::setUnpackAlignment):
        (gl::Context::getUnpackAlignment):
        (gl::Context::setPackReverseRowOrder):
        (gl::Context::getPackReverseRowOrder):
        (gl::Context::createBuffer):
        (gl::Context::createProgram):
        (gl::Context::createShader):
        (gl::Context::createTexture):
        (gl::Context::createRenderbuffer):
        (gl::Context::createFramebuffer):
        (gl::Context::createFence):
        (gl::Context::createQuery):
        (gl::Context::deleteBuffer):
        (gl::Context::deleteShader):
        (gl::Context::deleteProgram):
        (gl::Context::deleteTexture):
        (gl::Context::deleteRenderbuffer):
        (gl::Context::deleteFramebuffer):
        (gl::Context::deleteFence):
        (gl::Context::deleteQuery):
        (gl::Context::getBuffer):
        (gl::Context::getShader):
        (gl::Context::getProgram):
        (gl::Context::getTexture):
        (gl::Context::getRenderbuffer):
        (gl::Context::getReadFramebuffer):
        (gl::Context::getDrawFramebuffer):
        (gl::Context::bindArrayBuffer):
        (gl::Context::bindElementArrayBuffer):
        (gl::Context::bindTexture2D):
        (gl::Context::bindTextureCubeMap):
        (gl::Context::bindReadFramebuffer):
        (gl::Context::bindDrawFramebuffer):
        (gl::Context::bindRenderbuffer):
        (gl::Context::useProgram):
        (gl::Context::linkProgram):
        (gl::Context::setProgramBinary):
        (gl::Context::beginQuery):
        (gl::Context::endQuery):
        (gl::Context::setFramebufferZero):
        (gl::Context::setRenderbufferStorage):
        (gl::Context::getFramebuffer):
        (gl::Context::getFence):
        (gl::Context::getQuery):
        (gl::Context::getArrayBuffer):
        (gl::Context::getElementArrayBuffer):
        (gl::Context::getCurrentProgramBinary):
        (gl::Context::getTexture2D):
        (gl::Context::getTextureCubeMap):
        (gl::Context::getSamplerTexture):
        (gl::Context::getBooleanv):
        (gl::Context::getFloatv):
        (gl::Context::getIntegerv):
        (gl::Context::getQueryParameterInfo):
        (gl::Context::applyRenderTarget):
        (gl::Context::applyState):
        (gl::Context::applyVertexBuffer):
        (gl::Context::applyIndexBuffer):
        (gl::Context::applyShaders):
        (gl::Context::applyTextures):
        (gl::Context::readPixels):
        (gl::Context::clear):
        (gl::Context::drawArrays):
        (gl::Context::drawElements):
        (gl::Context::sync):
        (gl::Context::drawLineLoop):
        (gl::Context::recordInvalidEnum):
        (gl::Context::recordInvalidValue):
        (gl::Context::recordInvalidOperation):
        (gl::Context::recordOutOfMemory):
        (gl::Context::recordInvalidFramebufferOperation):
        (gl::Context::getError):
        (gl::Context::getResetStatus):
        (gl::Context::isResetNotificationEnabled):
        (gl::Context::supportsShaderModel3):
        (gl::Context::getMaximumPointSize):
        (gl::Context::getMaximumVaryingVectors):
        (gl::Context::getMaximumVertexTextureImageUnits):
        (gl::Context::getMaximumCombinedTextureImageUnits):
        (gl::Context::getMaximumFragmentUniformVectors):
        (gl::Context::getMaxSupportedSamples):
        (gl::Context::getNearestSupportedSamples):
        (gl::Context::supportsEventQueries):
        (gl::Context::supportsOcclusionQueries):
        (gl::Context::supportsDXT1Textures):
        (gl::Context::supportsDXT3Textures):
        (gl::Context::supportsDXT5Textures):
        (gl::Context::supportsFloat32Textures):
        (gl::Context::supportsFloat32LinearFilter):
        (gl::Context::supportsFloat32RenderableTextures):
        (gl::Context::supportsFloat16Textures):
        (gl::Context::supportsFloat16LinearFilter):
        (gl::Context::supportsFloat16RenderableTextures):
        (gl::Context::getMaximumRenderbufferDimension):
        (gl::Context::getMaximumTextureDimension):
        (gl::Context::getMaximumCubeTextureDimension):
        (gl::Context::getMaximumTextureLevel):
        (gl::Context::supportsLuminanceTextures):
        (gl::Context::supportsLuminanceAlphaTextures):
        (gl::Context::supportsDepthTextures):
        (gl::Context::supports32bitIndices):
        (gl::Context::supportsNonPower2Texture):
        (gl::Context::supportsInstancing):
        (gl::Context::supportsTextureFilterAnisotropy):
        (gl::Context::supportsDerivativeInstructions):
        (gl::Context::getTextureMaxAnisotropy):
        (gl::Context::getCurrentReadFormatType):
        (gl::Context::detachBuffer):
        (gl::Context::detachTexture):
        (gl::Context::detachFramebuffer):
        (gl::Context::detachRenderbuffer):
        (gl::Context::getIncompleteTexture):
        (gl::Context::skipDraw):
        (gl::Context::isTriangleMode):
        (gl::Context::setVertexAttrib):
        (gl::Context::setVertexAttribDivisor):
        (gl::Context::initExtensionString):
        (gl::Context::getExtensionString):
        (gl::Context::initRendererString):
        (gl::Context::getRendererString):
        (gl::Context::blitFramebuffer):
        (gl::VertexDeclarationCache::VertexDeclarationCache):
        (gl::VertexDeclarationCache::~VertexDeclarationCache):
        (gl::VertexDeclarationCache::applyDeclaration):
        (gl::VertexDeclarationCache::markStateDirty):
        * src/libGLESv2/Context.h: Added.
        (gl::VertexAttribute::VertexAttribute):
        (gl::VertexAttribute::typeSize):
        (gl::VertexAttribute::stride):
        (gl::Context::getBlitter):
        (gl::Context::getDeviceCaps):
        * src/libGLESv2/D3DConstantTable.cpp: Added.
        (gl::D3DConstant::D3DConstant):
        (gl::D3DConstant::~D3DConstant):
        (gl::D3DConstant::addStructMembers):
        (gl::D3DConstantTable::D3DConstantTable):
        (gl::D3DConstantTable::~D3DConstantTable):
        (gl::D3DConstantTable::getConstant):
        (gl::D3DConstantTable::getConstantByName):
        * src/libGLESv2/D3DConstantTable.h: Added.
        (gl::D3DConstantTable::error):
        (gl::D3DConstantTable::constants):
        * src/libGLESv2/Fence.cpp: Added.
        (gl::Fence::Fence):
        (gl::Fence::~Fence):
        (gl::Fence::isFence):
        (gl::Fence::setFence):
        (gl::Fence::testFence):
        (gl::Fence::finishFence):
        (gl::Fence::getFenceiv):
        * src/libGLESv2/Fence.h: Added.
        * src/libGLESv2/Float16ToFloat32.cpp: Added.
        (gl::float16ToFloat32):
        * src/libGLESv2/Float16ToFloat32.py: Added.
        (convertMantissa):
        (convertExponent):
        (convertOffset):
        * src/libGLESv2/Framebuffer.cpp: Added.
        (gl::Framebuffer::Framebuffer):
        (gl::Framebuffer::~Framebuffer):
        (gl::Framebuffer::lookupRenderbuffer):
        (gl::Framebuffer::setColorbuffer):
        (gl::Framebuffer::setDepthbuffer):
        (gl::Framebuffer::setStencilbuffer):
        (gl::Framebuffer::detachTexture):
        (gl::Framebuffer::detachRenderbuffer):
        (gl::Framebuffer::getRenderTargetSerial):
        (gl::Framebuffer::getRenderTarget):
        (gl::Framebuffer::getDepthStencil):
        (gl::Framebuffer::getDepthbufferSerial):
        (gl::Framebuffer::getStencilbufferSerial):
        (gl::Framebuffer::getColorbuffer):
        (gl::Framebuffer::getDepthbuffer):
        (gl::Framebuffer::getStencilbuffer):
        (gl::Framebuffer::getNullColorbuffer):
        (gl::Framebuffer::getColorbufferType):
        (gl::Framebuffer::getDepthbufferType):
        (gl::Framebuffer::getStencilbufferType):
        (gl::Framebuffer::getColorbufferHandle):
        (gl::Framebuffer::getDepthbufferHandle):
        (gl::Framebuffer::getStencilbufferHandle):
        (gl::Framebuffer::hasStencil):
        (gl::Framebuffer::completeness):
        (gl::DefaultFramebuffer::DefaultFramebuffer):
        (gl::Framebuffer::getSamples):
        (gl::DefaultFramebuffer::completeness):
        * src/libGLESv2/Framebuffer.h: Added.
        * src/libGLESv2/HandleAllocator.cpp: Added.
        (gl::HandleAllocator::HandleAllocator):
        (gl::HandleAllocator::~HandleAllocator):
        (gl::HandleAllocator::setBaseHandle):
        (gl::HandleAllocator::allocate):
        (gl::HandleAllocator::release):
        * src/libGLESv2/HandleAllocator.h: Added.
        * src/libGLESv2/IndexDataManager.cpp: Added.
        (gl::IndexDataManager::IndexDataManager):
        (gl::IndexDataManager::~IndexDataManager):
        (gl::convertIndices):
        (gl::computeRange):
        (gl::IndexDataManager::prepareIndexData):
        (gl::IndexDataManager::indexSize):
        (gl::IndexDataManager::typeSize):
        (gl::IndexDataManager::getCountingIndices):
        (gl::IndexBuffer::IndexBuffer):
        (gl::IndexBuffer::~IndexBuffer):
        (gl::IndexBuffer::getBuffer):
        (gl::IndexBuffer::getSerial):
        (gl::IndexBuffer::issueSerial):
        (gl::IndexBuffer::unmap):
        (gl::StreamingIndexBuffer::StreamingIndexBuffer):
        (gl::StreamingIndexBuffer::~StreamingIndexBuffer):
        (gl::StreamingIndexBuffer::map):
        (gl::StreamingIndexBuffer::reserveSpace):
        (gl::StaticIndexBuffer::StaticIndexBuffer):
        (gl::StaticIndexBuffer::~StaticIndexBuffer):
        (gl::StaticIndexBuffer::map):
        (gl::StaticIndexBuffer::reserveSpace):
        (gl::StaticIndexBuffer::lookupType):
        (gl::StaticIndexBuffer::lookupRange):
        (gl::StaticIndexBuffer::addRange):
        * src/libGLESv2/IndexDataManager.h: Added.
        (gl::IndexBuffer::size):
        (gl::StaticIndexBuffer::IndexRange::operator<):
        * src/libGLESv2/Program.cpp: Added.
        (gl::AttributeBindings::AttributeBindings):
        (gl::AttributeBindings::~AttributeBindings):
        (gl::InfoLog::InfoLog):
        (gl::InfoLog::~InfoLog):
        (gl::InfoLog::getLength):
        (gl::InfoLog::getLog):
        (gl::InfoLog::appendSanitized):
        (gl::InfoLog::append):
        (gl::InfoLog::reset):
        (gl::Program::Program):
        (gl::Program::~Program):
        (gl::Program::attachShader):
        (gl::Program::detachShader):
        (gl::Program::getAttachedShadersCount):
        (gl::AttributeBindings::bindAttributeLocation):
        (gl::Program::bindAttributeLocation):
        (gl::Program::link):
        (gl::AttributeBindings::getAttributeBinding):
        (gl::Program::unlink):
        (gl::Program::isLinked):
        (gl::Program::getProgramBinary):
        (gl::Program::setProgramBinary):
        (gl::Program::release):
        (gl::Program::addRef):
        (gl::Program::getRefCount):
        (gl::Program::getProgramBinaryLength):
        (gl::Program::getInfoLogLength):
        (gl::Program::getInfoLog):
        (gl::Program::getAttachedShaders):
        (gl::Program::getActiveAttribute):
        (gl::Program::getActiveAttributeCount):
        (gl::Program::getActiveAttributeMaxLength):
        (gl::Program::getActiveUniform):
        (gl::Program::getActiveUniformCount):
        (gl::Program::getActiveUniformMaxLength):
        (gl::Program::flagForDeletion):
        (gl::Program::isFlaggedForDeletion):
        (gl::Program::validate):
        (gl::Program::isValidated):
        * src/libGLESv2/Program.h: Added.
        * src/libGLESv2/ProgramBinary.cpp: Added.
        (gl::str):
        (gl::Uniform::Uniform):
        (gl::Uniform::~Uniform):
        (gl::Uniform::isArray):
        (gl::UniformLocation::UniformLocation):
        (gl::ProgramBinary::ProgramBinary):
        (gl::ProgramBinary::~ProgramBinary):
        (gl::ProgramBinary::getSerial):
        (gl::ProgramBinary::issueSerial):
        (gl::ProgramBinary::getPixelShader):
        (gl::ProgramBinary::getVertexShader):
        (gl::ProgramBinary::getAttributeLocation):
        (gl::ProgramBinary::getSemanticIndex):
        (gl::ProgramBinary::getUsedSamplerRange):
        (gl::ProgramBinary::usesPointSize):
        (gl::ProgramBinary::getSamplerMapping):
        (gl::ProgramBinary::getSamplerTextureType):
        (gl::ProgramBinary::getUniformLocation):
        (gl::ProgramBinary::setUniform1fv):
        (gl::ProgramBinary::setUniform2fv):
        (gl::ProgramBinary::setUniform3fv):
        (gl::ProgramBinary::setUniform4fv):
        (gl::transposeMatrix):
        (gl::ProgramBinary::setUniformMatrix2fv):
        (gl::ProgramBinary::setUniformMatrix3fv):
        (gl::ProgramBinary::setUniformMatrix4fv):
        (gl::ProgramBinary::setUniform1iv):
        (gl::ProgramBinary::setUniform2iv):
        (gl::ProgramBinary::setUniform3iv):
        (gl::ProgramBinary::setUniform4iv):
        (gl::ProgramBinary::getUniformfv):
        (gl::ProgramBinary::getUniformiv):
        (gl::ProgramBinary::dirtyAllUniforms):
        (gl::ProgramBinary::applyUniforms):
        (gl::ProgramBinary::compileToBinary):
        (gl::ProgramBinary::packVaryings):
        (gl::ProgramBinary::linkVaryings):
        (gl::ProgramBinary::load):
        (gl::ProgramBinary::save):
        (gl::ProgramBinary::getLength):
        (gl::ProgramBinary::link):
        (gl::ProgramBinary::linkAttributes):
        (gl::ProgramBinary::linkUniforms):
        (gl::ProgramBinary::defineUniform):
        (gl::ProgramBinary::createUniform):
        (gl::ProgramBinary::decorateAttribute):
        (gl::ProgramBinary::undecorateUniform):
        (gl::ProgramBinary::applyUniformnbv):
        (gl::ProgramBinary::applyUniformnfv):
        (gl::ProgramBinary::applyUniform1iv):
        (gl::ProgramBinary::applyUniform2iv):
        (gl::ProgramBinary::applyUniform3iv):
        (gl::ProgramBinary::applyUniform4iv):
        (gl::ProgramBinary::applyUniformniv):
        (gl::ProgramBinary::isValidated):
        (gl::ProgramBinary::getActiveAttribute):
        (gl::ProgramBinary::getActiveAttributeCount):
        (gl::ProgramBinary::getActiveAttributeMaxLength):
        (gl::ProgramBinary::getActiveUniform):
        (gl::ProgramBinary::getActiveUniformCount):
        (gl::ProgramBinary::getActiveUniformMaxLength):
        (gl::ProgramBinary::validate):
        (gl::ProgramBinary::validateSamplers):
        (gl::ProgramBinary::getDxDepthRangeLocation):
        (gl::ProgramBinary::getDxDepthLocation):
        (gl::ProgramBinary::getDxCoordLocation):
        (gl::ProgramBinary::getDxHalfPixelSizeLocation):
        (gl::ProgramBinary::getDxFrontCCWLocation):
        (gl::ProgramBinary::getDxPointsOrLinesLocation):
        (gl::ProgramBinary::Sampler::Sampler):
        * src/libGLESv2/ProgramBinary.h: Added.
        (gl::Uniform::RegisterInfo::RegisterInfo):
        (gl::Uniform::RegisterInfo::set):
        (gl::UniformLocation::UniformLocation):
        * src/libGLESv2/Query.cpp: Added.
        (gl::Query::Query):
        (gl::Query::~Query):
        (gl::Query::begin):
        (gl::Query::end):
        (gl::Query::getResult):
        (gl::Query::isResultAvailable):
        (gl::Query::getType):
        (gl::Query::testQuery):
        * src/libGLESv2/Query.h: Added.
        * src/libGLESv2/README: Removed.
        * src/libGLESv2/Renderbuffer.cpp: Added.
        (gl::RenderbufferInterface::RenderbufferInterface):
        (gl::RenderbufferInterface::addProxyRef):
        (gl::RenderbufferInterface::releaseProxy):
        (gl::RenderbufferInterface::getRedSize):
        (gl::RenderbufferInterface::getGreenSize):
        (gl::RenderbufferInterface::getBlueSize):
        (gl::RenderbufferInterface::getAlphaSize):
        (gl::RenderbufferInterface::getDepthSize):
        (gl::RenderbufferInterface::getStencilSize):
        (gl::RenderbufferTexture2D::RenderbufferTexture2D):
        (gl::RenderbufferTexture2D::~RenderbufferTexture2D):
        (gl::RenderbufferTexture2D::addProxyRef):
        (gl::RenderbufferTexture2D::releaseProxy):
        (gl::RenderbufferTexture2D::getRenderTarget):
        (gl::RenderbufferTexture2D::getDepthStencil):
        (gl::RenderbufferTexture2D::getWidth):
        (gl::RenderbufferTexture2D::getHeight):
        (gl::RenderbufferTexture2D::getInternalFormat):
        (gl::RenderbufferTexture2D::getD3DFormat):
        (gl::RenderbufferTexture2D::getSamples):
        (gl::RenderbufferTexture2D::getSerial):
        (gl::RenderbufferTextureCubeMap::RenderbufferTextureCubeMap):
        (gl::RenderbufferTextureCubeMap::~RenderbufferTextureCubeMap):
        (gl::RenderbufferTextureCubeMap::addProxyRef):
        (gl::RenderbufferTextureCubeMap::releaseProxy):
        (gl::RenderbufferTextureCubeMap::getRenderTarget):
        (gl::RenderbufferTextureCubeMap::getDepthStencil):
        (gl::RenderbufferTextureCubeMap::getWidth):
        (gl::RenderbufferTextureCubeMap::getHeight):
        (gl::RenderbufferTextureCubeMap::getInternalFormat):
        (gl::RenderbufferTextureCubeMap::getD3DFormat):
        (gl::RenderbufferTextureCubeMap::getSamples):
        (gl::RenderbufferTextureCubeMap::getSerial):
        (gl::Renderbuffer::Renderbuffer):
        (gl::Renderbuffer::~Renderbuffer):
        (gl::Renderbuffer::addRef):
        (gl::Renderbuffer::release):
        (gl::Renderbuffer::getRenderTarget):
        (gl::Renderbuffer::getDepthStencil):
        (gl::Renderbuffer::getWidth):
        (gl::Renderbuffer::getHeight):
        (gl::Renderbuffer::getInternalFormat):
        (gl::Renderbuffer::getD3DFormat):
        (gl::Renderbuffer::getRedSize):
        (gl::Renderbuffer::getGreenSize):
        (gl::Renderbuffer::getBlueSize):
        (gl::Renderbuffer::getAlphaSize):
        (gl::Renderbuffer::getDepthSize):
        (gl::Renderbuffer::getStencilSize):
        (gl::Renderbuffer::getSamples):
        (gl::Renderbuffer::getSerial):
        (gl::Renderbuffer::setStorage):
        (gl::RenderbufferStorage::RenderbufferStorage):
        (gl::RenderbufferStorage::~RenderbufferStorage):
        (gl::RenderbufferStorage::getRenderTarget):
        (gl::RenderbufferStorage::getDepthStencil):
        (gl::RenderbufferStorage::getWidth):
        (gl::RenderbufferStorage::getHeight):
        (gl::RenderbufferStorage::getInternalFormat):
        (gl::RenderbufferStorage::getD3DFormat):
        (gl::RenderbufferStorage::getSamples):
        (gl::RenderbufferStorage::getSerial):
        (gl::RenderbufferStorage::issueSerial):
        (gl::RenderbufferStorage::issueCubeSerials):
        (gl::Colorbuffer::Colorbuffer):
        (gl::Colorbuffer::~Colorbuffer):
        (gl::Colorbuffer::getRenderTarget):
        (gl::DepthStencilbuffer::DepthStencilbuffer):
        (gl::DepthStencilbuffer::~DepthStencilbuffer):
        (gl::DepthStencilbuffer::getDepthStencil):
        (gl::Depthbuffer::Depthbuffer):
        (gl::Depthbuffer::~Depthbuffer):
        (gl::Stencilbuffer::Stencilbuffer):
        (gl::Stencilbuffer::~Stencilbuffer):
        * src/libGLESv2/Renderbuffer.h: Added.
        (gl::RenderbufferInterface::~RenderbufferInterface):
        * src/libGLESv2/ResourceManager.cpp: Added.
        (gl::ResourceManager::ResourceManager):
        (gl::ResourceManager::~ResourceManager):
        (gl::ResourceManager::addRef):
        (gl::ResourceManager::release):
        (gl::ResourceManager::createBuffer):
        (gl::ResourceManager::createShader):
        (gl::ResourceManager::createProgram):
        (gl::ResourceManager::createTexture):
        (gl::ResourceManager::createRenderbuffer):
        (gl::ResourceManager::deleteBuffer):
        (gl::ResourceManager::deleteShader):
        (gl::ResourceManager::deleteProgram):
        (gl::ResourceManager::deleteTexture):
        (gl::ResourceManager::deleteRenderbuffer):
        (gl::ResourceManager::getBuffer):
        (gl::ResourceManager::getShader):
        (gl::ResourceManager::getTexture):
        (gl::ResourceManager::getProgram):
        (gl::ResourceManager::getRenderbuffer):
        (gl::ResourceManager::setRenderbuffer):
        (gl::ResourceManager::checkBufferAllocation):
        (gl::ResourceManager::checkTextureAllocation):
        (gl::ResourceManager::checkRenderbufferAllocation):
        * src/libGLESv2/ResourceManager.h: Added.
        * src/libGLESv2/Shader.cpp: Added.
        (gl::Shader::Shader):
        (gl::Shader::~Shader):
        (gl::Shader::getHandle):
        (gl::Shader::setSource):
        (gl::Shader::getInfoLogLength):
        (gl::Shader::getInfoLog):
        (gl::Shader::getSourceLength):
        (gl::Shader::getTranslatedSourceLength):
        (gl::Shader::getSourceImpl):
        (gl::Shader::getSource):
        (gl::Shader::getTranslatedSource):
        (gl::Shader::isCompiled):
        (gl::Shader::getHLSL):
        (gl::Shader::addRef):
        (gl::Shader::release):
        (gl::Shader::getRefCount):
        (gl::Shader::isFlaggedForDeletion):
        (gl::Shader::flagForDeletion):
        (gl::Shader::initializeCompiler):
        (gl::Shader::releaseCompiler):
        (gl::Shader::parseVaryings):
        (gl::Shader::uncompile):
        (gl::Shader::compileToHLSL):
        (gl::Shader::parseType):
        (gl::Shader::compareVarying):
        (gl::VertexShader::VertexShader):
        (gl::VertexShader::~VertexShader):
        (gl::VertexShader::getType):
        (gl::VertexShader::uncompile):
        (gl::VertexShader::compile):
        (gl::VertexShader::getSemanticIndex):
        (gl::VertexShader::parseAttributes):
        (gl::FragmentShader::FragmentShader):
        (gl::FragmentShader::~FragmentShader):
        (gl::FragmentShader::getType):
        (gl::FragmentShader::compile):
        * src/libGLESv2/Shader.h: Added.
        (gl::Varying::Varying):
        (gl::Attribute::Attribute):
        * src/libGLESv2/Texture.cpp: Added.
        (gl::ConvertTextureInternalFormat):
        (gl::IsTextureFormatRenderable):
        (gl::GetTextureUsage):
        (gl::MakeValidSize):
        (gl::CopyLockableSurfaces):
        (gl::Image::Image):
        (gl::Image::~Image):
        (gl::Image::redefine):
        (gl::Image::createSurface):
        (gl::Image::lock):
        (gl::Image::unlock):
        (gl::Image::isRenderableFormat):
        (gl::Image::getD3DFormat):
        (gl::Image::getSurface):
        (gl::Image::setManagedSurface):
        (gl::Image::updateSurface):
        (gl::Image::loadData):
        (gl::Image::loadAlphaData):
        (gl::Image::loadAlphaFloatData):
        (gl::Image::loadAlphaHalfFloatData):
        (gl::Image::loadLuminanceData):
        (gl::Image::loadLuminanceFloatData):
        (gl::Image::loadLuminanceHalfFloatData):
        (gl::Image::loadLuminanceAlphaData):
        (gl::Image::loadLuminanceAlphaFloatData):
        (gl::Image::loadLuminanceAlphaHalfFloatData):
        (gl::Image::loadRGBUByteData):
        (gl::Image::loadRGB565Data):
        (gl::Image::loadRGBFloatData):
        (gl::Image::loadRGBHalfFloatData):
        (gl::Image::loadRGBAUByteData):
        (gl::Image::loadRGBA4444Data):
        (gl::Image::loadRGBA5551Data):
        (gl::Image::loadRGBAFloatData):
        (gl::Image::loadRGBAHalfFloatData):
        (gl::Image::loadBGRAData):
        (gl::Image::loadCompressedData):
        (gl::Image::copy):
        (gl::TextureStorage::TextureStorage):
        (gl::TextureStorage::~TextureStorage):
        (gl::TextureStorage::isRenderTarget):
        (gl::TextureStorage::isManaged):
        (gl::TextureStorage::getPool):
        (gl::TextureStorage::getUsage):
        (gl::TextureStorage::getTextureSerial):
        (gl::TextureStorage::issueTextureSerial):
        (gl::TextureStorage::getLodOffset):
        (gl::Texture::Texture):
        (gl::Texture::~Texture):
        (gl::Texture::setMinFilter):
        (gl::Texture::setMagFilter):
        (gl::Texture::setWrapS):
        (gl::Texture::setWrapT):
        (gl::Texture::setMaxAnisotropy):
        (gl::Texture::setUsage):
        (gl::Texture::getMinFilter):
        (gl::Texture::getMagFilter):
        (gl::Texture::getWrapS):
        (gl::Texture::getWrapT):
        (gl::Texture::getMaxAnisotropy):
        (gl::Texture::getUsage):
        (gl::Texture::isMipmapFiltered):
        (gl::Texture::setImage):
        (gl::Texture::setCompressedImage):
        (gl::Texture::subImage):
        (gl::Texture::subImageCompressed):
        (gl::Texture::getTexture):
        (gl::Texture::hasDirtyParameters):
        (gl::Texture::hasDirtyImages):
        (gl::Texture::resetDirty):
        (gl::Texture::getTextureSerial):
        (gl::Texture::getRenderTargetSerial):
        (gl::Texture::isImmutable):
        (gl::Texture::getLodOffset):
        (gl::Texture::creationLevels):
        (gl::Texture::levelCount):
        (gl::Texture::getBlitter):
        (gl::Texture::copyToRenderTarget):
        (gl::TextureStorage2D::TextureStorage2D):
        (gl::TextureStorage2D::~TextureStorage2D):
        (gl::TextureStorage2D::getSurfaceLevel):
        (gl::TextureStorage2D::getBaseTexture):
        (gl::TextureStorage2D::getRenderTargetSerial):
        (gl::Texture2D::Texture2D):
        (gl::Texture2D::~Texture2D):
        (gl::Texture2D::addProxyRef):
        (gl::Texture2D::releaseProxy):
        (gl::Texture2D::getTarget):
        (gl::Texture2D::getWidth):
        (gl::Texture2D::getHeight):
        (gl::Texture2D::getInternalFormat):
        (gl::Texture2D::getD3DFormat):
        (gl::Texture2D::redefineImage):
        (gl::Texture2D::setImage):
        (gl::Texture2D::bindTexImage):
        (gl::Texture2D::releaseTexImage):
        (gl::Texture2D::setCompressedImage):
        (gl::Texture2D::commitRect):
        (gl::Texture2D::subImage):
        (gl::Texture2D::subImageCompressed):
        (gl::Texture2D::copyImage):
        (gl::Texture2D::copySubImage):
        (gl::Texture2D::storage):
        (gl::Texture2D::isSamplerComplete):
        (gl::Texture2D::isMipmapComplete):
        (gl::Texture2D::isCompressed):
        (gl::Texture2D::isDepth):
        (gl::Texture2D::getBaseTexture):
        (gl::Texture2D::createTexture):
        (gl::Texture2D::updateTexture):
        (gl::Texture2D::convertToRenderTarget):
        (gl::Texture2D::generateMipmaps):
        (gl::Texture2D::getRenderbuffer):
        (gl::Texture2D::getRenderTarget):
        (gl::Texture2D::getDepthStencil):
        (gl::Texture2D::getStorage):
        (gl::TextureStorageCubeMap::TextureStorageCubeMap):
        (gl::TextureStorageCubeMap::~TextureStorageCubeMap):
        (gl::TextureStorageCubeMap::getCubeMapSurface):
        (gl::TextureStorageCubeMap::getBaseTexture):
        (gl::TextureStorageCubeMap::getRenderTargetSerial):
        (gl::TextureCubeMap::TextureCubeMap):
        (gl::TextureCubeMap::~TextureCubeMap):
        (gl::TextureCubeMap::addProxyRef):
        (gl::TextureCubeMap::releaseProxy):
        (gl::TextureCubeMap::getTarget):
        (gl::TextureCubeMap::getWidth):
        (gl::TextureCubeMap::getHeight):
        (gl::TextureCubeMap::getInternalFormat):
        (gl::TextureCubeMap::getD3DFormat):
        (gl::TextureCubeMap::setImagePosX):
        (gl::TextureCubeMap::setImageNegX):
        (gl::TextureCubeMap::setImagePosY):
        (gl::TextureCubeMap::setImageNegY):
        (gl::TextureCubeMap::setImagePosZ):
        (gl::TextureCubeMap::setImageNegZ):
        (gl::TextureCubeMap::setCompressedImage):
        (gl::TextureCubeMap::commitRect):
        (gl::TextureCubeMap::subImage):
        (gl::TextureCubeMap::subImageCompressed):
        (gl::TextureCubeMap::isSamplerComplete):
        (gl::TextureCubeMap::isCubeComplete):
        (gl::TextureCubeMap::isMipmapCubeComplete):
        (gl::TextureCubeMap::isCompressed):
        (gl::TextureCubeMap::getBaseTexture):
        (gl::TextureCubeMap::createTexture):
        (gl::TextureCubeMap::updateTexture):
        (gl::TextureCubeMap::convertToRenderTarget):
        (gl::TextureCubeMap::setImage):
        (gl::TextureCubeMap::faceIndex):
        (gl::TextureCubeMap::redefineImage):
        (gl::TextureCubeMap::copyImage):
        (gl::TextureCubeMap::copySubImage):
        (gl::TextureCubeMap::storage):
        (gl::TextureCubeMap::generateMipmaps):
        (gl::TextureCubeMap::getRenderbuffer):
        (gl::TextureCubeMap::getRenderTarget):
        (gl::TextureCubeMap::getStorage):
        * src/libGLESv2/Texture.h: Added.
        (gl::Image::markDirty):
        (gl::Image::markClean):
        (gl::Image::getWidth):
        (gl::Image::getHeight):
        (gl::Image::getInternalFormat):
        (gl::Image::isDirty):
        * src/libGLESv2/TextureSSE2.cpp: Added.
        (gl::Image::loadRGBAUByteDataSSE2):
        (gl::Image::loadAlphaDataSSE2):
        * src/libGLESv2/VertexDataManager.cpp: Added.
        (gl::elementsInBuffer):
        (gl::VertexDataManager::VertexDataManager):
        (gl::VertexDataManager::~VertexDataManager):
        (gl::VertexDataManager::writeAttributeData):
        (gl::VertexDataManager::prepareVertexData):
        (gl::VertexDataManager::spaceRequired):
        (gl::VertexDataManager::checkVertexCaps):
        (gl::VertexDataManager::typeIndex):
        (gl::VertexBuffer::VertexBuffer):
        (gl::VertexBuffer::~VertexBuffer):
        (gl::VertexBuffer::unmap):
        (gl::VertexBuffer::getBuffer):
        (gl::VertexBuffer::getSerial):
        (gl::VertexBuffer::issueSerial):
        (gl::ArrayVertexBuffer::ArrayVertexBuffer):
        (gl::ArrayVertexBuffer::~ArrayVertexBuffer):
        (gl::ArrayVertexBuffer::addRequiredSpace):
        (gl::StreamingVertexBuffer::StreamingVertexBuffer):
        (gl::StreamingVertexBuffer::~StreamingVertexBuffer):
        (gl::StreamingVertexBuffer::map):
        (gl::StreamingVertexBuffer::reserveRequiredSpace):
        (gl::StaticVertexBuffer::StaticVertexBuffer):
        (gl::StaticVertexBuffer::~StaticVertexBuffer):
        (gl::StaticVertexBuffer::map):
        (gl::StaticVertexBuffer::reserveRequiredSpace):
        (gl::StaticVertexBuffer::lookupAttribute):
        (gl::VertexDataManager::formatConverter):
        * src/libGLESv2/VertexDataManager.h: Added.
        (gl::ArrayVertexBuffer::size):
        (gl::VertexDataManager::dirtyCurrentValue):
        * src/libGLESv2/libGLESv2.cpp: Added.
        (validImageSize):
        (checkTextureFormatType):
        (validateSubImageParams2D):
        (validateSubImageParamsCube):
        (validReadFormatType):
        * src/libGLESv2/libGLESv2.def: Added.
        * src/libGLESv2/libGLESv2.rc: Added.
        * src/libGLESv2/libGLESv2.vcxproj: Added.
        * src/libGLESv2/libGLESv2.vcxproj.filters: Added.
        * src/libGLESv2/main.cpp: Added.
        (DllMain):
        (gl::makeCurrent):
        (gl::getContext):
        (gl::getNonLostContext):
        (gl::getDisplay):
        (gl::getDevice):
        (gl::checkDeviceLost):
        (error):
        * src/libGLESv2/main.h: Added.
        (error):
        * src/libGLESv2/mathutil.h: Added.
        (gl::Vector4::Vector4):
        (gl::isPow2):
        (gl::log2):
        (gl::ceilPow2):
        (gl::clamp):
        (gl::clamp01):
        (gl::unorm):
        (gl::supportsSSE2):
        (gl::float32ToFloat16):
        * src/libGLESv2/resource.h: Added.
        * src/libGLESv2/shaders: Added.
        * src/libGLESv2/shaders/Blit.ps: Added.
        * src/libGLESv2/shaders/Blit.vs: Added.
        * src/libGLESv2/shaders/componentmaskps.h: Added.
        * src/libGLESv2/shaders/flipyvs.h: Added.
        * src/libGLESv2/shaders/generate_shaders.bat: Added.
        * src/libGLESv2/shaders/luminanceps.h: Added.
        * src/libGLESv2/shaders/passthroughps.h: Added.
        * src/libGLESv2/shaders/standardvs.h: Added.
        * src/libGLESv2/utilities.cpp: Added.
        (gl::UniformExternalComponentCount):
        (gl::UniformInternalComponentCount):
        (gl::UniformComponentType):
        (gl::UniformComponentSize):
        (gl::UniformInternalSize):
        (gl::UniformExternalSize):
        (gl::VariableRowCount):
        (gl::VariableColumnCount):
        (gl::AllocateFirstFreeBits):
        (gl::ComputePitch):
        (gl::ComputeCompressedPitch):
        (gl::ComputeCompressedSize):
        (gl::IsCompressed):
        (gl::IsDepthTexture):
        (gl::IsStencilTexture):
        (gl::ComputePixelSize):
        (gl::IsCubemapTextureTarget):
        (gl::IsInternalTextureTarget):
        (gl::ConvertSizedInternalFormat):
        (gl::ExtractFormat):
        (gl::ExtractType):
        (gl::IsColorRenderable):
        (gl::IsDepthRenderable):
        (gl::IsStencilRenderable):
        (gl::IsFloat32Format):
        (gl::IsFloat16Format):
        (es2dx::ConvertComparison):
        (es2dx::ConvertColor):
        (es2dx::ConvertBlendFunc):
        (es2dx::ConvertBlendOp):
        (es2dx::ConvertStencilOp):
        (es2dx::ConvertTextureWrap):
        (es2dx::ConvertCullMode):
        (es2dx::ConvertCubeFace):
        (es2dx::ConvertColorMask):
        (es2dx::ConvertMagFilter):
        (es2dx::ConvertMinFilter):
        (es2dx::ConvertPrimitiveType):
        (es2dx::ConvertRenderbufferFormat):
        (es2dx::GetMultisampleTypeFromSamples):
        (dx2es::GetStencilSize):
        (dx2es::GetAlphaSize):
        (dx2es::GetRedSize):
        (dx2es::GetGreenSize):
        (dx2es::GetBlueSize):
        (dx2es::GetDepthSize):
        (dx2es::GetSamplesFromMultisampleType):
        (dx2es::IsFormatChannelEquivalent):
        (dx2es::ConvertReadBufferFormat):
        (dx2es::ConvertBackBufferFormat):
        (dx2es::ConvertDepthStencilFormat):
        (dx::IsCompressedFormat):
        (dx::ComputeRowSize):
        (getTempPath):
        (writeFile):
        * src/libGLESv2/utilities.h: Added.
        (isDeviceLostError):
        * src/libGLESv2/vertexconversion.h: Added.
        (gl::Identity::convert):
        (gl::Cast::convert):
        (gl::Normalize::convert):
        (gl::FixedToFloat::convert):
        (gl::SimpleDefaultValues::zero):
        (gl::SimpleDefaultValues::one):
        (gl::NormalizedDefaultValues::zero):
        (gl::NormalizedDefaultValues::one):
        (gl::VertexDataConverter::convertArray):
        (gl::VertexDataConverter::pointerAddBytes):
        (gl::VertexDataConverter::copyComponent):

2013-07-17  Alex Christensen  <achristensen@apple.com>

        Made a repeatable process for updating ANGLE that does not include manually editing any files.
        https://bugs.webkit.org/show_bug.cgi?id=118815

        Reviewed by Dean Jackson.

        * src/compiler/glslang.y:
        * src/compiler/glslang_lex.cpp:
        * src/compiler/glslang_tab.cpp:
        * src/compiler/glslang_tab.h: Put YYLTYPE definition in %union instead of prologue and ran Bison.

2013-07-16  Alex Christensen  <achristensen@apple.com>

        Update ANGLE from r1987 to r2426 while keeping these changes:
        Keeping #if defined(_MSC_VER) around #pragma warning(disable: 4718) in DependencyGraph.cpp.
        Keeping include khrplatform.h instead of KHR/khrplatform.h in ShaderLang.h.
        Added static_casts in Intermediate.cpp to fix compiling on Mac.
        Changed enum bit fields to just enums for GCC in Types.h to fix compiling for GTK.
        Ran Bison on Mac after removing the unsupported %code tag (See diff uploaded to bug for details).
        Added YYLTYPE definition to glslang_tab.h which would have been put there by the unsupported %code tag.

        https://bugs.webkit.org/show_bug.cgi?id=118550

        Reviewed by Dean Jackson.

        * ANGLE.plist: Updated revision of ANGLE to 2426.
        * ANGLE.xcodeproj/project.pbxproj:
        * GNUmakefile.am:
        * Target.pri:
            Renamed DetectRecursion to DetectCallDepth and added builtin_symbol_table.
        * include/GLSLANG/ShaderLang.h:
        * src/common/version.h:
        * src/compiler/BaseTypes.h:
        (getQualifierString):
        * src/compiler/Common.h:
        * src/compiler/Compiler.cpp:
        (TCompiler::TCompiler):
        (TCompiler::Init):
        (TCompiler::compile):
        (TCompiler::detectCallDepth):
        (TCompiler::enforceTimingRestrictions):
        (TCompiler::limitExpressionComplexity):
        * src/compiler/ConstantUnion.h:
        (ConstantUnion::ConstantUnion):
        * src/compiler/DetectCallDepth.cpp: Added.
        (DetectCallDepth::FunctionNode::FunctionNode):
        (DetectCallDepth::FunctionNode::getName):
        (DetectCallDepth::FunctionNode::addCallee):
        (DetectCallDepth::FunctionNode::detectCallDepth):
        (DetectCallDepth::FunctionNode::reset):
        (DetectCallDepth::DetectCallDepth):
        (DetectCallDepth::~DetectCallDepth):
        (DetectCallDepth::visitAggregate):
        (DetectCallDepth::checkExceedsMaxDepth):
        (DetectCallDepth::resetFunctionNodes):
        (DetectCallDepth::detectCallDepthForFunction):
        (DetectCallDepth::detectCallDepth):
        (DetectCallDepth::findFunctionByName):
        * src/compiler/DetectCallDepth.h: Added.
        (DetectCallDepth::getInfoSink):
        * src/compiler/DetectRecursion.cpp: Removed.
        * src/compiler/DetectRecursion.h: Removed.
        * src/compiler/Diagnostics.cpp:
        (TDiagnostics::writeInfo):
        * src/compiler/ForLoopUnroll.cpp:
        (ForLoopUnroll::evaluateIntConstant):
        * src/compiler/InfoSink.cpp:
        (TInfoSinkBase::prefix):
        (TInfoSinkBase::location):
        (TInfoSinkBase::message):
        * src/compiler/InfoSink.h:
        * src/compiler/Initialize.cpp:
        (TBuiltIns::initialize):
        (IdentifyBuiltIns):
        (InitExtensionBehavior):
        * src/compiler/Intermediate.cpp: Updated and added static_casts to fix build errors on Mac.
        (TIntermediate::addSymbol):
        (TIntermediate::addBinaryMath):
        (TIntermediate::addAssign):
        (TIntermediate::addIndex):
        (TIntermediate::addUnaryMath):
        (TIntermediate::setAggregateOperator):
        (TIntermediate::addConversion):
        (TIntermediate::growAggregate):
        (TIntermediate::makeAggregate):
        (TIntermediate::addSelection):
        (TIntermediate::addComma):
        (TIntermediate::addConstantUnion):
        (TIntermediate::addSwizzle):
        (TIntermediate::addLoop):
        (TIntermediate::addBranch):
        (TIntermUnary::promote):
        (TIntermBinary::promote):
        (CompareStruct):
        (CompareStructure):
        (TIntermConstantUnion::fold):
        (TIntermediate::promoteConstantUnion):
        * src/compiler/OutputGLSL.cpp:
        (TOutputGLSL::visitSymbol):
        * src/compiler/OutputGLSL.h:
        * src/compiler/OutputGLSLBase.cpp:
        (TOutputGLSLBase::writeVariableType):
        (TOutputGLSLBase::writeConstantUnion):
        (TOutputGLSLBase::visitBinary):
        (TOutputGLSLBase::visitAggregate):
        (TOutputGLSLBase::getTypeName):
        (TOutputGLSLBase::hashFunctionName):
        (TOutputGLSLBase::structDeclared):
        (TOutputGLSLBase::declareStruct):
        * src/compiler/OutputGLSLBase.h:
        * src/compiler/OutputHLSL.cpp:
        (sh::OutputHLSL::OutputHLSL):
        (sh::OutputHLSL::header):
        (sh::OutputHLSL::visitSymbol):
        (sh::OutputHLSL::visitBinary):
        (sh::OutputHLSL::visitAggregate):
        (sh::OutputHLSL::visitSelection):
        (sh::OutputHLSL::visitLoop):
        (sh::OutputHLSL::handleExcessiveLoop):
        (sh::OutputHLSL::typeString):
        (sh::OutputHLSL::initializer):
        (sh::OutputHLSL::addConstructor):
        (sh::OutputHLSL::writeConstantUnion):
        (sh::OutputHLSL::decorateField):
        * src/compiler/OutputHLSL.h:
        * src/compiler/ParseHelper.cpp:
        (TParseContext::parseVectorFields):
        (TParseContext::parseMatrixFields):
        (TParseContext::error):
        (TParseContext::warning):
        (TParseContext::assignError):
        (TParseContext::unaryOpError):
        (TParseContext::binaryOpError):
        (TParseContext::precisionErrorCheck):
        (TParseContext::lValueErrorCheck):
        (TParseContext::globalErrorCheck):
        (TParseContext::reservedErrorCheck):
        (TParseContext::constructorErrorCheck):
        (TParseContext::voidErrorCheck):
        (TParseContext::boolErrorCheck):
        (TParseContext::samplerErrorCheck):
        (TParseContext::structQualifierErrorCheck):
        (TParseContext::parameterSamplerErrorCheck):
        (TParseContext::containsSampler):
        (TParseContext::arraySizeErrorCheck):
        (TParseContext::arrayQualifierErrorCheck):
        (TParseContext::arrayTypeErrorCheck):
        (TParseContext::arrayErrorCheck):
        (TParseContext::nonInitConstErrorCheck):
        (TParseContext::nonInitErrorCheck):
        (TParseContext::paramErrorCheck):
        (TParseContext::extensionErrorCheck):
        (TParseContext::findFunction):
        (TParseContext::isVariableBuiltIn):
        (TParseContext::executeInitializer):
        (TParseContext::addConstructor):
        (TParseContext::constructBuiltIn):
        (TParseContext::constructStruct):
        (TParseContext::addConstVectorNode):
        (TParseContext::addConstMatrixNode):
        (TParseContext::addConstArrayNode):
        (TParseContext::addConstStruct):
        (TParseContext::enterStructDeclaration):
        (TParseContext::structNestingErrorCheck):
        * src/compiler/ParseHelper.h:
        (TParseContext::TParseContext):
        (TParseContext::pragma):
        * src/compiler/PoolAlloc.cpp:
        (TPoolAllocator::allocate):
        * src/compiler/ShHandle.h:
        * src/compiler/ShaderLang.cpp:
        (ShInitBuiltInResources):
        * src/compiler/SymbolTable.cpp:
        (TType::TType):
        (TType::buildMangledName):
        (TType::getObjectSize):
        (TStructure::containsArrays):
        (TStructure::buildMangledName):
        (TStructure::calculateObjectSize):
        (TStructure::calculateDeepestNesting):
        (TSymbolTableLevel::relateToExtension):
        * src/compiler/SymbolTable.h:
        (TSymbol::relateToExtension):
        (TSymbol::getExtension):
        (TVariable::TVariable):
        (TVariable::setQualifier):
        (TVariable::shareConstPointer):
        * src/compiler/Types.h: Updated and changed enum bit fields to enums to fix compiling with GCC.
        (TField::TField):
        (TField::type):
        (TField::name):
        (NewPoolTFieldList):
        (TStructure::TStructure):
        (TStructure::name):
        (TStructure::fields):
        (TStructure::mangledName):
        (TStructure::objectSize):
        (TStructure::deepestNesting):
        (TType::TType):
        (TType::clearArrayness):
        (TType::getStruct):
        (TType::setStruct):
        (TType::getMangledName):
        (TType::getDeepestStructNesting):
        (TType::isStructureContainingArrays):
        (TPublicType::setBasic):
        * src/compiler/VariableInfo.cpp:
        (getUserDefinedVariableInfo):
        * src/compiler/builtin_symbol_table.cpp: Added.
        (builtin1):
        (builtin2):
        (builtin3):
        (InsertBuiltInFunctionsCommon):
        (InsertBuiltInFunctionsVertex):
        * src/compiler/builtin_symbol_table.h: Added.
        * src/compiler/glslang.l:
        * src/compiler/glslang.y:
        * src/compiler/glslang_lex.cpp:
        (yy_get_previous_state):
        (yy_try_NUL_trans):
        (yyget_lloc):
        (yyset_lloc):
        (string_input):
        (check_type):
        (reserved_word):
        (glslang_scan):
        * src/compiler/glslang_tab.cpp:
        (yysyntax_error):
        (yyerror):
        (glslang_parse):
        * src/compiler/glslang_tab.h: Readded YYLTYPE definition after Bison removed it.
        * src/compiler/intermOut.cpp:
        (TOutputTraverser::visitUnary):
        (TOutputTraverser::visitAggregate):
        (TOutputTraverser::visitConstantUnion):
        * src/compiler/intermediate.h:
        (TIntermNode::TIntermNode):
        (TIntermNode::~TIntermNode):
        (TIntermNode::getLine):
        (TIntermNode::setLine):
        (TIntermNode::getAsLoopNode):
        (TIntermConstantUnion::getIConst):
        (TIntermConstantUnion::getFConst):
        (TIntermConstantUnion::getBConst):
        (TIntermAggregate::TIntermAggregate):
        (TIntermTraverser::TIntermTraverser):
        (TIntermTraverser::getMaxDepth):
        (TIntermTraverser::incrementDepth):
        * src/compiler/localintermediate.h:
        * src/compiler/parseConst.cpp:
        (TConstTraverser::visitSymbol):
        (TConstTraverser::visitBinary):
        (TConstTraverser::visitUnary):
        (TConstTraverser::visitAggregate):
        (TConstTraverser::visitSelection):
        (TConstTraverser::visitConstantUnion):
        (TConstTraverser::visitLoop):
        (TConstTraverser::visitBranch):
        (TIntermediate::parseConstTree):
        * src/compiler/preprocessor/ExpressionParser.cpp:
        * src/compiler/timing/RestrictVertexShaderTiming.cpp:
        (RestrictVertexShaderTiming::visitSymbol):
            Updated ANGLE to r2426 and ran Bison.

2013-06-17  Darin Adler  <darin@apple.com>

        Sort all the Xcode project files
        https://bugs.webkit.org/show_bug.cgi?id=117696

        Reviewed by Anders Carlsson.

        * ANGLE.xcodeproj/project.pbxproj: Ran the sort-Xcode-project-file script.

2013-04-18  Krzysztof Wolanski  <k.wolanski@samsung.com>

        Add checking whether the compiler allows to use #pragma directive.
        https://bugs.webkit.org/show_bug.cgi?id=114740

        Reviewed by Andreas Kling.

        Some compilers may complain that #pragma warning is an undefined macro.

        * src/compiler/depgraph/DependencyGraph.cpp:

2013-04-11  Andras Becsi  <andras.becsi@digia.com>

        [Qt][Mac] Linking fails with Qt 5.1
        https://bugs.webkit.org/show_bug.cgi?id=114435

        Reviewed by Tor Arne Vestbø.

        Qt 5.1 enables C++11 by default when using clang on Mac
        and links against the libc++ standard library. As a result
        building the QtWebKit shared library fails when linking
        agains the ANGLE intermediate static library because libc++
        misses some symbols needed by ANGLE.
        Disable C++11 for the ANGLE intermediate library to fix the build.

        * ANGLE.pri:

2013-04-10  Benjamin Poulain  <bpoulain@apple.com>

        Mass remove all the empty directories

        Rubberstamped by Ryosuke Niwa.

        * src/libGLESv2/geometry: Removed.

2013-04-08  Ryosuke Niwa  <rniwa@webkit.org>

        Remove ANGLE.gyp
        https://bugs.webkit.org/show_bug.cgi?id=114245

        Unreviewed. Just removing an empty directory.

        * ANGLE.gyp: Removed.

2013-04-04  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Remove the gyp build
        https://bugs.webkit.org/show_bug.cgi?id=113942

        Reviewed by Gustavo Noronha Silva.

        * ANGLE.gyp/ANGLE.gyp: Removed.
        * ANGLE.gypi: Removed.

2013-03-20  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Build ANGLE sources into a separate library from libWebCore.la
        https://bugs.webkit.org/show_bug.cgi?id=112778

        Reviewed by Martin Robinson.

        * GNUmakefile.am: Added, sets up the libANGLE.la library.

2013-03-05  Kenneth Russell  <kbr@google.com>

        Upgrade ANGLE to r1987
        https://bugs.webkit.org/show_bug.cgi?id=111381

        Reviewed by Dean Jackson.

        * include/GLSLANG/ShaderLang.h:
        * src/common/version.h:
        * src/compiler/Compiler.cpp:
        (TCompiler::TCompiler):
        (TCompiler::Init):
        (TCompiler::compile):
        * src/compiler/ParseHelper.h:
        (TParseContext):
        * src/compiler/ShHandle.h:
        (TCompiler):
        * src/compiler/ShaderLang.cpp:
        (ShInitBuiltInResources):
        * src/compiler/UnfoldShortCircuit.cpp:
        (sh::UnfoldShortCircuit::visitSelection):
        * src/compiler/glslang.l:
        * src/compiler/glslang.y:
        * src/compiler/glslang_lex.cpp:
        (glslang_scan):
        * src/compiler/glslang_tab.cpp:
             Updated ANGLE to r1987.

2013-03-01  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Add ANGLE to the GTK+ gyp build
        https://bugs.webkit.org/show_bug.cgi?id=111128

        Reviewed by Dirk Pranke.

        Add files that build an ANGLE static library for GTK+ using gyp.

        * ANGLE.gyp/ANGLE.gyp: Added.
        * ANGLE.gypi: Added.

2013-02-22  Kenneth Russell  <kbr@google.com>

        Mac OS build broken by new ExpressionParser.cpp
        https://bugs.webkit.org/show_bug.cgi?id=110629

        Unreviewed build fix. Regenerated ExpressionParser with Bison 2.3.

        * src/compiler/preprocessor/ExpressionParser.cpp:

2013-02-21  Zhenyao Mo  <zmo@google.com>

        Roll ANGLE to r1833
        https://bugs.webkit.org/show_bug.cgi?id=110513

        Reviewed by Kenneth Russell.

        Upstream ANGLE r1833 includes webkit side local fixes
        1) r139758 build fix for -Wshorten-64-to-32
        2) r139665 build fix for uninitialized variables

        After this roll, WebKit side ANGLE is the same as upstream ANGLE r1833, except:
        1) include/GLSLANG/ShaderLang.h, where "KHR" is removed from include path.

        With this roll, we have EXT_draw_buffers support.
        
        * ANGLE.xcodeproj/project.pbxproj:
        * Target.pri:
        * include/GLSLANG/ShaderLang.h:
        * src/common/debug.cpp:
        * src/common/system.h: Added.
        * src/common/version.h:
        * src/compiler/ArrayBoundsClamper.cpp: Removed.
        * src/compiler/ArrayBoundsClamper.h: Removed.
        * src/compiler/Compiler.cpp:
        (TCompiler::TCompiler):
        (TCompiler::Init):
        (TCompiler::compile):
        (TCompiler::getArrayBoundsClamper):
        (TCompiler::getArrayIndexClampingStrategy):
        (TCompiler::getBuiltInFunctionEmulator):
        * src/compiler/DetectDiscontinuity.cpp:
        (sh::DetectLoopDiscontinuity::traverse):
        (sh::DetectLoopDiscontinuity::visitLoop):
        (sh):
        (sh::DetectLoopDiscontinuity::visitBranch):
        * src/compiler/DetectDiscontinuity.h:
        (DetectLoopDiscontinuity):
        * src/compiler/Initialize.cpp:
        (InitExtensionBehavior):
        * src/compiler/Intermediate.cpp:
        (TIntermConstantUnion::fold):
        (TIntermTraverser::hash):
        * src/compiler/MapLongVariableNames.cpp:
        (LongNameMap::Size):
        (MapLongVariableNames::mapGlobalLongName):
        * src/compiler/MapLongVariableNames.h:
        (LongNameMap):
        * src/compiler/OutputESSL.cpp:
        (TOutputESSL::TOutputESSL):
        * src/compiler/OutputESSL.h:
        (TOutputESSL):
        * src/compiler/OutputGLSL.cpp:
        (TOutputGLSL::TOutputGLSL):
        * src/compiler/OutputGLSL.h:
        (TOutputGLSL):
        * src/compiler/OutputGLSLBase.cpp:
        (TOutputGLSLBase::TOutputGLSLBase):
        (TOutputGLSLBase::writeConstantUnion):
        (TOutputGLSLBase::visitBinary):
        * src/compiler/OutputGLSLBase.h:
        (TOutputGLSLBase):
        * src/compiler/OutputHLSL.cpp:
        (sh::OutputHLSL::output):
        (sh::OutputHLSL::visitLoop):
        (sh::OutputHLSL::writeConstantUnion):
        * src/compiler/ParseHelper.cpp:
        (TParseContext::constructorErrorCheck):
        (PaParseStrings):
        * src/compiler/ParseHelper.h:
        * src/compiler/ShHandle.h:
        (TCompiler):
        * src/compiler/ShaderLang.cpp:
        (checkActiveUniformAndAttribMaxLengths):
        (checkMappedNameMaxLength):
        (getVariableInfo):
        (ShInitBuiltInResources):
        (ShCompile):
        (ShGetInfo):
        (ShGetActiveAttrib):
        (ShGetActiveUniform):
        (ShGetNameHashingEntry):
        * src/compiler/SymbolTable.h:
        (TFunction::getParamCount):
        (TFunction::getParam):
        (TSymbolTable::setDefaultPrecision):
        * src/compiler/TranslatorESSL.cpp:
        (TranslatorESSL::translate):
        * src/compiler/TranslatorGLSL.cpp:
        (TranslatorGLSL::translate):
        * src/compiler/ValidateLimitations.cpp:
        (ValidateLimitations::validateFunctionCall):
        * src/compiler/VariablePacker.cpp:
        (VariablePacker::GetNumRows):
        * src/compiler/glslang.h:
        * src/compiler/glslang.l:
        * src/compiler/glslang.y:
        * src/compiler/glslang_lex.cpp:
        (string_input):
        (glslang_scan):
        * src/compiler/glslang_tab.cpp:
        * src/compiler/preprocessor/ExpressionParser.cpp:
        * src/compiler/preprocessor/ExpressionParser.y:
        * src/compiler/preprocessor/Input.cpp:
        (pp::Input::Input):
        (pp::Input::read):
        * src/compiler/preprocessor/Input.h:
        (Input):
        (pp::Input::count):
        (pp::Input::string):
        (pp::Input::length):
        (Location):
        * src/compiler/preprocessor/Preprocessor.cpp:
        (pp::Preprocessor::init):
        * src/compiler/preprocessor/Preprocessor.h:
        (Preprocessor):
        * src/compiler/preprocessor/Tokenizer.cpp:
        (pp::Tokenizer::init):
        * src/compiler/preprocessor/Tokenizer.h:
        (Tokenizer):
        * src/compiler/preprocessor/Tokenizer.l:
        * src/third_party: Added.
        * src/third_party/compiler: Added.
        * src/third_party/compiler/ArrayBoundsClamper.cpp: Added.
        (ArrayBoundsClamper::ArrayBoundsClamper):
        (ArrayBoundsClamper::SetClampingStrategy):
        (ArrayBoundsClamper::MarkIndirectArrayBoundsForClamping):
        (ArrayBoundsClamper::OutputClampingFunctionDefinition):
        * src/third_party/compiler/ArrayBoundsClamper.h: Added.
        (ArrayBoundsClamper):
        (ArrayBoundsClamper::Cleanup):
        (ArrayBoundsClamper::GetArrayBoundsClampDefinitionNeeded):
        (ArrayBoundsClamper::SetArrayBoundsClampDefinitionNeeded):
        * src/third_party/compiler/LICENSE: Added.
        * src/third_party/compiler/README.angle: Added.

2013-02-04  David Kilzer  <ddkilzer@apple.com>

        Sort ANGLE Xcode project file.

        * ANGLE.xcodeproj/project.pbxproj:

2013-01-30  David Kilzer  <ddkilzer@apple.com>

        Remove useless comment from Base.xcconfig

        Rubber-stamped by Mark Rowe.

        * Configurations/Base.xcconfig: Remove comment.

2013-01-16  Allan Sandfeld Jensen  <allan.jensen@digia.com>

        Doesn't build with GCC 4.7+
        https://bugs.webkit.org/show_bug.cgi?id=106999

        Reviewed by Csaba Osztrogonác.

        Correct __GNU_C_MINOR__ macro to __GNUC_MINOR__.

        * src/compiler/preprocessor/ExpressionParser.y:

2013-01-15  David Kilzer  <ddkilzer@apple.com>

        BUILD FIX: Add SUPPORTED_PLATFORMS to Base.xcconfig

        * Configurations/Base.xcconfig: Add SUPPORTED_PLATFORMS so that
        Xcode knows we can build this project for all three platforms.
        Previously the Mac OS X SDKs were missing in the scheme picker.

2013-01-15  David Kilzer  <ddkilzer@apple.com>

        Upstream iOS changes for ANGLE project
        <http://webkit.org/b/106913>

        Reviewed by Joseph Pecoraro.

        * ANGLE.xcodeproj/project.pbxproj:
        - Use $(INSTALL_PATH_PREFIX) with CopyFiles build phase paths.
        - Add iOS.xcconfig to project.
        * Configurations/ANGLE.xcconfig:
        - Use INSTALL_PATH_ACTUAL instead of INSTALL_PATH.  (See below.)
        - Use $(INSTALL_PATH_PREFIX) with PUBLIC_HEADERS_FOLDER_PATH.
        * Configurations/Base.xcconfig:
        - Include iOS.xcconfig.
        - Add per-platform values for GCC_ENABLE_OBJC_GC and
          GCC_MODEL_TUNING.
        - Define INSTALL_PATH when building for macosx SDK.
        * Configurations/iOS.xcconfig: Add.  Note that missing include
        files are simply ignored without an error by Xcode.

2013-01-15  David Kilzer  <ddkilzer@apple.com>

        ANGLE should build with -Wshorten-64-to-32
        <http://webkit.org/b/106798>
        <http://code.google.com/p/angleproject/issues/detail?id=396>

        Reviewed by Kenneth Russell.

        Most changes below are simply to document issues with #pragma
        statements per request by upstream.  The change to osinclude.h
        is the only bug fix, which defines OS_TLSIndex in terms of
        pthread_key_t instead of unsigned int since pthread_key_t is a
        64-bit value on 64-bit Mac OS X.

        * Configurations/Base.xcconfig: Enable -Wshorten-64-to-32 by
        setting GCC_WARN_64_TO_32_BIT_CONVERSION to YES.
        * src/compiler/Intermediate.cpp:
        (TIntermTraverser::hash): Add #pragmas for clang to ignore
        -Wshorten-64-to-32 warning.
        * src/compiler/MapLongVariableNames.cpp:
        (LongNameMap::Size): Ditto.
        * src/compiler/ShaderLang.cpp:
        (getVariableInfo): Ditto.
        (ShGetInfo): Ditto.
        * src/compiler/ValidateLimitations.cpp:
        (ValidateLimitations::validateFunctionCall): Ditto.
        * src/compiler/glslang.l: Ditto.
        * src/compiler/glslang_lex.cpp: Ditto.
        * src/compiler/osinclude.h: Change type of OS_TLSIndex to
        pthread_key_t.  Define OS_INVALID_TLS_INDEX by using
        static_cast<OS_TLSIndex>(-1).
        * src/compiler/preprocessor/Input.cpp:
        (pp::Input::Input): Add #pragmas for clang to ignore
        -Wshorten-64-to-32 warning.
        * src/compiler/preprocessor/Tokenizer.cpp: Ditto.
        * src/compiler/preprocessor/Tokenizer.l: Ditto.

2013-01-14  David Kilzer  <ddkilzer@apple.com>

        Remove nonexistent file in ANGLE Xcode project

        * ANGLE.xcodeproj/project.pbxproj: Remove references to
        ossource_nspr.cpp which was removed in r139665.

2013-01-14  Dean Jackson  <dino@apple.com>

        Unreviewed QT build fix.

        * ANGLE.pri:

2013-01-14  Dean Jackson  <dino@apple.com>

        [ANGLE] Update ANGLE in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=106274

        Unreviewed attempted build fix.

        Remove the copy files stage. Make khrplatform.h a public header.

        * ANGLE.xcodeproj/project.pbxproj:
        * include/GLSLANG/ShaderLang.h:

2013-01-14  Max Vujovic  <mvujovic@adobe.com>

        [ANGLE] Update ANGLE in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=106274

        Reviewed by Dean Jackson.

        Update ANGLE to r1641.

        ANGLE parsers were generated with Bison 2.3.

        Additionally, perform the following changes to WebKit's ANGLE build system. Note that these
        changes only apply to WebKit's copy of ANGLE, and do not need to be upstreamed to ANGLE.
        (a) Remove all files in the libEGL and libGLESv2 directories because nobody is using them. 
            Add a README in each directory to explain why their contents are not copied over from
            ANGLE. This simplifies updating ANGLE in the future.
        (b) Remove the build_angle.xcodeproj file that no-one is using. It appears it was copied
            over from a gyp build of ANGLE. The Mac build uses ANGLE.xcodeproj.
        (c) Remove duplicate file entries in ANGLE.xcodeproj. Change its Xcode group structure to
            match ANGLE's directory structure.
        (d) Add a Copy Files task to ANGLE.xcodeproj to put the khrplatform.h header in the right
            place so ShaderLang.h can find it. ShaderLang.h is copied to
            <BuildDir>/usr/local/include/ANGLE/ShaderLang.h during the Copy Headers task, and it
            includes "KHR/khrplatform.h". Thus, we need to copy khrplatform.h to
            <BuildDir>/usr/local/include/ANGLE/KHR/khrplatform.h.

        Additionally, make one build fix in ANGLE source that should be upstreamed to ANGLE:
        (1) Before this patch in ExpressionParser.y, we toggled the "-Wpragmas" flag so compilers
            could ignore the pragmas that they didn't understand instead of generating an error.
            However, clang does not understand "-Wpragmas" itself. Instead, tt understands
            "-Wunknown-pragmas". Now, instead of trying to temporarily ignore pragmas, we apply the
            right flags to the right compiler versions. The new code in ExpressionParser.y looks
            like:

        """
        // Turn off uninitialized variable warnings triggered by the auto-generated pplval variable.
        // On gcc 4.7+, The flag is called "-Wmaybe-uninitialized".
        // On clang and gcc < 4.7, the flag is called "-Wuninitialized".
        #if !defined(__clang__) && ((__GNUC__ == 4 && __GNU_C_MINOR__ >= 7) || __GNUC__ >= 5)
        #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
        #else
        #pragma GCC diagnostic ignored "-Wuninitialized"
        #endif
        """

        * ANGLE.plist:
        * ANGLE.pri:
        * ANGLE.xcodeproj/project.pbxproj:
        * DerivedSources.pri:
        * Target.pri:
        * include/GLSLANG/ShaderLang.h:
        * src/build_angle.xcodeproj/project.pbxproj: Removed.
        * src/common/angleutils.h:
        * src/common/debug.cpp:
        (gl::ScopedPerfEventHelper::ScopedPerfEventHelper):
        * src/common/debug.h:
        * src/common/version.h:
        * src/compiler/Compiler.cpp:
        (TCompiler::Init):
        (TCompiler::compile):
        (TCompiler::clearResults):
        (TCompiler::collectAttribsUniforms):
        (TCompiler::enforcePackingRestrictions):
        * src/compiler/Diagnostics.cpp:
        (TDiagnostics::TDiagnostics):
        (TDiagnostics::writeInfo):
        (TDiagnostics::print):
        * src/compiler/Diagnostics.h:
        (TDiagnostics::numErrors):
        (TDiagnostics::numWarnings):
        (TDiagnostics):
        * src/compiler/DirectiveHandler.h:
        * src/compiler/HashNames.h: Added.
        * src/compiler/Intermediate.cpp:
        (TIntermTraverser::hash):
        * src/compiler/OutputESSL.cpp:
        (TOutputESSL::TOutputESSL):
        * src/compiler/OutputESSL.h:
        (TOutputESSL):
        * src/compiler/OutputGLSL.cpp:
        (TOutputGLSL::TOutputGLSL):
        * src/compiler/OutputGLSL.h:
        (TOutputGLSL):
        * src/compiler/OutputGLSLBase.cpp:
        (TOutputGLSLBase::TOutputGLSLBase):
        (TOutputGLSLBase::writeVariableType):
        (TOutputGLSLBase::writeFunctionParameters):
        (TOutputGLSLBase::writeConstantUnion):
        (TOutputGLSLBase::visitSymbol):
        (TOutputGLSLBase::visitBinary):
        (TOutputGLSLBase::visitAggregate):
        (TOutputGLSLBase::getTypeName):
        (TOutputGLSLBase::hashName):
        (TOutputGLSLBase::hashVariableName):
        (TOutputGLSLBase::hashFunctionName):
        * src/compiler/OutputGLSLBase.h:
        (TOutputGLSLBase):
        * src/compiler/OutputHLSL.cpp:
        (sh::OutputHLSL::OutputHLSL):
        (sh::OutputHLSL::header):
        (sh::OutputHLSL::visitAggregate):
        (sh::OutputHLSL::visitBranch):
        (sh::OutputHLSL::handleExcessiveLoop):
        * src/compiler/OutputHLSL.h:
        (OutputHLSL):
        * src/compiler/ParseHelper.cpp:
        (TParseContext::error):
        (TParseContext::nonInitConstErrorCheck):
        (PaParseStrings):
        * src/compiler/ParseHelper.h:
        (TParseContext::TParseContext):
        (TParseContext):
        (TParseContext::numErrors):
        * src/compiler/RenameFunction.h:
        (RenameFunction::visitAggregate):
        * src/compiler/ShHandle.h:
        (TCompiler::getHashFunction):
        (TCompiler::getNameMap):
        (TCompiler::getSymbolTable):
        (TCompiler):
        * src/compiler/ShaderLang.cpp:
        (ShInitBuiltInResources):
        (ShGetInfo):
        (ShGetNameHashingEntry):
        * src/compiler/SymbolTable.cpp:
        (TType::TType):
        (TType::isStructureContainingArrays):
        * src/compiler/SymbolTable.h:
        (TSymbolTable::findBuiltIn):
        (TSymbolTable):
        * src/compiler/TranslatorESSL.cpp:
        (TranslatorESSL::translate):
        * src/compiler/TranslatorGLSL.cpp:
        (TranslatorGLSL::translate):
        * src/compiler/Types.h:
        (TType):
        (TPublicType):
        (TPublicType::setBasic):
        (TPublicType::setAggregate):
        (TPublicType::setArray):
        (TPublicType::isStructureContainingArrays):
        * src/compiler/UnfoldShortCircuit.cpp:
        (sh::UnfoldShortCircuit::visitBinary):
        * src/compiler/VariableInfo.cpp:
        (getVariableInfo):
        (getUserDefinedVariableInfo):
        (TVariableInfo::TVariableInfo):
        (CollectAttribsUniforms::CollectAttribsUniforms):
        (CollectAttribsUniforms::visitAggregate):
        * src/compiler/VariableInfo.h:
        (TVariableInfo):
        (CollectAttribsUniforms):
        * src/compiler/VariablePacker.cpp: Added.
        (VariablePacker::GetNumComponentsPerRow):
        (VariablePacker::GetNumRows):
        (TVariableInfoComparer::operator()):
        (VariablePacker::makeColumnFlags):
        (VariablePacker::fillColumns):
        (VariablePacker::searchColumn):
        (VariablePacker::CheckVariablesWithinPackingLimits):
        * src/compiler/VariablePacker.h: Added.
        (VariablePacker):
        * src/compiler/VersionGLSL.cpp:
        (TVersionGLSL::visitAggregate):
        * src/compiler/VersionGLSL.h:
        (TVersionGLSL):
        * src/compiler/glslang.l:
        * src/compiler/glslang.y:
        * src/compiler/glslang_lex.cpp:
        (string_input):
        (glslang_finalize):
        (glslang_scan):
        * src/compiler/glslang_tab.cpp:
        * src/compiler/intermediate.h:
        (TIntermTraverser):
        * src/compiler/osinclude.h:
        (OS_GetTLSValue):
        * src/compiler/ossource_nspr.cpp:
        * src/compiler/preprocessor/DiagnosticsBase.cpp: Added.
        (pp):
        (pp::Diagnostics::~Diagnostics):
        (pp::Diagnostics::report):
        (pp::Diagnostics::severity):
        (pp::Diagnostics::message):
        * src/compiler/preprocessor/DiagnosticsBase.h: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/Diagnostics.h.
        (pp):
        (Diagnostics):
        * src/compiler/preprocessor/DirectiveHandlerBase.cpp: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/DirectiveHandlerBase.cpp.
        (pp):
        (pp::DirectiveHandler::~DirectiveHandler):
        * src/compiler/preprocessor/DirectiveHandlerBase.h: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/DirectiveHandler.h.
        (pp):
        (DirectiveHandler):
        * src/compiler/preprocessor/DirectiveParser.cpp: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/DirectiveParser.cpp.
        (getDirective):
        (isConditionalDirective):
        (isEOD):
        (skipUntilEOD):
        (isMacroNameReserved):
        (isMacroPredefined):
        (pp):
        (DefinedParser):
        (pp::DefinedParser::DefinedParser):
        (pp::DefinedParser::lex):
        (pp::DirectiveParser::DirectiveParser):
        (pp::DirectiveParser::lex):
        (pp::DirectiveParser::parseDirective):
        (pp::DirectiveParser::parseDefine):
        (pp::DirectiveParser::parseUndef):
        (pp::DirectiveParser::parseIf):
        (pp::DirectiveParser::parseIfdef):
        (pp::DirectiveParser::parseIfndef):
        (pp::DirectiveParser::parseElse):
        (pp::DirectiveParser::parseElif):
        (pp::DirectiveParser::parseEndif):
        (pp::DirectiveParser::parseError):
        (pp::DirectiveParser::parsePragma):
        (pp::DirectiveParser::parseExtension):
        (pp::DirectiveParser::parseVersion):
        (pp::DirectiveParser::parseLine):
        (pp::DirectiveParser::skipping):
        (pp::DirectiveParser::parseConditionalIf):
        (pp::DirectiveParser::parseExpressionIf):
        (pp::DirectiveParser::parseExpressionIfdef):
        * src/compiler/preprocessor/DirectiveParser.h: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/DirectiveParser.h.
        (pp):
        (DirectiveParser):
        (ConditionalBlock):
        (pp::DirectiveParser::ConditionalBlock::ConditionalBlock):
        * src/compiler/preprocessor/ExpressionParser.cpp: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/ExpressionParser.cpp.
        (yysyntax_error):
        (yylex):
        (yyerror):
        (pp):
        (pp::ExpressionParser::ExpressionParser):
        (pp::ExpressionParser::parse):
        * src/compiler/preprocessor/ExpressionParser.h: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/ExpressionParser.h.
        (pp):
        (ExpressionParser):
        * src/compiler/preprocessor/ExpressionParser.y: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/ExpressionParser.y.
        * src/compiler/preprocessor/Input.cpp: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/Input.cpp.
        (pp):
        (pp::Input::Input):
        (pp::Input::read):
        * src/compiler/preprocessor/Input.h: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/Input.h.
        (pp):
        (Input):
        (pp::Input::count):
        (pp::Input::string):
        (pp::Input::length):
        (Location):
        (pp::Input::Location::Location):
        (pp::Input::readLoc):
        * src/compiler/preprocessor/Lexer.cpp: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/Lexer.cpp.
        (pp):
        (pp::Lexer::~Lexer):
        * src/compiler/preprocessor/Lexer.h: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/Lexer.h.
        (pp):
        (Lexer):
        * src/compiler/preprocessor/Macro.cpp: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/Macro.cpp.
        (pp):
        (pp::Macro::equals):
        * src/compiler/preprocessor/Macro.h: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/Macro.h.
        (pp):
        (pp::Macro::Macro):
        (Macro):
        * src/compiler/preprocessor/MacroExpander.cpp: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/MacroExpander.cpp.
        (pp):
        (TokenLexer):
        (pp::TokenLexer::TokenLexer):
        (pp::TokenLexer::lex):
        (pp::MacroExpander::MacroExpander):
        (pp::MacroExpander::~MacroExpander):
        (pp::MacroExpander::lex):
        (pp::MacroExpander::getToken):
        (pp::MacroExpander::ungetToken):
        (pp::MacroExpander::isNextTokenLeftParen):
        (pp::MacroExpander::pushMacro):
        (pp::MacroExpander::popMacro):
        (pp::MacroExpander::expandMacro):
        (pp::MacroExpander::collectMacroArgs):
        (pp::MacroExpander::replaceMacroParams):
        * src/compiler/preprocessor/MacroExpander.h: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/MacroExpander.h.
        (pp):
        (MacroExpander):
        (MacroContext):
        (pp::MacroExpander::MacroContext::MacroContext):
        (pp::MacroExpander::MacroContext::empty):
        (pp::MacroExpander::MacroContext::get):
        (pp::MacroExpander::MacroContext::unget):
        * src/compiler/preprocessor/Preprocessor.cpp: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/Preprocessor.cpp.
        (pp):
        (PreprocessorImpl):
        (pp::PreprocessorImpl::PreprocessorImpl):
        (pp::Preprocessor::Preprocessor):
        (pp::Preprocessor::~Preprocessor):
        (pp::Preprocessor::init):
        (pp::Preprocessor::predefineMacro):
        (pp::Preprocessor::lex):
        * src/compiler/preprocessor/Preprocessor.h: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/Preprocessor.h.
        (pp):
        (Preprocessor):
        * src/compiler/preprocessor/SourceLocation.h: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/SourceLocation.h.
        (pp):
        (pp::SourceLocation::SourceLocation):
        (SourceLocation):
        (pp::SourceLocation::equals):
        (pp::operator==):
        (pp::operator!=):
        * src/compiler/preprocessor/Token.cpp: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/Token.cpp.
        (pp):
        (pp::Token::reset):
        (pp::Token::equals):
        (pp::Token::setAtStartOfLine):
        (pp::Token::setHasLeadingSpace):
        (pp::Token::setExpansionDisabled):
        (pp::Token::iValue):
        (pp::Token::uValue):
        (pp::Token::fValue):
        (pp::operator<<):
        * src/compiler/preprocessor/Token.h: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/Token.h.
        (pp):
        (pp::Token::Token):
        (Token):
        (pp::Token::atStartOfLine):
        (pp::Token::hasLeadingSpace):
        (pp::Token::expansionDisabled):
        (pp::operator==):
        (pp::operator!=):
        * src/compiler/preprocessor/Tokenizer.cpp: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/Tokenizer.cpp.
        (yy_buffer_state):
        (yy_trans_info):
        (yyguts_t):
        (yy_get_previous_state):
        (yy_try_NUL_trans):
        (input):
        (pprestart):
        (pp_switch_to_buffer):
        (pp_load_buffer_state):
        (pp_create_buffer):
        (pp_delete_buffer):
        (pp_init_buffer):
        (pp_flush_buffer):
        (pppush_buffer_state):
        (pppop_buffer_state):
        (ppensure_buffer_stack):
        (pp_scan_buffer):
        (pp_scan_string):
        (pp_scan_bytes):
        (yy_fatal_error):
        (ppget_extra):
        (ppget_lineno):
        (ppget_column):
        (ppget_in):
        (ppget_out):
        (ppget_leng):
        (ppget_text):
        (ppset_extra):
        (ppset_lineno):
        (ppset_column):
        (ppset_in):
        (ppset_out):
        (ppget_debug):
        (ppset_debug):
        (ppget_lval):
        (ppset_lval):
        (ppget_lloc):
        (ppset_lloc):
        (pplex_init):
        (pplex_init_extra):
        (yy_init_globals):
        (pplex_destroy):
        (yy_flex_strncpy):
        (yy_flex_strlen):
        (ppalloc):
        (pprealloc):
        (ppfree):
        (pp):
        (pp::Tokenizer::Tokenizer):
        (pp::Tokenizer::~Tokenizer):
        (pp::Tokenizer::init):
        (pp::Tokenizer::setFileNumber):
        (pp::Tokenizer::setLineNumber):
        (pp::Tokenizer::lex):
        (pp::Tokenizer::initScanner):
        (pp::Tokenizer::destroyScanner):
        * src/compiler/preprocessor/Tokenizer.h: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/Tokenizer.h.
        (pp):
        (Tokenizer):
        (Context):
        * src/compiler/preprocessor/Tokenizer.l: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/Tokenizer.l.
        * src/compiler/preprocessor/atom.c: Removed.
        * src/compiler/preprocessor/atom.h: Removed.
        * src/compiler/preprocessor/compile.h: Removed.
        * src/compiler/preprocessor/cpp.c: Removed.
        * src/compiler/preprocessor/cpp.h: Removed.
        * src/compiler/preprocessor/cppstruct.c: Removed.
        * src/compiler/preprocessor/generate_parser.sh: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/generate_parser.sh.
        * src/compiler/preprocessor/memory.c: Removed.
        * src/compiler/preprocessor/memory.h: Removed.
        * src/compiler/preprocessor/new/DiagnosticsBase.cpp: Removed.
        * src/compiler/preprocessor/new/new_file.cpp: Removed.
        * src/compiler/preprocessor/new/new_file2.cpp: Removed.
        * src/compiler/preprocessor/new/preprocessor.vcproj: Removed.
        * src/compiler/preprocessor/numeric_lex.h: Added.
        (pp):
        (pp::numeric_base_int):
        (pp::numeric_lex_int):
        (pp::numeric_lex_float):
        * src/compiler/preprocessor/parser.h: Removed.
        * src/compiler/preprocessor/pp_utils.h: Renamed from Source/ThirdParty/ANGLE/src/compiler/preprocessor/new/pp_utils.h.
        * src/compiler/preprocessor/preprocess.h: Removed.
        * src/compiler/preprocessor/scanner.c: Removed.
        * src/compiler/preprocessor/scanner.h: Removed.
        * src/compiler/preprocessor/slglobals.h: Removed.
        * src/compiler/preprocessor/symbols.c: Removed.
        * src/compiler/preprocessor/symbols.h: Removed.
        * src/compiler/preprocessor/tokens.c: Removed.
        * src/compiler/preprocessor/tokens.h: Removed.
        * src/libEGL/Config.cpp: Removed.
        * src/libEGL/Config.h: Removed.
        * src/libEGL/Display.cpp: Removed.
        * src/libEGL/Display.h: Removed.
        * src/libEGL/README: Added.
        * src/libEGL/Surface.cpp: Removed.
        * src/libEGL/Surface.h: Removed.
        * src/libEGL/libEGL.cpp: Removed.
        * src/libEGL/libEGL.def: Removed.
        * src/libEGL/libEGL.rc: Removed.
        * src/libEGL/libEGL.vcproj: Removed.
        * src/libEGL/main.cpp: Removed.
        * src/libEGL/main.h: Removed.
        * src/libEGL/resource.h: Removed.
        * src/libGLESv2/Blit.cpp: Removed.
        * src/libGLESv2/Blit.h: Removed.
        * src/libGLESv2/Buffer.cpp: Removed.
        * src/libGLESv2/Buffer.h: Removed.
        * src/libGLESv2/Context.cpp: Removed.
        * src/libGLESv2/Context.h: Removed.
        * src/libGLESv2/Fence.cpp: Removed.
        * src/libGLESv2/Fence.h: Removed.
        * src/libGLESv2/Framebuffer.cpp: Removed.
        * src/libGLESv2/Framebuffer.h: Removed.
        * src/libGLESv2/HandleAllocator.cpp: Removed.
        * src/libGLESv2/HandleAllocator.h: Removed.
        * src/libGLESv2/IndexDataManager.cpp: Removed.
        * src/libGLESv2/IndexDataManager.h: Removed.
        * src/libGLESv2/Program.cpp: Removed.
        * src/libGLESv2/Program.h: Removed.
        * src/libGLESv2/ProgramBinary.cpp: Removed.
        * src/libGLESv2/ProgramBinary.h: Removed.
        * src/libGLESv2/Query.cpp: Removed.
        * src/libGLESv2/Query.h: Removed.
        * src/libGLESv2/README: Added.
        * src/libGLESv2/Renderbuffer.cpp: Removed.
        * src/libGLESv2/Renderbuffer.h: Removed.
        * src/libGLESv2/ResourceManager.cpp: Removed.
        * src/libGLESv2/ResourceManager.h: Removed.
        * src/libGLESv2/Shader.cpp: Removed.
        * src/libGLESv2/Shader.h: Removed.
        * src/libGLESv2/Texture.cpp: Removed.
        * src/libGLESv2/Texture.h: Removed.
        * src/libGLESv2/VertexDataManager.cpp: Removed.
        * src/libGLESv2/VertexDataManager.h: Removed.
        * src/libGLESv2/libGLESv2.cpp: Removed.
        * src/libGLESv2/libGLESv2.def: Removed.
        * src/libGLESv2/libGLESv2.rc: Removed.
        * src/libGLESv2/libGLESv2.vcproj: Removed.
        * src/libGLESv2/main.cpp: Removed.
        * src/libGLESv2/main.h: Removed.
        * src/libGLESv2/mathutil.h: Removed.
        * src/libGLESv2/resource.h: Removed.
        * src/libGLESv2/utilities.cpp: Removed.
        * src/libGLESv2/utilities.h: Removed.
        * src/libGLESv2/vertexconversion.h: Removed.

2012-12-18  Max Vujovic  <mvujovic@adobe.com>

        [ANGLE] Use of uninitialized memory in ArrayBoundsClamper
        https://bugs.webkit.org/show_bug.cgi?id=105218

        Reviewed by Dean Jackson.

        TIntermBinary::addIndexClamp is uninitialized when the compile flag 
        SH_CLAMP_INDIRECT_ARRAY_BOUNDS is not set. Then, addIndexClamp is used in OutputGLSLBase. 
        CSS Shaders needs to do a first validation pass without the SH_CLAMP_INDIRECT_ARRAY_BOUNDS 
        flag and its effects. However, sometimes addIndexClamp is true, which inserts clamping code
        that causes a shader to fail compilation at the WebGL level.

        * src/compiler/intermediate.h:
        (TIntermBinary::TIntermBinary):

2012-10-29  Anders Carlsson  <andersca@apple.com>

        Build WebKit as C++11 on Mac
        https://bugs.webkit.org/show_bug.cgi?id=100720

        Reviewed by Daniel Bates.

        * Configurations/Base.xcconfig:
        Add CLANG_CXX_LANGUAGE_STANDARD=gnu++0x.

2012-10-28  Mark Rowe  <mrowe@apple.com>

        Simplify Xcode configuration settings that used to vary between OS versions.

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:

2012-10-28  Mark Rowe  <mrowe@apple.com>

        Remove references to unsupported OS and Xcode versions.

        Reviewed by Anders Carlsson.

        * Configurations/Base.xcconfig:
        * Configurations/CompilerVersion.xcconfig: Removed.
        * Configurations/DebugRelease.xcconfig:

2012-10-27  Dan Bernstein  <mitz@apple.com>

        REAL_PLATFORM_NAME build setting is no longer needed
        https://bugs.webkit.org/show_bug.cgi?id=100587

        Reviewed by Mark Rowe.

        Removed the definition of REAL_PLATFORM_NAME and replaced references to it with references
        to PLATFORM_NAME.

        * Configurations/Base.xcconfig:
        * Configurations/CompilerVersion.xcconfig:

2012-10-18  Dean Jackson  <dino@apple.com>

        Shader translator needs option to clamp uniform array accesses in vertex shaders
        https://bugs.webkit.org/show_bug.cgi?id=98977
        https://code.google.com/p/angleproject/issues/detail?id=49

        Reviewed by Alok Priyadarshi and Ken Russell.

        WebGL does not allow GLSL code to index a uniform array outside its bounds. Add a
        flag to the ANGLE compiler to insert clamp statements around such indexing.
        Since it is possible to access vec2/3/4 and mat2/3/4 components by array indexing,
        they must be similarly clamped.

        Unfortunately, it is currently not possible to always determine that the indexing is
        operating on a uniform variable. For example, suppose we have "uniform mat4 a". ANGLE
        is currently not able to tell us that the rvalue of "a[0]" is a uniform, just that
        it has a size of 4. Therefore, the clamping is done on all indirect array indexing.

        This will have a performance impact. Future enhancements may be able to determine
        cases where the clamping is not necessary. Currently only direct indexing is skipped
        (i.e. looking up a value using a constant index).

        The clamp insertion is only performed on the GLSL output. Direct3D already guarantees
        that out-of-bounds uniform array access returns a zero value.

        * ANGLE.xcodeproj/project.pbxproj:
        * Target.pri:
        * include/GLSLANG/ShaderLang.h: New compiler option.
        * src/compiler/ArrayBoundsClamper.cpp: Added.
        (ArrayBoundsClamper::ArrayBoundsClamper):
        (ArrayBoundsClamper::OutputClampingFunctionDefinition): Injects a clamping function for integers into GLSL source.
        (ArrayBoundsClamper::MarkIndirectArrayBoundsForClamping): Examines the AST looking for non-direct array indexing.
        * src/compiler/ArrayBoundsClamper.h: Added.
        (ArrayBoundsClamper):
        (ArrayBoundsClamper::GetArrayBoundsClampDefinitionNeeded):
        (ArrayBoundsClamper::SetArrayBoundsClampDefinitionNeeded): Marks the object as needing to output the clamping function.
        (ArrayBoundsClamper::Cleanup): Resets the state so that subsequent runs start fresh.
        * src/compiler/Compiler.cpp:
        (TCompiler::compile): Run the clamping code if the compile option was set.
        (TCompiler::clearResults):
        (TCompiler::getArrayBoundsClamper):
        * src/compiler/OutputGLSLBase.cpp:
        (TOutputGLSLBase::visitBinary): If the expression has been flagged, insert an appropriate "clamp" statement.
        * src/compiler/ShHandle.h:
        (TCompiler):
        * src/compiler/TranslatorESSL.cpp:
        (TranslatorESSL::translate):
        * src/compiler/TranslatorGLSL.cpp:
        (TranslatorGLSL::translate):
        * src/compiler/intermOut.cpp:
        (TType::getCompleteString): Add array size to intermediate tree output.
        * src/compiler/intermediate.h:
        (TIntermBinary::setAddIndexClamp): New flag for indicating a binary expression needs clamping.
        (TIntermBinary::getAddIndexClamp):
        (TIntermBinary):

2012-09-13  Mark Rowe  <mrowe@apple.com>

        <rdar://problem/12255720> Fix the build with newer Clang

        Reviewed by Sam Weinig.
        
        Clang generates a warning about the inclusion of trailing commas on the final enum item as it's apparently
        a C++11 extension. Remove them.
        
        * src/compiler/BaseTypes.h:
        * src/compiler/ExtensionBehavior.h:
        * src/compiler/ParseHelper.cpp:
        (TParseContext::parseVectorFields):
        * src/compiler/intermediate.h:

2012-09-13  Simon Hausmann  <simon.hausmann@nokia.com>

        [Qt] The ANGLE build on Windows breaks with GnuWin32's flex because it is too old
        https://bugs.webkit.org/show_bug.cgi?id=96359

        Reviewed by Tor Arne Vestbø.

        GnuWin32's flex is 2.5.4 and that is too old for ANGLE's preprocessor
        lexer. The only viable alternative I could find on Windows that provides
        binaries is the winflexbison distribution (http://sourceforge.net/projects/winflexbison/),
        so let's use that one instead.

        * DerivedSources.pri:

2012-09-12  Simon Hausmann  <simon.hausmann@nokia.com>

        [Qt] Build on Windows requires bison/flex in PATH
        https://bugs.webkit.org/show_bug.cgi?id=96358

        Reviewed by Tor Arne Vestbø.

        Use MAKEFILE_NOOP_COMMAND instead of the \n\t trick to generate a dummy command. Otherwise
        the PATH prepend trick will break because it generates a command line along the lines of
        (set PATH="...") && with just that trailing ampersand pair.

        * DerivedSources.pri:

2012-09-10  Dean Jackson  <dino@apple.com>

        [Apple] Install plist for Apple Open Source build system
        https://bugs.webkit.org/show_bug.cgi?id=96345

        Reviewed by Mark Rowe.

        Apple's build system requires a couple of files that describe where
        the 3rd party Open Source library came from, and what license it
        uses. These files are copied into /usr/local when the project is
        being installed.

        * ANGLE.plist: Added.
        * ANGLE.txt: Added.
        * ANGLE.xcodeproj/project.pbxproj:

2012-09-06  Andras Becsi  <andras.becsi@nokia.com>

        [ANGLE] Fix the build with gcc 4.7
        https://bugs.webkit.org/show_bug.cgi?id=95989

        Reviewed by Csaba Osztrogonác.

        The build fails because of a bogus warning about the auto-generated
        pplval variable. Unfortunately the warning is called -Wuninitialized
        in gcc 4.6 and -Wmaybe-uninitialized in gcc 4.7 thus we also need to
        ignore unknown pragmas not to break the build with compilers that do
        not recognize these options.

        * src/compiler/preprocessor/new/ExpressionParser.y:

2012-09-06  Simon Hausmann  <simon.hausmann@nokia.com>

        [Qt] Fix build with ANGLE on platforms that provide EGL/GLESv2
        https://bugs.webkit.org/show_bug.cgi?id=95965

        Reviewed by Tor Arne Vestbø.

        Add build rules to build ANGLE as a static library for the Qt port.

        * ANGLE.pri: Added.
        * ANGLE.pro: Added.
        * DerivedSources.pri: Added.
        * Target.pri: Added.

2012-08-24  Joshua Netterfield  <jnetterfield@rim.com>

        [CSS Shaders] [ANGLE] RenameFunction::RenameFunction may store references to temporary string
        https://bugs.webkit.org/show_bug.cgi?id=94736
        http://code.google.com/p/angleproject/issues/detail?id=360

        Reviewed by George Staikos.

        When RenameFunction::RenameFunction(const TString& oldFunctionName, const TString&
        newFunctionName) is called from TCompiler::rewriteCSSShader(TIntermNode*), references to
        the temporaries oldFunctionName and newFunctionName are stored as mOldFunctionName and
        mNewFunctionName. This results in undefined behaviour in visitAggregate.

        This same patch is being applied in upstream ANGLE, and is needed for CSS Shader
        sanitization.

        * src/compiler/RenameFunction.h:
        (RenameFunction::visitAggregate):
        (RenameFunction):

2012-07-18  Kristóf Kosztyó  <kkristof@inf.u-szeged.hu>

        [Qt] Buildfix after r122870.
        https://bugs.webkit.org/show_bug.cgi?id=89039

        Reviewed by Csaba Osztrogonác

        * src/compiler/preprocessor/new/MacroExpander.cpp:
        (pp::MacroExpander::ungetToken):

2012-07-17  Max Vujovic  <mvujovic@adobe.com>

        Update ANGLE in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=89039

        Reviewed by Dean Jackson and Mark Rowe.

        Update ANGLE to r1170, with the following modifications:

        (1) Use Bison 2.3 instead of Bison 2.4.2 to generate ExpressionParser.cpp and
        glslang_tab.cpp. I had to modify ExpressionParser.y to make it compatible with Bison
        2.3. The changes have been contributed back to ANGLE in r1224.

        (2) Continue to recognize QNX as POSIX in ANGLE. This has been contributed back to ANGLE
        in r1223.

        (3) Rename ANGLE/src/compiler/preprocessor/new/Diagnostic.cpp to DiagnosticBase.cpp.
        Rename ANGLE/src/compiler/preprocessor/new/DirectiveHandler.cpp to DirectiveHandlerBase.cpp.

        With the introduction of ANGLE's new preprocessor, there were two files named Diagnostic.cpp
        in ANGLE under different folders. This caused problems on the QT build when their object
        files, both named Diagnostic.o, tried to go in the same folder. Renaming one of them to
        DiagnosticBase.cpp avoids this conflict. The same situation occurred with
        DirectiveHandler.cpp. I will work on contributing this change back to ANGLE for future
        updates.

        (4) Add the following lines to glslang.y and ExpressionParser.y:
        #define YYENABLE_NLS 0
        #define YYLTYPE_IS_TRIVIAL 1

        Bison 2.3 doesn't first check that these macros are defined before reading their value,
        which causes the QT build to fail.

        We work around this issue in the same way in CSSGrammar.y.

        I will work on contributing this change back to ANGLE.

        * ANGLE.xcodeproj/project.pbxproj:
        * include/GLES2/gl2ext.h:
        * include/GLSLANG/ShaderLang.h:
        * src/build_angle.xcodeproj/project.pbxproj:
        * src/common/angleutils.h:
        * src/common/debug.cpp:
        (gl):
        (gl::output):
        (gl::trace):
        (gl::perfActive):
        (gl::ScopedPerfEventHelper::ScopedPerfEventHelper):
        (gl::ScopedPerfEventHelper::~ScopedPerfEventHelper):
        * src/common/version.h:
        * src/compiler/BuiltInFunctionEmulator.cpp:
        (BuiltInFunctionEmulator::IdentifyFunction):
        * src/compiler/BuiltInFunctionEmulator.h:
        * src/compiler/Compiler.cpp:
        (isWebGLBasedSpec):
        (TCompiler::compile):
        (TCompiler::rewriteCSSShader):
        (TCompiler::enforceTimingRestrictions):
        (TCompiler::enforceFragmentShaderTimingRestrictions):
        (TCompiler::enforceVertexShaderTimingRestrictions):
        * src/compiler/DetectDiscontinuity.cpp: Added.
        (sh::DetectLoopDiscontinuity::traverse):
        (sh):
        (sh::DetectLoopDiscontinuity::visitBranch):
        (sh::DetectLoopDiscontinuity::visitAggregate):
        (sh::containsLoopDiscontinuity):
        (sh::DetectGradientOperation::traverse):
        (sh::DetectGradientOperation::visitUnary):
        (sh::DetectGradientOperation::visitAggregate):
        (sh::containsGradientOperation):
        * src/compiler/DetectDiscontinuity.h: Added.
        (sh):
        (DetectLoopDiscontinuity):
        (DetectGradientOperation):
        * src/compiler/Diagnostics.cpp: Added.
        (TDiagnostics::TDiagnostics):
        (TDiagnostics::~TDiagnostics):
        (TDiagnostics::writeInfo):
        (TDiagnostics::writeDebug):
        (TDiagnostics::print):
        * src/compiler/Diagnostics.h: Added.
        (TDiagnostics):
        (TDiagnostics::infoSink):
        * src/compiler/DirectiveHandler.cpp: Added.
        (getBehavior):
        (TDirectiveHandler::TDirectiveHandler):
        (TDirectiveHandler::~TDirectiveHandler):
        (TDirectiveHandler::handleError):
        (TDirectiveHandler::handlePragma):
        (TDirectiveHandler::handleExtension):
        (TDirectiveHandler::handleVersion):
        * src/compiler/DirectiveHandler.h: Added.
        (TDirectiveHandler):
        (TDirectiveHandler::pragma):
        (TDirectiveHandler::extensionBehavior):
        * src/compiler/ExtensionBehavior.h:
        (getBehaviorString):
        * src/compiler/Initialize.cpp:
        (BuiltInConstants):
        (TBuiltIns::initialize):
        (IdentifyBuiltIns):
        * src/compiler/InitializeParseContext.cpp: Added.
        (InitializeParseContextIndex):
        (FreeParseContextIndex):
        (InitializeGlobalParseContext):
        (FreeParseContext):
        (GetGlobalParseContext):
        * src/compiler/InitializeParseContext.h:
        (TThreadParseContextRec):
        * src/compiler/Intermediate.cpp:
        (TIntermediate::addSelection):
        * src/compiler/MapLongVariableNames.cpp:
        * src/compiler/OutputHLSL.cpp:
        (sh::str):
        (sh::OutputHLSL::OutputHLSL):
        (sh::OutputHLSL::~OutputHLSL):
        (sh::OutputHLSL::output):
        (sh::OutputHLSL::header):
        (sh::OutputHLSL::visitBinary):
        (sh::OutputHLSL::visitUnary):
        (sh::OutputHLSL::visitAggregate):
        (sh::OutputHLSL::visitSelection):
        (sh::OutputHLSL::visitLoop):
        (sh::OutputHLSL::traverseStatements):
        (sh):
        (sh::OutputHLSL::handleExcessiveLoop):
        (sh::OutputHLSL::typeString):
        (sh::OutputHLSL::addConstructor):
        (sh::OutputHLSL::decorateField):
        * src/compiler/OutputHLSL.h:
        (sh):
        (OutputHLSL):
        * src/compiler/ParseHelper.cpp:
        (TParseContext::parseVectorFields):
        (TParseContext::parseMatrixFields):
        (TParseContext::error):
        (TParseContext::warning):
        (TParseContext::trace):
        (TParseContext::assignError):
        (TParseContext::unaryOpError):
        (TParseContext::binaryOpError):
        (TParseContext::precisionErrorCheck):
        (TParseContext::lValueErrorCheck):
        (TParseContext::constErrorCheck):
        (TParseContext::integerErrorCheck):
        (TParseContext::globalErrorCheck):
        (TParseContext::reservedErrorCheck):
        (TParseContext::constructorErrorCheck):
        (TParseContext::voidErrorCheck):
        (TParseContext::boolErrorCheck):
        (TParseContext::samplerErrorCheck):
        (TParseContext::structQualifierErrorCheck):
        (TParseContext::parameterSamplerErrorCheck):
        (TParseContext::arraySizeErrorCheck):
        (TParseContext::arrayQualifierErrorCheck):
        (TParseContext::arrayTypeErrorCheck):
        (TParseContext::arrayErrorCheck):
        (TParseContext::arraySetMaxSize):
        (TParseContext::nonInitConstErrorCheck):
        (TParseContext::nonInitErrorCheck):
        (TParseContext::paramErrorCheck):
        (TParseContext::extensionErrorCheck):
        (TParseContext::supportsExtension):
        (TParseContext::handleExtensionDirective):
        (TParseContext::handlePragmaDirective):
        (TParseContext::findFunction):
        (TParseContext::executeInitializer):
        (TParseContext::constructBuiltIn):
        (TParseContext::constructStruct):
        (TParseContext::addConstVectorNode):
        (TParseContext::addConstMatrixNode):
        (TParseContext::addConstArrayNode):
        (TParseContext::addConstStruct):
        (TParseContext::enterStructDeclaration):
        (TParseContext::structNestingErrorCheck):
        (PaParseStrings):
        * src/compiler/ParseHelper.h:
        (TParseContext::TParseContext):
        (TParseContext):
        (TParseContext::infoSink):
        (TParseContext::extensionBehavior):
        (TParseContext::pragma):
        * src/compiler/PoolAlloc.cpp:
        (TAllocation::checkGuardBlock):
        * src/compiler/Pragma.h: Added.
        (TPragma):
        (TPragma::TPragma):
        * src/compiler/RenameFunction.h: Added.
        (RenameFunction):
        (RenameFunction::RenameFunction):
        (RenameFunction::visitAggregate):
        * src/compiler/ShHandle.h:
        (TCompiler):
        * src/compiler/ShaderLang.cpp:
        (getVariableInfo):
        * src/compiler/SymbolTable.cpp:
        (TType::buildMangledName):
        * src/compiler/TranslatorHLSL.cpp:
        * src/compiler/UnfoldSelect.cpp: Removed.
        * src/compiler/UnfoldSelect.h: Removed.
        * src/compiler/UnfoldShortCircuit.cpp: Added.
        (sh::UnfoldShortCircuit::UnfoldShortCircuit):
        (sh):
        (sh::UnfoldShortCircuit::traverse):
        (sh::UnfoldShortCircuit::visitBinary):
        (sh::UnfoldShortCircuit::visitSelection):
        (sh::UnfoldShortCircuit::visitLoop):
        (sh::UnfoldShortCircuit::getNextTemporaryIndex):
        * src/compiler/UnfoldShortCircuit.h: Added.
        (sh):
        (UnfoldShortCircuit):
        * src/compiler/ValidateLimitations.cpp:
        * src/compiler/debug.cpp:
        * src/compiler/depgraph: Added.
        * src/compiler/depgraph/DependencyGraph.cpp: Added.
        (TDependencyGraph::TDependencyGraph):
        (TDependencyGraph::~TDependencyGraph):
        (TDependencyGraph::createArgument):
        (TDependencyGraph::createFunctionCall):
        (TDependencyGraph::getOrCreateSymbol):
        (TDependencyGraph::createSelection):
        (TDependencyGraph::createLoop):
        (TDependencyGraph::createLogicalOp):
        (TGraphLogicalOp::getOpString):
        * src/compiler/depgraph/DependencyGraph.h: Added.
        (TGraphNode):
        (TGraphNode::TGraphNode):
        (TGraphNode::~TGraphNode):
        (TGraphParentNode):
        (TGraphParentNode::TGraphParentNode):
        (TGraphParentNode::~TGraphParentNode):
        (TGraphParentNode::addDependentNode):
        (TGraphArgument):
        (TGraphArgument::TGraphArgument):
        (TGraphArgument::~TGraphArgument):
        (TGraphArgument::getIntermFunctionCall):
        (TGraphArgument::getArgumentNumber):
        (TGraphFunctionCall):
        (TGraphFunctionCall::TGraphFunctionCall):
        (TGraphFunctionCall::~TGraphFunctionCall):
        (TGraphFunctionCall::getIntermFunctionCall):
        (TGraphSymbol):
        (TGraphSymbol::TGraphSymbol):
        (TGraphSymbol::~TGraphSymbol):
        (TGraphSymbol::getIntermSymbol):
        (TGraphSelection):
        (TGraphSelection::TGraphSelection):
        (TGraphSelection::~TGraphSelection):
        (TGraphSelection::getIntermSelection):
        (TGraphLoop):
        (TGraphLoop::TGraphLoop):
        (TGraphLoop::~TGraphLoop):
        (TGraphLoop::getIntermLoop):
        (TGraphLogicalOp):
        (TGraphLogicalOp::TGraphLogicalOp):
        (TGraphLogicalOp::~TGraphLogicalOp):
        (TGraphLogicalOp::getIntermLogicalOp):
        (TDependencyGraph):
        (TDependencyGraph::begin):
        (TDependencyGraph::end):
        (TDependencyGraph::beginSamplerSymbols):
        (TDependencyGraph::endSamplerSymbols):
        (TDependencyGraph::beginUserDefinedFunctionCalls):
        (TDependencyGraph::endUserDefinedFunctionCalls):
        (TDependencyGraphTraverser):
        (TDependencyGraphTraverser::TDependencyGraphTraverser):
        (TDependencyGraphTraverser::visitSymbol):
        (TDependencyGraphTraverser::visitArgument):
        (TDependencyGraphTraverser::visitFunctionCall):
        (TDependencyGraphTraverser::visitSelection):
        (TDependencyGraphTraverser::visitLoop):
        (TDependencyGraphTraverser::visitLogicalOp):
        (TDependencyGraphTraverser::getDepth):
        (TDependencyGraphTraverser::incrementDepth):
        (TDependencyGraphTraverser::decrementDepth):
        (TDependencyGraphTraverser::clearVisited):
        (TDependencyGraphTraverser::markVisited):
        (TDependencyGraphTraverser::isVisited):
        * src/compiler/depgraph/DependencyGraphBuilder.cpp: Added.
        (TDependencyGraphBuilder::build):
        (TDependencyGraphBuilder::visitAggregate):
        (TDependencyGraphBuilder::visitFunctionDefinition):
        (TDependencyGraphBuilder::visitFunctionCall):
        (TDependencyGraphBuilder::visitAggregateChildren):
        (TDependencyGraphBuilder::visitSymbol):
        (TDependencyGraphBuilder::visitBinary):
        (TDependencyGraphBuilder::visitAssignment):
        (TDependencyGraphBuilder::visitLogicalOp):
        (TDependencyGraphBuilder::visitBinaryChildren):
        (TDependencyGraphBuilder::visitSelection):
        (TDependencyGraphBuilder::visitLoop):
        (TDependencyGraphBuilder::connectMultipleNodesToSingleNode):
        * src/compiler/depgraph/DependencyGraphBuilder.h: Added.
        (TDependencyGraphBuilder):
        (TNodeSetStack):
        (TDependencyGraphBuilder::TNodeSetStack::TNodeSetStack):
        (TDependencyGraphBuilder::TNodeSetStack::~TNodeSetStack):
        (TDependencyGraphBuilder::TNodeSetStack::getTopSet):
        (TDependencyGraphBuilder::TNodeSetStack::pushSet):
        (TDependencyGraphBuilder::TNodeSetStack::popSet):
        (TDependencyGraphBuilder::TNodeSetStack::popSetIntoNext):
        (TDependencyGraphBuilder::TNodeSetStack::insertIntoTopSet):
        (TDependencyGraphBuilder::TNodeSetStack::clear):
        (TNodeSetMaintainer):
        (TDependencyGraphBuilder::TNodeSetMaintainer::TNodeSetMaintainer):
        (TDependencyGraphBuilder::TNodeSetMaintainer::~TNodeSetMaintainer):
        (TNodeSetPropagatingMaintainer):
        (TDependencyGraphBuilder::TNodeSetPropagatingMaintainer::TNodeSetPropagatingMaintainer):
        (TDependencyGraphBuilder::TNodeSetPropagatingMaintainer::~TNodeSetPropagatingMaintainer):
        (TLeftmostSymbolMaintainer):
        (TDependencyGraphBuilder::TLeftmostSymbolMaintainer::TLeftmostSymbolMaintainer):
        (TDependencyGraphBuilder::TLeftmostSymbolMaintainer::~TLeftmostSymbolMaintainer):
        (TDependencyGraphBuilder::TDependencyGraphBuilder):
        (TDependencyGraphBuilder::build):
        * src/compiler/depgraph/DependencyGraphOutput.cpp: Added.
        (TDependencyGraphOutput::outputIndentation):
        (TDependencyGraphOutput::visitArgument):
        (TDependencyGraphOutput::visitFunctionCall):
        (TDependencyGraphOutput::visitSymbol):
        (TDependencyGraphOutput::visitSelection):
        (TDependencyGraphOutput::visitLoop):
        (TDependencyGraphOutput::visitLogicalOp):
        (TDependencyGraphOutput::outputAllSpanningTrees):
        * src/compiler/depgraph/DependencyGraphOutput.h: Added.
        (TDependencyGraphOutput):
        (TDependencyGraphOutput::TDependencyGraphOutput):
        * src/compiler/depgraph/DependencyGraphTraverse.cpp: Added.
        (TGraphNode::traverse):
        (TGraphParentNode::traverse):
        (TGraphArgument::traverse):
        (TGraphFunctionCall::traverse):
        (TGraphSymbol::traverse):
        (TGraphSelection::traverse):
        (TGraphLoop::traverse):
        (TGraphLogicalOp::traverse):
        * src/compiler/glslang.h:
        * src/compiler/glslang.l:
        * src/compiler/glslang.y:
        * src/compiler/glslang_lex.cpp:
        (yy_buffer_state):
        (yyguts_t):
        (yy_get_previous_state):
        (yy_try_NUL_trans):
        (input):
        (yyensure_buffer_stack):
        (yy_scan_bytes):
        (yyget_leng):
        (string_input):
        (yyerror):
        (glslang_finalize):
        (glslang_scan):
        * src/compiler/glslang_tab.cpp:
        * src/compiler/intermediate.h:
        (TIntermAggregate::TIntermAggregate):
        (TIntermAggregate::~TIntermAggregate):
        (TIntermAggregate::isUserDefined):
        (TIntermAggregate):
        (TIntermTraverser::~TIntermTraverser):
        * src/compiler/osinclude.h:
        * src/compiler/preprocessor/atom.c:
        (FindHashLoc):
        (PrintAtomTable):
        * src/compiler/preprocessor/cpp.c:
        (CPPpragma):
        (readCPPline):
        (PredefineIntMacro):
        (MacroExpand):
        * src/compiler/preprocessor/cpp.h:
        * src/compiler/preprocessor/memory.h:
        * src/compiler/preprocessor/new: Added properties allow-tabs, allow-tabs, allow-tabs, allow-tabs, allow-tabs, allow-tabs, allow-tabs, allow-tabs, allow-tabs, allow-tabs, allow-tabs, allow-tabs, allow-tabs, allow-tabs, allow-tabs, allow-tabs, allow-tabs, allow-tabs, allow-tabs, allow-tabs, allow-tabs, allow-tabs, allow-tabs, allow-tabs, allow-tabs, allow-tabs, allow-tabs, allow-tabs and allow-tabs.
        * src/compiler/preprocessor/new/Context.cpp: Removed.
        * src/compiler/preprocessor/new/Context.h: Removed.
        * src/compiler/preprocessor/new/Diagnostics.h: Added.
        (pp):
        (Diagnostics):
        * src/compiler/preprocessor/new/DiagnosticsBase.cpp: Added.
        (pp):
        (pp::Diagnostics::~Diagnostics):
        (pp::Diagnostics::report):
        (pp::Diagnostics::severity):
        * src/compiler/preprocessor/new/DirectiveHandler.h: Added.
        (pp):
        (DirectiveHandler):
        * src/compiler/preprocessor/new/DirectiveHandlerBase.cpp: Added.
        (pp):
        (pp::DirectiveHandler::~DirectiveHandler):
        * src/compiler/preprocessor/new/DirectiveParser.cpp: Added.
        (getDirective):
        (isConditionalDirective):
        (isEOD):
        (skipUntilEOD):
        (isMacroNameReserved):
        (isMacroPredefined):
        (pp):
        (DefinedParser):
        (pp::DefinedParser::DefinedParser):
        (pp::DefinedParser::lex):
        (pp::DirectiveParser::DirectiveParser):
        (pp::DirectiveParser::lex):
        (pp::DirectiveParser::parseDirective):
        (pp::DirectiveParser::parseDefine):
        (pp::DirectiveParser::parseUndef):
        (pp::DirectiveParser::parseIf):
        (pp::DirectiveParser::parseIfdef):
        (pp::DirectiveParser::parseIfndef):
        (pp::DirectiveParser::parseElse):
        (pp::DirectiveParser::parseElif):
        (pp::DirectiveParser::parseEndif):
        (pp::DirectiveParser::parseError):
        (pp::DirectiveParser::parsePragma):
        (pp::DirectiveParser::parseExtension):
        (pp::DirectiveParser::parseVersion):
        (pp::DirectiveParser::parseLine):
        (pp::DirectiveParser::skipping):
        (pp::DirectiveParser::parseConditionalIf):
        (pp::DirectiveParser::parseExpressionIf):
        (pp::DirectiveParser::parseExpressionIfdef):
        * src/compiler/preprocessor/new/DirectiveParser.h: Added.
        (pp):
        (DirectiveParser):
        (ConditionalBlock):
        (pp::DirectiveParser::ConditionalBlock::ConditionalBlock):
        * src/compiler/preprocessor/new/ExpressionParser.cpp: Added.
        (yysyntax_error):
        (yylex):
        (yyerror):
        (pp):
        (pp::ExpressionParser::ExpressionParser):
        (pp::ExpressionParser::parse):
        * src/compiler/preprocessor/new/ExpressionParser.h: Added.
        (pp):
        (ExpressionParser):
        * src/compiler/preprocessor/new/ExpressionParser.y: Added.
        * src/compiler/preprocessor/new/Input.cpp: Added property allow-tabs.
        (pp::Input::Input):
        (pp::Input::read):
        * src/compiler/preprocessor/new/Input.h: Added property allow-tabs.
        (pp):
        (Input):
        (pp::Input::count):
        (pp::Input::string):
        (pp::Input::length):
        (Location):
        (pp::Input::Location::Location):
        (pp::Input::readLoc):
        * src/compiler/preprocessor/new/Lexer.cpp: Added.
        (pp):
        (pp::Lexer::~Lexer):
        * src/compiler/preprocessor/new/Lexer.h: Added.
        (pp):
        (Lexer):
        * src/compiler/preprocessor/new/Macro.cpp: Added property allow-tabs.
        (pp::Macro::equals):
        * src/compiler/preprocessor/new/Macro.h: Added property allow-tabs.
        (pp):
        (pp::Macro::Macro):
        (Macro):
        * src/compiler/preprocessor/new/MacroExpander.cpp: Added.
        (pp):
        (TokenLexer):
        (pp::TokenLexer::TokenLexer):
        (pp::TokenLexer::lex):
        (pp::MacroExpander::MacroExpander):
        (pp::MacroExpander::~MacroExpander):
        (pp::MacroExpander::lex):
        (pp::MacroExpander::getToken):
        (pp::MacroExpander::ungetToken):
        (pp::MacroExpander::isNextTokenLeftParen):
        (pp::MacroExpander::pushMacro):
        (pp::MacroExpander::popMacro):
        (pp::MacroExpander::expandMacro):
        (pp::MacroExpander::collectMacroArgs):
        (pp::MacroExpander::replaceMacroParams):
        * src/compiler/preprocessor/new/MacroExpander.h: Added.
        (pp):
        (MacroExpander):
        (MacroContext):
        (pp::MacroExpander::MacroContext::MacroContext):
        (pp::MacroExpander::MacroContext::empty):
        (pp::MacroExpander::MacroContext::get):
        (pp::MacroExpander::MacroContext::unget):
        * src/compiler/preprocessor/new/Preprocessor.cpp: Added property allow-tabs.
        (PreprocessorImpl):
        (pp::PreprocessorImpl::PreprocessorImpl):
        (pp):
        (pp::Preprocessor::Preprocessor):
        (pp::Preprocessor::~Preprocessor):
        (pp::Preprocessor::init):
        (pp::Preprocessor::predefineMacro):
        (pp::Preprocessor::lex):
        * src/compiler/preprocessor/new/Preprocessor.h: Added property allow-tabs.
        (pp):
        (Preprocessor):
        * src/compiler/preprocessor/new/SourceLocation.h: Added.
        (pp):
        (pp::SourceLocation::SourceLocation):
        (SourceLocation):
        (pp::SourceLocation::equals):
        (pp::operator==):
        (pp::operator!=):
        * src/compiler/preprocessor/new/Token.cpp: Added property allow-tabs.
        (pp::Token::reset):
        (pp::Token::equals):
        (pp::Token::setAtStartOfLine):
        (pp::Token::setHasLeadingSpace):
        (pp):
        (pp::Token::setExpansionDisabled):
        (pp::operator<<):
        * src/compiler/preprocessor/new/Token.h: Added property allow-tabs.
        (pp::Token::Token):
        (Token):
        (pp::Token::atStartOfLine):
        (pp::Token::hasLeadingSpace):
        (pp::Token::expansionDisabled):
        (pp::operator==):
        (pp):
        (pp::operator!=):
        * src/compiler/preprocessor/new/Tokenizer.cpp: Added.
        (yy_buffer_state):
        (yy_trans_info):
        (yyguts_t):
        (yy_get_previous_state):
        (yy_try_NUL_trans):
        (input):
        (pprestart):
        (pp_switch_to_buffer):
        (pp_load_buffer_state):
        (pp_create_buffer):
        (pp_delete_buffer):
        (pp_init_buffer):
        (pp_flush_buffer):
        (pppush_buffer_state):
        (pppop_buffer_state):
        (ppensure_buffer_stack):
        (pp_scan_buffer):
        (pp_scan_string):
        (pp_scan_bytes):
        (yy_fatal_error):
        (ppget_extra):
        (ppget_lineno):
        (ppget_column):
        (ppget_in):
        (ppget_out):
        (ppget_leng):
        (ppget_text):
        (ppset_extra):
        (ppset_lineno):
        (ppset_column):
        (ppset_in):
        (ppset_out):
        (ppget_debug):
        (ppset_debug):
        (ppget_lval):
        (ppset_lval):
        (ppget_lloc):
        (ppset_lloc):
        (pplex_init):
        (pplex_init_extra):
        (yy_init_globals):
        (pplex_destroy):
        (yy_flex_strncpy):
        (yy_flex_strlen):
        (ppalloc):
        (pprealloc):
        (ppfree):
        (pp):
        (pp::Tokenizer::Tokenizer):
        (pp::Tokenizer::~Tokenizer):
        (pp::Tokenizer::init):
        (pp::Tokenizer::setFileNumber):
        (pp::Tokenizer::setLineNumber):
        (pp::Tokenizer::lex):
        (pp::Tokenizer::initScanner):
        (pp::Tokenizer::destroyScanner):
        * src/compiler/preprocessor/new/Tokenizer.h: Added.
        (pp):
        (Tokenizer):
        (Context):
        * src/compiler/preprocessor/new/Tokenizer.l: Added.
        * src/compiler/preprocessor/new/generate_parser.sh: Added property allow-tabs.
        * src/compiler/preprocessor/new/pp.l: Removed.
        * src/compiler/preprocessor/new/pp.y: Removed.
        * src/compiler/preprocessor/new/pp_lex.cpp: Removed.
        * src/compiler/preprocessor/new/pp_tab.cpp: Removed.
        * src/compiler/preprocessor/new/pp_tab.h: Removed.
        * src/compiler/preprocessor/new/pp_utils.h: Added.
        * src/compiler/preprocessor/new/preprocessor.vcproj: Added.
        * src/compiler/preprocessor/new/stl_utils.h: Removed.
        * src/compiler/preprocessor/new/token_type.h: Removed.
        * src/compiler/preprocessor/preprocess.h:
        * src/compiler/preprocessor/scanner.c:
        (InitScannerInput):
        * src/compiler/preprocessor/scanner.h:
        * src/compiler/preprocessor/symbols.h:
        * src/compiler/preprocessor/tokens.c:
        (ReadToken):
        (DumpTokenStream):
        * src/compiler/preprocessor/tokens.h:
        * src/compiler/timing: Added.
        * src/compiler/timing/RestrictFragmentShaderTiming.cpp: Added.
        (RestrictFragmentShaderTiming::RestrictFragmentShaderTiming):
        (RestrictFragmentShaderTiming::enforceRestrictions):
        (RestrictFragmentShaderTiming::validateUserDefinedFunctionCallUsage):
        (RestrictFragmentShaderTiming::beginError):
        (RestrictFragmentShaderTiming::isSamplingOp):
        (RestrictFragmentShaderTiming::visitArgument):
        (RestrictFragmentShaderTiming::visitSelection):
        (RestrictFragmentShaderTiming::visitLoop):
        (RestrictFragmentShaderTiming::visitLogicalOp):
        * src/compiler/timing/RestrictFragmentShaderTiming.h: Added.
        (RestrictFragmentShaderTiming):
        (RestrictFragmentShaderTiming::numErrors):
        * src/compiler/timing/RestrictVertexShaderTiming.cpp: Added.
        (RestrictVertexShaderTiming::visitSymbol):
        * src/compiler/timing/RestrictVertexShaderTiming.h: Added.
        (RestrictVertexShaderTiming):
        (RestrictVertexShaderTiming::RestrictVertexShaderTiming):
        (RestrictVertexShaderTiming::enforceRestrictions):
        (RestrictVertexShaderTiming::numErrors):
        * src/libEGL/Display.cpp:
        (egl):
        (egl::Display::getDepthTextureSupport):
        (egl::Display::getTexturePool):
        * src/libEGL/Display.h:
        (Display):
        * src/libEGL/Surface.cpp:
        (egl::Surface::Surface):
        (egl::Surface::release):
        (egl::Surface::resetSwapChain):
        (egl::Surface::swapRect):
        (egl):
        (egl::Surface::swap):
        (egl::Surface::postSubBuffer):
        * src/libEGL/Surface.h:
        (Surface):
        * src/libEGL/libEGL.cpp:
        * src/libGLESv2/Context.cpp:
        (gl::Context::makeCurrent):
        (gl::Context::markDxUniformsDirty):
        (gl):
        (gl::Context::getIntegerv):
        (gl::Context::getQueryParameterInfo):
        (gl::Context::applyRenderTarget):
        (gl::Context::applyState):
        (gl::Context::applyShaders):
        (gl::Context::applyTextures):
        (gl::Context::readPixels):
        (gl::Context::clear):
        (gl::Context::drawArrays):
        (gl::Context::drawElements):
        (gl::Context::supportsDepthTextures):
        (gl::Context::initExtensionString):
        (gl::Context::blitFramebuffer):
        (gl::VertexDeclarationCache::applyDeclaration):
        * src/libGLESv2/Context.h:
        (Context):
        * src/libGLESv2/Framebuffer.cpp:
        (gl::Framebuffer::~Framebuffer):
        (gl):
        (gl::Framebuffer::getNullColorbuffer):
        (gl::Framebuffer::completeness):
        * src/libGLESv2/Framebuffer.h:
        (Framebuffer):
        * src/libGLESv2/Program.cpp:
        (gl):
        (gl::AttributeBindings::AttributeBindings):
        (gl::AttributeBindings::~AttributeBindings):
        (gl::InfoLog::InfoLog):
        (gl::InfoLog::~InfoLog):
        (gl::InfoLog::getLength):
        (gl::InfoLog::getLog):
        (gl::InfoLog::appendSanitized):
        (gl::InfoLog::append):
        (gl::InfoLog::reset):
        (gl::Program::Program):
        (gl::Program::~Program):
        (gl::Program::attachShader):
        (gl::Program::detachShader):
        (gl::Program::getAttachedShadersCount):
        (gl::AttributeBindings::bindAttributeLocation):
        (gl::Program::bindAttributeLocation):
        (gl::Program::link):
        (gl::AttributeBindings::getAttributeBinding):
        (gl::Program::unlink):
        (gl::Program::getProgramBinary):
        (gl::Program::setProgramBinary):
        (gl::Program::getInfoLogLength):
        (gl::Program::getInfoLog):
        (gl::Program::getActiveAttribute):
        (gl::Program::getActiveAttributeCount):
        (gl::Program::getActiveAttributeMaxLength):
        (gl::Program::getActiveUniform):
        (gl::Program::getActiveUniformCount):
        (gl::Program::getActiveUniformMaxLength):
        (gl::Program::validate):
        (gl::Program::isValidated):
        * src/libGLESv2/Program.h:
        (gl):
        (AttributeBindings):
        (InfoLog):
        (Program):
        * src/libGLESv2/ProgramBinary.cpp: Added.
        (gl::str):
        (gl):
        (gl::Uniform::Uniform):
        (gl::Uniform::~Uniform):
        (gl::Uniform::isArray):
        (gl::UniformLocation::UniformLocation):
        (gl::ProgramBinary::ProgramBinary):
        (gl::ProgramBinary::~ProgramBinary):
        (gl::ProgramBinary::getPixelShader):
        (gl::ProgramBinary::getVertexShader):
        (gl::ProgramBinary::getAttributeLocation):
        (gl::ProgramBinary::getSemanticIndex):
        (gl::ProgramBinary::getUsedSamplerRange):
        (gl::ProgramBinary::getSamplerMapping):
        (gl::ProgramBinary::getSamplerTextureType):
        (gl::ProgramBinary::getUniformLocation):
        (gl::ProgramBinary::setUniform1fv):
        (gl::ProgramBinary::setUniform2fv):
        (gl::ProgramBinary::setUniform3fv):
        (gl::ProgramBinary::setUniform4fv):
        (gl::transposeMatrix):
        (gl::ProgramBinary::setUniformMatrix2fv):
        (gl::ProgramBinary::setUniformMatrix3fv):
        (gl::ProgramBinary::setUniformMatrix4fv):
        (gl::ProgramBinary::setUniform1iv):
        (gl::ProgramBinary::setUniform2iv):
        (gl::ProgramBinary::setUniform3iv):
        (gl::ProgramBinary::setUniform4iv):
        (gl::ProgramBinary::getUniformfv):
        (gl::ProgramBinary::getUniformiv):
        (gl::ProgramBinary::dirtyAllUniforms):
        (gl::ProgramBinary::applyUniforms):
        (gl::ProgramBinary::compileToBinary):
        (gl::ProgramBinary::packVaryings):
        (gl::ProgramBinary::linkVaryings):
        (gl::ProgramBinary::link):
        (gl::ProgramBinary::linkAttributes):
        (gl::ProgramBinary::linkUniforms):
        (gl::ProgramBinary::defineUniform):
        (gl::ProgramBinary::createUniform):
        (gl::ProgramBinary::decorateAttribute):
        (gl::ProgramBinary::undecorateUniform):
        (gl::ProgramBinary::applyUniformnbv):
        (gl::ProgramBinary::applyUniformnfv):
        (gl::ProgramBinary::applyUniform1iv):
        (gl::ProgramBinary::applyUniform2iv):
        (gl::ProgramBinary::applyUniform3iv):
        (gl::ProgramBinary::applyUniform4iv):
        (gl::ProgramBinary::applyUniformniv):
        (gl::ProgramBinary::isValidated):
        (gl::ProgramBinary::getActiveAttribute):
        (gl::ProgramBinary::getActiveAttributeCount):
        (gl::ProgramBinary::getActiveAttributeMaxLength):
        (gl::ProgramBinary::getActiveUniform):
        (gl::ProgramBinary::getActiveUniformCount):
        (gl::ProgramBinary::getActiveUniformMaxLength):
        (gl::ProgramBinary::validate):
        (gl::ProgramBinary::validateSamplers):
        (gl::ProgramBinary::getDxDepthRangeLocation):
        (gl::ProgramBinary::getDxDepthLocation):
        (gl::ProgramBinary::getDxCoordLocation):
        (gl::ProgramBinary::getDxHalfPixelSizeLocation):
        (gl::ProgramBinary::getDxFrontCCWLocation):
        (gl::ProgramBinary::getDxPointsOrLinesLocation):
        * src/libGLESv2/ProgramBinary.h: Added.
        (gl):
        (Uniform):
        (gl::Uniform::RegisterInfo::RegisterInfo):
        (RegisterInfo):
        (gl::Uniform::RegisterInfo::set):
        (UniformLocation):
        (ProgramBinary):
        (Sampler):
        * src/libGLESv2/Renderbuffer.cpp:
        (gl):
        (gl::RenderbufferTexture2D::RenderbufferTexture2D):
        (gl::RenderbufferTexture2D::~RenderbufferTexture2D):
        (gl::RenderbufferTexture2D::addProxyRef):
        (gl::RenderbufferTexture2D::releaseProxy):
        (gl::RenderbufferTexture2D::getRenderTarget):
        (gl::RenderbufferTexture2D::getDepthStencil):
        (gl::RenderbufferTexture2D::getWidth):
        (gl::RenderbufferTexture2D::getHeight):
        (gl::RenderbufferTexture2D::getInternalFormat):
        (gl::RenderbufferTexture2D::getD3DFormat):
        (gl::RenderbufferTexture2D::getSamples):
        (gl::RenderbufferTexture2D::getSerial):
        (gl::RenderbufferTextureCubeMap::RenderbufferTextureCubeMap):
        (gl::RenderbufferTextureCubeMap::~RenderbufferTextureCubeMap):
        (gl::RenderbufferTextureCubeMap::addProxyRef):
        (gl::RenderbufferTextureCubeMap::releaseProxy):
        (gl::RenderbufferTextureCubeMap::getRenderTarget):
        (gl::RenderbufferTextureCubeMap::getDepthStencil):
        (gl::RenderbufferTextureCubeMap::getWidth):
        (gl::RenderbufferTextureCubeMap::getHeight):
        (gl::RenderbufferTextureCubeMap::getInternalFormat):
        (gl::RenderbufferTextureCubeMap::getD3DFormat):
        (gl::RenderbufferTextureCubeMap::getSamples):
        (gl::RenderbufferTextureCubeMap::getSerial):
        (gl::DepthStencilbuffer::getDepthStencil):
        * src/libGLESv2/Renderbuffer.h:
        (gl):
        (RenderbufferTexture2D):
        (RenderbufferTextureCubeMap):
        * src/libGLESv2/Shader.cpp:
        (gl::Shader::getInfoLog):
        (gl::Shader::getSourceImpl):
        * src/libGLESv2/Shader.h:
        (Shader):
        (VertexShader):
        * src/libGLESv2/Texture.cpp:
        (gl::ConvertTextureFormatType):
        (gl::IsTextureFormatRenderable):
        (gl::GetTextureUsage):
        (gl):
        (gl::Image::createSurface):
        (gl::Image::updateSurface):
        (gl::Image::loadData):
        (gl::Image::loadAlphaData):
        (gl::Image::loadAlphaDataSSE2):
        (gl::Image::loadAlphaFloatData):
        (gl::Image::loadAlphaHalfFloatData):
        (gl::Image::loadLuminanceData):
        (gl::Image::loadLuminanceFloatData):
        (gl::Image::loadLuminanceHalfFloatData):
        (gl::Image::loadLuminanceAlphaData):
        (gl::Image::loadLuminanceAlphaFloatData):
        (gl::Image::loadLuminanceAlphaHalfFloatData):
        (gl::Image::loadRGBUByteData):
        (gl::Image::loadRGB565Data):
        (gl::Image::loadRGBFloatData):
        (gl::Image::loadRGBHalfFloatData):
        (gl::Image::loadRGBAUByteDataSSE2):
        (gl::Image::loadRGBAUByteData):
        (gl::Image::loadRGBA4444Data):
        (gl::Image::loadRGBA5551Data):
        (gl::Image::loadRGBAFloatData):
        (gl::Image::loadRGBAHalfFloatData):
        (gl::Image::loadBGRAData):
        (gl::Image::loadCompressedData):
        (gl::Image::copy):
        (gl::TextureStorage::TextureStorage):
        (gl::TextureStorage::isRenderTarget):
        (gl::TextureStorage::getUsage):
        (gl::Texture::setImage):
        (gl::Texture::setCompressedImage):
        (gl::Texture::subImage):
        (gl::Texture::subImageCompressed):
        (gl::TextureStorage2D::TextureStorage2D):
        (gl::Texture2D::getInternalFormat):
        (gl::Texture2D::getD3DFormat):
        (gl::Texture2D::copyImage):
        (gl::Texture2D::copySubImage):
        (gl::Texture2D::storage):
        (gl::Texture2D::isSamplerComplete):
        (gl::Texture2D::isCompressed):
        (gl::Texture2D::isDepth):
        (gl::Texture2D::createTexture):
        (gl::Texture2D::convertToRenderTarget):
        (gl::Texture2D::getRenderbuffer):
        (gl::Texture2D::getRenderTarget):
        (gl::Texture2D::getDepthStencil):
        (gl::TextureStorageCubeMap::TextureStorageCubeMap):
        (gl::TextureCubeMap::getWidth):
        (gl::TextureCubeMap::getHeight):
        (gl::TextureCubeMap::getInternalFormat):
        (gl::TextureCubeMap::getD3DFormat):
        (gl::TextureCubeMap::isSamplerComplete):
        (gl::TextureCubeMap::isCompressed):
        (gl::TextureCubeMap::createTexture):
        (gl::TextureCubeMap::convertToRenderTarget):
        (gl::TextureCubeMap::copyImage):
        (gl::TextureCubeMap::copySubImage):
        (gl::TextureCubeMap::storage):
        (gl::TextureCubeMap::getRenderbuffer):
        * src/libGLESv2/Texture.h:
        (Image):
        (TextureStorage):
        (Texture):
        (TextureStorage2D):
        (Texture2D):
        (TextureStorageCubeMap):
        (TextureCubeMap):
        * src/libGLESv2/VertexDataManager.cpp:
        (gl::VertexDataManager::prepareVertexData):
        * src/libGLESv2/libGLESv2.cpp:
        (checkTextureFormatType):
        (validateSubImageParams2D):
        (validateSubImageParamsCube):
        * src/libGLESv2/libGLESv2.vcproj:
        * src/libGLESv2/mathutil.h:
        (gl):
        * src/libGLESv2/utilities.cpp:
        (gl::IsDepthTexture):
        (gl):
        (gl::ComputePixelSize):
        (gl::ExtractFormat):
        (gl::ExtractType):
        (es2dx::ConvertCubeFace):
        (es2dx::ConvertRenderbufferFormat):
        (dx2es::GetStencilSize):
        (dx2es::GetDepthSize):
        (dx2es::IsDepthTextureFormat):
        (dx2es):
        (dx2es::IsStencilTextureFormat):
        (dx2es::ConvertDepthStencilFormat):
        * src/libGLESv2/utilities.h:
        (gl):
        (dx2es):

2012-07-11  Mark Rowe  <mrowe@apple.com>

        <http://webkit.org/b/91024> Build against the latest SDK when targeting older OS X versions.

        Reviewed by Dan Bernstein.

        The deployment target is already set to the version that we're targeting, and it's that setting
        which determines which functionality from the SDK is available to us.

        * Configurations/Base.xcconfig:

2012-06-22  Joshua Netterfield  <jnetterfield@rim.com>

        [BlackBerry] Sanitize GLSL code using ANGLE.

        BlackBerry port does not sanitize GLSL code with ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=89583

        Reviewed by Rob Buis.

        * src/compiler/osinclude.h: Recognises QNX as POSIX

2012-03-26  Dean Jackson  <dino@apple.com>

        Update ANGLE in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=81717

        Reviewed by Kenneth Russell.

        Update angleproject to r1009. Synced the source directory
        between the angle repository and WebKit. Ran the OS X Lion
        version of Bison over the glslang.l input which generates
        a slightly different output than angle provided.

        * include/EGL/eglext.h:
        * include/GLES2/gl2ext.h:
        * include/GLSLANG/ShaderLang.h:
        * src/common/RefCountObject.cpp: Renamed from Source/ThirdParty/ANGLE/src/libGLESv2/RefCountObject.cpp.
        (RefCountObject::RefCountObject):
        (RefCountObject::~RefCountObject):
        (RefCountObject::addRef):
        (RefCountObject::release):
        (RefCountObjectBindingPointer::set):
        * src/common/RefCountObject.h: Renamed from Source/ThirdParty/ANGLE/src/libGLESv2/RefCountObject.h.
        (RefCountObject):
        (RefCountObject::id):
        (RefCountObjectBindingPointer):
        (RefCountObjectBindingPointer::RefCountObjectBindingPointer):
        (RefCountObjectBindingPointer::~RefCountObjectBindingPointer):
        (RefCountObjectBindingPointer::get):
        (RefCountObjectBindingPointer::id):
        (RefCountObjectBindingPointer::operator ! ):
        (BindingPointer):
        (BindingPointer::set):
        (BindingPointer::get):
        (BindingPointer::operator -> ):
        * src/common/debug.cpp:
        (gl::output):
        * src/common/version.h:
        * src/compiler/BaseTypes.h:
        * src/compiler/Compiler.cpp:
        (TCompiler::TCompiler):
        (TCompiler::~TCompiler):
        (TCompiler::mapLongVariableNames):
        * src/compiler/ConstantUnion.h:
        (ConstantUnion::ConstantUnion):
        (ConstantUnion::operator==):
        (ConstantUnion::operator>):
        (ConstantUnion::operator<):
        * src/compiler/Intermediate.cpp:
        (TIntermConstantUnion::fold):
        * src/compiler/MapLongVariableNames.cpp:
        (LongNameMap::LongNameMap):
        (LongNameMap::~LongNameMap):
        (LongNameMap::GetInstance):
        (LongNameMap::Release):
        (LongNameMap::Find):
        (LongNameMap::Insert):
        (LongNameMap::Size):
        (MapLongVariableNames::MapLongVariableNames):
        (MapLongVariableNames::visitSymbol):
        (MapLongVariableNames::mapGlobalLongName):
        * src/compiler/MapLongVariableNames.h:
        (LongNameMap):
        (MapLongVariableNames):
        * src/compiler/OutputHLSL.cpp:
        (sh::OutputHLSL::OutputHLSL):
        (sh::OutputHLSL::header):
        (sh::OutputHLSL::visitSymbol):
        (sh::OutputHLSL::visitUnary):
        (sh::OutputHLSL::visitAggregate):
        (sh::OutputHLSL::visitLoop):
        (sh::OutputHLSL::handleExcessiveLoop):
        (sh::OutputHLSL::typeString):
        (sh::OutputHLSL::addConstructor):
        (sh::OutputHLSL::decorateUniform):
        * src/compiler/OutputHLSL.h:
        (OutputHLSL):
        * src/compiler/PoolAlloc.cpp:
        (TAllocation::checkGuardBlock):
        * src/compiler/ShHandle.h:
        (TCompiler):
        * src/compiler/SymbolTable.cpp:
        * src/compiler/SymbolTable.h:
        (TSymbolTable):
        (TSymbolTable::getOuterLevel):
        * src/compiler/VariableInfo.cpp:
        (getVariableDataType):
        * src/compiler/glslang.l:
        * src/compiler/glslang.y:
        * src/compiler/glslang_lex.cpp:
        (yy_buffer_state):
        (yyguts_t):
        (input):
        (yyensure_buffer_stack):
        (yy_scan_bytes):
        (yyget_leng):
        * src/compiler/glslang_tab.cpp:
        * src/compiler/osinclude.h:
        * src/compiler/preprocessor/cpp.c:
        * src/compiler/preprocessor/memory.c:
        * src/compiler/preprocessor/new/Context.cpp: Added.
        (isMacroNameReserved):
        (pp):
        (pp::Context::Context):
        (pp::Context::~Context):
        (pp::Context::init):
        (pp::Context::process):
        (pp::Context::defineMacro):
        (pp::Context::undefineMacro):
        (pp::Context::isMacroDefined):
        (pp::Context::reset):
        (pp::Context::defineBuiltInMacro):
        * src/compiler/preprocessor/new/Context.h: Added.
        (pp):
        (Context):
        (pp::Context::lexer):
        (pp::Context::output):
        * src/compiler/preprocessor/new/Input.cpp: Added.
        (pp):
        (pp::Input::Input):
        (pp::Input::eof):
        (pp::Input::read):
        (pp::Input::getChar):
        (pp::Input::peekChar):
        (pp::Input::switchToNextString):
        (pp::Input::isStringEmpty):
        (pp::Input::stringLength):
        * src/compiler/preprocessor/new/Input.h: Added.
        (pp):
        (Input):
        (pp::Input::error):
        (pp::Input::stringIndex):
        * src/compiler/preprocessor/new/Macro.cpp: Added.
        (pp):
        (pp::Macro::Macro):
        (pp::Macro::~Macro):
        * src/compiler/preprocessor/new/Macro.h: Added.
        (pp):
        (Macro):
        (pp::Macro::type):
        (pp::Macro::identifier):
        (pp::Macro::parameters):
        (pp::Macro::replacements):
        * src/compiler/preprocessor/new/Preprocessor.cpp: Added.
        (pp):
        (pp::Preprocessor::Preprocessor):
        (pp::Preprocessor::~Preprocessor):
        (pp::Preprocessor::init):
        (pp::Preprocessor::process):
        (pp::Preprocessor::reset):
        * src/compiler/preprocessor/new/Preprocessor.h: Added.
        (pp):
        (Preprocessor):
        (pp::Preprocessor::begin):
        (pp::Preprocessor::end):
        * src/compiler/preprocessor/new/Token.cpp: Added.
        (pp):
        (pp::Token::encodeLocation):
        (pp::Token::decodeLocation):
        (pp::Token::Token):
        (pp::Token::~Token):
        (pp::operator<<):
        * src/compiler/preprocessor/new/Token.h: Added.
        (pp):
        (Token):
        (pp::Token::location):
        (pp::Token::type):
        (pp::Token::value):
        * src/compiler/preprocessor/new/generate_parser.sh: Added.
        * src/compiler/preprocessor/new/pp.l: Added.
        * src/compiler/preprocessor/new/pp.y: Added.
        * src/compiler/preprocessor/new/pp_lex.cpp: Added.
        (yy_buffer_state):
        (yy_trans_info):
        (yyguts_t):
        (yy_get_previous_state):
        (yy_try_NUL_trans):
        (input):
        (pprestart):
        (pp_switch_to_buffer):
        (pp_load_buffer_state):
        (pp_create_buffer):
        (pp_delete_buffer):
        (pp_init_buffer):
        (pp_flush_buffer):
        (pppush_buffer_state):
        (pppop_buffer_state):
        (ppensure_buffer_stack):
        (pp_scan_buffer):
        (pp_scan_string):
        (pp_scan_bytes):
        (yy_push_state):
        (yy_pop_state):
        (yy_top_state):
        (yy_fatal_error):
        (ppget_extra):
        (ppget_lineno):
        (ppget_column):
        (ppget_in):
        (ppget_out):
        (ppget_leng):
        (ppget_text):
        (ppset_extra):
        (ppset_lineno):
        (ppset_column):
        (ppset_in):
        (ppset_out):
        (ppget_debug):
        (ppset_debug):
        (ppget_lval):
        (ppset_lval):
        (ppget_lloc):
        (ppset_lloc):
        (pplex_init):
        (pplex_init_extra):
        (yy_init_globals):
        (pplex_destroy):
        (yy_flex_strncpy):
        (yy_flex_strlen):
        (ppalloc):
        (pprealloc):
        (ppfree):
        (extractMacroName):
        (pp):
        (pp::Context::readInput):
        (pp::Context::initLexer):
        (pp::Context::destroyLexer):
        * src/compiler/preprocessor/new/pp_tab.cpp: Added.
        (YYLTYPE):
        (yysyntax_error):
        (yyerror):
        (pushConditionalBlock):
        (popConditionalBlock):
        (pp::Context::parse):
        * src/compiler/preprocessor/new/pp_tab.h: Added.
        (YYLTYPE):
        * src/compiler/preprocessor/new/stl_utils.h: Added.
        (pp):
        (Delete):
        (pp::Delete::operator()):
        (DeleteSecond):
        (pp::DeleteSecond::operator()):
        * src/compiler/preprocessor/new/token_type.h: Added.
        * src/compiler/preprocessor/scanner.c:
        (yylex_CPP):
        * src/compiler/preprocessor/symbols.c:
        * src/compiler/preprocessor/tokens.c:
        * src/libEGL/Config.cpp:
        (egl::ConfigSet::getConfigs):
        * src/libEGL/Display.cpp:
        (egl::Display::initialize):
        (egl::Display::terminate):
        (egl::Display::restoreLostDevice):
        (egl::Display::sync):
        (egl):
        (egl::Display::allocateEventQuery):
        (egl::Display::freeEventQuery):
        (egl::Display::getFloat32TextureSupport):
        (egl::Display::getFloat16TextureSupport):
        (egl::Display::getEventQuerySupport):
        (egl::Display::initExtensionString):
        (egl::Display::shareHandleSupported):
        (egl::Display::getOcclusionQuerySupport):
        (egl::Display::getInstancingSupport):
        * src/libEGL/Display.h:
        (Display):
        (egl::Display::isD3d9ExDevice):
        * src/libEGL/Surface.cpp:
        (egl::Surface::resetSwapChain):
        * src/libEGL/libEGL.cpp:
        * src/libEGL/libEGL.vcproj:
        * src/libGLESv2/Blit.cpp:
        (gl::Blit::setCommonBlitState):
        * src/libGLESv2/Buffer.h:
        (Buffer):
        * src/libGLESv2/Context.cpp:
        (gl::Context::Context):
        (gl::Context::~Context):
        (gl::Context::makeCurrent):
        (gl::Context::getActiveQuery):
        (gl):
        (gl::Context::createFence):
        (gl::Context::createQuery):
        (gl::Context::deleteQuery):
        (gl::Context::beginQuery):
        (gl::Context::endQuery):
        (gl::Context::getQuery):
        (gl::Context::applyVertexBuffer):
        (gl::Context::applyIndexBuffer):
        (gl::Context::readPixels):
        (gl::Context::clear):
        (gl::Context::drawArrays):
        (gl::Context::drawElements):
        (gl::Context::sync):
        (gl::Context::drawLineLoop):
        (gl::Context::supportsOcclusionQueries):
        (gl::Context::supportsInstancing):
        (gl::Context::setVertexAttribDivisor):
        (gl::Context::initExtensionString):
        (gl::VertexDeclarationCache::applyDeclaration):
        (gl::VertexDeclarationCache::markStateDirty):
        * src/libGLESv2/Context.h:
        (gl):
        (gl::VertexAttribute::VertexAttribute):
        (State):
        (VertexDeclarationCache):
        (Context):
        * src/libGLESv2/Fence.cpp:
        (gl::Fence::Fence):
        (gl::Fence::~Fence):
        (gl::Fence::setFence):
        * src/libGLESv2/Fence.h:
        (egl):
        (Fence):
        * src/libGLESv2/Framebuffer.cpp:
        (gl::Framebuffer::lookupRenderbuffer):
        (gl::Framebuffer::detachTexture):
        (gl::Framebuffer::completeness):
        * src/libGLESv2/Framebuffer.h:
        * src/libGLESv2/IndexDataManager.cpp:
        (gl::IndexDataManager::IndexDataManager):
        (gl::IndexDataManager::~IndexDataManager):
        (gl::computeRange):
        (gl::IndexDataManager::prepareIndexData):
        (gl::IndexDataManager::getCountingIndices):
        (gl):
        * src/libGLESv2/IndexDataManager.h:
        (IndexDataManager):
        * src/libGLESv2/Program.cpp:
        (gl::Program::getUniformLocation):
        (gl::Program::setUniform1fv):
        (gl::Program::setUniform2fv):
        (gl::Program::setUniform3fv):
        (gl::Program::setUniform4fv):
        (gl::Program::setUniform1iv):
        (gl::Program::setUniform2iv):
        (gl::Program::setUniform3iv):
        (gl::Program::setUniform4iv):
        (gl::Program::packVaryings):
        (gl::Program::linkVaryings):
        (gl::Program::defineUniform):
        (gl::Program::createUniform):
        (gl::Program::applyUniformnbv):
        (gl::Program::applyUniform1iv):
        (gl::Program::applyUniform2iv):
        (gl::Program::applyUniform3iv):
        (gl::Program::applyUniform4iv):
        (gl::Program::getInfoLog):
        * src/libGLESv2/Program.h:
        (Program):
        * src/libGLESv2/Query.cpp: Added.
        (gl):
        (gl::Query::Query):
        (gl::Query::~Query):
        (gl::Query::begin):
        (gl::Query::end):
        (gl::Query::getResult):
        (gl::Query::isResultAvailable):
        (gl::Query::getType):
        (gl::Query::testQuery):
        * src/libGLESv2/Query.h: Added.
        (gl):
        (Query):
        * src/libGLESv2/Renderbuffer.cpp:
        (gl):
        (gl::RenderbufferInterface::addProxyRef):
        (gl::RenderbufferInterface::releaseProxy):
        (gl::RenderbufferTexture::RenderbufferTexture):
        (gl::RenderbufferTexture::~RenderbufferTexture):
        (gl::RenderbufferTexture::addProxyRef):
        (gl::RenderbufferTexture::releaseProxy):
        (gl::Renderbuffer::addRef):
        (gl::Renderbuffer::release):
        * src/libGLESv2/Renderbuffer.h:
        (gl):
        (RenderbufferInterface):
        (RenderbufferTexture):
        (Renderbuffer):
        * src/libGLESv2/Shader.cpp:
        (gl::Shader::Shader):
        (gl::Shader::getInfoLog):
        (gl::Shader::getSourceImpl):
        (gl):
        (gl::Shader::initializeCompiler):
        (gl::Shader::parseVaryings):
        (gl::Shader::uncompile):
        (gl::Shader::compileToHLSL):
        (gl::VertexShader::uncompile):
        (gl::VertexShader::compile):
        (gl::VertexShader::parseAttributes):
        (gl::FragmentShader::compile):
        * src/libGLESv2/Shader.h:
        (Shader):
        (VertexShader):
        * src/libGLESv2/Texture.cpp:
        (gl::Texture2D::Texture2D):
        (gl::Texture2D::~Texture2D):
        (gl):
        (gl::Texture2D::addProxyRef):
        (gl::Texture2D::releaseProxy):
        (gl::Texture2D::getRenderbuffer):
        (gl::TextureCubeMap::TextureCubeMap):
        (gl::TextureCubeMap::~TextureCubeMap):
        (gl::TextureCubeMap::addProxyRef):
        (gl::TextureCubeMap::releaseProxy):
        (gl::TextureCubeMap::isSamplerComplete):
        (gl::TextureCubeMap::convertToRenderTarget):
        (gl::TextureCubeMap::getRenderbuffer):
        * src/libGLESv2/Texture.h:
        (Texture):
        (Texture2D):
        (TextureCubeMap):
        * src/libGLESv2/VertexDataManager.cpp:
        (gl::VertexDataManager::writeAttributeData):
        (gl::VertexDataManager::prepareVertexData):
        (gl::VertexDataManager::spaceRequired):
        (gl):
        * src/libGLESv2/VertexDataManager.h:
        (TranslatedAttribute):
        (VertexDataManager):
        * src/libGLESv2/libGLESv2.cpp:
        * src/libGLESv2/libGLESv2.def:
        * src/libGLESv2/libGLESv2.vcproj:
        * src/libGLESv2/utilities.cpp:
        (gl::IsInternalTextureTarget):
        * src/libGLESv2/utilities.h:
        (gl):

2012-03-09  Ashod Nakashian  <ashodnakashian@yahoo.com>

        Bash scripts should support LF endings only
        https://bugs.webkit.org/show_bug.cgi?id=79509

        Reviewed by David Kilzer.

        * src/compiler/generate_parser.sh: Added property svn:eol-style.

2012-02-21  Sam Weinig  <sam@webkit.org>

        Attempt to fix the Snow Leopard build.

        * Configurations/Base.xcconfig:

2012-02-21  Sam Weinig  <sam@webkit.org>

        Use libc++ when building with Clang on Mac
        https://bugs.webkit.org/show_bug.cgi?id=78981

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:

2012-01-07  Chris Marrin  <cmarrin@apple.com>

        Fixed a warning in GTK build of ANGLE

        Unreviewed.

        * src/compiler/DetectRecursion.cpp:
        (DetectRecursion::~DetectRecursion):

2012-01-06  Mark Rowe  <mrowe@apple.com>

        Regenerate a few files with a more appropriate version of bison.

        Rubber-stamped by Dan Bernstein.

        * src/compiler/glslang.l: Tweak the input so that it generates code that compiles without warnings.
        * src/compiler/glslang_lex.cpp:
        * src/compiler/glslang_tab.cpp:
        * src/compiler/glslang_tab.h:

2012-01-06  Chris Marrin  <cmarrin@apple.com>

        Update ANGLE in WebKit tree
        https://bugs.webkit.org/show_bug.cgi?id=75753

        Reviewed by Simon Fraser.

        Updated ANGLE to r939. Fixed a compiler error (missing case in switch statement)
        and added 5 new files to xcodeproj. Other than that it is a straight copy of
        the files from the ANGLE repository.

        * ANGLE.xcodeproj/project.pbxproj:
        * include/EGL/eglext.h:
        * include/EGL/eglplatform.h:
        * include/GLES2/gl2ext.h:
        * include/GLSLANG/ShaderLang.h:
        * src/common/debug.cpp:
        (gl::output):
        (gl::trace):
        (gl::perfActive):
        (gl::ScopedPerfEventHelper::ScopedPerfEventHelper):
        (gl::ScopedPerfEventHelper::~ScopedPerfEventHelper):
        * src/common/version.h:
        * src/compiler/BaseTypes.h:
        (getBasicString):
        * src/compiler/BuiltInFunctionEmulator.cpp: Added.
        (BuiltInFunctionEmulator::BuiltInFunctionEmulator):
        (BuiltInFunctionEmulator::SetFunctionCalled):
        (BuiltInFunctionEmulator::OutputEmulatedFunctionDefinition):
        (BuiltInFunctionEmulator::IdentifyFunction):
        (BuiltInFunctionEmulator::MarkBuiltInFunctionsForEmulation):
        (BuiltInFunctionEmulator::Cleanup):
        (BuiltInFunctionEmulator::GetEmulatedFunctionName):
        * src/compiler/BuiltInFunctionEmulator.h: Added.
        * src/compiler/Compiler.cpp:
        (TCompiler::TCompiler):
        (TCompiler::compile):
        (TCompiler::clearResults):
        (TCompiler::detectRecursion):
        (TCompiler::getMappedNameMaxLength):
        (TCompiler::getBuiltInFunctionEmulator):
        * src/compiler/DetectRecursion.cpp: Added.
        (DetectRecursion::FunctionNode::FunctionNode):
        (DetectRecursion::FunctionNode::getName):
        (DetectRecursion::FunctionNode::addCallee):
        (DetectRecursion::FunctionNode::detectRecursion):
        (DetectRecursion::DetectRecursion):
        (DetectRecursion::~DetectRecursion):
        (DetectRecursion::visitAggregate):
        (DetectRecursion::detectRecursion):
        (DetectRecursion::findFunctionByName):
        * src/compiler/DetectRecursion.h: Added.
        * src/compiler/ExtensionBehavior.h:
        * src/compiler/ForLoopUnroll.cpp:
        (ForLoopUnroll::MarkForLoopsWithIntegerIndicesForUnrolling):
        * src/compiler/ForLoopUnroll.h:
        * src/compiler/Initialize.cpp:
        (BuiltInFunctionsCommon):
        (BuiltInFunctionsVertex):
        (BuiltInFunctionsFragment):
        (TBuiltIns::initialize):
        (IdentifyBuiltIns):
        (InitExtensionBehavior):
        * src/compiler/MapLongVariableNames.cpp:
        (MapLongVariableNames::MapLongVariableNames):
        (MapLongVariableNames::visitSymbol):
        (MapLongVariableNames::mapVaryingLongName):
        * src/compiler/MapLongVariableNames.h:
        * src/compiler/OutputGLSLBase.cpp:
        (TOutputGLSLBase::visitUnary):
        (TOutputGLSLBase::visitAggregate):
        * src/compiler/OutputHLSL.cpp:
        (sh::OutputHLSL::OutputHLSL):
        (sh::OutputHLSL::header):
        (sh::OutputHLSL::visitSymbol):
        (sh::OutputHLSL::visitAggregate):
        (sh::OutputHLSL::visitSelection):
        (sh::OutputHLSL::visitLoop):
        (sh::OutputHLSL::handleExcessiveLoop):
        (sh::OutputHLSL::addConstructor):
        (sh::OutputHLSL::decorate):
        (sh::OutputHLSL::decorateUniform):
        * src/compiler/OutputHLSL.h:
        * src/compiler/ParseHelper.cpp:
        (TParseContext::recover):
        (TParseContext::reservedErrorCheck):
        (TParseContext::constructorErrorCheck):
        (TParseContext::extensionErrorCheck):
        (TParseContext::supportsExtension):
        (TParseContext::enterStructDeclaration):
        (TParseContext::exitStructDeclaration):
        (TParseContext::structNestingErrorCheck):
        * src/compiler/ParseHelper.h:
        (TParseContext::TParseContext):
        * src/compiler/PoolAlloc.h:
        (pool_allocator::pool_allocator):
        (pool_allocator::operator=):
        (pool_allocator::setAllocator):
        (pool_allocator::getAllocator):
        * src/compiler/ShHandle.h:
        * src/compiler/ShaderLang.cpp:
        (checkActiveUniformAndAttribMaxLengths):
        (checkMappedNameMaxLength):
        (getVariableInfo):
        (ShInitBuiltInResources):
        (ShGetInfo):
        * src/compiler/SymbolTable.cpp:
        (TType::computeDeepestStructNesting):
        * src/compiler/TranslatorESSL.cpp:
        (TranslatorESSL::translate):
        (TranslatorESSL::writeExtensionBehavior):
        * src/compiler/TranslatorGLSL.cpp:
        (TranslatorGLSL::translate):
        * src/compiler/Types.h:
        (TType::TType):
        (TType::copyType):
        (TType::setStruct):
        (TType::getDeepestStructNesting):
        * src/compiler/UnfoldSelect.cpp:
        (sh::UnfoldSelect::traverse):
        (sh::UnfoldSelect::visitSelection):
        (sh::UnfoldSelect::visitLoop):
        (sh::UnfoldSelect::getNextTemporaryIndex):
        * src/compiler/UnfoldSelect.h:
        * src/compiler/ValidateLimitations.cpp:
        * src/compiler/ValidateLimitations.h:
        * src/compiler/VariableInfo.cpp:
        (getVariableDataType):
        * src/compiler/generate_glslang_lexer.sh: Removed.
        * src/compiler/generate_glslang_parser.sh: Removed.
        * src/compiler/generate_parser.sh: Added.
        * src/compiler/glslang.l:
        * src/compiler/glslang.y:
        * src/compiler/glslang_lex.cpp:
        (yy_get_previous_state):
        (yy_try_NUL_trans):
        * src/compiler/glslang_tab.cpp:
        * src/compiler/glslang_tab.h:
        * src/compiler/intermOut.cpp:
        (TOutputTraverser::visitAggregate):
        * src/compiler/intermediate.h:
        (TIntermUnary::TIntermUnary):
        (TIntermUnary::setUseEmulatedFunction):
        (TIntermUnary::getUseEmulatedFunction):
        (TIntermAggregate::TIntermAggregate):
        (TIntermAggregate::setUseEmulatedFunction):
        (TIntermAggregate::getUseEmulatedFunction):
        * src/compiler/osinclude.h:
        * src/compiler/ossource_posix.cpp:
        (OS_AllocTLSIndex):
        (OS_SetTLSValue):
        (OS_FreeTLSIndex):
        * src/compiler/preprocessor/atom.c:
        (GrowAtomTable):
        * src/compiler/preprocessor/length_limits.h: Added.
        * src/compiler/preprocessor/scanner.h:
        * src/libEGL/Display.cpp:
        (egl::Display::getDisplay):
        (egl::Display::Display):
        (egl::Display::~Display):
        (egl::Display::initialize):
        (egl::Display::terminate):
        (egl::Display::startScene):
        (egl::Display::endScene):
        (egl::Display::createDevice):
        (egl::Display::initializeDevice):
        (egl::Display::resetDevice):
        (egl::Display::createWindowSurface):
        (egl::Display::createOffscreenSurface):
        (egl::Display::createContext):
        (egl::Display::restoreLostDevice):
        (egl::Display::notifyDeviceLost):
        (egl::Display::isDeviceLost):
        (egl::Display::testDeviceLost):
        (egl::Display::testDeviceResettable):
        (egl::Display::getDXT1TextureSupport):
        (egl::Display::getDXT3TextureSupport):
        (egl::Display::getDXT5TextureSupport):
        (egl::Display::getFloat32TextureSupport):
        (egl::Display::getFloat16TextureSupport):
        (egl::Display::getTexturePool):
        (egl::Display::initExtensionString):
        * src/libEGL/Display.h:
        * src/libEGL/Surface.cpp:
        (egl::Surface::Surface):
        (egl::Surface::initialize):
        (egl::Surface::resetSwapChain):
        (egl::Surface::subclassWindow):
        (egl::Surface::unsubclassWindow):
        (egl::Surface::swap):
        (egl::Surface::postSubBuffer):
        (egl::Surface::isPostSubBufferSupported):
        * src/libEGL/Surface.h:
        * src/libEGL/libEGL.cpp:
        * src/libEGL/libEGL.rc:
        * src/libEGL/libEGL.vcproj:
        * src/libGLESv2/Buffer.cpp:
        (gl::Buffer::bufferSubData):
        * src/libGLESv2/Context.cpp:
        (gl::Context::Context):
        (gl::Context::makeCurrent):
        (gl::Context::markAllStateDirty):
        (gl::Context::markContextLost):
        (gl::Context::isContextLost):
        (gl::Context::setPackReverseRowOrder):
        (gl::Context::getPackReverseRowOrder):
        (gl::Context::deleteProgram):
        (gl::Context::getDrawFramebuffer):
        (gl::Context::bindDrawFramebuffer):
        (gl::Context::useProgram):
        (gl::Context::setFramebufferZero):
        (gl::Context::getCurrentProgram):
        (gl::Context::getBooleanv):
        (gl::Context::getIntegerv):
        (gl::Context::getQueryParameterInfo):
        (gl::Context::applyRenderTarget):
        (gl::Context::applyState):
        (gl::Context::applyVertexBuffer):
        (gl::Context::applyIndexBuffer):
        (gl::Context::applyShaders):
        (gl::Context::applyTextures):
        (gl::Context::readPixels):
        (gl::Context::clear):
        (gl::Context::drawArrays):
        (gl::Context::drawElements):
        (gl::Context::sync):
        (gl::Context::drawClosingLine):
        (gl::Context::getResetStatus):
        (gl::Context::isResetNotificationEnabled):
        (gl::Context::supportsDXT1Textures):
        (gl::Context::supportsDXT3Textures):
        (gl::Context::supportsDXT5Textures):
        (gl::Context::supportsFloat32Textures):
        (gl::Context::supportsFloat32LinearFilter):
        (gl::Context::supportsFloat32RenderableTextures):
        (gl::Context::supportsFloat16Textures):
        (gl::Context::supportsFloat16LinearFilter):
        (gl::Context::supportsFloat16RenderableTextures):
        (gl::Context::initExtensionString):
        (gl::Context::initRendererString):
        (gl::Context::getRendererString):
        (gl::Context::blitFramebuffer):
        (gl::VertexDeclarationCache::applyDeclaration):
        (gl::VertexDeclarationCache::markStateDirty):
        * src/libGLESv2/Context.h:
        * src/libGLESv2/Fence.cpp:
        (gl::Fence::testFence):
        (gl::Fence::getFenceiv):
        * src/libGLESv2/Framebuffer.cpp:
        (gl::Framebuffer::setColorbuffer):
        (gl::Framebuffer::setDepthbuffer):
        (gl::Framebuffer::setStencilbuffer):
        (gl::Framebuffer::getColorbuffer):
        (gl::Framebuffer::getDepthbuffer):
        (gl::Framebuffer::getStencilbuffer):
        (gl::Framebuffer::hasStencil):
        (gl::Framebuffer::completeness):
        (gl::DefaultFramebuffer::DefaultFramebuffer):
        * src/libGLESv2/Framebuffer.h:
        * src/libGLESv2/IndexDataManager.cpp:
        (gl::IndexDataManager::prepareIndexData):
        (gl::IndexBuffer::IndexBuffer):
        (gl::IndexBuffer::getSerial):
        (gl::IndexBuffer::issueSerial):
        (gl::StreamingIndexBuffer::reserveSpace):
        (gl::StaticIndexBuffer::reserveSpace):
        (gl::StaticIndexBuffer::lookupRange):
        (gl::StaticIndexBuffer::addRange):
        * src/libGLESv2/IndexDataManager.h:
        (gl::StaticIndexBuffer::IndexRange::operator<):
        * src/libGLESv2/Program.cpp:
        (gl::Uniform::Uniform):
        (gl::Uniform::isArray):
        (gl::UniformLocation::UniformLocation):
        (gl::Program::Program):
        (gl::Program::detachShader):
        (gl::Program::getUsedSamplerRange):
        (gl::Program::getSamplerMapping):
        (gl::Program::getUniformLocation):
        (gl::Program::setUniform1fv):
        (gl::Program::setUniform2fv):
        (gl::Program::setUniform3fv):
        (gl::transposeMatrix):
        (gl::Program::setUniformMatrix2fv):
        (gl::Program::setUniformMatrix3fv):
        (gl::Program::setUniformMatrix4fv):
        (gl::Program::getUniformfv):
        (gl::Program::getUniformiv):
        (gl::Program::applyUniforms):
        (gl::Program::compileToBinary):
        (gl::Program::linkVaryings):
        (gl::Program::link):
        (gl::Program::defineUniform):
        (gl::Program::createUniform):
        (gl::Program::decorateAttribute):
        (gl::Program::undecorateUniform):
        (gl::Program::applyUniformnbv):
        (gl::Program::applyUniformnfv):
        (gl::Program::applyUniform1iv):
        (gl::Program::applyUniform2iv):
        (gl::Program::applyUniform3iv):
        (gl::Program::applyUniform4iv):
        (gl::Program::applyUniformniv):
        (gl::Program::appendToInfoLogSanitized):
        (gl::Program::unlink):
        (gl::Program::getActiveUniform):
        (gl::Program::getActiveUniformCount):
        (gl::Program::getActiveUniformMaxLength):
        (gl::Program::validateSamplers):
        (gl::Program::initializeConstantHandles):
        (gl::Program::getDxCoordLocation):
        * src/libGLESv2/Program.h:
        * src/libGLESv2/Renderbuffer.cpp:
        (gl::RenderbufferInterface::RenderbufferInterface):
        (gl::RenderbufferInterface::getRedSize):
        (gl::RenderbufferInterface::getGreenSize):
        (gl::RenderbufferInterface::getBlueSize):
        (gl::RenderbufferInterface::getAlphaSize):
        (gl::RenderbufferInterface::getDepthSize):
        (gl::RenderbufferInterface::getStencilSize):
        (gl::RenderbufferTexture::RenderbufferTexture):
        (gl::RenderbufferTexture::~RenderbufferTexture):
        (gl::RenderbufferTexture::getRenderTarget):
        (gl::RenderbufferTexture::getDepthStencil):
        (gl::RenderbufferTexture::getWidth):
        (gl::RenderbufferTexture::getHeight):
        (gl::RenderbufferTexture::getInternalFormat):
        (gl::RenderbufferTexture::getD3DFormat):
        (gl::RenderbufferTexture::getSamples):
        (gl::RenderbufferTexture::getSerial):
        (gl::Renderbuffer::Renderbuffer):
        (gl::Renderbuffer::~Renderbuffer):
        (gl::Renderbuffer::getRenderTarget):
        (gl::Renderbuffer::getDepthStencil):
        (gl::Renderbuffer::getWidth):
        (gl::Renderbuffer::getHeight):
        (gl::Renderbuffer::getInternalFormat):
        (gl::Renderbuffer::getD3DFormat):
        (gl::Renderbuffer::getRedSize):
        (gl::Renderbuffer::getGreenSize):
        (gl::Renderbuffer::getBlueSize):
        (gl::Renderbuffer::getAlphaSize):
        (gl::Renderbuffer::getDepthSize):
        (gl::Renderbuffer::getStencilSize):
        (gl::Renderbuffer::getSamples):
        (gl::Renderbuffer::getSerial):
        (gl::Renderbuffer::setStorage):
        (gl::RenderbufferStorage::getD3DFormat):
        (gl::RenderbufferStorage::issueCubeSerials):
        (gl::Colorbuffer::Colorbuffer):
        (gl::Colorbuffer::getRenderTarget):
        (gl::Depthbuffer::Depthbuffer):
        (gl::Stencilbuffer::Stencilbuffer):
        * src/libGLESv2/Renderbuffer.h:
        (gl::RenderbufferInterface::~RenderbufferInterface):
        * src/libGLESv2/Shader.cpp:
        (gl::Shader::getTranslatedSourceLength):
        (gl::Shader::getSourceImpl):
        (gl::Shader::getSource):
        (gl::Shader::getTranslatedSource):
        * src/libGLESv2/Shader.h:
        * src/libGLESv2/Texture.cpp:
        (gl::ConvertTextureFormatType):
        (gl::IsTextureFormatRenderable):
        (gl::Image::Image):
        (gl::Image::~Image):
        (gl::Image::redefine):
        (gl::Image::createSurface):
        (gl::Image::lock):
        (gl::Image::unlock):
        (gl::Image::isRenderableFormat):
        (gl::Image::getD3DFormat):
        (gl::Image::getSurface):
        (gl::Image::setManagedSurface):
        (gl::Image::updateSurface):
        (gl::Image::loadData):
        (gl::Image::loadAlphaData):
        (gl::Image::loadAlphaFloatData):
        (gl::Image::loadAlphaHalfFloatData):
        (gl::Image::loadLuminanceData):
        (gl::Image::loadLuminanceFloatData):
        (gl::Image::loadLuminanceHalfFloatData):
        (gl::Image::loadLuminanceAlphaData):
        (gl::Image::loadLuminanceAlphaFloatData):
        (gl::Image::loadLuminanceAlphaHalfFloatData):
        (gl::Image::loadRGBUByteData):
        (gl::Image::loadRGB565Data):
        (gl::Image::loadRGBFloatData):
        (gl::Image::loadRGBHalfFloatData):
        (gl::Image::loadRGBAUByteDataSSE2):
        (gl::Image::loadRGBAUByteData):
        (gl::Image::loadRGBA4444Data):
        (gl::Image::loadRGBA5551Data):
        (gl::Image::loadRGBAFloatData):
        (gl::Image::loadRGBAHalfFloatData):
        (gl::Image::loadBGRAData):
        (gl::Image::loadCompressedData):
        (gl::FlipCopyDXT1BlockFull):
        (gl::FlipCopyDXT1BlockHalf):
        (gl::FlipCopyDXT3BlockFull):
        (gl::FlipCopyDXT3BlockHalf):
        (gl::FlipCopyDXT5BlockFull):
        (gl::FlipCopyDXT5BlockHalf):
        (gl::Image::loadDXT1Data):
        (gl::Image::loadDXT3Data):
        (gl::Image::loadDXT5Data):
        (gl::Image::copy):
        (gl::TextureStorage::TextureStorage):
        (gl::TextureStorage::~TextureStorage):
        (gl::TextureStorage::isRenderTarget):
        (gl::TextureStorage::isManaged):
        (gl::TextureStorage::getPool):
        (gl::TextureStorage::getTextureSerial):
        (gl::TextureStorage::issueTextureSerial):
        (gl::Texture::Texture):
        (gl::Texture::~Texture):
        (gl::Texture::setMinFilter):
        (gl::Texture::setMagFilter):
        (gl::Texture::setWrapS):
        (gl::Texture::setWrapT):
        (gl::Texture::setUsage):
        (gl::Texture::getMinFilter):
        (gl::Texture::getMagFilter):
        (gl::Texture::getWrapS):
        (gl::Texture::getWrapT):
        (gl::Texture::getUsage):
        (gl::Texture::setImage):
        (gl::Texture::setCompressedImage):
        (gl::Texture::subImage):
        (gl::Texture::subImageCompressed):
        (gl::Texture::getTexture):
        (gl::Texture::hasDirtyParameters):
        (gl::Texture::hasDirtyImages):
        (gl::Texture::resetDirty):
        (gl::Texture::getTextureSerial):
        (gl::Texture::getRenderTargetSerial):
        (gl::Texture::isImmutable):
        (gl::Texture::creationLevels):
        (gl::Texture::getBlitter):
        (gl::Texture::copyToRenderTarget):
        (gl::TextureStorage2D::TextureStorage2D):
        (gl::TextureStorage2D::~TextureStorage2D):
        (gl::TextureStorage2D::getSurfaceLevel):
        (gl::TextureStorage2D::getBaseTexture):
        (gl::TextureStorage2D::getRenderTargetSerial):
        (gl::Texture2D::Texture2D):
        (gl::Texture2D::~Texture2D):
        (gl::Texture2D::getWidth):
        (gl::Texture2D::getHeight):
        (gl::Texture2D::getInternalFormat):
        (gl::Texture2D::getType):
        (gl::Texture2D::redefineImage):
        (gl::Texture2D::setImage):
        (gl::Texture2D::bindTexImage):
        (gl::Texture2D::releaseTexImage):
        (gl::Texture2D::setCompressedImage):
        (gl::Texture2D::commitRect):
        (gl::Texture2D::copyImage):
        (gl::Texture2D::copySubImage):
        (gl::Texture2D::storage):
        (gl::Texture2D::isSamplerComplete):
        (gl::Texture2D::isMipmapComplete):
        (gl::Texture2D::getBaseTexture):
        (gl::Texture2D::createTexture):
        (gl::Texture2D::updateTexture):
        (gl::Texture2D::convertToRenderTarget):
        (gl::Texture2D::generateMipmaps):
        (gl::Texture2D::getRenderbuffer):
        (gl::Texture2D::getRenderTarget):
        (gl::Texture2D::getStorage):
        (gl::TextureStorageCubeMap::TextureStorageCubeMap):
        (gl::TextureStorageCubeMap::~TextureStorageCubeMap):
        (gl::TextureStorageCubeMap::getCubeMapSurface):
        (gl::TextureStorageCubeMap::getBaseTexture):
        (gl::TextureStorageCubeMap::getRenderTargetSerial):
        (gl::TextureCubeMap::TextureCubeMap):
        (gl::TextureCubeMap::~TextureCubeMap):
        (gl::TextureCubeMap::getWidth):
        (gl::TextureCubeMap::getHeight):
        (gl::TextureCubeMap::getInternalFormat):
        (gl::TextureCubeMap::getType):
        (gl::TextureCubeMap::setCompressedImage):
        (gl::TextureCubeMap::commitRect):
        (gl::TextureCubeMap::subImage):
        (gl::TextureCubeMap::subImageCompressed):
        (gl::TextureCubeMap::isSamplerComplete):
        (gl::TextureCubeMap::isCubeComplete):
        (gl::TextureCubeMap::isMipmapCubeComplete):
        (gl::TextureCubeMap::getBaseTexture):
        (gl::TextureCubeMap::createTexture):
        (gl::TextureCubeMap::updateTexture):
        (gl::TextureCubeMap::convertToRenderTarget):
        (gl::TextureCubeMap::setImage):
        (gl::TextureCubeMap::redefineImage):
        (gl::TextureCubeMap::copyImage):
        (gl::TextureCubeMap::copySubImage):
        (gl::TextureCubeMap::storage):
        (gl::TextureCubeMap::generateMipmaps):
        (gl::TextureCubeMap::getRenderbuffer):
        (gl::TextureCubeMap::getRenderTarget):
        (gl::TextureCubeMap::getStorage):
        * src/libGLESv2/Texture.h:
        (gl::Image::markDirty):
        (gl::Image::markClean):
        (gl::Image::getWidth):
        (gl::Image::getHeight):
        (gl::Image::getFormat):
        (gl::Image::getType):
        (gl::Image::isDirty):
        * src/libGLESv2/VertexDataManager.cpp:
        (gl::elementsInBuffer):
        (gl::VertexDataManager::VertexDataManager):
        (gl::VertexDataManager::writeAttributeData):
        (gl::VertexDataManager::prepareVertexData):
        (gl::VertexBuffer::VertexBuffer):
        (gl::VertexBuffer::getSerial):
        (gl::VertexBuffer::issueSerial):
        (gl::StreamingVertexBuffer::reserveRequiredSpace):
        (gl::StaticVertexBuffer::map):
        (gl::StaticVertexBuffer::reserveRequiredSpace):
        (gl::StaticVertexBuffer::lookupAttribute):
        * src/libGLESv2/VertexDataManager.h:
        (gl::ArrayVertexBuffer::size):
        * src/libGLESv2/geometry/IndexDataManager.cpp: Removed.
        * src/libGLESv2/geometry/IndexDataManager.h: Removed.
        * src/libGLESv2/geometry/VertexDataManager.cpp: Removed.
        * src/libGLESv2/geometry/VertexDataManager.h: Removed.
        * src/libGLESv2/geometry/vertexconversion.h: Removed.
        * src/libGLESv2/libGLESv2.cpp:
        (validateSubImageParams):
        (validReadFormatType):
        (Extension::glBindTexImage):
        * src/libGLESv2/libGLESv2.def:
        * src/libGLESv2/libGLESv2.rc:
        * src/libGLESv2/libGLESv2.vcproj:
        * src/libGLESv2/main.cpp:
        (gl::getNonLostContext):
        (gl::checkDeviceLost):
        * src/libGLESv2/main.h:
        * src/libGLESv2/utilities.cpp:
        (gl::UniformExternalComponentCount):
        (gl::UniformInternalComponentCount):
        (gl::UniformComponentSize):
        (gl::UniformInternalSize):
        (gl::UniformExternalSize):
        (gl::ComputeCompressedSize):
        (gl::IsCompressed):
        (gl::ExtractFormat):
        (gl::ExtractType):
        (dx2es::IsFloat32Format):
        (dx2es::IsFloat16Format):
        * src/libGLESv2/utilities.h:
        (isDeviceLostError):

2011-11-11  Darin Adler  <darin@apple.com>

        * ANGLE.xcodeproj/project.pbxproj: Let a newer Xcode update this file.
        If an older Xcode downgrades this file and we have a risk of some kind of
        oscillating commit situation, please contact me so I know not to do this again.

2011-09-19  Adam Roben  <aroben@apple.com>

        Let Xcode 4 do its thang with ANGLE.xcodeproj

        * ANGLE.xcodeproj/project.pbxproj:

2011-09-13  Anders Carlsson  <andersca@apple.com>

        Disable C++ exceptions when building with clang
        https://bugs.webkit.org/show_bug.cgi?id=68031
        <rdar://problem/9556880>

        Reviewed by Mark Rowe.

        * Configurations/Base.xcconfig:

2011-09-08  Andras Becsi  <andras.becsi@nokia.com>

        [Qt] Build fails with strict compiler
        https://bugs.webkit.org/show_bug.cgi?id=67778

        Reviewed by Csaba Osztrogonác.

        * src/compiler/glslang_lex.cpp: Regenerate with generate_glslang_lexer.sh using a newer flex
        to suppress warning and fix the build when using [-Werror=unused-result]

2011-08-12  Mark Rowe  <mrowe@apple.com>

        Be more forward-looking in the choice of compiler.

        Rubber-stamped by Jon Honeycutt.

        * Configurations/CompilerVersion.xcconfig:

2011-08-11  Renata Hodovan  <reni@webkit.org>

        [Qt]Fix warnings after r92805.

        Reviewed by Csaba Osztrogonác.

        Control reached the end non-void functions.

        * src/compiler/ossource_posix.cpp:
        (OS_AllocTLSIndex):
        (OS_SetTLSValue):

2011-08-11  Renata Hodovan  <reni@webkit.org>

        Build fix on Qt Windows 32-bit Release/Debug after r92805.

        Unreviewed.

        * src/compiler/ossource_posix.cpp:
        (OS_FreeTLSIndex):

2011-08-04  Mark Rowe  <mrowe@apple.com>

        Future-proof Xcode configuration settings.

        * Configurations/Base.xcconfig:
        * Configurations/CompilerVersion.xcconfig:
        * Configurations/DebugRelease.xcconfig:

2011-06-30  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Dan Bernstein.

        ANGLE shouldn't try to use internal SDKs. It doesn't need them!

        * Configurations/Base.xcconfig:

2011-06-20  Zhenyao Mo  <zmo@google.com>

        Reviewed by Kenneth Russell.

        Update ANGLE to r696
        https://bugs.webkit.org/show_bug.cgi?id=56396

        * ANGLE.xcodeproj/project.pbxproj:
        * include/EGL/eglext.h:
        * include/GLSLANG/ShaderLang.h:
        * src/build_angle.xcodeproj/project.pbxproj:
        * src/common/debug.cpp:
        (gl::output):
        (gl::trace):
        (gl::perfActive):
        (gl::ScopedPerfEventHelper::ScopedPerfEventHelper):
        (gl::ScopedPerfEventHelper::~ScopedPerfEventHelper):
        * src/common/debug.h:
        * src/common/version.h: Added.
        * src/compiler/CodeGenGLSL.cpp:
        (ConstructCompiler):
        * src/compiler/CodeGenHLSL.cpp:
        (ConstructCompiler):
        * src/compiler/Compiler.cpp:
        (TCompiler::compile):
        (TCompiler::mapLongVariableNames):
        (TCompiler::getMappedNameMaxLength):
        (TCompiler::getExtensionBehavior):
        * src/compiler/ConstantUnion.h:
        (ConstantUnion::operator==):
        (ConstantUnion::operator>):
        (ConstantUnion::operator<):
        * src/compiler/ExtensionBehavior.h:
        (getBehaviorString):
        * src/compiler/ForLoopUnroll.cpp: Added.
        (ForLoopUnroll::FillLoopIndexInfo):
        (ForLoopUnroll::Step):
        (ForLoopUnroll::SatisfiesLoopCondition):
        (ForLoopUnroll::NeedsToReplaceSymbolWithValue):
        (ForLoopUnroll::GetLoopIndexValue):
        (ForLoopUnroll::Push):
        (ForLoopUnroll::Pop):
        (ForLoopUnroll::getLoopIncrement):
        (ForLoopUnroll::evaluateIntConstant):
        * src/compiler/ForLoopUnroll.h: Added.
        (ForLoopUnroll::ForLoopUnroll):
        * src/compiler/Initialize.cpp:
        (BuiltInFunctionsVertex):
        * src/compiler/MapLongVariableNames.cpp: Added.
        (MapLongVariableNames::MapLongVariableNames):
        (MapLongVariableNames::visitSymbol):
        (MapLongVariableNames::visitConstantUnion):
        (MapLongVariableNames::visitBinary):
        (MapLongVariableNames::visitUnary):
        (MapLongVariableNames::visitSelection):
        (MapLongVariableNames::visitAggregate):
        (MapLongVariableNames::visitLoop):
        (MapLongVariableNames::visitBranch):
        (MapLongVariableNames::mapVaryingLongName):
        * src/compiler/MapLongVariableNames.h: Added.
        * src/compiler/OutputESSL.cpp: Added.
        (TOutputESSL::TOutputESSL):
        (TOutputESSL::writeVariablePrecision):
        * src/compiler/OutputESSL.h: Added.
        * src/compiler/OutputGLSL.cpp:
        (TOutputGLSL::TOutputGLSL):
        (TOutputGLSL::writeVariablePrecision):
        * src/compiler/OutputGLSL.h:
        * src/compiler/OutputGLSLBase.cpp: Added.
        (TOutputGLSLBase::TOutputGLSLBase):
        (TOutputGLSLBase::writeTriplet):
        (TOutputGLSLBase::writeVariableType):
        (TOutputGLSLBase::writeFunctionParameters):
        (TOutputGLSLBase::writeConstantUnion):
        (TOutputGLSLBase::visitSymbol):
        (TOutputGLSLBase::visitConstantUnion):
        (TOutputGLSLBase::visitBinary):
        (TOutputGLSLBase::visitUnary):
        (TOutputGLSLBase::visitSelection):
        (TOutputGLSLBase::visitAggregate):
        (TOutputGLSLBase::visitLoop):
        (TOutputGLSLBase::visitBranch):
        (TOutputGLSLBase::visitCodeBlock):
        * src/compiler/OutputGLSLBase.h: Added.
        (TOutputGLSLBase::objSink):
        * src/compiler/OutputHLSL.cpp:
        (sh::OutputHLSL::OutputHLSL):
        (sh::OutputHLSL::header):
        (sh::OutputHLSL::visitUnary):
        (sh::OutputHLSL::visitAggregate):
        (sh::OutputHLSL::visitSelection):
        (sh::OutputHLSL::visitLoop):
        (sh::OutputHLSL::visitBranch):
        (sh::OutputHLSL::handleExcessiveLoop):
        (sh::OutputHLSL::outputLineDirective):
        * src/compiler/OutputHLSL.h:
        * src/compiler/ParseHelper.cpp:
        (TParseContext::precisionErrorCheck):
        (TParseContext::constructorErrorCheck):
        (TParseContext::nonInitErrorCheck):
        * src/compiler/ParseHelper.h:
        (TParseContext::TParseContext):
        * src/compiler/ShHandle.h:
        * src/compiler/ShaderLang.cpp:
        (getVariableInfo):
        (ShConstructCompiler):
        (ShGetInfo):
        (ShGetActiveAttrib):
        (ShGetActiveUniform):
        * src/compiler/TranslatorESSL.cpp: Added.
        (TranslatorESSL::TranslatorESSL):
        (TranslatorESSL::translate):
        (TranslatorESSL::writeExtensionBehavior):
        * src/compiler/TranslatorESSL.h: Added.
        * src/compiler/ValidateLimitations.cpp:
        (ValidateLimitations::visitBinary):
        (ValidateLimitations::visitLoop):
        * src/compiler/ValidateLimitations.h:
        * src/compiler/VariableInfo.cpp:
        (getVariableInfo):
        (getBuiltInVariableInfo):
        (getUserDefinedVariableInfo):
        (CollectAttribsUniforms::visitAggregate):
        * src/compiler/VariableInfo.h:
        * src/compiler/VersionGLSL.cpp:
        (TVersionGLSL::visitSymbol):
        (TVersionGLSL::visitConstantUnion):
        (TVersionGLSL::visitBinary):
        (TVersionGLSL::visitUnary):
        (TVersionGLSL::visitSelection):
        (TVersionGLSL::visitAggregate):
        (TVersionGLSL::visitLoop):
        (TVersionGLSL::visitBranch):
        * src/compiler/VersionGLSL.h:
        * src/compiler/glslang.y:
        * src/compiler/glslang_tab.cpp:
        * src/compiler/glslang_tab.h:
        * src/compiler/intermediate.h:
        (TIntermLoop::TIntermLoop):
        (TIntermLoop::setUnrollFlag):
        (TIntermLoop::getUnrollFlag):
        (TIntermSymbol::TIntermSymbol):
        (TIntermSymbol::setId):
        (TIntermSymbol::setSymbol):
        (TIntermSymbol::getOriginalSymbol):
        (TIntermAggregate::TIntermAggregate):
        (TIntermAggregate::setEndLine):
        (TIntermAggregate::getEndLine):
        * src/compiler/preprocessor/atom.c:
        (AddString):
        * src/compiler/preprocessor/compile.h:
        * src/compiler/preprocessor/cpp.c:
        (CPPelse):
        (eval):
        (CPPif):
        (CPPifdef):
        (readCPPline):
        (ChkCorrectElseNesting):
        * src/compiler/preprocessor/cppstruct.c:
        (ResetPreprocessor):
        * src/compiler/preprocessor/scanner.c:
        (byte_scan):
        (yylex_CPP):
        * src/compiler/preprocessor/scanner.h:
        * src/libEGL/Config.cpp:
        (egl::Config::Config):
        (egl::Config::set):
        (egl::ConfigSet::add):
        (egl::ConfigSet::getConfigs):
        * src/libEGL/Config.h:
        * src/libEGL/Display.cpp:
        (egl::Display::Display):
        (egl::Display::initialize):
        (egl::Display::terminate):
        (egl::Display::getConfigAttrib):
        (egl::Display::createDevice):
        (egl::Display::createWindowSurface):
        (egl::Display::createOffscreenSurface):
        (egl::Display::createContext):
        (egl::Display::destroyContext):
        (egl::Display::isInitialized):
        (egl::Display::getAdapterIdentifier):
        (egl::Display::isDeviceLost):
        (egl::Display::getBufferPool):
        (egl::Display::initExtensionString):
        (egl::Display::getExtensionString):
        (egl::Display::getVertexTextureSupport):
        (egl::Display::getNonPower2TextureSupport):
        * src/libEGL/Display.h:
        (egl::Display::isD3d9ExDevice):
        * src/libEGL/Surface.cpp:
        (egl::Surface::Surface):
        (egl::Surface::initialize):
        (egl::Surface::release):
        (egl::Surface::resetSwapChain):
        (egl::SurfaceWindowProc):
        (egl::Surface::subclassWindow):
        (egl::Surface::unsubclassWindow):
        (egl::Surface::swap):
        (egl::Surface::getRenderTarget):
        (egl::Surface::getOffscreenTexture):
        (egl::Surface::getTextureFormat):
        (egl::Surface::getTextureTarget):
        (egl::Surface::setBoundTexture):
        (egl::Surface::getBoundTexture):
        (egl::Surface::getFormat):
        * src/libEGL/Surface.h:
        (egl::Surface::getShareHandle):
        * src/libEGL/libEGL.cpp:
        (validateDisplay):
        (validateConfig):
        (validateContext):
        (validateSurface):
        * src/libEGL/libEGL.rc: Added.
        * src/libEGL/libEGL.vcproj:
        * src/libEGL/main.cpp:
        (DllMain):
        * src/libEGL/main.h:
        * src/libEGL/resource.h: Added.
        * src/libGLESv2/Blit.cpp:
        (gl::Blit::initGeometry):
        (gl::Blit::copy):
        * src/libGLESv2/Blit.h:
        * src/libGLESv2/Buffer.cpp:
        (gl::Buffer::Buffer):
        (gl::Buffer::~Buffer):
        (gl::Buffer::bufferData):
        (gl::Buffer::bufferSubData):
        (gl::Buffer::getStaticVertexBuffer):
        (gl::Buffer::getStaticIndexBuffer):
        (gl::Buffer::invalidateStaticData):
        (gl::Buffer::promoteStaticUsage):
        * src/libGLESv2/Buffer.h:
        * src/libGLESv2/Context.cpp:
        (gl::Context::Context):
        (gl::Context::~Context):
        (gl::Context::makeCurrent):
        (gl::Context::markAllStateDirty):
        (gl::Context::setActiveSampler):
        (gl::Context::createFramebuffer):
        (gl::Context::createFence):
        (gl::Context::deleteFramebuffer):
        (gl::Context::deleteFence):
        (gl::Context::bindTexture2D):
        (gl::Context::bindTextureCubeMap):
        (gl::Context::getTexture2D):
        (gl::Context::getTextureCubeMap):
        (gl::Context::getSamplerTexture):
        (gl::Context::getIntegerv):
        (gl::Context::applyRenderTarget):
        (gl::Context::applyState):
        (gl::Context::applyVertexBuffer):
        (gl::Context::applyShaders):
        (gl::Context::applyTextures):
        (gl::Context::readPixels):
        (gl::Context::clear):
        (gl::Context::drawArrays):
        (gl::Context::drawElements):
        (gl::Context::finish):
        (gl::Context::flush):
        (gl::Context::drawClosingLine):
        (gl::Context::getMaximumVertexTextureImageUnits):
        (gl::Context::getMaximumCombinedTextureImageUnits):
        (gl::Context::supportsNonPower2Texture):
        (gl::Context::detachTexture):
        (gl::Context::getIncompleteTexture):
        (gl::Context::initExtensionString):
        (gl::Context::blitFramebuffer):
        (gl::VertexDeclarationCache::VertexDeclarationCache):
        (gl::VertexDeclarationCache::~VertexDeclarationCache):
        (gl::VertexDeclarationCache::applyDeclaration):
        * src/libGLESv2/Context.h:
        * src/libGLESv2/Framebuffer.cpp:
        (gl::Framebuffer::lookupRenderbuffer):
        (gl::Framebuffer::completeness):
        * src/libGLESv2/Framebuffer.h:
        * src/libGLESv2/HandleAllocator.cpp: Added.
        (gl::HandleAllocator::HandleAllocator):
        (gl::HandleAllocator::~HandleAllocator):
        (gl::HandleAllocator::setBaseHandle):
        (gl::HandleAllocator::allocate):
        (gl::HandleAllocator::release):
        * src/libGLESv2/HandleAllocator.h: Added.
        * src/libGLESv2/IndexDataManager.cpp: Added.
        (gl::IndexDataManager::IndexDataManager):
        (gl::IndexDataManager::~IndexDataManager):
        (gl::convertIndices):
        (gl::computeRange):
        (gl::IndexDataManager::prepareIndexData):
        (gl::IndexDataManager::indexSize):
        (gl::IndexDataManager::typeSize):
        (gl::IndexBuffer::IndexBuffer):
        (gl::IndexBuffer::~IndexBuffer):
        (gl::IndexBuffer::getBuffer):
        (gl::IndexBuffer::unmap):
        (gl::StreamingIndexBuffer::StreamingIndexBuffer):
        (gl::StreamingIndexBuffer::~StreamingIndexBuffer):
        (gl::StreamingIndexBuffer::map):
        (gl::StreamingIndexBuffer::reserveSpace):
        (gl::StaticIndexBuffer::StaticIndexBuffer):
        (gl::StaticIndexBuffer::~StaticIndexBuffer):
        (gl::StaticIndexBuffer::map):
        (gl::StaticIndexBuffer::reserveSpace):
        (gl::StaticIndexBuffer::lookupType):
        (gl::StaticIndexBuffer::lookupRange):
        (gl::StaticIndexBuffer::addRange):
        * src/libGLESv2/IndexDataManager.h: Added.
        (gl::IndexBuffer::size):
        * src/libGLESv2/Program.cpp:
        (gl::Program::getSemanticIndex):
        (gl::Program::getSamplerMapping):
        (gl::Program::getSamplerTextureType):
        (gl::Program::compileToBinary):
        (gl::Program::packVaryings):
        (gl::Program::linkVaryings):
        (gl::Program::link):
        (gl::Program::linkUniforms):
        (gl::Program::defineUniform):
        (gl::Program::applyUniform1iv):
        (gl::Program::appendToInfoLogSanitized):
        (gl::Program::unlink):
        (gl::Program::getActiveUniformMaxLength):
        (gl::Program::validate):
        (gl::Program::validateSamplers):
        * src/libGLESv2/Program.h:
        * src/libGLESv2/Renderbuffer.cpp:
        (gl::Renderbuffer::getWidth):
        (gl::Renderbuffer::getHeight):
        (gl::Renderbuffer::getInternalFormat):
        (gl::Renderbuffer::getRedSize):
        (gl::Renderbuffer::getGreenSize):
        (gl::Renderbuffer::getBlueSize):
        (gl::Renderbuffer::getAlphaSize):
        (gl::Renderbuffer::getDepthSize):
        (gl::Renderbuffer::getStencilSize):
        (gl::Renderbuffer::getSamples):
        (gl::RenderbufferStorage::RenderbufferStorage):
        (gl::RenderbufferStorage::getWidth):
        (gl::RenderbufferStorage::getHeight):
        (gl::RenderbufferStorage::getInternalFormat):
        (gl::RenderbufferStorage::getRedSize):
        (gl::RenderbufferStorage::getGreenSize):
        (gl::RenderbufferStorage::getBlueSize):
        (gl::RenderbufferStorage::getAlphaSize):
        (gl::RenderbufferStorage::getDepthSize):
        (gl::RenderbufferStorage::getStencilSize):
        (gl::RenderbufferStorage::getD3DFormat):
        (gl::Colorbuffer::Colorbuffer):
        (gl::Colorbuffer::getWidth):
        (gl::Colorbuffer::getHeight):
        (gl::Colorbuffer::getInternalFormat):
        (gl::Colorbuffer::getType):
        (gl::Colorbuffer::getD3DFormat):
        (gl::Colorbuffer::isColorbuffer):
        (gl::Colorbuffer::getRenderTarget):
        (gl::DepthStencilbuffer::DepthStencilbuffer):
        (gl::Depthbuffer::Depthbuffer):
        (gl::Stencilbuffer::Stencilbuffer):
        * src/libGLESv2/Renderbuffer.h:
        * src/libGLESv2/ResourceManager.cpp:
        (gl::ResourceManager::createBuffer):
        (gl::ResourceManager::createShader):
        (gl::ResourceManager::createProgram):
        (gl::ResourceManager::createTexture):
        (gl::ResourceManager::createRenderbuffer):
        (gl::ResourceManager::deleteBuffer):
        (gl::ResourceManager::deleteShader):
        (gl::ResourceManager::deleteProgram):
        (gl::ResourceManager::deleteTexture):
        (gl::ResourceManager::deleteRenderbuffer):
        (gl::ResourceManager::checkTextureAllocation):
        * src/libGLESv2/ResourceManager.h:
        * src/libGLESv2/Shader.cpp:
        (gl::Shader::Shader):
        (gl::Shader::compileToHLSL):
        * src/libGLESv2/Shader.h:
        * src/libGLESv2/Texture.cpp:
        (gl::Texture::Image::Image):
        (gl::Texture::Image::~Image):
        (gl::Texture::Image::isRenderable):
        (gl::Texture::Image::getD3DFormat):
        (gl::Texture::Texture):
        (gl::Texture::setMinFilter):
        (gl::Texture::setMagFilter):
        (gl::Texture::setWrapS):
        (gl::Texture::setWrapT):
        (gl::Texture::loadImageData):
        (gl::Texture::loadAlphaImageData):
        (gl::Texture::loadAlphaFloatImageData):
        (gl::Texture::loadAlphaHalfFloatImageData):
        (gl::Texture::loadLuminanceImageData):
        (gl::Texture::loadLuminanceFloatImageData):
        (gl::Texture::loadLuminanceHalfFloatImageData):
        (gl::Texture::loadLuminanceAlphaImageData):
        (gl::Texture::loadLuminanceAlphaFloatImageData):
        (gl::Texture::loadLuminanceAlphaHalfFloatImageData):
        (gl::Texture::loadRGBUByteImageData):
        (gl::Texture::loadRGB565ImageData):
        (gl::Texture::loadRGBFloatImageData):
        (gl::Texture::loadRGBHalfFloatImageData):
        (gl::Texture::loadRGBAUByteImageDataSSE2):
        (gl::Texture::loadRGBAUByteImageData):
        (gl::Texture::loadRGBA4444ImageData):
        (gl::Texture::loadRGBA5551ImageData):
        (gl::Texture::loadRGBAFloatImageData):
        (gl::Texture::loadRGBAHalfFloatImageData):
        (gl::Texture::loadBGRAImageData):
        (gl::Texture::loadCompressedImageData):
        (gl::Texture::createSurface):
        (gl::Texture::setImage):
        (gl::Texture::setCompressedImage):
        (gl::Texture::subImage):
        (gl::Texture::subImageCompressed):
        (gl::Texture::copyToImage):
        (gl::Texture::getTexture):
        (gl::Texture::isDirtyParameter):
        (gl::Texture::isDirtyImage):
        (gl::Texture::resetDirty):
        (gl::Texture::getSerial):
        (gl::Texture::creationLevels):
        (gl::Texture::levelCount):
        (gl::Texture::issueSerial):
        (gl::Texture2D::Texture2D):
        (gl::Texture2D::~Texture2D):
        (gl::Texture2D::getWidth):
        (gl::Texture2D::getHeight):
        (gl::Texture2D::getInternalFormat):
        (gl::Texture2D::getType):
        (gl::Texture2D::getD3DFormat):
        (gl::Texture2D::redefineTexture):
        (gl::Texture2D::setImage):
        (gl::Texture2D::bindTexImage):
        (gl::Texture2D::releaseTexImage):
        (gl::Texture2D::setCompressedImage):
        (gl::Texture2D::commitRect):
        (gl::Texture2D::copyImage):
        (gl::Texture2D::copySubImage):
        (gl::Texture2D::isComplete):
        (gl::Texture2D::isCompressed):
        (gl::Texture2D::getBaseTexture):
        (gl::Texture2D::createTexture):
        (gl::Texture2D::updateTexture):
        (gl::Texture2D::convertToRenderTarget):
        (gl::Texture2D::generateMipmaps):
        (gl::Texture2D::getRenderbuffer):
        (gl::Texture2D::getRenderTarget):
        (gl::TextureCubeMap::getWidth):
        (gl::TextureCubeMap::getHeight):
        (gl::TextureCubeMap::getInternalFormat):
        (gl::TextureCubeMap::getType):
        (gl::TextureCubeMap::getD3DFormat):
        (gl::TextureCubeMap::setImagePosX):
        (gl::TextureCubeMap::setImageNegX):
        (gl::TextureCubeMap::setImagePosY):
        (gl::TextureCubeMap::setImageNegY):
        (gl::TextureCubeMap::setImagePosZ):
        (gl::TextureCubeMap::setImageNegZ):
        (gl::TextureCubeMap::setCompressedImage):
        (gl::TextureCubeMap::commitRect):
        (gl::TextureCubeMap::isComplete):
        (gl::TextureCubeMap::isCompressed):
        (gl::TextureCubeMap::getBaseTexture):
        (gl::TextureCubeMap::createTexture):
        (gl::TextureCubeMap::updateTexture):
        (gl::TextureCubeMap::convertToRenderTarget):
        (gl::TextureCubeMap::setImage):
        (gl::TextureCubeMap::redefineTexture):
        (gl::TextureCubeMap::copyImage):
        (gl::TextureCubeMap::getCubeMapSurface):
        (gl::TextureCubeMap::copySubImage):
        (gl::TextureCubeMap::generateMipmaps):
        (gl::TextureCubeMap::getRenderbuffer):
        (gl::TextureCubeMap::getRenderTarget):
        * src/libGLESv2/Texture.h:
        * src/libGLESv2/VertexDataManager.cpp: Added.
        (gl::VertexDataManager::VertexDataManager):
        (gl::VertexDataManager::~VertexDataManager):
        (gl::VertexDataManager::writeAttributeData):
        (gl::VertexDataManager::prepareVertexData):
        (gl::VertexDataManager::spaceRequired):
        (gl::VertexDataManager::checkVertexCaps):
        (gl::VertexDataManager::typeIndex):
        (gl::VertexBuffer::VertexBuffer):
        (gl::VertexBuffer::~VertexBuffer):
        (gl::VertexBuffer::unmap):
        (gl::VertexBuffer::getBuffer):
        (gl::ConstantVertexBuffer::ConstantVertexBuffer):
        (gl::ConstantVertexBuffer::~ConstantVertexBuffer):
        (gl::ArrayVertexBuffer::ArrayVertexBuffer):
        (gl::ArrayVertexBuffer::~ArrayVertexBuffer):
        (gl::ArrayVertexBuffer::addRequiredSpace):
        (gl::ArrayVertexBuffer::addRequiredSpaceFor):
        (gl::StreamingVertexBuffer::StreamingVertexBuffer):
        (gl::StreamingVertexBuffer::~StreamingVertexBuffer):
        (gl::StreamingVertexBuffer::map):
        (gl::StreamingVertexBuffer::reserveRequiredSpace):
        (gl::StaticVertexBuffer::StaticVertexBuffer):
        (gl::StaticVertexBuffer::~StaticVertexBuffer):
        (gl::StaticVertexBuffer::map):
        (gl::StaticVertexBuffer::reserveRequiredSpace):
        (gl::StaticVertexBuffer::lookupAttribute):
        (gl::VertexDataManager::formatConverter):
        * src/libGLESv2/VertexDataManager.h: Added.
        (gl::ArrayVertexBuffer::size):
        (gl::VertexDataManager::dirtyCurrentValue):
        * src/libGLESv2/libGLESv2.cpp:
        (validImageSize):
        (Extension::glBindTexImage):
        * src/libGLESv2/libGLESv2.def:
        * src/libGLESv2/libGLESv2.rc: Added.
        * src/libGLESv2/libGLESv2.vcproj:
        * src/libGLESv2/main.cpp:
        (error):
        * src/libGLESv2/mathutil.h:
        (gl::clamp):
        (gl::clamp01):
        (gl::transformPixelRect):
        (gl::transformPixelYOffset):
        (gl::adjustWinding):
        (gl::supportsSSE2):
        * src/libGLESv2/resource.h: Added.
        * src/libGLESv2/utilities.cpp:
        (gl::ComputeCompressedPitch):
        (es2dx::ConvertCubeFace):
        (es2dx::ConvertPrimitiveType):
        (es2dx::ConvertRenderbufferFormat):
        (es2dx::GetMultisampleTypeFromSamples):
        (dx2es::GetStencilSize):
        (dx2es::GetAlphaSize):
        (dx2es::GetRedSize):
        (dx2es::GetGreenSize):
        (dx2es::GetBlueSize):
        (dx2es::GetDepthSize):
        (getTempPath):
        (writeFile):
        * src/libGLESv2/utilities.h:
        * src/libGLESv2/vertexconversion.h: Added.
        (gl::Identity::convert):
        (gl::Cast::convert):
        (gl::Normalize::convert):
        (gl::FixedToFloat::convert):
        (gl::SimpleDefaultValues::zero):
        (gl::SimpleDefaultValues::one):
        (gl::NormalizedDefaultValues::zero):
        (gl::NormalizedDefaultValues::one):
        (gl::VertexDataConverter::convertArray):
        (gl::VertexDataConverter::pointerAddBytes):
        (gl::VertexDataConverter::copyComponent):

2011-05-24  David Kilzer  <ddkilzer@apple.com>

        Part 2 of 2: <http://webkit.org/b/60805> Enable -Wnewline-eof on ANGLE

        Reviewed by Adam Roben.

        * Configurations/Base.xcconfig:
        (GCC_WARN_ABOUT_MISSING_NEWLINE): Added. Set to YES.

2011-05-23  David Kilzer  <ddkilzer@apple.com>

        Part 1 of 2: <http://webkit.org/b/60805> Enable -Wnewline-eof on ANGLE

        Merge ANGLE upstream commit r653 for Issue 154.

        * src/compiler/PoolAlloc.h: Added newline to end of file.
        * src/compiler/ShHandle.h: Ditto.
        * src/libEGL/Display.cpp: Ditto.

2011-05-16  David Kilzer  <ddkilzer@apple.com>

        <http://webkit.org/b/60913> C++ exceptions should not be enabled when building with llvm-gcc-4.2
        <rdar://problem/9446430>

        Reviewed by Mark Rowe.

        * Configurations/Base.xcconfig: Fixed typo.

2011-05-04  David Kilzer  <ddkilzer@apple.com>

        Part 2 of 2: <http://webkit.org/b/56337> Enable -Werror on ANGLE

        Reviewed by Adam Barth.

        * Configurations/Base.xcconfig:
        (GCC_TREAT_WARNINGS_AS_ERRORS): Set to YES.

2011-05-04  David Kilzer  <ddkilzer@apple.com>

        Part 1 of 2: <http://webkit.org/b/56337> Enable -Werror on ANGLE

        Merge ANGLE upstream commits r572, r573, r574, r575.

        This unblocks enabling -Werror on ANGLE.  Since all changes are
        in the upstream repository, they may be safely overwritten
        during the next ANGLE update.

        * src/compiler/ConstantUnion.h:
        (ConstantUnion::operator==): Added a default case.
        * src/compiler/Intermediate.cpp:
        (TIntermBinary::promote): Added parentheses.
        * src/compiler/ParseHelper.cpp:
        (TParseContext::precisionErrorCheck): Added a default case.
        * src/compiler/PoolAlloc.cpp:
        (TAllocation::checkGuardBlock): Changed '%u' to '%lu' for size_t
        variable.  Put for loop inside #ifdef GUARD_BLOCKS/#endif macros
        to fix tautological-compare warning.
        (TAllocation::checkAllocList): Added newline to end of file.

2011-04-26  Dan Bernstein  <mitz@apple.com>

        Build fix.

        * Configurations/CompilerVersion.xcconfig:

2011-04-26  Dan Bernstein  <mitz@apple.com>

        Reviewed by Mark Rowe.

        Choose the compiler based on the Xcode version for Snow Leopard debug builds.

        * Configurations/Base.xcconfig:
        * Configurations/CompilerVersion.xcconfig: Added.

2011-03-17  Jeff Miller  <jeffm@apple.com>

        Use a consistent set of file patterns in the svn:ignore property for all .xcodeproj directories, specifically:
        
        *.mode*
        *.pbxuser
        *.perspective*
        project.xcworkspace
        xcuserdata

        * ANGLE.xcodeproj: Modified property svn:ignore.
        * src/build_angle.xcodeproj: Modified property svn:ignore.

2011-01-18  Kenneth Russell  <kbr@google.com>

        Unreviewed, Leopard build fix. Remove flex/bison targets for GLSL
        grammar because the generated sources are already checked in.

        * ANGLE.xcodeproj/project.pbxproj:
        * src/build_angle.xcodeproj/project.pbxproj:

2011-01-18  Kenneth Russell  <kbr@google.com>

        Unreviewed, release build fix. Explicitly cast away const.

        * src/compiler/preprocessor/scanner.c:
        (ScanFromString):

2011-01-18  Ben Vanik  <ben.vanik@gmail.com>

        Reviewed by Kenneth Russell.

        Updating ANGLE in WebKit to r533.
        https://bugs.webkit.org/show_bug.cgi?id=47194

        * ANGLE.xcodeproj/project.pbxproj:
        * include/GLSLANG/ShaderLang.h:
        * src/common/debug.cpp:
        (gl::trace):
        * src/common/debug.h:
        * src/compiler/CodeGenGLSL.cpp:
        (ConstructCompiler):
        * src/compiler/CodeGenHLSL.cpp:
        (ConstructCompiler):
        * src/compiler/Common.h:
        (EncodeSourceLoc):
        (DecodeSourceLoc):
        * src/compiler/Compiler.cpp: Added.
        (TShHandleBase::TShHandleBase):
        (TShHandleBase::~TShHandleBase):
        (TCompiler::TCompiler):
        (TCompiler::~TCompiler):
        (TCompiler::Init):
        (TCompiler::compile):
        (TCompiler::InitBuiltInSymbolTable):
        (TCompiler::clearResults):
        (TCompiler::validateLimitations):
        (TCompiler::collectAttribsUniforms):
        * src/compiler/ExtensionBehavior.h: Added.
        * src/compiler/InfoSink.cpp:
        (TInfoSinkBase::location):
        * src/compiler/InfoSink.h:
        (TInfoSinkBase::size):
        * src/compiler/Initialize.cpp:
        (BuiltInFunctionsCommon):
        (BuiltInFunctionsVertex):
        (BuiltInFunctionsFragment):
        (StandardUniforms):
        (DefaultPrecisionVertex):
        (DefaultPrecisionFragment):
        (BuiltInConstants):
        (TBuiltIns::initialize):
        (IdentifyBuiltIns):
        (InitExtensionBehavior):
        * src/compiler/Initialize.h:
        * src/compiler/IntermTraverse.cpp:
        (TIntermLoop::traverse):
        * src/compiler/Intermediate.cpp:
        (getOperatorString):
        (TIntermediate::addBinaryMath):
        (TIntermediate::addLoop):
        (TIntermediate::postProcess):
        (TIntermBinary::promote):
        * src/compiler/OutputGLSL.cpp:
        (TOutputGLSL::visitUnary):
        (TOutputGLSL::visitLoop):
        * src/compiler/OutputHLSL.cpp:
        (sh::OutputHLSL::OutputHLSL):
        (sh::OutputHLSL::header):
        (sh::OutputHLSL::visitBinary):
        (sh::OutputHLSL::visitUnary):
        (sh::OutputHLSL::visitAggregate):
        (sh::OutputHLSL::visitLoop):
        (sh::OutputHLSL::handleExcessiveLoop):
        (sh::OutputHLSL::argumentString):
        * src/compiler/OutputHLSL.h:
        * src/compiler/ParseHelper.cpp:
        (ReportInfo):
        (DefineExtensionMacros):
        (TParseContext::error):
        (TParseContext::warning):
        (TParseContext::reservedErrorCheck):
        (TParseContext::constructorErrorCheck):
        (TParseContext::arrayQualifierErrorCheck):
        (TParseContext::extensionErrorCheck):
        (TParseContext::areAllChildConst):
        (PaParseStrings):
        * src/compiler/ParseHelper.h:
        (TParseContext::TParseContext):
        * src/compiler/PoolAlloc.cpp:
        (InitializeGlobalPools):
        (FreeGlobalPools):
        (SetGlobalPoolAllocator):
        (TPoolAllocator::TPoolAllocator):
        (TPoolAllocator::~TPoolAllocator):
        (TAllocation::checkAllocList):
        * src/compiler/PoolAlloc.h:
        * src/compiler/SearchSymbol.cpp: Added.
        (sh::SearchSymbol::SearchSymbol):
        (sh::SearchSymbol::traverse):
        (sh::SearchSymbol::visitSymbol):
        (sh::SearchSymbol::foundMatch):
        * src/compiler/SearchSymbol.h: Added.
        * src/compiler/ShHandle.h:
        (TCompiler::getAsCompiler):
        (TCompiler::getInfoSink):
        (TCompiler::getAttribs):
        (TCompiler::getUniforms):
        (TCompiler::getShaderType):
        (TCompiler::getShaderSpec):
        * src/compiler/ShaderLang.cpp:
        (getVariableMaxLength):
        (getVariableInfo):
        (ShInitBuiltInResources):
        (ShConstructCompiler):
        (ShCompile):
        (ShGetInfo):
        (ShGetInfoLog):
        (ShGetObjectCode):
        (ShGetActiveAttrib):
        (ShGetActiveUniform):
        * src/compiler/SymbolTable.cpp:
        (TSymbolTableLevel::relateToExtension):
        * src/compiler/SymbolTable.h:
        (TVariable::shareConstPointer):
        (TFunction::relateToExtension):
        (TFunction::getExtension):
        (TFunction::getParamCount):
        (TFunction::getParam):
        (TSymbolTable::getGlobalLevel):
        (TSymbolTable::relateToOperator):
        (TSymbolTable::relateToExtension):
        * src/compiler/TranslatorGLSL.cpp:
        (writeVersion):
        (TranslatorGLSL::TranslatorGLSL):
        (TranslatorGLSL::translate):
        * src/compiler/TranslatorGLSL.h:
        * src/compiler/TranslatorHLSL.cpp:
        (TranslatorHLSL::TranslatorHLSL):
        (TranslatorHLSL::translate):
        * src/compiler/TranslatorHLSL.h:
        * src/compiler/Types.h:
        (TType::TType):
        * src/compiler/UnfoldSelect.cpp:
        (sh::UnfoldSelect::visitSelection):
        * src/compiler/UnfoldSelect.h:
        * src/compiler/ValidateLimitations.cpp: Added.
        (ValidateLimitations::ValidateLimitations):
        (ValidateLimitations::visitSymbol):
        (ValidateLimitations::visitConstantUnion):
        (ValidateLimitations::visitBinary):
        (ValidateLimitations::visitUnary):
        (ValidateLimitations::visitSelection):
        (ValidateLimitations::visitAggregate):
        (ValidateLimitations::visitLoop):
        (ValidateLimitations::visitBranch):
        (ValidateLimitations::error):
        (ValidateLimitations::withinLoopBody):
        (ValidateLimitations::isLoopIndex):
        (ValidateLimitations::validateLoopType):
        (ValidateLimitations::validateForLoopHeader):
        (ValidateLimitations::validateForLoopInit):
        (ValidateLimitations::validateForLoopCond):
        (ValidateLimitations::validateForLoopExpr):
        (ValidateLimitations::validateFunctionCall):
        (ValidateLimitations::validateOperation):
        (ValidateLimitations::isConstExpr):
        (ValidateLimitations::isConstIndexExpr):
        (ValidateLimitations::validateIndexing):
        * src/compiler/ValidateLimitations.h: Added.
        (ValidateLimitations::numErrors):
        * src/compiler/VariableInfo.cpp: Added.
        (arrayBrackets):
        (getVariableDataType):
        (getVariableInfo):
        (getBuiltInVariableInfo):
        (getUserDefinedVariableInfo):
        (CollectAttribsUniforms::CollectAttribsUniforms):
        (CollectAttribsUniforms::visitSymbol):
        (CollectAttribsUniforms::visitConstantUnion):
        (CollectAttribsUniforms::visitBinary):
        (CollectAttribsUniforms::visitUnary):
        (CollectAttribsUniforms::visitSelection):
        (CollectAttribsUniforms::visitAggregate):
        (CollectAttribsUniforms::visitLoop):
        (CollectAttribsUniforms::visitBranch):
        * src/compiler/VariableInfo.h: Added.
        * src/compiler/VersionGLSL.cpp: Added.
        (TVersionGLSL::TVersionGLSL):
        (TVersionGLSL::visitSymbol):
        (TVersionGLSL::visitConstantUnion):
        (TVersionGLSL::visitBinary):
        (TVersionGLSL::visitUnary):
        (TVersionGLSL::visitSelection):
        (TVersionGLSL::visitAggregate):
        (TVersionGLSL::visitLoop):
        (TVersionGLSL::visitBranch):
        (TVersionGLSL::updateVersion):
        * src/compiler/VersionGLSL.h: Added.
        (TVersionGLSL::getVersion):
        * src/compiler/generate_glslang_lexer.sh: Added.
        * src/compiler/generate_glslang_parser.sh: Added.
        * src/compiler/glslang.h: Added.
        * src/compiler/glslang.l:
        * src/compiler/glslang.y:
        * src/compiler/glslang_lex.cpp: Added.
        (yy_get_next_buffer):
        (yy_get_previous_state):
        (yy_try_NUL_trans):
        (input):
        (yyrestart):
        (yy_switch_to_buffer):
        (yy_load_buffer_state):
        (yy_create_buffer):
        (yy_delete_buffer):
        (yy_init_buffer):
        (yy_flush_buffer):
        (yypush_buffer_state):
        (yypop_buffer_state):
        (yyensure_buffer_stack):
        (yy_scan_buffer):
        (yy_scan_string):
        (yy_scan_bytes):
        (yy_push_state):
        (yy_pop_state):
        (yy_top_state):
        (yy_fatal_error):
        (yyget_extra):
        (yyget_lineno):
        (yyget_column):
        (yyget_in):
        (yyget_out):
        (yyget_leng):
        (yyget_text):
        (yyset_extra):
        (yyset_lineno):
        (yyset_column):
        (yyset_in):
        (yyset_out):
        (yyget_debug):
        (yyset_debug):
        (yyget_lval):
        (yyset_lval):
        (yylex_init):
        (yylex_init_extra):
        (yy_init_globals):
        (yylex_destroy):
        (yy_flex_strncpy):
        (yy_flex_strlen):
        (yyalloc):
        (yyrealloc):
        (yyfree):
        (string_input):
        (check_type):
        (reserved_word):
        (yyerror):
        (glslang_initialize):
        (glslang_finalize):
        (glslang_scan):
        * src/compiler/glslang_tab.cpp: Added.
        (yytnamerr):
        (yysyntax_error):
        (glslang_parse):
        * src/compiler/glslang_tab.h: Added.
        * src/compiler/intermOut.cpp:
        (TOutputTraverser::TOutputTraverser):
        (OutputTreeText):
        (TOutputTraverser::visitSymbol):
        (TOutputTraverser::visitBinary):
        (TOutputTraverser::visitUnary):
        (TOutputTraverser::visitAggregate):
        (TOutputTraverser::visitSelection):
        (TOutputTraverser::visitConstantUnion):
        (TOutputTraverser::visitLoop):
        (TOutputTraverser::visitBranch):
        (TIntermediate::outputTree):
        * src/compiler/intermediate.h:
        (TIntermLoop::TIntermLoop):
        (TIntermLoop::getType):
        (TIntermLoop::getInit):
        (TIntermLoop::getCondition):
        (TIntermLoop::getExpression):
        (TIntermLoop::getBody):
        * src/compiler/localintermediate.h:
        * src/compiler/osinclude.h:
        (OS_GetTLSValue):
        * src/compiler/ossource_nspr.cpp: Added.
        (OS_AllocTLSIndex):
        (OS_SetTLSValue):
        (OS_FreeTLSIndex):
        * src/compiler/preprocessor/compile.h:
        * src/compiler/preprocessor/cpp.c:
        (CPPdefine):
        (CPPelse):
        (CPPif):
        (CPPifdef):
        (CPPerror):
        (CPPextension):
        (readCPPline):
        * src/compiler/preprocessor/preprocess.h:
        * src/compiler/preprocessor/scanner.c:
        (str_getch):
        (str_ungetch):
        (ScanFromString):
        (lFloatConst):
        (byte_scan):
        (yylex_CPP):
        (check_EOF):
        * src/compiler/preprocessor/scanner.h:
        * src/compiler/preprocessor/tokens.c:
        (RecordToken):
        (ReadToken):
        * src/compiler/tools: Removed.
        * src/compiler/unistd.h: Removed.
        * src/compiler/util.cpp: Added.
        (atof_dot):
        * src/compiler/util.h: Added.
        * src/libEGL/Config.cpp:
        (egl::Config::set):
        * src/libEGL/Display.cpp:
        (egl::Display::Display):
        (egl::Display::initialize):
        (egl::Display::terminate):
        (egl::Display::createDevice):
        (egl::Display::resetDevice):
        (egl::Display::createContext):
        (egl::Display::destroyContext):
        (egl::Display::getMinSwapInterval):
        (egl::Display::getMaxSwapInterval):
        (egl::Display::getDevice):
        (egl::Display::getFloatTextureSupport):
        (egl::Display::getHalfFloatTextureSupport):
        (egl::Display::getLuminanceTextureSupport):
        (egl::Display::getLuminanceAlphaTextureSupport):
        (egl::Display::getBufferPool):
        (egl::Display::getEventQuerySupport):
        (egl::Display::getDefaultPresentParameters):
        * src/libEGL/Display.h:
        * src/libEGL/Surface.cpp:
        (egl::Surface::Surface):
        (egl::Surface::~Surface):
        (egl::Surface::release):
        (egl::Surface::resetSwapChain):
        (egl::Surface::writeRecordableFlipState):
        (egl::Surface::restoreState):
        (egl::SurfaceWindowProc):
        (egl::Surface::subclassWindow):
        (egl::Surface::unsubclassWindow):
        (egl::Surface::checkForOutOfDateSwapChain):
        (egl::Surface::convertInterval):
        (egl::Surface::swap):
        (egl::Surface::getRenderTarget):
        (egl::Surface::setSwapInterval):
        * src/libEGL/Surface.h:
        * src/libEGL/libEGL.cpp:
        * src/libGLESv2/Blit.cpp:
        (gl::Blit::copySurfaceToTexture):
        (gl::Blit::setCommonBlitState):
        * src/libGLESv2/Buffer.cpp:
        (gl::Buffer::Buffer):
        (gl::Buffer::~Buffer):
        (gl::Buffer::bufferData):
        (gl::Buffer::bufferSubData):
        (gl::Buffer::getVertexBuffer):
        (gl::Buffer::getIndexBuffer):
        (gl::Buffer::invalidateStaticData):
        * src/libGLESv2/Buffer.h:
        * src/libGLESv2/Context.cpp:
        (gl::Context::Context):
        (gl::Context::~Context):
        (gl::Context::makeCurrent):
        (gl::Context::markAllStateDirty):
        (gl::Context::setFragmentShaderDerivativeHint):
        (gl::Context::setEnableVertexAttribArray):
        (gl::Context::getVertexAttribState):
        (gl::Context::getVertexAttributes):
        (gl::Context::createFence):
        (gl::Context::deleteFence):
        (gl::Context::bindTexture2D):
        (gl::Context::bindTextureCubeMap):
        (gl::Context::getFence):
        (gl::Context::getTexture2D):
        (gl::Context::getTextureCubeMap):
        (gl::Context::getSamplerTexture):
        (gl::Context::getBooleanv):
        (gl::Context::getIntegerv):
        (gl::Context::getQueryParameterInfo):
        (gl::Context::applyRenderTarget):
        (gl::Context::applyState):
        (gl::Context::lookupAttributeMapping):
        (gl::Context::applyVertexBuffer):
        (gl::Context::applyIndexBuffer):
        (gl::Context::readPixels):
        (gl::Context::clear):
        (gl::Context::drawArrays):
        (gl::Context::drawElements):
        (gl::Context::finish):
        (gl::Context::drawClosingLine):
        (gl::Context::getMaximumVaryingVectors):
        (gl::Context::getMaximumFragmentUniformVectors):
        (gl::Context::supportsEventQueries):
        (gl::Context::supportsFloatTextures):
        (gl::Context::supportsFloatLinearFilter):
        (gl::Context::supportsFloatRenderableTextures):
        (gl::Context::supportsHalfFloatTextures):
        (gl::Context::supportsHalfFloatLinearFilter):
        (gl::Context::supportsHalfFloatRenderableTextures):
        (gl::Context::getMaximumRenderbufferDimension):
        (gl::Context::getMaximumTextureDimension):
        (gl::Context::getMaximumCubeTextureDimension):
        (gl::Context::getMaximumTextureLevel):
        (gl::Context::supportsLuminanceTextures):
        (gl::Context::supportsLuminanceAlphaTextures):
        (gl::Context::supports32bitIndices):
        (gl::Context::getIncompleteTexture):
        (gl::Context::setVertexAttrib):
        (gl::Context::initExtensionString):
        (gl::Context::blitFramebuffer):
        * src/libGLESv2/Context.h:
        (gl::VertexAttribute::VertexAttribute):
        (gl::VertexAttribute::typeSize):
        (gl::VertexAttribute::stride):
        * src/libGLESv2/Fence.cpp: Added.
        (gl::Fence::Fence):
        (gl::Fence::~Fence):
        (gl::Fence::isFence):
        (gl::Fence::setFence):
        (gl::Fence::testFence):
        (gl::Fence::finishFence):
        (gl::Fence::getFenceiv):
        * src/libGLESv2/Fence.h: Added.
        * src/libGLESv2/Framebuffer.cpp:
        (gl::Framebuffer::completeness):
        (gl::DefaultFramebuffer::DefaultFramebuffer):
        (gl::DefaultFramebuffer::completeness):
        * src/libGLESv2/Program.cpp:
        (gl::Program::Program):
        (gl::Program::getSamplerMapping):
        (gl::Program::getUniformLocation):
        (gl::Program::setUniform1iv):
        (gl::Program::applyUniforms):
        (gl::Program::packVaryings):
        (gl::Program::linkVaryings):
        (gl::Program::link):
        (gl::Program::defineUniform):
        (gl::Program::createUniform):
        (gl::Program::applyUniform1iv):
        (gl::Program::resetInfoLog):
        (gl::Program::unlink):
        (gl::Program::getActiveAttribute):
        (gl::Program::getActiveUniform):
        (gl::Program::getDxDepthRangeLocation):
        * src/libGLESv2/Program.h:
        * src/libGLESv2/RefCountObject.cpp:
        (gl::RefCountObject::~RefCountObject):
        * src/libGLESv2/Renderbuffer.cpp:
        (gl::RenderbufferStorage::RenderbufferStorage):
        (gl::RenderbufferStorage::isFloatingPoint):
        (gl::Colorbuffer::Colorbuffer):
        (gl::DepthStencilbuffer::DepthStencilbuffer):
        * src/libGLESv2/Renderbuffer.h:
        * src/libGLESv2/Shader.cpp:
        (gl::Shader::Shader):
        (gl::Shader::parseVaryings):
        (gl::Shader::compileToHLSL):
        (gl::VertexShader::parseAttributes):
        * src/libGLESv2/Texture.cpp:
        (gl::Texture::Texture):
        (gl::Texture::isFloatingPoint):
        (gl::Texture::isRenderableFormat):
        (gl::Texture::selectFormat):
        (gl::Texture::loadImageData):
        (gl::Texture::loadAlphaFloatImageData):
        (gl::Texture::loadAlphaHalfFloatImageData):
        (gl::Texture::loadLuminanceImageData):
        (gl::Texture::loadLuminanceFloatImageData):
        (gl::Texture::loadLuminanceHalfFloatImageData):
        (gl::Texture::loadLuminanceAlphaImageData):
        (gl::Texture::loadLuminanceAlphaFloatImageData):
        (gl::Texture::loadLuminanceAlphaHalfFloatImageData):
        (gl::Texture::loadRGBFloatImageData):
        (gl::Texture::loadRGBHalfFloatImageData):
        (gl::Texture::loadRGBAFloatImageData):
        (gl::Texture::loadRGBAHalfFloatImageData):
        (gl::Texture::createSurface):
        (gl::Texture::setImage):
        (gl::Texture::setCompressedImage):
        (gl::Texture::subImage):
        (gl::Texture::subImageCompressed):
        (gl::Texture::copyNonRenderable):
        (gl::Texture::getD3DFormat):
        (gl::Texture::isRenderable):
        (gl::Texture2D::Texture2D):
        (gl::Texture2D::~Texture2D):
        (gl::Texture2D::redefineTexture):
        (gl::Texture2D::setImage):
        (gl::Texture2D::setCompressedImage):
        (gl::Texture2D::copyImage):
        (gl::Texture2D::copySubImage):
        (gl::Texture2D::isComplete):
        (gl::Texture2D::createTexture):
        (gl::Texture2D::convertToRenderTarget):
        (gl::Texture2D::generateMipmaps):
        (gl::Texture2D::getColorbuffer):
        (gl::Texture2D::getRenderTarget):
        (gl::TextureCubeMap::TextureCubeMap):
        (gl::TextureCubeMap::~TextureCubeMap):
        (gl::TextureCubeMap::subImage):
        (gl::TextureCubeMap::subImageCompressed):
        (gl::TextureCubeMap::isComplete):
        (gl::TextureCubeMap::createTexture):
        (gl::TextureCubeMap::convertToRenderTarget):
        (gl::TextureCubeMap::redefineTexture):
        (gl::TextureCubeMap::copyImage):
        (gl::TextureCubeMap::copySubImage):
        (gl::TextureCubeMap::generateMipmaps):
        (gl::TextureCubeMap::getColorbuffer):
        (gl::TextureCubeMap::getRenderTarget):
        (gl::Texture::TextureColorbufferProxy::TextureColorbufferProxy):
        (gl::Texture::TextureColorbufferProxy::isFloatingPoint):
        * src/libGLESv2/Texture.h:
        * src/libGLESv2/geometry/IndexDataManager.cpp:
        (gl::IndexDataManager::IndexDataManager):
        (gl::IndexDataManager::~IndexDataManager):
        (gl::convertIndices):
        (gl::computeRange):
        (gl::IndexDataManager::prepareIndexData):
        (gl::IndexDataManager::indexSize):
        (gl::IndexDataManager::typeSize):
        (gl::IndexBuffer::IndexBuffer):
        (gl::IndexBuffer::~IndexBuffer):
        (gl::IndexBuffer::getBuffer):
        (gl::IndexBuffer::unmap):
        (gl::StreamingIndexBuffer::StreamingIndexBuffer):
        (gl::StreamingIndexBuffer::~StreamingIndexBuffer):
        (gl::StreamingIndexBuffer::map):
        (gl::StreamingIndexBuffer::reserveSpace):
        (gl::StaticIndexBuffer::StaticIndexBuffer):
        (gl::StaticIndexBuffer::~StaticIndexBuffer):
        (gl::StaticIndexBuffer::map):
        (gl::StaticIndexBuffer::reserveSpace):
        (gl::StaticIndexBuffer::lookupType):
        (gl::StaticIndexBuffer::lookupRange):
        (gl::StaticIndexBuffer::addRange):
        * src/libGLESv2/geometry/IndexDataManager.h:
        (gl::IndexBuffer::size):
        * src/libGLESv2/geometry/VertexDataManager.cpp:
        (gl::VertexDataManager::VertexDataManager):
        (gl::VertexDataManager::~VertexDataManager):
        (gl::VertexDataManager::writeAttributeData):
        (gl::VertexDataManager::prepareVertexData):
        (gl::VertexDataManager::spaceRequired):
        (gl::VertexDataManager::checkVertexCaps):
        (gl::VertexDataManager::typeIndex):
        (gl::VertexDataManager::setupAttributes):
        (gl::VertexBuffer::VertexBuffer):
        (gl::VertexBuffer::~VertexBuffer):
        (gl::VertexBuffer::unmap):
        (gl::VertexBuffer::getBuffer):
        (gl::ConstantVertexBuffer::ConstantVertexBuffer):
        (gl::ConstantVertexBuffer::~ConstantVertexBuffer):
        (gl::ArrayVertexBuffer::ArrayVertexBuffer):
        (gl::ArrayVertexBuffer::~ArrayVertexBuffer):
        (gl::ArrayVertexBuffer::addRequiredSpace):
        (gl::ArrayVertexBuffer::addRequiredSpaceFor):
        (gl::StreamingVertexBuffer::StreamingVertexBuffer):
        (gl::StreamingVertexBuffer::~StreamingVertexBuffer):
        (gl::StreamingVertexBuffer::map):
        (gl::StreamingVertexBuffer::reserveRequiredSpace):
        (gl::StaticVertexBuffer::StaticVertexBuffer):
        (gl::StaticVertexBuffer::~StaticVertexBuffer):
        (gl::StaticVertexBuffer::map):
        (gl::StaticVertexBuffer::reserveRequiredSpace):
        (gl::StaticVertexBuffer::lookupAttribute):
        (gl::VertexDataManager::formatConverter):
        * src/libGLESv2/geometry/VertexDataManager.h:
        (gl::ArrayVertexBuffer::size):
        (gl::VertexDataManager::dirtyCurrentValue):
        * src/libGLESv2/geometry/backend.cpp: Removed.
        * src/libGLESv2/geometry/backend.h: Removed.
        * src/libGLESv2/geometry/dx9.cpp: Removed.
        * src/libGLESv2/geometry/dx9.h: Removed.
        * src/libGLESv2/libGLESv2.cpp:
        * src/libGLESv2/libGLESv2.def:
        * src/libGLESv2/libGLESv2.vcproj:
        * src/libGLESv2/utilities.cpp:
        (gl::UniformComponentCount):
        (gl::UniformComponentType):
        (gl::ComputePixelSize):
        (gl::CheckTextureFormatType):
        (gl::IsColorRenderable):
        (gl::IsDepthRenderable):
        (gl::IsStencilRenderable):
        (es2dx::GetAlphaSize):
        (es2dx::GetRedSize):
        (es2dx::GetGreenSize):
        (es2dx::GetBlueSize):
        (es2dx::GetDepthSize):
        (es2dx::ConvertPrimitiveType):
        (dx2es::ConvertBackBufferFormat):
        (dx2es::ConvertDepthStencilFormat):
        * src/libGLESv2/utilities.h:

2011-01-17  Dan Bernstein  <mitz@apple.com>

        Rubber-stamped by Mark Rowe.

        Update xcodeproj svn:ignore to include xcuserdata.

        * ANGLE.xcodeproj: Modified property svn:ignore.
        * src/build_angle.xcodeproj: Modified property svn:ignore.

2010-12-01  Steve Falkenburg  <sfalken@apple.com>

        Reviewed by Adam Roben.

        vcproj changes can't be applied cleanly by the Windows EWS bot
        https://bugs.webkit.org/show_bug.cgi?id=50328

        * src/libEGL/libEGL.vcproj: Added property svn:eol-style.
        * src/libGLESv2/libGLESv2.vcproj: Added property svn:eol-style.

2010-11-03  Darin Adler  <darin@apple.com>

        Updated Xcode projects by opening them with Xcode 3.2.4.
        Updated svn:ignore for Xcode projects.

        * ANGLE.xcodeproj: Added property svn:ignore.
        * ANGLE.xcodeproj/project.pbxproj: Updated with Xcode 3.2.4.
        * src/build_angle.xcodeproj: Added property svn:ignore.
        * src/build_angle.xcodeproj/project.pbxproj: Updated with Xcode 3.2.4.

2010-09-01  Zhenyao Mo  <zmo@google.com>

        Reviewed by Kenneth Russell.

        Roll ANGLE under webkit to r402
        https://bugs.webkit.org/show_bug.cgi?id=45004

        * ANGLE.xcodeproj/project.pbxproj:
        * include/GLES2/gl2ext.h:
        * include/GLSLANG/ResourceLimits.h: Removed.
        * include/GLSLANG/ShaderLang.h:
        * src/compiler/BaseTypes.h:
        (getPrecisionString):
        (getBasicString):
        (IsSampler):
        (getQualifierString):
        * src/compiler/Initialize.cpp:
        (BuiltInConstants):
        (IdentifyBuiltIns):
        * src/compiler/Initialize.h:
        * src/compiler/InitializeDll.cpp:
        (InitProcess):
        (DetachProcess):
        (InitThread):
        (DetachThread):
        * src/compiler/InitializeDll.h:
        * src/compiler/InitializeParseContext.h:
        * src/compiler/Intermediate.cpp:
        (GetHigherPrecision):
        (TIntermediate::addBinaryMath):
        (TIntermediate::setAggregateOperator):
        (TIntermediate::addComma):
        (TIntermediate::postProcess):
        (TIntermBinary::promote):
        (CompareStruct):
        * src/compiler/OutputGLSL.cpp:
        (TOutputGLSL::writeFunctionParameters):
        (TOutputGLSL::visitUnary):
        (TOutputGLSL::visitBranch):
        * src/compiler/OutputHLSL.cpp:
        (sh::OutputHLSL::header):
        (sh::OutputHLSL::visitBinary):
        (sh::OutputHLSL::visitAggregate):
        (sh::OutputHLSL::handleExcessiveLoop):
        (sh::OutputHLSL::addConstructor):
        * src/compiler/ParseHelper.cpp:
        (TParseContext::constructorErrorCheck):
        (TParseContext::samplerErrorCheck):
        (TParseContext::paramErrorCheck):
        (TParseContext::findFunction):
        (TParseContext::executeInitializer):
        (TParseContext::addConstructor):
        (TParseContext::addConstStruct):
        (FreeParseContextIndex):
        (GetGlobalParseContext):
        * src/compiler/PoolAlloc.h:
        (TPoolAllocator::tHeader::tHeader):
        (pool_allocator::allocate):
        (pool_allocator::deallocate):
        * src/compiler/ShaderLang.cpp:
        (ShInitialize):
        (ShFinalize):
        (ShInitBuiltInResource):
        * src/compiler/SymbolTable.cpp:
        (TType::getStructSize):
        * src/compiler/SymbolTable.h:
        (TVariable::setQualifier):
        * src/compiler/Types.h:
        (TType::TType):
        (TType::getBasicType):
        (TType::setBasicType):
        (TType::getPrecision):
        (TType::setPrecision):
        (TType::getQualifier):
        (TType::setQualifier):
        (TType::getNominalSize):
        (TType::setNominalSize):
        (TType::isMatrix):
        (TType::setMatrix):
        (TType::isArray):
        (TType::getArraySize):
        (TType::setArraySize):
        (TType::getMaxArraySize):
        (TType::setMaxArraySize):
        (TType::clearArrayness):
        (TType::setArrayInformationType):
        (TType::getArrayInformationType):
        (TType::isVector):
        (TType::isScalar):
        (TType::setStruct):
        (TType::getTypeName):
        (TType::setTypeName):
        (TType::isField):
        (TType::getFieldName):
        (TType::setFieldName):
        (TType::getBasicString):
        (TType::getPrecisionString):
        (TType::getQualifierString):
        * src/compiler/glslang.l:
        * src/compiler/glslang.y:
        * src/compiler/intermediate.h:
        (TIntermNode::getLine):
        (TIntermNode::setLine):
        (TIntermTyped::getAsTyped):
        (TIntermTyped::setType):
        (TIntermTyped::getType):
        (TIntermTyped::getTypePointer):
        (TIntermTyped::getBasicType):
        (TIntermTyped::getQualifier):
        (TIntermTyped::getPrecision):
        (TIntermTyped::getNominalSize):
        (TIntermTyped::isMatrix):
        (TIntermTyped::isArray):
        (TIntermTyped::isVector):
        (TIntermTyped::isScalar):
        (TIntermTyped::getBasicString):
        (TIntermTyped::getQualifierString):
        (TIntermSymbol::getId):
        (TIntermSymbol::getSymbol):
        (TIntermOperator::setOp):
        (TIntermBinary::setLeft):
        (TIntermBinary::setRight):
        (TIntermBinary::getLeft):
        (TIntermBinary::getRight):
        (TIntermUnary::setOperand):
        (TIntermUnary::getOperand):
        (TIntermAggregate::getAsAggregate):
        (TIntermAggregate::getSequence):
        (TIntermAggregate::setName):
        (TIntermAggregate::getName):
        (TIntermAggregate::setUserDefined):
        (TIntermAggregate::isUserDefined):
        (TIntermAggregate::getQualifier):
        (TIntermAggregate::setOptimize):
        (TIntermAggregate::setDebug):
        (TIntermSelection::getCondition):
        (TIntermSelection::getTrueBlock):
        (TIntermSelection::getFalseBlock):
        (TIntermSelection::getAsSelectionNode):
        * src/compiler/parseConst.cpp:
        (TConstTraverser::TConstTraverser):
        * src/compiler/preprocessor/atom.c:
        (InitAtomTable):
        * src/compiler/preprocessor/atom.h:
        * src/compiler/preprocessor/compile.h:
        * src/compiler/preprocessor/cpp.c:
        * src/compiler/preprocessor/cpp.h:
        * src/compiler/preprocessor/cppstruct.c:
        * src/compiler/preprocessor/memory.c:
        * src/compiler/preprocessor/memory.h:
        * src/compiler/preprocessor/parser.h:
        * src/compiler/preprocessor/preprocess.h:
        * src/compiler/preprocessor/scanner.c:
        * src/compiler/preprocessor/scanner.h:
        * src/compiler/preprocessor/slglobals.h:
        * src/compiler/preprocessor/symbols.c:
        (NewSymbol):
        * src/compiler/preprocessor/symbols.h:
        * src/compiler/preprocessor/tokens.c:
        (RecordToken):
        * src/compiler/preprocessor/tokens.h:
        * src/libEGL/Display.cpp:
        (egl::Display::Display):
        (egl::Display::initialize):
        (egl::Display::terminate):
        (egl::Display::createDevice):
        (egl::Display::createWindowSurface):
        (egl::Display::createContext):
        (egl::Display::getMultiSampleSupport):
        (egl::Display::getCompressedTextureSupport):
        * src/libEGL/Display.h:
        * src/libEGL/Surface.cpp:
        (egl::Surface::Surface):
        (egl::Surface::resetSwapChain):
        (egl::Surface::getWindowHandle):
        (egl::Surface::writeRecordableFlipState):
        (egl::Surface::applyFlipState):
        (egl::Surface::releaseRecordedState):
        (egl::Surface::checkForWindowResize):
        (egl::Surface::swap):
        * src/libEGL/Surface.h:
        * src/libEGL/libEGL.cpp:
        * src/libEGL/libEGL.vcproj:
        * src/libGLESv2/Blit.cpp:
        (gl::Blit::setVertexShader):
        (gl::Blit::setPixelShader):
        (gl::Blit::setFormatConvertShaders):
        * src/libGLESv2/Buffer.cpp:
        (gl::Buffer::Buffer):
        * src/libGLESv2/Buffer.h:
        * src/libGLESv2/Context.cpp:
        (gl::Context::Context):
        (gl::Context::~Context):
        (gl::Context::makeCurrent):
        (gl::Context::markAllStateDirty):
        (gl::Context::getReadFramebufferHandle):
        (gl::Context::getDrawFramebufferHandle):
        (gl::Context::getRenderbufferHandle):
        (gl::Context::getArrayBufferHandle):
        (gl::Context::setVertexAttribState):
        (gl::Context::createBuffer):
        (gl::Context::createProgram):
        (gl::Context::createShader):
        (gl::Context::createTexture):
        (gl::Context::createRenderbuffer):
        (gl::Context::deleteBuffer):
        (gl::Context::deleteShader):
        (gl::Context::deleteProgram):
        (gl::Context::deleteTexture):
        (gl::Context::deleteRenderbuffer):
        (gl::Context::getBuffer):
        (gl::Context::getShader):
        (gl::Context::getProgram):
        (gl::Context::getTexture):
        (gl::Context::getRenderbuffer):
        (gl::Context::getReadFramebuffer):
        (gl::Context::getDrawFramebuffer):
        (gl::Context::bindArrayBuffer):
        (gl::Context::bindElementArrayBuffer):
        (gl::Context::bindTexture2D):
        (gl::Context::bindTextureCubeMap):
        (gl::Context::bindReadFramebuffer):
        (gl::Context::bindDrawFramebuffer):
        (gl::Context::bindRenderbuffer):
        (gl::Context::useProgram):
        (gl::Context::setFramebufferZero):
        (gl::Context::setRenderbufferStorage):
        (gl::Context::getFramebuffer):
        (gl::Context::getArrayBuffer):
        (gl::Context::getElementArrayBuffer):
        (gl::Context::getCurrentProgram):
        (gl::Context::getTexture2D):
        (gl::Context::getTextureCubeMap):
        (gl::Context::getSamplerTexture):
        (gl::Context::getFloatv):
        (gl::Context::getIntegerv):
        (gl::Context::getQueryParameterInfo):
        (gl::Context::applyRenderTarget):
        (gl::Context::applyState):
        (gl::Context::applyIndexBuffer):
        (gl::Context::readPixels):
        (gl::Context::clear):
        (gl::Context::finish):
        (gl::Context::flush):
        (gl::Context::supportsShaderModel3):
        (gl::Context::getMaxSupportedSamples):
        (gl::Context::getNearestSupportedSamples):
        (gl::Context::supportsCompressedTextures):
        (gl::Context::detachBuffer):
        (gl::Context::detachTexture):
        (gl::Context::detachFramebuffer):
        (gl::Context::detachRenderbuffer):
        (gl::Context::getIncompleteTexture):
        (gl::Context::initExtensionString):
        (gl::Context::blitFramebuffer):
        * src/libGLESv2/Context.h:
        (gl::AttributeState::AttributeState):
        * src/libGLESv2/Framebuffer.cpp:
        (gl::Framebuffer::Framebuffer):
        (gl::Framebuffer::~Framebuffer):
        (gl::Framebuffer::lookupRenderbuffer):
        (gl::Framebuffer::setColorbuffer):
        (gl::Framebuffer::setDepthbuffer):
        (gl::Framebuffer::setStencilbuffer):
        (gl::Framebuffer::detachTexture):
        (gl::Framebuffer::detachRenderbuffer):
        (gl::Framebuffer::getRenderTargetSerial):
        (gl::Framebuffer::getRenderTarget):
        (gl::Framebuffer::getDepthStencil):
        (gl::Framebuffer::getDepthbufferSerial):
        (gl::Framebuffer::getStencilbufferSerial):
        (gl::Framebuffer::getColorbuffer):
        (gl::Framebuffer::getDepthbuffer):
        (gl::Framebuffer::getStencilbuffer):
        (gl::Framebuffer::getColorbufferHandle):
        (gl::Framebuffer::getDepthbufferHandle):
        (gl::Framebuffer::getStencilbufferHandle):
        (gl::Framebuffer::hasStencil):
        (gl::Framebuffer::isMultisample):
        (gl::Framebuffer::completeness):
        (gl::DefaultFramebuffer::DefaultFramebuffer):
        (gl::Framebuffer::getSamples):
        (gl::DefaultFramebuffer::completeness):
        * src/libGLESv2/Framebuffer.h:
        * src/libGLESv2/Program.cpp:
        (gl::Program::Program):
        (gl::Program::~Program):
        (gl::Program::attachShader):
        (gl::Program::detachShader):
        (gl::Program::linkVaryings):
        (gl::Program::link):
        (gl::Program::unlink):
        (gl::Program::release):
        (gl::Program::addRef):
        (gl::Program::getRefCount):
        (gl::Program::getDxViewportLocation):
        * src/libGLESv2/Program.h:
        * src/libGLESv2/RefCountObject.cpp: Added.
        (gl::RefCountObject::RefCountObject):
        (gl::RefCountObject::~RefCountObject):
        (gl::RefCountObject::addRef):
        (gl::RefCountObject::release):
        (gl::RefCountObjectBindingPointer::set):
        * src/libGLESv2/RefCountObject.h: Added.
        (gl::RefCountObject::id):
        (gl::RefCountObjectBindingPointer::RefCountObjectBindingPointer):
        (gl::RefCountObjectBindingPointer::~RefCountObjectBindingPointer):
        (gl::RefCountObjectBindingPointer::get):
        (gl::RefCountObjectBindingPointer::id):
        (gl::RefCountObjectBindingPointer::operator ! ):
        (gl::BindingPointer::set):
        (gl::BindingPointer::get):
        (gl::BindingPointer::operator -> ):
        * src/libGLESv2/Renderbuffer.cpp:
        (gl::Renderbuffer::Renderbuffer):
        (gl::Renderbuffer::~Renderbuffer):
        (gl::Renderbuffer::isColorbuffer):
        (gl::Renderbuffer::isDepthbuffer):
        (gl::Renderbuffer::isStencilbuffer):
        (gl::Renderbuffer::getRenderTarget):
        (gl::Renderbuffer::getDepthStencil):
        (gl::Renderbuffer::getWidth):
        (gl::Renderbuffer::getHeight):
        (gl::Renderbuffer::getFormat):
        (gl::Renderbuffer::getD3DFormat):
        (gl::Renderbuffer::getSerial):
        (gl::Renderbuffer::setStorage):
        (gl::RenderbufferStorage::RenderbufferStorage):
        (gl::RenderbufferStorage::~RenderbufferStorage):
        (gl::RenderbufferStorage::isColorbuffer):
        (gl::RenderbufferStorage::isDepthbuffer):
        (gl::RenderbufferStorage::isStencilbuffer):
        (gl::RenderbufferStorage::getRenderTarget):
        (gl::RenderbufferStorage::getDepthStencil):
        (gl::RenderbufferStorage::getWidth):
        (gl::RenderbufferStorage::getHeight):
        (gl::RenderbufferStorage::setSize):
        (gl::RenderbufferStorage::getFormat):
        (gl::RenderbufferStorage::getD3DFormat):
        (gl::RenderbufferStorage::getSamples):
        (gl::RenderbufferStorage::getSerial):
        (gl::RenderbufferStorage::issueSerial):
        (gl::Colorbuffer::Colorbuffer):
        (gl::Colorbuffer::isColorbuffer):
        (gl::Colorbuffer::getRedSize):
        (gl::Colorbuffer::getGreenSize):
        (gl::Colorbuffer::getBlueSize):
        (gl::Colorbuffer::getAlphaSize):
        (gl::DepthStencilbuffer::DepthStencilbuffer):
        (gl::DepthStencilbuffer::~DepthStencilbuffer):
        (gl::DepthStencilbuffer::isDepthbuffer):
        (gl::DepthStencilbuffer::isStencilbuffer):
        (gl::DepthStencilbuffer::getDepthSize):
        (gl::DepthStencilbuffer::getStencilSize):
        (gl::DepthStencilbuffer::getDepthStencil):
        (gl::Depthbuffer::Depthbuffer):
        (gl::Depthbuffer::~Depthbuffer):
        (gl::Depthbuffer::isDepthbuffer):
        (gl::Depthbuffer::isStencilbuffer):
        (gl::Stencilbuffer::Stencilbuffer):
        (gl::Stencilbuffer::~Stencilbuffer):
        (gl::Stencilbuffer::isDepthbuffer):
        (gl::Stencilbuffer::isStencilbuffer):
        * src/libGLESv2/Renderbuffer.h:
        (gl::Renderbuffer::getStorage):
        * src/libGLESv2/ResourceManager.cpp: Added.
        (gl::ResourceManager::ResourceManager):
        (gl::ResourceManager::~ResourceManager):
        (gl::ResourceManager::addRef):
        (gl::ResourceManager::release):
        (gl::ResourceManager::createBuffer):
        (gl::ResourceManager::createShader):
        (gl::ResourceManager::createProgram):
        (gl::ResourceManager::createTexture):
        (gl::ResourceManager::createRenderbuffer):
        (gl::ResourceManager::deleteBuffer):
        (gl::ResourceManager::deleteShader):
        (gl::ResourceManager::deleteProgram):
        (gl::ResourceManager::deleteTexture):
        (gl::ResourceManager::deleteRenderbuffer):
        (gl::ResourceManager::getBuffer):
        (gl::ResourceManager::getShader):
        (gl::ResourceManager::getTexture):
        (gl::ResourceManager::getProgram):
        (gl::ResourceManager::getRenderbuffer):
        (gl::ResourceManager::setRenderbuffer):
        (gl::ResourceManager::checkBufferAllocation):
        (gl::ResourceManager::checkTextureAllocation):
        (gl::ResourceManager::checkRenderbufferAllocation):
        * src/libGLESv2/ResourceManager.h: Added.
        * src/libGLESv2/Shader.cpp:
        (gl::Shader::Shader):
        (gl::Shader::addRef):
        (gl::Shader::release):
        (gl::Shader::getRefCount):
        (gl::Shader::parseVaryings):
        (gl::VertexShader::VertexShader):
        (gl::FragmentShader::FragmentShader):
        * src/libGLESv2/Shader.h:
        * src/libGLESv2/Texture.cpp:
        (gl::Texture::Image::Image):
        (gl::Texture::Texture):
        (gl::Texture::getBlitter):
        (gl::Texture::selectFormat):
        (gl::Texture::loadImageData):
        (gl::Texture::loadAlphaImageData):
        (gl::Texture::loadLuminanceImageData):
        (gl::Texture::loadLuminanceAlphaImageData):
        (gl::Texture::loadRGBUByteImageData):
        (gl::Texture::loadRGB565ImageData):
        (gl::Texture::loadRGBAUByteImageData):
        (gl::Texture::loadRGBA4444ImageData):
        (gl::Texture::loadRGBA5551ImageData):
        (gl::Texture::loadBGRAImageData):
        (gl::Texture::createSurface):
        (gl::Texture::setImage):
        (gl::Texture::setCompressedImage):
        (gl::Texture::subImage):
        (gl::Texture::subImageCompressed):
        (gl::Texture2D::Texture2D):
        (gl::Texture2D::getFormat):
        (gl::Texture2D::setCompressedImage):
        (gl::Texture2D::subImage):
        (gl::Texture2D::subImageCompressed):
        (gl::Texture2D::copyImage):
        (gl::Texture2D::copySubImage):
        (gl::Texture2D::isCompressed):
        (gl::Texture2D::getColorbuffer):
        (gl::TextureCubeMap::TextureCubeMap):
        (gl::TextureCubeMap::getFormat):
        (gl::TextureCubeMap::setCompressedImage):
        (gl::TextureCubeMap::subImage):
        (gl::TextureCubeMap::subImageCompressed):
        (gl::TextureCubeMap::isCompressed):
        (gl::TextureCubeMap::copyImage):
        (gl::TextureCubeMap::copySubImage):
        (gl::TextureCubeMap::getColorbuffer):
        (gl::Texture::TextureColorbufferProxy::addRef):
        (gl::Texture::TextureColorbufferProxy::release):
        (gl::Texture::TextureColorbufferProxy::getWidth):
        (gl::Texture::TextureColorbufferProxy::getHeight):
        (gl::Texture::TextureColorbufferProxy::getFormat):
        * src/libGLESv2/Texture.h:
        * src/libGLESv2/libGLESv2.cpp:
        * src/libGLESv2/libGLESv2.def:
        * src/libGLESv2/libGLESv2.vcproj:
        * src/libGLESv2/main.h:
        * src/libGLESv2/utilities.cpp:
        (gl::ComputeCompressedPitch):
        (gl::ComputeCompressedSize):
        (gl::IsCompressed):
        (gl::ComputePixelSize):
        (gl::CheckTextureFormatType):
        (es2dx::ConvertRenderbufferFormat):
        (es2dx::GetSamplesFromMultisampleType):
        (es2dx::GetMultisampleTypeFromSamples):
        * src/libGLESv2/utilities.h:

2010-08-17  Chris Marrin  <cmarrin@apple.com>

        Unreviewed.

        Moved previous link error fix to Base.xcconfig.

        * ANGLE.xcodeproj/project.pbxproj:
        * Configurations/Base.xcconfig:

2010-08-17  Chris Marrin  <cmarrin@apple.com>

        Unreviewed.

        Got rid of link errors in WebCore.

        Changed GCC_INLINES_ARE_PRIVATE_EXTERN to YES and
        GCC_SYMBOLS_PRIVATE_EXTERN to NO to match WebCore
        flags.

        * ANGLE.xcodeproj/project.pbxproj:

2010-08-04  Kenneth Russell  <kbr@google.com>

        Reviewed by Dimitri Glazkov.

        Update ANGLE to r352
        https://bugs.webkit.org/show_bug.cgi?id=43500

        Updated ANGLE to r352 (July 26, 2010). Built WebKit to test.

        * include/GLSLANG/ShaderLang.h:
        * src/compiler/Initialize.cpp:
        (BuiltInFunctionsCommon):
        (BuiltInFunctionsVertex):
        (BuiltInFunctionsFragment):
        (StandardUniforms):
        (DefaultPrecisionVertex):
        (DefaultPrecisionFragment):
        (BuiltInConstants):
        (TBuiltIns::initialize):
        (IdentifyBuiltIns):
        * src/compiler/Initialize.h:
        (TBuiltIns::getBuiltInStrings):
        * src/compiler/OutputGLSL.cpp:
        (TOutputGLSL::visitSelection):
        * src/compiler/ShHandle.h:
        (TCompiler::getLanguage):
        (TCompiler::getSpec):
        (TCompiler::getSymbolTable):
        (TCompiler::getInfoSink):
        * src/compiler/ShaderLang.cpp:
        (InitializeSymbolTable):
        (GenerateBuiltInSymbolTable):
        (ShInitialize):
        (ShConstructCompiler):
        (ShFinalize):
        (ShCompile):
        * src/compiler/SymbolTable.h:
        (TSymbolTable::atBuiltInLevel):
        (TSymbolTable::atGlobalLevel):
        (TSymbolTable::push):
        (TSymbolTable::getGlobalLevel):
        (TSymbolTable::currentLevel):
        * src/libGLESv2/Shader.cpp:
        (gl::Shader::Shader):
        (gl::Shader::compileToHLSL):

2010-08-03  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Adele Peterson.

        Remove some unnecessary files from the ANGLE tree.

        * src/compiler/tools/COPYING.bison: Removed.
        * src/compiler/tools/COPYING.flex: Removed.
        * src/compiler/tools/README: Removed.
        * src/compiler/tools/bison.hairy: Removed.
        * src/compiler/tools/bison.simple: Removed.

2010-08-03  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Adele Peterson.

        Clean up the ANGLE Xcode project.

        Main changes include:
        • Adding a Production configuration.
        • Modifying the library name from libangle.a to libANGLE.a.
        • Installing the headers in a subdirectory of /usr/local/include to avoid polluting the top-level directory.
        • Generating derived sources in to the built products directory so they're saved along with the symroot.
        • Switching to using .xcconfig files for maximum cleanliness.

        * ANGLE.xcodeproj/project.pbxproj:
        * Configurations/ANGLE.xcconfig: Added.
        * Configurations/Base.xcconfig: Added.
        * Configurations/DebugRelease.xcconfig: Added.

2010-08-02  Paul Sawaya  <psawaya@apple.com>

        Reviewed by Adele Peterson.

        Add ANGLE library to WebKit. From the repository (http://angleproject.googlecode.com) as of July 22.
        https://bugs.webkit.org/show_bug.cgi?id=42789

