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

