<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[162315] releases/WebKitGTK/webkit-2.2/Source</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/162315">162315</a></dd>
<dt>Author</dt> <dd>carlosgc@webkit.org</dd>
<dt>Date</dt> <dd>2014-01-20 01:44:37 -0800 (Mon, 20 Jan 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Merge <a href="http://trac.webkit.org/projects/webkit/changeset/159533">r159533</a> - Update ANGLE sources.
https://bugs.webkit.org/show_bug.cgi?id=124615.

Reviewed by Dean Jackson.

Tests covered by Khronos WebGL conformance tests.

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.
* platform/graphics/ANGLEWebKitBridge.cpp: Resolve a build error that resulted from updating ANGLE.
(WebCore::getSymbolInfo):
(WebCore::ANGLEWebKitBridge::compileShaderSource):
* 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&lt;):
(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):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEANGLEplist">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/ANGLE.plist</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEChangeLog">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/ChangeLog</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEGNUmakefileam">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/GNUmakefile.am</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEincludeEGLeglh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/include/EGL/egl.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEincludeGLES2gl2h">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/include/GLES2/gl2.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEincludeGLSLANGShaderLangh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEincludeKHRkhrplatformh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/include/KHR/khrplatform.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrcbuild_anglegypi">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/build_angle.gypi</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccommondebugh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/common/debug.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccommonversionh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/common/version.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerCommonh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/Common.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerCompilercpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/Compiler.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerConstantUnionh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ConstantUnion.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerDetectDiscontinuitycpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerInfoSinkh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InfoSink.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerInitializeDllcpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeDll.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerInitializeDllh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeDll.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerInitializeGlobalsh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeGlobals.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerInitializeParseContextcpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeParseContext.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerInitializeParseContexth">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeParseContext.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerIntermTraversecpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/IntermTraverse.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerIntermediatecpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/Intermediate.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerMapLongVariableNamescpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerMapLongVariableNamesh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerOutputGLSLBasecpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerOutputGLSLBaseh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerOutputHLSLcpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/OutputHLSL.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerOutputHLSLh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/OutputHLSL.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerPoolAlloccpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/PoolAlloc.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerPoolAlloch">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/PoolAlloc.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerSearchSymbolh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/SearchSymbol.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerShHandleh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ShHandle.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerShaderLangcpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ShaderLang.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerSymbolTablecpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/SymbolTable.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerSymbolTableh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerTypesh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/Types.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerUnfoldShortCircuitcpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuit.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerUnfoldShortCircuith">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuit.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerUniformcpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/Uniform.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerUniformh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/Uniform.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerValidateLimitationscpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ValidateLimitations.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerVariableInfocpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/VariableInfo.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerVariableInfoh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/VariableInfo.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerdebugcpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/debug.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerdepgraphDependencyGraphcpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraph.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerdepgraphDependencyGraphBuildercpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphBuilder.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilergenerate_parsersh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/generate_parser.sh</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerglslangl">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/glslang.l</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerglslangy">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/glslang.y</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerglslang_lexcpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerglslang_tabcpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerglslang_tabh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerintermediateh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/intermediate.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerlocalintermediateh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/localintermediate.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerparseConstcpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/parseConst.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerpreprocessorExpressionParsercpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerpreprocessorExpressionParsery">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.y</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerpreprocessorPreprocessorcpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerpreprocessorPreprocessorh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerpreprocessorTokenizercpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerpreprocessorTokenizerh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerpreprocessorTokenizerl">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.l</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerpreprocessorgenerate_parsersh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/generate_parser.sh</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilertimingRestrictFragmentShaderTimingcpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/timing/RestrictFragmentShaderTiming.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerutilcpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/util.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerutilh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/util.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibEGLSurfacecpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libEGL/Surface.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibEGLlibEGLcpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libEGL/libEGL.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibEGLlibEGLrc">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libEGL/libEGL.rc</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2Buffercpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Buffer.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2Bufferh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Buffer.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2Contextcpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Context.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2Contexth">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Context.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2Framebufferh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Framebuffer.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2ProgramBinarycpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/ProgramBinary.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2ProgramBinaryh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/ProgramBinary.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2Renderbuffercpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Renderbuffer.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2Renderbufferh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Renderbuffer.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2Shadercpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Shader.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2Shaderh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Shader.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2Texturecpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Texture.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2Uniformcpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Uniform.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2Uniformh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Uniform.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2libGLESv2def">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.def</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2libGLESv2rc">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.rc</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2precompiledh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/precompiled.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererImage11cpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image11.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererImage11h">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image11.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererIndexBuffercpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererIndexBufferh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererIndexBuffer11cpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer11.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererIndexDataManagercpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexDataManager.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererInputLayoutCachecpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/InputLayoutCache.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererInputLayoutCacheh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/InputLayoutCache.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererRenderTarget11cpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderTarget11.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererRenderTarget11h">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderTarget11.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererRenderercpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererRendererh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererRenderer11cpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer11.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererRenderer11h">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer11.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererRenderer9cpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer9.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererRenderer9h">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer9.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererSwapChainh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererSwapChain11cpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain11.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererSwapChain9cpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain9.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererTextureStorage11cpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/TextureStorage11.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererVertexBuffercpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererVertexBufferh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererVertexBuffer11cpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer11.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererVertexBuffer11h">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer11.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererVertexBuffer9cpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer9.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererVertexBuffer9h">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer9.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererVertexDataManagercpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexDataManager.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererVertexDataManagerh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexDataManager.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererrenderer11_utilscpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/renderer11_utils.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledclear11vsh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/clear11vs.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledclearmultiple11psh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/clearmultiple11ps.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledclearsingle11psh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/clearsingle11ps.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledcomponentmaskpsh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/componentmaskps.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledflipyvsh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/flipyvs.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledluminancepsh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/luminanceps.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledpassthrough11vsh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthrough11vs.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledpassthroughlum11psh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughlum11ps.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledpassthroughlumalpha11psh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughlumalpha11ps.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledpassthroughpsh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughps.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledpassthroughrgb11psh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughrgb11ps.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledpassthroughrgba11psh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughrgba11ps.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledstandardvsh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/standardvs.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershadersgenerate_shadersbat">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/generate_shaders.bat</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2utilitiescpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/utilities.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2utilitiesh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/utilities.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrcthird_partymurmurhashMurmurHash3cpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/third_party/murmurhash/MurmurHash3.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrcthird_partymurmurhashMurmurHash3h">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/third_party/murmurhash/MurmurHash3.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceWebCoreChangeLog">releases/WebKitGTK/webkit-2.2/Source/WebCore/ChangeLog</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceWebCoreplatformgraphicsANGLEWebKitBridgecpp">releases/WebKitGTK/webkit-2.2/Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrcANGLEsln">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/ANGLE.sln</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccommonevent_tracercpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/common/event_tracer.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccommonevent_tracerh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/common/event_tracer.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerCodeGencpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/CodeGen.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerInitializeGLPositioncpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeGLPosition.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerInitializeGLPositionh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeGLPosition.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerNodeSearchh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/NodeSearch.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerParseContextcpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ParseContext.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerParseContexth">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ParseContext.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerUnfoldShortCircuitASTcpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuitAST.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerUnfoldShortCircuitASTh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuitAST.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerpreprocessorpreprocessorvcxproj">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/preprocessor.vcxproj</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerpreprocessorpreprocessorvcxprojfilters">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/preprocessor.vcxproj.filters</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilertranslatorvcxproj">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/translator.vcxproj</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilertranslatorvcxprojfilters">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/translator.vcxproj.filters</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibEGLlibEGLvcxproj">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libEGL/libEGL.vcxproj</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibEGLlibEGLvcxprojfilters">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libEGL/libEGL.vcxproj.filters</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2libGLESv2vcxproj">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.vcxproj</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2libGLESv2vcxprojfilters">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.vcxproj.filters</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererIndexRangeCachecpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexRangeCache.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererIndexRangeCacheh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexRangeCache.h</a></li>
<li>releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/third_party/trace_event/</li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrcthird_partytrace_eventtrace_eventh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/third_party/trace_event/trace_event.h</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEDerivedSourcesmake">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/DerivedSources.make</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEincludeEGLeglsoftlinkingh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/include/EGL/eglsoftlinking.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEincludeGLES2gl2softlinkingh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/include/GLES2/gl2softlinking.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerCodeGenGLSLcpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/CodeGenGLSL.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerCodeGenHLSLcpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/CodeGenHLSL.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerParseHelpercpp">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ParseHelper.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerParseHelperh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ParseHelper.h</a></li>
<li><a href="#releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2constantsh">releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/constants.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEANGLEplist"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/ANGLE.plist (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/ANGLE.plist        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/ANGLE.plist        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -10,9 +10,9 @@
</span><span class="cx">                 &lt;key&gt;OpenSourceWebsiteURL&lt;/key&gt;
</span><span class="cx">                 &lt;string&gt;http://code.google.com/p/angleproject/&lt;/string&gt;
</span><span class="cx">                 &lt;key&gt;OpenSourceSCM&lt;/key&gt;
</span><del>-                &lt;string&gt;git clone https://code.google.com/p/angleproject/ &amp;&amp; cd angleproject &amp;&amp; git checkout 047373aa3eb408be62be52ade840fa5f11e72337&lt;/string&gt;
</del><ins>+                &lt;string&gt;git clone https://code.google.com/p/angleproject/ &amp;&amp; cd angleproject &amp;&amp; git checkout a60e0805721f62c28a55faf2df74472cc5fc91fc&lt;/string&gt;
</ins><span class="cx">                 &lt;key&gt;OpenSourceImportDate&lt;/key&gt;
</span><del>-                &lt;string&gt;2013-07-22&lt;/string&gt;
</del><ins>+                &lt;string&gt;2013-11-07&lt;/string&gt;
</ins><span class="cx">                 &lt;key&gt;OpenSourceLicense&lt;/key&gt;
</span><span class="cx">                 &lt;string&gt;BSD&lt;/string&gt;
</span><span class="cx">                 &lt;key&gt;OpenSourceLicenseFile&lt;/key&gt;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEChangeLog"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/ChangeLog (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/ChangeLog        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/ChangeLog        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,3 +1,542 @@
</span><ins>+2013-12-05  Matthew Hanson  &lt;matthew_hanson@apple.com&gt;
+
+        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-11-20  Carlos Garcia Campos  &lt;cgarcia@igalia.com&gt;
+
+        Unreviewed. Fix GTK build.
+
+        * GNUmakefile.am: Remove duplicated entries.
+
+2013-11-20  Sergio Correia  &lt;sergio.correia@openbossa.org&gt;
+
+        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-19  Roger Fong  &lt;roger_fong@apple.com&gt;
+
+        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  Martin Robinson  &lt;mrobinson@igalia.com&gt;
+
+        Fix the GTK+ build after the ANGLE update in r159533
+
+        * GNUmakefile.am: Update the source list.
+
+2013-11-19  Roger Fong  &lt;roger_fong@apple.com&gt;
+
+        Unreviewed. Prospective build fix for GTK port following r159533.
+
+        * GNUmakefile.am:
+
+2013-11-19  Roger Fong  &lt;roger_fong@apple.com&gt;
+
+        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&lt;):
+        (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):
+
</ins><span class="cx"> 2013-11-06  Dean Jackson  &lt;dino@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         kTraceBufferLen is unused in default builds
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEDerivedSourcesmake"></a>
<div class="delfile"><h4>Deleted: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/DerivedSources.make (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/DerivedSources.make        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/DerivedSources.make        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,44 +0,0 @@
</span><del>-# Copyright (C) 2013 Apple Inc. All rights reserved.
-# 
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1.  Redistributions of source code must retain the above copyright
-#     notice, this list of conditions and the following disclaimer.
-# 2.  Redistributions in binary form must reproduce the above copyright
-#     notice, this list of conditions and the following disclaimer in the
-#     documentation and/or other materials provided with the distribution.
-# 
-# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-SEARCH_PATH = $(ANGLE)/src/compiler $(ANGLE)/src/compiler/preprocessor
-
-vpath %.l $(SEARCH_PATH)
-vpath %.y $(SEARCH_PATH)
-
-FLEX = flex --noline --nounistd
-BISON = bison --no-lines --skeleton=yacc.c
-
-all : glslang_lex.cpp glslang_tab.h glslang_tab.cpp ExpressionParser.cpp Tokenizer.cpp
-
-glslang_tab%h glslang_tab%cpp : glslang.y
-        $(eval OUTPUT = $(basename $@))
-        $(BISON) --defines=$(OUTPUT).h --output=$(OUTPUT).cpp $&lt;
-
-ExpressionParser.cpp : ExpressionParser.y
-        $(BISON) --output=$@ $&lt;
-
-glslang_lex.cpp : glslang.l
-        $(FLEX) --outfile=$@ $&lt;
-
-Tokenizer.cpp : Tokenizer.l
-        $(FLEX) --outfile=$@ $&lt;
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEGNUmakefileam"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/GNUmakefile.am (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/GNUmakefile.am        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/GNUmakefile.am        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -31,27 +31,27 @@
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/BaseTypes.h \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/BuiltInFunctionEmulator.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/BuiltInFunctionEmulator.h \
</span><del>-        Source/ThirdParty/ANGLE/src/compiler/CodeGenGLSL.cpp \
</del><ins>+        Source/ThirdParty/ANGLE/src/compiler/CodeGen.cpp \
</ins><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/Common.h \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/Compiler.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/ConstantUnion.h \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/debug.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/debug.h \
</span><ins>+        Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphBuilder.cpp \
+        Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphBuilder.h \
</ins><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraph.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraph.h \
</span><del>-        Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphBuilder.h \
-        Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphBuilder.cpp \
</del><ins>+        Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphOutput.cpp \
</ins><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphOutput.h \
</span><del>-        Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphOutput.cpp \
</del><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphTraverse.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/DetectCallDepth.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/DetectCallDepth.h \
</span><del>-        Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.cpp \
-        Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.h \
</del><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/Diagnostics.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/Diagnostics.h \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/DirectiveHandler.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/DirectiveHandler.h \
</span><ins>+        Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.cpp \
+        Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.h \
</ins><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/ExtensionBehavior.h \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/ForLoopUnroll.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/ForLoopUnroll.h \
</span><span class="lines">@@ -63,9 +63,11 @@
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/InitializeDll.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/InitializeDll.h \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/InitializeGlobals.h \
</span><ins>+        Source/ThirdParty/ANGLE/src/compiler/InitializeGLPosition.cpp \
+        Source/ThirdParty/ANGLE/src/compiler/InitializeGLPosition.h \
</ins><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/Initialize.h \
</span><ins>+        Source/ThirdParty/ANGLE/src/compiler/InitializeParseContext.cpp \
</ins><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/InitializeParseContext.h \
</span><del>-        Source/ThirdParty/ANGLE/src/compiler/InitializeParseContext.cpp \
</del><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/Intermediate.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/intermediate.h \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/intermOut.cpp \
</span><span class="lines">@@ -74,24 +76,23 @@
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.h \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/MMap.h \
</span><ins>+        Source/ThirdParty/ANGLE/src/compiler/NodeSearch.h \
</ins><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/osinclude.h \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/ossource_posix.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/OutputESSL.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/OutputESSL.h \
</span><ins>+        Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp \
+        Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.h \
</ins><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/OutputGLSL.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/OutputGLSL.h \
</span><del>-        Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp \
-        Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.h \
</del><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/OutputHLSL.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/OutputHLSL.h \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/parseConst.cpp \
</span><del>-        Source/ThirdParty/ANGLE/src/compiler/ParseHelper.cpp \
-        Source/ThirdParty/ANGLE/src/compiler/ParseHelper.h \
</del><ins>+        Source/ThirdParty/ANGLE/src/compiler/ParseContext.cpp \
+        Source/ThirdParty/ANGLE/src/compiler/ParseContext.h \
</ins><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/PoolAlloc.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/PoolAlloc.h \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/Pragma.h \
</span><del>-        Source/ThirdParty/ANGLE/src/compiler/preprocessor/length_limits.h \
-        Source/ThirdParty/ANGLE/src/compiler/preprocessor/numeric_lex.h \
</del><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/preprocessor/DiagnosticsBase.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/preprocessor/DiagnosticsBase.h \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/preprocessor/DirectiveHandlerBase.cpp \
</span><span class="lines">@@ -102,12 +103,15 @@
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.h \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/preprocessor/Input.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/preprocessor/Input.h \
</span><ins>+        Source/ThirdParty/ANGLE/src/compiler/preprocessor/length_limits.h \
</ins><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/preprocessor/Lexer.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/preprocessor/Lexer.h \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/preprocessor/Macro.cpp \
</span><del>-        Source/ThirdParty/ANGLE/src/compiler/preprocessor/Macro.h \
</del><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/preprocessor/MacroExpander.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/preprocessor/MacroExpander.h \
</span><ins>+        Source/ThirdParty/ANGLE/src/compiler/preprocessor/Macro.h \
+        Source/ThirdParty/ANGLE/src/compiler/preprocessor/numeric_lex.h \
+        Source/ThirdParty/ANGLE/src/compiler/preprocessor/pp_utils.h \
</ins><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.h \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/preprocessor/SourceLocation.h \
</span><span class="lines">@@ -115,7 +119,6 @@
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/preprocessor/Token.h \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.h \
</span><del>-        Source/ThirdParty/ANGLE/src/compiler/preprocessor/pp_utils.h \
</del><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/QualifierAlive.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/QualifierAlive.h \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/RemoveTree.cpp \
</span><span class="lines">@@ -127,11 +130,6 @@
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/ShHandle.h \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/SymbolTable.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h \
</span><del>-        Source/ThirdParty/ANGLE/src/compiler/Uniform.h \
-        Source/ThirdParty/ANGLE/src/compiler/VariablePacker.cpp \
-        Source/ThirdParty/ANGLE/src/compiler/VariablePacker.h \
-        Source/ThirdParty/ANGLE/src/compiler/VersionGLSL.cpp \
-        Source/ThirdParty/ANGLE/src/compiler/VersionGLSL.h \
</del><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/timing/RestrictFragmentShaderTiming.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/timing/RestrictFragmentShaderTiming.h \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/timing/RestrictVertexShaderTiming.cpp \
</span><span class="lines">@@ -143,14 +141,21 @@
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/TranslatorHLSL.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/TranslatorHLSL.h \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/Types.h \
</span><del>-        Source/ThirdParty/ANGLE/src/compiler/Uniform.cpp \
</del><ins>+        Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuitAST.cpp \
+        Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuitAST.h \
</ins><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuit.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuit.h \
</span><ins>+        Source/ThirdParty/ANGLE/src/compiler/Uniform.cpp \
+        Source/ThirdParty/ANGLE/src/compiler/Uniform.h \
</ins><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/util.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/util.h \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/ValidateLimitations.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/ValidateLimitations.h \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/VariableInfo.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/compiler/VariableInfo.h \
</span><ins>+        Source/ThirdParty/ANGLE/src/compiler/VariablePacker.cpp \
+        Source/ThirdParty/ANGLE/src/compiler/VariablePacker.h \
+        Source/ThirdParty/ANGLE/src/compiler/VersionGLSL.cpp \
+        Source/ThirdParty/ANGLE/src/compiler/VersionGLSL.h \
</ins><span class="cx">         Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp \
</span><span class="cx">         Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.h
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEincludeEGLeglh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/include/EGL/egl.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/include/EGL/egl.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/include/EGL/egl.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -246,10 +246,6 @@
</span><span class="cx"> 
</span><span class="cx"> /* EGL Functions */
</span><span class="cx"> 
</span><del>-#if defined(_MSC_VER) &amp;&amp; !defined(ANGLE_WEBKIT_WIN)
-#include &lt;EGL/eglsoftlinking.h&gt;
-#else
-
</del><span class="cx"> EGLAPI EGLint EGLAPIENTRY eglGetError(void);
</span><span class="cx"> 
</span><span class="cx"> EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay(EGLNativeDisplayType display_id);
</span><span class="lines">@@ -326,8 +322,6 @@
</span><span class="cx"> EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY
</span><span class="cx">        eglGetProcAddress(const char *procname);
</span><span class="cx"> 
</span><del>-#endif
-
</del><span class="cx"> #ifdef __cplusplus
</span><span class="cx"> }
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEincludeEGLeglsoftlinkingh"></a>
<div class="delfile"><h4>Deleted: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/include/EGL/eglsoftlinking.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/include/EGL/eglsoftlinking.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/include/EGL/eglsoftlinking.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,63 +0,0 @@
</span><del>-/* 
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;SoftLinking.h&quot;
-
-SOFT_LINK_LIBRARY(libEGL)
-
-SOFT_LINK(libEGL, eglGetError, EGLint, EGLAPIENTRY, (void), ());
-SOFT_LINK(libEGL, eglGetDisplay, EGLDisplay, EGLAPIENTRY, (EGLNativeDisplayType display_id), (display_id));
-SOFT_LINK(libEGL, eglInitialize, EGLBoolean, EGLAPIENTRY, (EGLDisplay dpy, EGLint *major, EGLint *minor), (dpy, major, minor));
-SOFT_LINK(libEGL, eglTerminate, EGLBoolean, EGLAPIENTRY, (EGLDisplay dpy), (dpy));
-SOFT_LINK(libEGL, eglQueryString, const char *, EGLAPIENTRY, (EGLDisplay dpy, EGLint name), (dpy, name));
-SOFT_LINK(libEGL, eglGetConfigs, EGLBoolean, EGLAPIENTRY, (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config), (dpy, configs, config_size, num_config));
-SOFT_LINK(libEGL, eglChooseConfig, EGLBoolean, EGLAPIENTRY, (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config), (dpy, attrib_list, configs, config_size, num_config));
-SOFT_LINK(libEGL, eglGetConfigAttrib, EGLint, EGLAPIENTRY, (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value), (dpy, config, attribute, value));
-SOFT_LINK(libEGL, eglCreateWindowSurface, EGLSurface, EGLAPIENTRY, (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list), (dpy, config, win, attrib_list));
-SOFT_LINK(libEGL, eglCreatePbufferSurface, EGLSurface, EGLAPIENTRY, (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list), (dpy, config, attrib_list));
-SOFT_LINK(libEGL, eglCreatePixmapSurface, EGLSurface, EGLAPIENTRY, (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list), (dpy, config, pixmap, attrib_list));
-SOFT_LINK(libEGL, eglDestroySurface, EGLBoolean, EGLAPIENTRY, (EGLDisplay dpy, EGLSurface surface), (dpy, surface));
-SOFT_LINK(libEGL, eglQuerySurface, EGLBoolean, EGLAPIENTRY, (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value), (dpy, surface, attribute, value));
-SOFT_LINK(libEGL, eglBindAPI, EGLBoolean, EGLAPIENTRY, (EGLenum api), (api));
-SOFT_LINK(libEGL, eglQueryAPI, EGLenum, EGLAPIENTRY, (void), ());
-SOFT_LINK(libEGL, eglWaitClient, EGLBoolean, EGLAPIENTRY, (void), ());
-SOFT_LINK(libEGL, eglReleaseThread, EGLBoolean, EGLAPIENTRY, (void), ());
-SOFT_LINK(libEGL, eglCreatePbufferFromClientBuffer, EGLSurface, EGLAPIENTRY, (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list), (dpy, buftype, buffer, config, attrib_list));
-SOFT_LINK(libEGL, eglSurfaceAttrib, EGLBoolean, EGLAPIENTRY, (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value), (dpy, surface, attribute, value));
-SOFT_LINK(libEGL, eglBindTexImage, EGLBoolean, EGLAPIENTRY, (EGLDisplay dpy, EGLSurface surface, EGLint buffer), (dpy, surface, buffer));
-SOFT_LINK(libEGL, eglReleaseTexImage, EGLBoolean, EGLAPIENTRY, (EGLDisplay dpy, EGLSurface surface, EGLint buffer), (dpy, surface, buffer));
-SOFT_LINK(libEGL, eglSwapInterval, EGLBoolean, EGLAPIENTRY, (EGLDisplay dpy, EGLint interval), (dpy, interval));
-SOFT_LINK(libEGL, eglCreateContext, EGLContext, EGLAPIENTRY, (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list), (dpy, config, share_context, attrib_list));
-SOFT_LINK(libEGL, eglDestroyContext, EGLBoolean, EGLAPIENTRY, (EGLDisplay dpy, EGLContext ctx), (dpy, ctx));
-SOFT_LINK(libEGL, eglMakeCurrent, EGLBoolean, EGLAPIENTRY, (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx), (dpy, draw, read, ctx));
-SOFT_LINK(libEGL, eglGetCurrentContext, EGLContext, EGLAPIENTRY, (void), ());
-SOFT_LINK(libEGL, eglGetCurrentSurface, EGLSurface, EGLAPIENTRY, (EGLint readdraw), (readdraw));
-SOFT_LINK(libEGL, eglGetCurrentDisplay, EGLDisplay, EGLAPIENTRY, (void), ());
-SOFT_LINK(libEGL, eglQueryContext, EGLBoolean, EGLAPIENTRY, (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value), (dpy, ctx, attribute, value));
-SOFT_LINK(libEGL, eglWaitGL, EGLBoolean, EGLAPIENTRY, (void), ());
-SOFT_LINK(libEGL, eglWaitNative, EGLBoolean, EGLAPIENTRY, (EGLint engine), (engine));
-SOFT_LINK(libEGL, eglSwapBuffers, EGLBoolean, EGLAPIENTRY, (EGLDisplay dpy, EGLSurface surface), (dpy, surface));
-SOFT_LINK(libEGL, eglCopyBuffers, EGLBoolean, EGLAPIENTRY, (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target), (dpy, surface, target));
-typedef void (*__eglMustCastToProperFunctionPointerType)(void);
-SOFT_LINK(libEGL, eglGetProcAddress, __eglMustCastToProperFunctionPointerType, EGLAPIENTRY, (const char *procname), (procname));
</del></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEincludeGLES2gl2h"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/include/GLES2/gl2.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/include/GLES2/gl2.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/include/GLES2/gl2.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -471,10 +471,6 @@
</span><span class="cx">  * GL core functions.
</span><span class="cx">  *-----------------------------------------------------------------------*/
</span><span class="cx"> 
</span><del>-#if defined(_MSC_VER) &amp;&amp; !defined(ANGLE_WEBKIT_WIN)
-#include &lt;GLES2/gl2softlinking.h&gt;
-#else
-
</del><span class="cx"> GL_APICALL void         GL_APIENTRY glActiveTexture (GLenum texture);
</span><span class="cx"> GL_APICALL void         GL_APIENTRY glAttachShader (GLuint program, GLuint shader);
</span><span class="cx"> GL_APICALL void         GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar* name);
</span><span class="lines">@@ -618,8 +614,6 @@
</span><span class="cx"> GL_APICALL void         GL_APIENTRY glVertexAttribPointer (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr);
</span><span class="cx"> GL_APICALL void         GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
</span><span class="cx"> 
</span><del>-#endif
-
</del><span class="cx"> #ifdef __cplusplus
</span><span class="cx"> }
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEincludeGLES2gl2softlinkingh"></a>
<div class="delfile"><h4>Deleted: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/include/GLES2/gl2softlinking.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/include/GLES2/gl2softlinking.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/include/GLES2/gl2softlinking.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,170 +0,0 @@
</span><del>-/* 
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;SoftLinking.h&quot;
-
-SOFT_LINK_LIBRARY(libGLESv2)
-
-SOFT_LINK(libGLESv2, glActiveTexture, void, GL_APIENTRY, (GLenum texture), (texture));
-SOFT_LINK(libGLESv2, glAttachShader, void, GL_APIENTRY, (GLuint program, GLuint shader), (program, shader));
-SOFT_LINK(libGLESv2, glBindAttribLocation, void, GL_APIENTRY, (GLuint program, GLuint index, const GLchar* name), (program, index, name));
-SOFT_LINK(libGLESv2, glBindBuffer, void, GL_APIENTRY, (GLenum target, GLuint buffer), (target, buffer));
-SOFT_LINK(libGLESv2, glBindFramebuffer, void, GL_APIENTRY, (GLenum target, GLuint framebuffer), (target, framebuffer));
-SOFT_LINK(libGLESv2, glBindRenderbuffer, void, GL_APIENTRY, (GLenum target, GLuint renderbuffer), (target, renderbuffer));
-SOFT_LINK(libGLESv2, glBindTexture, void, GL_APIENTRY, (GLenum target, GLuint texture), (target, texture));
-SOFT_LINK(libGLESv2, glBlendColor, void, GL_APIENTRY, (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha), (red, green, blue, alpha));
-SOFT_LINK(libGLESv2, glBlendEquation, void, GL_APIENTRY, (GLenum mode), (mode));
-SOFT_LINK(libGLESv2, glBlendEquationSeparate, void, GL_APIENTRY, (GLenum modeRGB, GLenum modeAlpha), (modeRGB, modeAlpha));
-SOFT_LINK(libGLESv2, glBlendFunc, void, GL_APIENTRY, (GLenum sfactor, GLenum dfactor), (sfactor, dfactor));
-SOFT_LINK(libGLESv2, glBlendFuncSeparate, void, GL_APIENTRY, (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha), (srcRGB, dstRGB, srcAlpha, dstAlpha));
-SOFT_LINK(libGLESv2, glBufferData, void, GL_APIENTRY, (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage), (target, size, data, usage));
-SOFT_LINK(libGLESv2, glBufferSubData, void, GL_APIENTRY, (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data), (target, offset, size, data));
-SOFT_LINK(libGLESv2, glCheckFramebufferStatus, GLenum, GL_APIENTRY, (GLenum target), (target));
-SOFT_LINK(libGLESv2, glClear, void, GL_APIENTRY, (GLbitfield mask), (mask));
-SOFT_LINK(libGLESv2, glClearColor, void, GL_APIENTRY, (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha), (red, green, blue, alpha));
-SOFT_LINK(libGLESv2, glClearDepthf, void, GL_APIENTRY, (GLclampf depth), (depth));
-SOFT_LINK(libGLESv2, glClearStencil, void, GL_APIENTRY, (GLint s), (s));
-SOFT_LINK(libGLESv2, glColorMask, void, GL_APIENTRY, (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha), (red, green, blue, alpha));
-SOFT_LINK(libGLESv2, glCompileShader, void, GL_APIENTRY, (GLuint shader), (shader));
-SOFT_LINK(libGLESv2, glCompressedTexImage2D, void, GL_APIENTRY, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data), (target, level, internalformat, width, height, border, imageSize, data));
-SOFT_LINK(libGLESv2, glCompressedTexSubImage2D, void, GL_APIENTRY, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data), (target, level, xoffset, yoffset, width, height, format, imageSize, data));
-SOFT_LINK(libGLESv2, glCopyTexImage2D, void, GL_APIENTRY, (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border), (target, level, internalformat, x, y, width, height, border));
-SOFT_LINK(libGLESv2, glCopyTexSubImage2D, void, GL_APIENTRY, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height), (target, level, xoffset, yoffset, x, y, width, height));
-SOFT_LINK(libGLESv2, glCreateProgram, GLuint, GL_APIENTRY, (void), ());
-SOFT_LINK(libGLESv2, glCreateShader, GLuint, GL_APIENTRY, (GLenum type), (type));
-SOFT_LINK(libGLESv2, glCullFace, void, GL_APIENTRY, (GLenum mode), (mode));
-SOFT_LINK(libGLESv2, glDeleteBuffers, void, GL_APIENTRY, (GLsizei n, const GLuint* buffers), (n, buffers));
-SOFT_LINK(libGLESv2, glDeleteFramebuffers, void, GL_APIENTRY, (GLsizei n, const GLuint* framebuffers), (n, framebuffers));
-SOFT_LINK(libGLESv2, glDeleteProgram, void, GL_APIENTRY, (GLuint program), (program));
-SOFT_LINK(libGLESv2, glDeleteRenderbuffers, void, GL_APIENTRY, (GLsizei n, const GLuint* renderbuffers), (n, renderbuffers));
-SOFT_LINK(libGLESv2, glDeleteShader, void, GL_APIENTRY, (GLuint shader), (shader));
-SOFT_LINK(libGLESv2, glDeleteTextures, void, GL_APIENTRY, (GLsizei n, const GLuint* textures), (n, textures));
-SOFT_LINK(libGLESv2, glDepthFunc, void, GL_APIENTRY, (GLenum func), (func));
-SOFT_LINK(libGLESv2, glDepthMask, void, GL_APIENTRY, (GLboolean flag), (flag));
-SOFT_LINK(libGLESv2, glDepthRangef, void, GL_APIENTRY, (GLclampf zNear, GLclampf zFar), (zNear, zFar));
-SOFT_LINK(libGLESv2, glDetachShader, void, GL_APIENTRY, (GLuint program, GLuint shader), (program, shader));
-SOFT_LINK(libGLESv2, glDisable, void, GL_APIENTRY, (GLenum cap), (cap));
-SOFT_LINK(libGLESv2, glDisableVertexAttribArray, void, GL_APIENTRY, (GLuint index), (index));
-SOFT_LINK(libGLESv2, glDrawArrays, void, GL_APIENTRY, (GLenum mode, GLint first, GLsizei count), (mode, first, count));
-SOFT_LINK(libGLESv2, glDrawElements, void, GL_APIENTRY, (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices), (mode, count, type, indices));
-SOFT_LINK(libGLESv2, glEnable, void, GL_APIENTRY, (GLenum cap), (cap));
-SOFT_LINK(libGLESv2, glEnableVertexAttribArray, void, GL_APIENTRY, (GLuint index), (index));
-SOFT_LINK(libGLESv2, glFinish, void, GL_APIENTRY, (void), ());
-SOFT_LINK(libGLESv2, glFlush, void, GL_APIENTRY, (void), ());
-SOFT_LINK(libGLESv2, glFramebufferRenderbuffer, void, GL_APIENTRY, (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer), (target, attachment, renderbuffertarget, renderbuffer));
-SOFT_LINK(libGLESv2, glFramebufferTexture2D, void, GL_APIENTRY, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level), (target, attachment, textarget, texture, level));
-SOFT_LINK(libGLESv2, glFrontFace, void, GL_APIENTRY, (GLenum mode), (mode));
-SOFT_LINK(libGLESv2, glGenBuffers, void, GL_APIENTRY, (GLsizei n, GLuint* buffers), (n, buffers));
-SOFT_LINK(libGLESv2, glGenerateMipmap, void, GL_APIENTRY, (GLenum target), (target));
-SOFT_LINK(libGLESv2, glGenFramebuffers, void, GL_APIENTRY, (GLsizei n, GLuint* framebuffers), (n, framebuffers));
-SOFT_LINK(libGLESv2, glGenRenderbuffers, int, GL_APIENTRY, (GLsizei n, GLuint* renderbuffers), (n, renderbuffers));
-SOFT_LINK(libGLESv2, glGenTextures, void, GL_APIENTRY, (GLsizei n, GLuint* textures), (n, textures));
-SOFT_LINK(libGLESv2, glGetActiveAttrib, void, GL_APIENTRY, (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name), (program, index, bufsize, length, size, type, name));
-SOFT_LINK(libGLESv2, glGetActiveUniform, GLenum, GL_APIENTRY, (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name), (program, index, bufsize, length, size, type, name));
-SOFT_LINK(libGLESv2, glGetAttachedShaders, void, GL_APIENTRY, (GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders), (program, maxcount, count, shaders));
-SOFT_LINK(libGLESv2, glGetAttribLocation, int, GL_APIENTRY, (GLuint program, const GLchar* name), (program, name));
-SOFT_LINK(libGLESv2, glGetBooleanv, void, GL_APIENTRY, (GLenum pname, GLboolean* params), (pname, params));
-SOFT_LINK(libGLESv2, glGetBufferParameteriv, void, GL_APIENTRY, (GLenum target, GLenum pname, GLint* params), (target, pname, params));
-SOFT_LINK(libGLESv2, glGetError, GLenum, GL_APIENTRY, (void), ());
-SOFT_LINK(libGLESv2, glGetFloatv, void, GL_APIENTRY, (GLenum pname, GLfloat* params), (pname, params));
-SOFT_LINK(libGLESv2, glGetFramebufferAttachmentParameteriv, void, GL_APIENTRY, (GLenum target, GLenum attachment, GLenum pname, GLint* params), (target, attachment, pname, params));
-SOFT_LINK(libGLESv2, glGetIntegerv, void, GL_APIENTRY, (GLenum pname, GLint* params), (pname, params));
-SOFT_LINK(libGLESv2, glGetProgramiv, void, GL_APIENTRY, (GLuint program, GLenum pname, GLint* params), (program, pname, params));
-SOFT_LINK(libGLESv2, glGetProgramInfoLog, void, GL_APIENTRY, (GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog), (program, bufsize, length, infolog));
-SOFT_LINK(libGLESv2, glGetRenderbufferParameteriv, void, GL_APIENTRY, (GLenum target, GLenum pname, GLint* params), (target, pname, params));
-SOFT_LINK(libGLESv2, glGetShaderiv, void, GL_APIENTRY, (GLuint shader, GLenum pname, GLint* params), (shader, pname, params));
-SOFT_LINK(libGLESv2, glGetShaderInfoLog, void, GL_APIENTRY, (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog), (shader, bufsize, length, infolog));
-SOFT_LINK(libGLESv2, glGetShaderPrecisionFormat, void, GL_APIENTRY, (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision), (shadertype, precisiontype, range, precision));
-SOFT_LINK(libGLESv2, glGetShaderSource, void, GL_APIENTRY, (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source), (shader, bufsize, length, source));
-SOFT_LINK(libGLESv2, glGetString, const GLubyte*, GL_APIENTRY, (GLenum name), (name));
-SOFT_LINK(libGLESv2, glGetTexParameterfv, void, GL_APIENTRY, (GLenum target, GLenum pname, GLfloat* params), (target, pname, params));
-SOFT_LINK(libGLESv2, glGetTexParameteriv, void, GL_APIENTRY, (GLenum target, GLenum pname, GLint* params), (target, pname, params));
-SOFT_LINK(libGLESv2, glGetUniformfv, void, GL_APIENTRY, (GLuint program, GLint location, GLfloat* params), (program, location, params));
-SOFT_LINK(libGLESv2, glGetUniformiv, void, GL_APIENTRY, (GLuint program, GLint location, GLint* params), (program, location, params));
-SOFT_LINK(libGLESv2, glGetUniformLocation, int, GL_APIENTRY, (GLuint program, const GLchar* name), (program, name));
-SOFT_LINK(libGLESv2, glGetVertexAttribfv, void, GL_APIENTRY, (GLuint index, GLenum pname, GLfloat* params), (index, pname, params));
-SOFT_LINK(libGLESv2, glGetVertexAttribiv, void, GL_APIENTRY, (GLenum target, GLenum pname, GLint* params), (target, pname, params));
-SOFT_LINK(libGLESv2, glGetVertexAttribPointerv, void, GL_APIENTRY, (GLuint index, GLenum pname, GLvoid** pointer), (index, pname, pointer));
-SOFT_LINK(libGLESv2, glHint, void, GL_APIENTRY, (GLenum target, GLenum mode), (target, mode));
-SOFT_LINK(libGLESv2, glIsBuffer, GLboolean, GL_APIENTRY, (GLuint buffer), (buffer));
-SOFT_LINK(libGLESv2, glIsEnabled, GLboolean, GL_APIENTRY, (GLenum cap), (cap));
-SOFT_LINK(libGLESv2, glIsFramebuffer, GLboolean, GL_APIENTRY, (GLuint framebuffer), (framebuffer));
-SOFT_LINK(libGLESv2, glIsProgram, GLboolean, GL_APIENTRY, (GLuint program), (program));
-SOFT_LINK(libGLESv2, glIsRenderbuffer, GLboolean, GL_APIENTRY, (GLuint renderbuffer), (renderbuffer));
-SOFT_LINK(libGLESv2, glIsShader, GLboolean, GL_APIENTRY, (GLuint shader), (shader));
-SOFT_LINK(libGLESv2, glIsTexture, GLboolean, GL_APIENTRY, (GLuint texture), (texture));
-SOFT_LINK(libGLESv2, glLineWidth, void, GL_APIENTRY, (GLfloat width), (width));
-SOFT_LINK(libGLESv2, glLinkProgram, void, GL_APIENTRY, (GLuint program), (program));
-SOFT_LINK(libGLESv2, glPixelStorei, void, GL_APIENTRY, (GLenum pname, GLint param), (pname, param));
-SOFT_LINK(libGLESv2, glPolygonOffset, void, GL_APIENTRY, (GLfloat factor, GLfloat units), (factor, units));
-SOFT_LINK(libGLESv2, glReadPixels, void, GL_APIENTRY, (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels), (x, y, width, height, format, type, pixels));
-SOFT_LINK(libGLESv2, glReleaseShaderCompiler, void, GL_APIENTRY, (void), ());
-SOFT_LINK(libGLESv2, glRenderbufferStorage, void, GL_APIENTRY, (GLenum target, GLenum internalformat, GLsizei width, GLsizei height), (target, internalformat, width, height));
-SOFT_LINK(libGLESv2, glSampleCoverage, void, GL_APIENTRY, (GLclampf value, GLboolean invert), (value, invert));
-SOFT_LINK(libGLESv2, glScissor, void, GL_APIENTRY, (GLint x, GLint y, GLsizei width, GLsizei height), (x, y, width, height));
-SOFT_LINK(libGLESv2, glShaderBinary, void, GL_APIENTRY, (GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length), (n, shaders, binaryformat, binary, length));
-SOFT_LINK(libGLESv2, glShaderSource, void, GL_APIENTRY, (GLuint shader, GLsizei count, const GLchar** string, const GLint* length), (shader, count, string, length));
-SOFT_LINK(libGLESv2, glStencilFunc, void, GL_APIENTRY, (GLenum func, GLint ref, GLuint mask), (func, ref, mask));
-SOFT_LINK(libGLESv2, glStencilFuncSeparate, void, GL_APIENTRY, (GLenum face, GLenum func, GLint ref, GLuint mask), (face, func, ref, mask));
-SOFT_LINK(libGLESv2, glStencilMask, void, GL_APIENTRY, (GLuint mask), (mask));
-SOFT_LINK(libGLESv2, glStencilMaskSeparate, void, GL_APIENTRY, (GLenum face, GLuint mask), (face, mask));
-SOFT_LINK(libGLESv2, glStencilOp, void, GL_APIENTRY, (GLenum fail, GLenum zfail, GLenum zpass), (fail, zfail, zpass));
-SOFT_LINK(libGLESv2, glStencilOpSeparate, void, GL_APIENTRY, (GLenum face, GLenum fail, GLenum zfail, GLenum zpass), (face, fail, zfail, zpass));
-SOFT_LINK(libGLESv2, glTexImage2D, void, GL_APIENTRY, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels), (target, level, internalformat, width, height, border, format, type, pixels));
-SOFT_LINK(libGLESv2, glTexParameterf, void, GL_APIENTRY, (GLenum target, GLenum pname, GLfloat param), (target, pname, param));
-SOFT_LINK(libGLESv2, glTexParameterfv, void, GL_APIENTRY, (GLenum target, GLenum pname, const GLfloat* params), (target, pname, params));
-SOFT_LINK(libGLESv2, glTexParameteri, void, GL_APIENTRY, (GLenum target, GLenum pname, GLint param), (target, pname, param));
-SOFT_LINK(libGLESv2, glTexParameteriv, void, GL_APIENTRY, (GLenum target, GLenum pname, const GLint* params), (target, pname, params));
-SOFT_LINK(libGLESv2, glTexSubImage2D, void, GL_APIENTRY, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels), (target, level, xoffset, yoffset, width, height, format, type, pixels));
-SOFT_LINK(libGLESv2, glUniform1f, void, GL_APIENTRY, (GLint location, GLfloat x), (location, x));
-SOFT_LINK(libGLESv2, glUniform1fv, void, GL_APIENTRY, (GLint location, GLsizei count, const GLfloat* v), (location, count, v));
-SOFT_LINK(libGLESv2, glUniform1i, void, GL_APIENTRY, (GLint location, GLint x), (location, x));
-SOFT_LINK(libGLESv2, glUniform1iv, void, GL_APIENTRY, (GLint location, GLsizei count, const GLint* v), (location, count, v));
-SOFT_LINK(libGLESv2, glUniform2f, void, GL_APIENTRY, (GLint location, GLfloat x, GLfloat y), (location, x, y));
-SOFT_LINK(libGLESv2, glUniform2fv, void, GL_APIENTRY, (GLint location, GLsizei count, const GLfloat* v), (location, count, v));
-SOFT_LINK(libGLESv2, glUniform2i, void, GL_APIENTRY, (GLint location, GLint x, GLint y), (location, x, y));
-SOFT_LINK(libGLESv2, glUniform2iv, void, GL_APIENTRY, (GLint location, GLsizei count, const GLint* v), (location, count, v));
-SOFT_LINK(libGLESv2, glUniform3f, void, GL_APIENTRY, (GLint location, GLfloat x, GLfloat y, GLfloat z), (location, x, y, z));
-SOFT_LINK(libGLESv2, glUniform3fv, void, GL_APIENTRY, (GLint location, GLsizei count, const GLfloat* v), (location, count, v));
-SOFT_LINK(libGLESv2, glUniform3i, void, GL_APIENTRY, (GLint location, GLint x, GLint y, GLint z), (location, x, y, z));
-SOFT_LINK(libGLESv2, glUniform3iv, void, GL_APIENTRY, (GLint location, GLsizei count, const GLint* v), (location, count, v));
-SOFT_LINK(libGLESv2, glUniform4f, void, GL_APIENTRY, (GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (location, x, y, z, w));
-SOFT_LINK(libGLESv2, glUniform4fv, void, GL_APIENTRY, (GLint location, GLsizei count, const GLfloat* v), (location, count, v));
-SOFT_LINK(libGLESv2, glUniform4i, void, GL_APIENTRY, (GLint location, GLint x, GLint y, GLint z, GLint w), (location, x, y, z, w));
-SOFT_LINK(libGLESv2, glUniform4iv, void, GL_APIENTRY, (GLint location, GLsizei count, const GLint* v), (location, count, v));
-SOFT_LINK(libGLESv2, glUniformMatrix2fv, void, GL_APIENTRY, (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value), (location, count, transpose, value));
-SOFT_LINK(libGLESv2, glUniformMatrix3fv, void, GL_APIENTRY, (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value), (location, count, transpose, value));
-SOFT_LINK(libGLESv2, glUniformMatrix4fv, void, GL_APIENTRY, (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value), (location, count, transpose, value));
-SOFT_LINK(libGLESv2, glUseProgram, void, GL_APIENTRY, (GLuint program), (program));
-SOFT_LINK(libGLESv2, glValidateProgram, void, GL_APIENTRY, (GLuint program), (program));
-SOFT_LINK(libGLESv2, glVertexAttrib1f, void, GL_APIENTRY, (GLuint indx, GLfloat x), (indx, x));
-SOFT_LINK(libGLESv2, glVertexAttrib1fv, void, GL_APIENTRY, (GLuint indx, const GLfloat* values), (indx, values));
-SOFT_LINK(libGLESv2, glVertexAttrib2f, void, GL_APIENTRY, (GLuint indx, GLfloat x, GLfloat y), (indx, x, y));
-SOFT_LINK(libGLESv2, glVertexAttrib2fv, void, GL_APIENTRY, (GLuint indx, const GLfloat* values), (indx, values));
-SOFT_LINK(libGLESv2, glVertexAttrib3f, void, GL_APIENTRY, (GLuint indx, GLfloat x, GLfloat y, GLfloat z), (indx, x, y, z));
-SOFT_LINK(libGLESv2, glVertexAttrib3fv, void, GL_APIENTRY, (GLuint indx, const GLfloat* values), (indx, values));
-SOFT_LINK(libGLESv2, glVertexAttrib4f, void, GL_APIENTRY, (GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (indx, x, y, z, w));
-SOFT_LINK(libGLESv2, glVertexAttrib4fv, void, GL_APIENTRY, (GLuint indx, const GLfloat* values), (indx, values));
-SOFT_LINK(libGLESv2, glVertexAttribPointer, void, GL_APIENTRY, (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr), (indx, size, type, normalized, stride, ptr));
-SOFT_LINK(libGLESv2, glViewport, void, GL_APIENTRY, (GLint x, GLint y, GLsizei width, GLsizei height), (x, y, width, height));
</del></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEincludeGLSLANGShaderLangh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -6,20 +6,20 @@
</span><span class="cx"> #ifndef _COMPILER_INTERFACE_INCLUDED_
</span><span class="cx"> #define _COMPILER_INTERFACE_INCLUDED_
</span><span class="cx"> 
</span><del>-#if defined(COMPONENT_BUILD)
</del><ins>+#if defined(COMPONENT_BUILD) &amp;&amp; !defined(ANGLE_TRANSLATOR_STATIC)
</ins><span class="cx"> #if defined(_WIN32) || defined(_WIN64)
</span><span class="cx"> 
</span><del>-#if defined(COMPILER_IMPLEMENTATION)
</del><ins>+#if defined(ANGLE_TRANSLATOR_IMPLEMENTATION)
</ins><span class="cx"> #define COMPILER_EXPORT __declspec(dllexport)
</span><span class="cx"> #else
</span><span class="cx"> #define COMPILER_EXPORT __declspec(dllimport)
</span><del>-#endif  // defined(COMPILER_IMPLEMENTATION)
</del><ins>+#endif  // defined(ANGLE_TRANSLATOR_IMPLEMENTATION)
</ins><span class="cx"> 
</span><del>-#else  // defined(WIN32)
</del><ins>+#else  // defined(_WIN32) || defined(_WIN64)
</ins><span class="cx"> #define COMPILER_EXPORT __attribute__((visibility(&quot;default&quot;)))
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#else  // defined(COMPONENT_BUILD)
</del><ins>+#else  // defined(COMPONENT_BUILD) &amp;&amp; !defined(ANGLE_TRANSLATOR_STATIC)
</ins><span class="cx"> #define COMPILER_EXPORT
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> 
</span><span class="cx"> // Version number for shader translation API.
</span><span class="cx"> // It is incremented everytime the API changes.
</span><del>-#define ANGLE_SH_VERSION 110
</del><ins>+#define ANGLE_SH_VERSION 112
</ins><span class="cx"> 
</span><span class="cx"> //
</span><span class="cx"> // The names of the following enums have been derived by replacing GL prefix
</span><span class="lines">@@ -109,12 +109,21 @@
</span><span class="cx"> } ShDataType;
</span><span class="cx"> 
</span><span class="cx"> typedef enum {
</span><ins>+  SH_PRECISION_HIGHP     = 0x5001,
+  SH_PRECISION_MEDIUMP   = 0x5002,
+  SH_PRECISION_LOWP      = 0x5003,
+  SH_PRECISION_UNDEFINED = 0
+} ShPrecisionType;
+
+typedef enum {
</ins><span class="cx">   SH_INFO_LOG_LENGTH             =  0x8B84,
</span><span class="cx">   SH_OBJECT_CODE_LENGTH          =  0x8B88,  // GL_SHADER_SOURCE_LENGTH
</span><span class="cx">   SH_ACTIVE_UNIFORMS             =  0x8B86,
</span><span class="cx">   SH_ACTIVE_UNIFORM_MAX_LENGTH   =  0x8B87,
</span><span class="cx">   SH_ACTIVE_ATTRIBUTES           =  0x8B89,
</span><span class="cx">   SH_ACTIVE_ATTRIBUTE_MAX_LENGTH =  0x8B8A,
</span><ins>+  SH_VARYINGS                    =  0x8BBB,
+  SH_VARYING_MAX_LENGTH          =  0x8BBC,
</ins><span class="cx">   SH_MAPPED_NAME_MAX_LENGTH      =  0x6000,
</span><span class="cx">   SH_NAME_MAX_LENGTH             =  0x6001,
</span><span class="cx">   SH_HASHED_NAME_MAX_LENGTH      =  0x6002,
</span><span class="lines">@@ -128,7 +137,7 @@
</span><span class="cx">   SH_VALIDATE_LOOP_INDEXING  = 0x0001,
</span><span class="cx">   SH_INTERMEDIATE_TREE       = 0x0002,
</span><span class="cx">   SH_OBJECT_CODE             = 0x0004,
</span><del>-  SH_ATTRIBUTES_UNIFORMS     = 0x0008,
</del><ins>+  SH_VARIABLES               = 0x0008,
</ins><span class="cx">   SH_LINE_DIRECTIVES         = 0x0010,
</span><span class="cx">   SH_SOURCE_PATH             = 0x0020,
</span><span class="cx">   SH_MAP_LONG_VARIABLE_NAMES = 0x0040,
</span><span class="lines">@@ -137,14 +146,14 @@
</span><span class="cx">   // This is needed only as a workaround for certain OpenGL driver bugs.
</span><span class="cx">   SH_EMULATE_BUILT_IN_FUNCTIONS = 0x0100,
</span><span class="cx"> 
</span><del>-  // This is an experimental flag to enforce restrictions that aim to prevent 
</del><ins>+  // This is an experimental flag to enforce restrictions that aim to prevent
</ins><span class="cx">   // timing attacks.
</span><span class="cx">   // It generates compilation errors for shaders that could expose sensitive
</span><span class="cx">   // texture information via the timing channel.
</span><span class="cx">   // To use this flag, you must compile the shader under the WebGL spec
</span><span class="cx">   // (using the SH_WEBGL_SPEC flag).
</span><span class="cx">   SH_TIMING_RESTRICTIONS = 0x0200,
</span><del>-    
</del><ins>+
</ins><span class="cx">   // This flag prints the dependency graph that is used to enforce timing
</span><span class="cx">   // restrictions on fragment shaders.
</span><span class="cx">   // This flag only has an effect if all of the following are true:
</span><span class="lines">@@ -154,6 +163,11 @@
</span><span class="cx">   SH_DEPENDENCY_GRAPH = 0x0400,
</span><span class="cx"> 
</span><span class="cx">   // Enforce the GLSL 1.017 Appendix A section 7 packing restrictions.
</span><ins>+  // This flag only enforces (and can only enforce) the packing
+  // restrictions for uniform variables in both vertex and fragment
+  // shaders. ShCheckVariablesWithinPackingLimits() lets embedders
+  // enforce the packing restrictions for varying variables during
+  // program link time.
</ins><span class="cx">   SH_ENFORCE_PACKING_RESTRICTIONS = 0x0800,
</span><span class="cx"> 
</span><span class="cx">   // This flag ensures all indirect (expression-based) array indexing
</span><span class="lines">@@ -169,6 +183,19 @@
</span><span class="cx"> 
</span><span class="cx">   // This flag limits the depth of the call stack.
</span><span class="cx">   SH_LIMIT_CALL_STACK_DEPTH = 0x4000,
</span><ins>+
+  // This flag initializes gl_Position to vec4(0.0, 0.0, 0.0, 1.0) at
+  // the beginning of the vertex shader, and has no effect in the
+  // fragment shader. It is intended as a workaround for drivers which
+  // incorrectly fail to link programs if gl_Position is not written.
+  SH_INIT_GL_POSITION = 0x8000,
+
+  // This flag replaces
+  //   &quot;a &amp;&amp; b&quot; with &quot;a ? b : false&quot;,
+  //   &quot;a || b&quot; with &quot;a ? true : b&quot;.
+  // This is to work around a MacOSX driver bug that |b| is executed
+  // independent of |a|'s value.
+  SH_UNFOLD_SHORT_CIRCUIT = 0x10000,
</ins><span class="cx"> } ShCompileOptions;
</span><span class="cx"> 
</span><span class="cx"> // Defines alternate strategies for implementing array index clamping.
</span><span class="lines">@@ -247,7 +274,7 @@
</span><span class="cx"> 
</span><span class="cx"> //
</span><span class="cx"> // ShHandle held by but opaque to the driver.  It is allocated,
</span><del>-// managed, and de-allocated by the compiler. It's contents 
</del><ins>+// managed, and de-allocated by the compiler. It's contents
</ins><span class="cx"> // are defined by and used by the compiler.
</span><span class="cx"> //
</span><span class="cx"> // If handle creation fails, 0 will be returned.
</span><span class="lines">@@ -294,9 +321,8 @@
</span><span class="cx"> //                       Can be queried by calling ShGetInfoLog().
</span><span class="cx"> // SH_OBJECT_CODE: Translates intermediate tree to glsl or hlsl shader.
</span><span class="cx"> //                 Can be queried by calling ShGetObjectCode().
</span><del>-// SH_ATTRIBUTES_UNIFORMS: Extracts attributes and uniforms.
-//                         Can be queried by calling ShGetActiveAttrib() and
-//                         ShGetActiveUniform().
</del><ins>+// SH_VARIABLES: Extracts attributes, uniforms, and varyings.
+//               Can be queried by calling ShGetVariableInfo().
</ins><span class="cx"> //
</span><span class="cx"> COMPILER_EXPORT int ShCompile(
</span><span class="cx">     const ShHandle handle,
</span><span class="lines">@@ -322,6 +348,9 @@
</span><span class="cx"> // SH_ACTIVE_UNIFORM_MAX_LENGTH: the length of the longest active uniform
</span><span class="cx"> //                               variable name including the null
</span><span class="cx"> //                               termination character.
</span><ins>+// SH_VARYINGS: the number of varying variables.
+// SH_VARYING_MAX_LENGTH: the length of the longest varying variable name
+//                        including the null termination character.
</ins><span class="cx"> // SH_MAPPED_NAME_MAX_LENGTH: the length of the mapped variable name including
</span><span class="cx"> //                            the null termination character.
</span><span class="cx"> // SH_NAME_MAX_LENGTH: the max length of a user-defined name including the
</span><span class="lines">@@ -355,60 +384,44 @@
</span><span class="cx"> //          ShGetInfo with SH_OBJECT_CODE_LENGTH.
</span><span class="cx"> COMPILER_EXPORT void ShGetObjectCode(const ShHandle handle, char* objCode);
</span><span class="cx"> 
</span><del>-// Returns information about an active attribute variable.
</del><ins>+// Returns information about a shader variable.
</ins><span class="cx"> // Parameters:
</span><span class="cx"> // handle: Specifies the compiler
</span><del>-// index: Specifies the index of the attribute variable to be queried.
</del><ins>+// variableType: Specifies the variable type; options include
+//               SH_ACTIVE_ATTRIBUTES, SH_ACTIVE_UNIFORMS, SH_VARYINGS.
+// index: Specifies the index of the variable to be queried.
</ins><span class="cx"> // length: Returns the number of characters actually written in the string
</span><span class="cx"> //         indicated by name (excluding the null terminator) if a value other
</span><span class="cx"> //         than NULL is passed.
</span><del>-// size: Returns the size of the attribute variable.
-// type: Returns the data type of the attribute variable.
</del><ins>+// size: Returns the size of the variable.
+// type: Returns the data type of the variable.
+// precision: Returns the precision of the variable.
+// staticUse: Returns 1 if the variable is accessed in a statement after
+//            pre-processing, whether or not run-time flow of control will
+//            cause that statement to be executed.
+//            Returns 0 otherwise.
</ins><span class="cx"> // name: Returns a null terminated string containing the name of the
</span><del>-//       attribute variable. It is assumed that name has enough memory to
-//       accomodate the attribute variable name. The size of the buffer
-//       required to store the attribute variable name can be obtained by
-//       calling ShGetInfo with SH_ACTIVE_ATTRIBUTE_MAX_LENGTH.
</del><ins>+//       variable. It is assumed that name has enough memory to accormodate
+//       the variable name. The size of the buffer required to store the
+//       variable name can be obtained by calling ShGetInfo with
+//       SH_ACTIVE_ATTRIBUTE_MAX_LENGTH, SH_ACTIVE_UNIFORM_MAX_LENGTH,
+//       SH_VARYING_MAX_LENGTH.
</ins><span class="cx"> // mappedName: Returns a null terminated string containing the mapped name of
</span><del>-//             the attribute variable, It is assumed that mappedName has enough
-//             memory (SH_MAPPED_NAME_MAX_LENGTH), or NULL if don't care
-//             about the mapped name. If the name is not mapped, then name and
-//             mappedName are the same.
-COMPILER_EXPORT void ShGetActiveAttrib(const ShHandle handle,
</del><ins>+//             the variable, It is assumed that mappedName has enough memory
+//             (SH_MAPPED_NAME_MAX_LENGTH), or NULL if don't care about the
+//             mapped name. If the name is not mapped, then name and mappedName
+//             are the same.
+COMPILER_EXPORT void ShGetVariableInfo(const ShHandle handle,
+                                       ShShaderInfo variableType,
</ins><span class="cx">                                        int index,
</span><span class="cx">                                        size_t* length,
</span><span class="cx">                                        int* size,
</span><span class="cx">                                        ShDataType* type,
</span><ins>+                                       ShPrecisionType* precision,
+                                       int* staticUse,
</ins><span class="cx">                                        char* name,
</span><span class="cx">                                        char* mappedName);
</span><span class="cx"> 
</span><del>-// Returns information about an active uniform variable.
-// Parameters:
-// handle: Specifies the compiler
-// index: Specifies the index of the uniform variable to be queried.
-// length: Returns the number of characters actually written in the string
-//         indicated by name (excluding the null terminator) if a value
-//         other than NULL is passed.
-// size: Returns the size of the uniform variable.
-// type: Returns the data type of the uniform variable.
-// name: Returns a null terminated string containing the name of the
-//       uniform variable. It is assumed that name has enough memory to
-//       accomodate the uniform variable name. The size of the buffer required
-//       to store the uniform variable name can be obtained by calling
-//       ShGetInfo with SH_ACTIVE_UNIFORMS_MAX_LENGTH.
-// mappedName: Returns a null terminated string containing the mapped name of
-//             the uniform variable, It is assumed that mappedName has enough
-//             memory (SH_MAPPED_NAME_MAX_LENGTH), or NULL if don't care
-//             about the mapped name. If the name is not mapped, then name and
-//             mappedName are the same.
-COMPILER_EXPORT void ShGetActiveUniform(const ShHandle handle,
-                                        int index,
-                                        size_t* length,
-                                        int* size,
-                                        ShDataType* type,
-                                        char* name,
-                                        char* mappedName);
-
</del><span class="cx"> // Returns information about a name hashing entry from the latest compile.
</span><span class="cx"> // Parameters:
</span><span class="cx"> // handle: Specifies the compiler
</span><span class="lines">@@ -439,6 +452,25 @@
</span><span class="cx">                                       ShShaderInfo pname,
</span><span class="cx">                                       void** params);
</span><span class="cx"> 
</span><ins>+typedef struct
+{
+    ShDataType type;
+    int size;
+} ShVariableInfo;
+
+// Returns 1 if the passed in variables pack in maxVectors following
+// the packing rules from the GLSL 1.017 spec, Appendix A, section 7.
+// Returns 0 otherwise. Also look at the SH_ENFORCE_PACKING_RESTRICTIONS
+// flag above.
+// Parameters:
+// maxVectors: the available rows of registers.
+// varInfoArray: an array of variable info (types and sizes).
+// varInfoArraySize: the size of the variable array.
+COMPILER_EXPORT int ShCheckVariablesWithinPackingLimits(
+    int maxVectors,
+    ShVariableInfo* varInfoArray,
+    size_t varInfoArraySize);
+
</ins><span class="cx"> #ifdef __cplusplus
</span><span class="cx"> }
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEincludeKHRkhrplatformh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/include/KHR/khrplatform.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/include/KHR/khrplatform.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/include/KHR/khrplatform.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx"> 
</span><span class="cx"> /* Khronos platform-specific types and definitions.
</span><span class="cx">  *
</span><del>- * $Revision: 9356 $ on $Date: 2009-10-21 02:52:25 -0700 (Wed, 21 Oct 2009) $
</del><ins>+ * $Revision: 23298 $ on $Date: 2013-09-30 17:07:13 -0700 (Mon, 30 Sep 2013) $
</ins><span class="cx">  *
</span><span class="cx">  * Adopters may modify this file to suit their platform. Adopters are
</span><span class="cx">  * encouraged to submit platform specific modifications to the Khronos
</span><span class="lines">@@ -221,10 +221,23 @@
</span><span class="cx"> typedef unsigned char          khronos_uint8_t;
</span><span class="cx"> typedef signed   short int     khronos_int16_t;
</span><span class="cx"> typedef unsigned short int     khronos_uint16_t;
</span><ins>+
+/*
+ * Types that differ between LLP64 and LP64 architectures - in LLP64, 
+ * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
+ * to be the only LLP64 architecture in current use.
+ */
+#ifdef _WIN64
+typedef signed   long long int khronos_intptr_t;
+typedef unsigned long long int khronos_uintptr_t;
+typedef signed   long long int khronos_ssize_t;
+typedef unsigned long long int khronos_usize_t;
+#else
</ins><span class="cx"> typedef signed   long  int     khronos_intptr_t;
</span><span class="cx"> typedef unsigned long  int     khronos_uintptr_t;
</span><span class="cx"> typedef signed   long  int     khronos_ssize_t;
</span><span class="cx"> typedef unsigned long  int     khronos_usize_t;
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> #if KHRONOS_SUPPORT_FLOAT
</span><span class="cx"> /*
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrcANGLEsln"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/ANGLE.sln (0 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/ANGLE.sln                                (rev 0)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/ANGLE.sln        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -0,0 +1,56 @@
</span><ins>+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual C++ Express 2010
+Project(&quot;{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}&quot;) = &quot;libEGL&quot;, &quot;libEGL\libEGL.vcxproj&quot;, &quot;{E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}&quot;
+EndProject
+Project(&quot;{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}&quot;) = &quot;libGLESv2&quot;, &quot;libGLESv2\libGLESv2.vcxproj&quot;, &quot;{B5871A7A-968C-42E3-A33B-981E6F448E78}&quot;
+EndProject
+Project(&quot;{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}&quot;) = &quot;translator&quot;, &quot;compiler\translator.vcxproj&quot;, &quot;{5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}&quot;
+EndProject
+Project(&quot;{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}&quot;) = &quot;preprocessor&quot;, &quot;compiler\preprocessor\preprocessor.vcxproj&quot;, &quot;{FBE32DF3-0FB0-4F2F-A424-2C21BD7BC325}&quot;
+EndProject
+Global
+        GlobalSection(SolutionConfigurationPlatforms) = preSolution
+                Debug|Win32 = Debug|Win32
+                Debug|x64 = Debug|x64
+                Release|Win32 = Release|Win32
+                Release|x64 = Release|x64
+        EndGlobalSection
+        GlobalSection(ProjectConfigurationPlatforms) = postSolution
+                {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Debug|Win32.ActiveCfg = Debug|Win32
+                {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Debug|Win32.Build.0 = Debug|Win32
+                {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Debug|x64.ActiveCfg = Debug|x64
+                {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Debug|x64.Build.0 = Debug|x64
+                {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Release|Win32.ActiveCfg = Release|Win32
+                {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Release|Win32.Build.0 = Release|Win32
+                {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Release|x64.ActiveCfg = Release|x64
+                {E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}.Release|x64.Build.0 = Release|x64
+                {B5871A7A-968C-42E3-A33B-981E6F448E78}.Debug|Win32.ActiveCfg = Debug|Win32
+                {B5871A7A-968C-42E3-A33B-981E6F448E78}.Debug|Win32.Build.0 = Debug|Win32
+                {B5871A7A-968C-42E3-A33B-981E6F448E78}.Debug|x64.ActiveCfg = Debug|x64
+                {B5871A7A-968C-42E3-A33B-981E6F448E78}.Debug|x64.Build.0 = Debug|x64
+                {B5871A7A-968C-42E3-A33B-981E6F448E78}.Release|Win32.ActiveCfg = Release|Win32
+                {B5871A7A-968C-42E3-A33B-981E6F448E78}.Release|Win32.Build.0 = Release|Win32
+                {B5871A7A-968C-42E3-A33B-981E6F448E78}.Release|x64.ActiveCfg = Release|x64
+                {B5871A7A-968C-42E3-A33B-981E6F448E78}.Release|x64.Build.0 = Release|x64
+                {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Debug|Win32.ActiveCfg = Debug|Win32
+                {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Debug|Win32.Build.0 = Debug|Win32
+                {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Debug|x64.ActiveCfg = Debug|x64
+                {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Debug|x64.Build.0 = Debug|x64
+                {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Release|Win32.ActiveCfg = Release|Win32
+                {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Release|Win32.Build.0 = Release|Win32
+                {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Release|x64.ActiveCfg = Release|x64
+                {5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}.Release|x64.Build.0 = Release|x64
+                {FBE32DF3-0FB0-4F2F-A424-2C21BD7BC325}.Debug|Win32.ActiveCfg = Debug|Win32
+                {FBE32DF3-0FB0-4F2F-A424-2C21BD7BC325}.Debug|Win32.Build.0 = Debug|Win32
+                {FBE32DF3-0FB0-4F2F-A424-2C21BD7BC325}.Debug|x64.ActiveCfg = Debug|x64
+                {FBE32DF3-0FB0-4F2F-A424-2C21BD7BC325}.Debug|x64.Build.0 = Debug|x64
+                {FBE32DF3-0FB0-4F2F-A424-2C21BD7BC325}.Release|Win32.ActiveCfg = Release|Win32
+                {FBE32DF3-0FB0-4F2F-A424-2C21BD7BC325}.Release|Win32.Build.0 = Release|Win32
+                {FBE32DF3-0FB0-4F2F-A424-2C21BD7BC325}.Release|x64.ActiveCfg = Release|x64
+                {FBE32DF3-0FB0-4F2F-A424-2C21BD7BC325}.Release|x64.Build.0 = Release|x64
+        EndGlobalSection
+        GlobalSection(SolutionProperties) = preSolution
+                HideSolutionNode = FALSE
+        EndGlobalSection
+EndGlobal
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrcbuild_anglegypi"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/build_angle.gypi (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/build_angle.gypi        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/build_angle.gypi        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -5,68 +5,11 @@
</span><span class="cx"> {
</span><span class="cx">   'variables': {
</span><span class="cx">     'angle_code': 1,
</span><del>-  },
-  'target_defaults': {
-    'defines': [
-      'ANGLE_DISABLE_TRACE',
-      'ANGLE_COMPILE_OPTIMIZATION_LEVEL=D3DCOMPILE_OPTIMIZATION_LEVEL1',
-      'ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES={ TEXT(&quot;d3dcompiler_46.dll&quot;), TEXT(&quot;d3dcompiler_43.dll&quot;) }',
-    ],
-  },
-  'targets': [
-    {
-      'target_name': 'preprocessor',
-      'type': 'static_library',
-      'include_dirs': [
-      ],
-      'sources': [
-        'compiler/preprocessor/DiagnosticsBase.cpp',
-        'compiler/preprocessor/DiagnosticsBase.h',
-        'compiler/preprocessor/DirectiveHandlerBase.cpp',
-        'compiler/preprocessor/DirectiveHandlerBase.h',
-        'compiler/preprocessor/DirectiveParser.cpp',
-        'compiler/preprocessor/DirectiveParser.h',
-        'compiler/preprocessor/ExpressionParser.cpp',
-        'compiler/preprocessor/ExpressionParser.h',
-        'compiler/preprocessor/Input.cpp',
-        'compiler/preprocessor/Input.h',
-        'compiler/preprocessor/length_limits.h',
-        'compiler/preprocessor/Lexer.cpp',
-        'compiler/preprocessor/Lexer.h',
-        'compiler/preprocessor/Macro.cpp',
-        'compiler/preprocessor/Macro.h',
-        'compiler/preprocessor/MacroExpander.cpp',
-        'compiler/preprocessor/MacroExpander.h',
-        'compiler/preprocessor/numeric_lex.h',
-        'compiler/preprocessor/pp_utils.h',
-        'compiler/preprocessor/Preprocessor.cpp',
-        'compiler/preprocessor/Preprocessor.h',
-        'compiler/preprocessor/SourceLocation.h',
-        'compiler/preprocessor/Token.cpp',
-        'compiler/preprocessor/Token.h',
-        'compiler/preprocessor/Tokenizer.cpp',
-        'compiler/preprocessor/Tokenizer.h',
-      ],
-      # TODO(jschuh): http://crbug.com/167187
-      'msvs_disabled_warnings': [
-        4267,
-      ],      
-    },
-    {
-      'target_name': 'translator_common',
-      'type': 'static_library',
-      'dependencies': ['preprocessor'],
-      'include_dirs': [
-        '.',
-        '../include',
-      ],
-      'defines': [
-        'COMPILER_IMPLEMENTATION',
-      ],
-      'sources': [
</del><ins>+    'translator_sources': [
</ins><span class="cx">         'compiler/BaseTypes.h',
</span><span class="cx">         'compiler/BuiltInFunctionEmulator.cpp',
</span><span class="cx">         'compiler/BuiltInFunctionEmulator.h',
</span><ins>+        'compiler/CodeGen.cpp',
</ins><span class="cx">         'compiler/Common.h',
</span><span class="cx">         'compiler/Compiler.cpp',
</span><span class="cx">         'compiler/ConstantUnion.h',
</span><span class="lines">@@ -74,6 +17,8 @@
</span><span class="cx">         'compiler/debug.h',
</span><span class="cx">         'compiler/DetectCallDepth.cpp',
</span><span class="cx">         'compiler/DetectCallDepth.h',
</span><ins>+        'compiler/DetectDiscontinuity.cpp',
+        'compiler/DetectDiscontinuity.h',
</ins><span class="cx">         'compiler/Diagnostics.h',
</span><span class="cx">         'compiler/Diagnostics.cpp',
</span><span class="cx">         'compiler/DirectiveHandler.h',
</span><span class="lines">@@ -93,6 +38,8 @@
</span><span class="cx">         'compiler/InitializeDll.cpp',
</span><span class="cx">         'compiler/InitializeDll.h',
</span><span class="cx">         'compiler/InitializeGlobals.h',
</span><ins>+        'compiler/InitializeGLPosition.cpp',
+        'compiler/InitializeGLPosition.h',
</ins><span class="cx">         'compiler/InitializeParseContext.cpp',
</span><span class="cx">         'compiler/InitializeParseContext.h',
</span><span class="cx">         'compiler/Intermediate.cpp',
</span><span class="lines">@@ -104,9 +51,17 @@
</span><span class="cx">         'compiler/MapLongVariableNames.h',
</span><span class="cx">         'compiler/MMap.h',
</span><span class="cx">         'compiler/osinclude.h',
</span><ins>+        'compiler/OutputESSL.cpp',
+        'compiler/OutputESSL.h',
+        'compiler/OutputGLSLBase.cpp',
+        'compiler/OutputGLSLBase.h',
+        'compiler/OutputGLSL.cpp',
+        'compiler/OutputGLSL.h',
+        'compiler/OutputHLSL.cpp',
+        'compiler/OutputHLSL.h',
</ins><span class="cx">         'compiler/parseConst.cpp',
</span><del>-        'compiler/ParseHelper.cpp',
-        'compiler/ParseHelper.h',
</del><ins>+        'compiler/ParseContext.cpp',
+        'compiler/ParseContext.h',
</ins><span class="cx">         'compiler/PoolAlloc.cpp',
</span><span class="cx">         'compiler/PoolAlloc.h',
</span><span class="cx">         'compiler/QualifierAlive.cpp',
</span><span class="lines">@@ -114,10 +69,23 @@
</span><span class="cx">         'compiler/RemoveTree.cpp',
</span><span class="cx">         'compiler/RemoveTree.h',
</span><span class="cx">         'compiler/RenameFunction.h',
</span><ins>+        'compiler/SearchSymbol.cpp',
+        'compiler/SearchSymbol.h',
+        'compiler/ShaderLang.cpp',
</ins><span class="cx">         'compiler/ShHandle.h',
</span><span class="cx">         'compiler/SymbolTable.cpp',
</span><span class="cx">         'compiler/SymbolTable.h',
</span><ins>+        'compiler/TranslatorESSL.cpp',
+        'compiler/TranslatorESSL.h',
+        'compiler/TranslatorGLSL.cpp',
+        'compiler/TranslatorGLSL.h',
+        'compiler/TranslatorHLSL.cpp',
+        'compiler/TranslatorHLSL.h',
</ins><span class="cx">         'compiler/Types.h',
</span><ins>+        'compiler/UnfoldShortCircuitAST.cpp',
+        'compiler/UnfoldShortCircuitAST.h',
+        'compiler/UnfoldShortCircuit.cpp',
+        'compiler/UnfoldShortCircuit.h',
</ins><span class="cx">         'compiler/Uniform.cpp',
</span><span class="cx">         'compiler/Uniform.h',
</span><span class="cx">         'compiler/util.cpp',
</span><span class="lines">@@ -128,6 +96,8 @@
</span><span class="cx">         'compiler/VariableInfo.h',
</span><span class="cx">         'compiler/VariablePacker.cpp',
</span><span class="cx">         'compiler/VariablePacker.h',
</span><ins>+        'compiler/VersionGLSL.cpp',
+        'compiler/VersionGLSL.h',
</ins><span class="cx">         # Dependency graph
</span><span class="cx">         'compiler/depgraph/DependencyGraph.cpp',
</span><span class="cx">         'compiler/depgraph/DependencyGraph.h',
</span><span class="lines">@@ -144,10 +114,69 @@
</span><span class="cx">         'third_party/compiler/ArrayBoundsClamper.cpp',
</span><span class="cx">         'third_party/compiler/ArrayBoundsClamper.h',
</span><span class="cx">       ],
</span><ins>+  },
+  'target_defaults': {
+    'defines': [
+      'ANGLE_DISABLE_TRACE',
+      'ANGLE_COMPILE_OPTIMIZATION_LEVEL=D3DCOMPILE_OPTIMIZATION_LEVEL1',
+      'ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES={ TEXT(&quot;d3dcompiler_46.dll&quot;), TEXT(&quot;d3dcompiler_43.dll&quot;) }',
+    ],
+  },
+  'targets': [
+    {
+      'target_name': 'preprocessor',
+      'type': 'static_library',
+      'include_dirs': [
+      ],
+      'sources': [
+        'compiler/preprocessor/DiagnosticsBase.cpp',
+        'compiler/preprocessor/DiagnosticsBase.h',
+        'compiler/preprocessor/DirectiveHandlerBase.cpp',
+        'compiler/preprocessor/DirectiveHandlerBase.h',
+        'compiler/preprocessor/DirectiveParser.cpp',
+        'compiler/preprocessor/DirectiveParser.h',
+        'compiler/preprocessor/ExpressionParser.cpp',
+        'compiler/preprocessor/ExpressionParser.h',
+        'compiler/preprocessor/Input.cpp',
+        'compiler/preprocessor/Input.h',
+        'compiler/preprocessor/length_limits.h',
+        'compiler/preprocessor/Lexer.cpp',
+        'compiler/preprocessor/Lexer.h',
+        'compiler/preprocessor/Macro.cpp',
+        'compiler/preprocessor/Macro.h',
+        'compiler/preprocessor/MacroExpander.cpp',
+        'compiler/preprocessor/MacroExpander.h',
+        'compiler/preprocessor/numeric_lex.h',
+        'compiler/preprocessor/pp_utils.h',
+        'compiler/preprocessor/Preprocessor.cpp',
+        'compiler/preprocessor/Preprocessor.h',
+        'compiler/preprocessor/SourceLocation.h',
+        'compiler/preprocessor/Token.cpp',
+        'compiler/preprocessor/Token.h',
+        'compiler/preprocessor/Tokenizer.cpp',
+        'compiler/preprocessor/Tokenizer.h',
+      ],
+      # TODO(jschuh): http://crbug.com/167187
+      'msvs_disabled_warnings': [
+        4267,
+      ],
+    },
+    {
+      'target_name': 'translator',
+      'type': '&lt;(component)',
+      'dependencies': ['preprocessor'],
+      'include_dirs': [
+        '.',
+        '../include',
+      ],
+      'defines': [
+        'ANGLE_TRANSLATOR_IMPLEMENTATION',
+      ],
+      'sources': ['&lt;@(translator_sources)'],
+      # TODO(jschuh): http://crbug.com/167187 size_t -&gt; int
+      'msvs_disabled_warnings': [ 4267 ],
</ins><span class="cx">       'conditions': [
</span><span class="cx">         ['OS==&quot;win&quot;', {
</span><del>-          # TODO(jschuh): http://crbug.com/167187 size_t -&gt; int
-          'msvs_disabled_warnings': [ 4267 ],
</del><span class="cx">           'sources': ['compiler/ossource_win.cpp'],
</span><span class="cx">         }, { # else: posix
</span><span class="cx">           'sources': ['compiler/ossource_posix.cpp'],
</span><span class="lines">@@ -155,71 +184,40 @@
</span><span class="cx">       ],
</span><span class="cx">     },
</span><span class="cx">     {
</span><del>-      'target_name': 'translator_glsl',
-      'type': '&lt;(component)',
-      'dependencies': ['translator_common'],
</del><ins>+      'target_name': 'translator_static',
+      'type': 'static_library',
+      'dependencies': ['preprocessor'],
</ins><span class="cx">       'include_dirs': [
</span><span class="cx">         '.',
</span><span class="cx">         '../include',
</span><span class="cx">       ],
</span><ins>+      'direct_dependent_settings': {
+        'defines': [
+          'ANGLE_TRANSLATOR_STATIC',
+        ],
+      },
</ins><span class="cx">       'defines': [
</span><del>-        'COMPILER_IMPLEMENTATION',
</del><ins>+        'ANGLE_TRANSLATOR_STATIC',
</ins><span class="cx">       ],
</span><del>-      'sources': [
-        'compiler/CodeGenGLSL.cpp',
-        'compiler/OutputESSL.cpp',
-        'compiler/OutputESSL.h',        
-        'compiler/OutputGLSLBase.cpp',
-        'compiler/OutputGLSLBase.h',
-        'compiler/OutputGLSL.cpp',
-        'compiler/OutputGLSL.h',
-        'compiler/ShaderLang.cpp',
-        'compiler/TranslatorESSL.cpp',
-        'compiler/TranslatorESSL.h',
-        'compiler/TranslatorGLSL.cpp',
-        'compiler/TranslatorGLSL.h',
-        'compiler/VersionGLSL.cpp',
-        'compiler/VersionGLSL.h',
-      ],
</del><ins>+      'sources': ['&lt;@(translator_sources)'],
</ins><span class="cx">       # TODO(jschuh): http://crbug.com/167187 size_t -&gt; int
</span><span class="cx">       'msvs_disabled_warnings': [ 4267 ],
</span><ins>+      'conditions': [
+        ['OS==&quot;win&quot;', {
+          'sources': ['compiler/ossource_win.cpp'],
+        }, { # else: posix
+          'sources': ['compiler/ossource_posix.cpp'],
+        }],
+      ],
</ins><span class="cx">     },
</span><span class="cx">   ],
</span><span class="cx">   'conditions': [
</span><span class="cx">     ['OS==&quot;win&quot;', {
</span><span class="cx">       'targets': [
</span><span class="cx">         {
</span><del>-          'target_name': 'translator_hlsl',
-          'type': '&lt;(component)',
-          'dependencies': ['translator_common'],
-          'include_dirs': [
-            '.',
-            '../include',
-          ],
-          'defines': [
-            'COMPILER_IMPLEMENTATION',
-          ],
-          'sources': [
-            'compiler/ShaderLang.cpp',
-            'compiler/DetectDiscontinuity.cpp',
-            'compiler/DetectDiscontinuity.h',
-            'compiler/CodeGenHLSL.cpp',
-            'compiler/OutputHLSL.cpp',
-            'compiler/OutputHLSL.h',
-            'compiler/TranslatorHLSL.cpp',
-            'compiler/TranslatorHLSL.h',
-            'compiler/UnfoldShortCircuit.cpp',
-            'compiler/UnfoldShortCircuit.h',
-            'compiler/SearchSymbol.cpp',
-            'compiler/SearchSymbol.h',
-          ],
-          # TODO(jschuh): http://crbug.com/167187 size_t -&gt; int
-          'msvs_disabled_warnings': [ 4267 ],
-        },
-        {
</del><span class="cx">           'target_name': 'libGLESv2',
</span><span class="cx">           'type': 'shared_library',
</span><del>-          'dependencies': ['translator_hlsl'],
</del><ins>+          'dependencies': ['translator'],
</ins><span class="cx">           'include_dirs': [
</span><span class="cx">             '.',
</span><span class="cx">             '../include',
</span><span class="lines">@@ -228,9 +226,12 @@
</span><span class="cx">           'sources': [
</span><span class="cx">             'third_party/murmurhash/MurmurHash3.h',
</span><span class="cx">             'third_party/murmurhash/MurmurHash3.cpp',
</span><ins>+            'third_party/trace_event/trace_event.h',
</ins><span class="cx">             'common/angleutils.h',
</span><span class="cx">             'common/debug.cpp',
</span><span class="cx">             'common/debug.h',
</span><ins>+            'common/event_tracer.cpp',
+            'common/event_tracer.h',
</ins><span class="cx">             'common/RefCountObject.cpp',
</span><span class="cx">             'common/RefCountObject.h',
</span><span class="cx">             'common/version.h',
</span><span class="lines">@@ -293,6 +294,8 @@
</span><span class="cx">             'libGLESv2/renderer/IndexBuffer11.h',
</span><span class="cx">             'libGLESv2/renderer/IndexDataManager.cpp',
</span><span class="cx">             'libGLESv2/renderer/IndexDataManager.h',
</span><ins>+            'libGLESv2/renderer/IndexRangeCache.cpp',
+            'libGLESv2/renderer/IndexRangeCache.h',
</ins><span class="cx">             'libGLESv2/renderer/InputLayoutCache.cpp',
</span><span class="cx">             'libGLESv2/renderer/InputLayoutCache.h',
</span><span class="cx">             'libGLESv2/renderer/QueryImpl.h',
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccommondebugh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/common/debug.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/common/debug.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/common/debug.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -99,8 +99,10 @@
</span><span class="cx">     #define UNREACHABLE() ERR(&quot;\t! Unreachable reached: %s(%d)\n&quot;, __FUNCTION__, __LINE__)
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-// A macro that determines whether an object has a given runtime type.
-#if !defined(NDEBUG) &amp;&amp; (!defined(_MSC_VER) || defined(_CPPRTTI))
</del><ins>+// A macro that determines whether an object has a given runtime type. MSVC uses _CPPRTTI.
+// GCC uses __GXX_RTTI, but the macro was introduced in version 4.3, so we assume that all older
+// versions support RTTI.
+#if !defined(NDEBUG) &amp;&amp; (!defined(_MSC_VER) || defined(_CPPRTTI)) &amp;&amp; (!defined(__GNUC__) || __GNUC__ &lt; 4 || (__GNUC__ == 4 &amp;&amp; __GNUC_MINOR__ &lt; 3) || defined(__GXX_RTTI))
</ins><span class="cx"> #define HAS_DYNAMIC_TYPE(type, obj) (dynamic_cast&lt;type &gt;(obj) != NULL)
</span><span class="cx"> #else
</span><span class="cx"> #define HAS_DYNAMIC_TYPE(type, obj) true
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccommonevent_tracercpp"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/common/event_tracer.cpp (0 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/common/event_tracer.cpp                                (rev 0)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/common/event_tracer.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include &quot;common/event_tracer.h&quot;
+
+namespace gl
+{
+
+GetCategoryEnabledFlagFunc g_getCategoryEnabledFlag;
+AddTraceEventFunc g_addTraceEvent;
+
+}  // namespace gl
+
+extern &quot;C&quot; {
+
+void __stdcall SetTraceFunctionPointers(GetCategoryEnabledFlagFunc getCategoryEnabledFlag,
+                                        AddTraceEventFunc addTraceEvent)
+{
+    gl::g_getCategoryEnabledFlag = getCategoryEnabledFlag;
+    gl::g_addTraceEvent = addTraceEvent;
+}
+
+}  // extern &quot;C&quot;
+
+namespace gl
+{
+
+const unsigned char* TraceGetTraceCategoryEnabledFlag(const char* name)
+{
+    if (g_getCategoryEnabledFlag)
+    {
+        return g_getCategoryEnabledFlag(name);
+    }
+    static unsigned char disabled = 0;
+    return &amp;disabled;
+}
+
+void TraceAddTraceEvent(char phase, const unsigned char* categoryGroupEnabled, const char* name, unsigned long long id,
+                        int numArgs, const char** argNames, const unsigned char* argTypes,
+                        const unsigned long long* argValues, unsigned char flags)
+{
+    if (g_addTraceEvent)
+    {
+        g_addTraceEvent(phase, categoryGroupEnabled, name, id, numArgs, argNames, argTypes, argValues, flags);
+    }
+}
+
+}  // namespace gl
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccommonevent_tracerh"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/common/event_tracer.h (0 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/common/event_tracer.h                                (rev 0)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/common/event_tracer.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMMON_EVENT_TRACER_H_
+#define COMMON_EVENT_TRACER_H_
+
+extern &quot;C&quot; {
+
+typedef const unsigned char* (*GetCategoryEnabledFlagFunc)(const char* name);
+typedef void (*AddTraceEventFunc)(char phase, const unsigned char* categoryGroupEnabled, const char* name,
+                                  unsigned long long id, int numArgs, const char** argNames,
+                                  const unsigned char* argTypes, const unsigned long long* argValues,
+                                  unsigned char flags);
+
+// extern &quot;C&quot; so that it has a reasonable name for GetProcAddress.
+void __stdcall SetTraceFunctionPointers(GetCategoryEnabledFlagFunc get_category_enabled_flag,
+                                        AddTraceEventFunc add_trace_event_func);
+
+}
+
+namespace gl
+{
+
+const unsigned char* TraceGetTraceCategoryEnabledFlag(const char* name);
+
+void TraceAddTraceEvent(char phase, const unsigned char* categoryGroupEnabled, const char* name, unsigned long long id,
+                        int numArgs, const char** argNames, const unsigned char* argTypes,
+                        const unsigned long long* argValues, unsigned char flags);
+
+}
+
+#endif  // COMMON_EVENT_TRACER_H_
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccommonversionh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/common/version.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/common/version.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/common/version.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx"> #define MAJOR_VERSION 1
</span><span class="cx"> #define MINOR_VERSION 2
</span><span class="cx"> #define BUILD_VERSION 0
</span><del>-#define BUILD_REVISION 2426
</del><ins>+#define BUILD_REVISION 2450
</ins><span class="cx"> 
</span><span class="cx"> #define STRINGIFY(x) #x
</span><span class="cx"> #define MACRO_STRINGIFY(x) STRINGIFY(x)
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerCodeGencppfromrev162314releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerCodeGenGLSLcpp"></a>
<div class="copfile"><h4>Copied: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/CodeGen.cpp (from rev 162314, releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/CodeGenGLSL.cpp) (0 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/CodeGen.cpp                                (rev 0)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/CodeGen.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+//
+// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+#include &quot;compiler/TranslatorESSL.h&quot;
+#include &quot;compiler/TranslatorGLSL.h&quot;
+#include &quot;compiler/TranslatorHLSL.h&quot;
+
+//
+// This function must be provided to create the actual
+// compile object used by higher level code.  It returns
+// a subclass of TCompiler.
+//
+TCompiler* ConstructCompiler(
+    ShShaderType type, ShShaderSpec spec, ShShaderOutput output)
+{
+    switch (output) {
+      case SH_ESSL_OUTPUT:
+        return new TranslatorESSL(type, spec);
+      case SH_GLSL_OUTPUT:
+        return new TranslatorGLSL(type, spec);
+      case SH_HLSL9_OUTPUT:
+      case SH_HLSL11_OUTPUT:
+        return new TranslatorHLSL(type, spec, output);
+      default:
+        return NULL;
+    }
+}
+
+//
+// Delete the compiler made by ConstructCompiler
+//
+void DeleteCompiler(TCompiler* compiler)
+{
+    delete compiler;
+}
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerCodeGenGLSLcpp"></a>
<div class="delfile"><h4>Deleted: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/CodeGenGLSL.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/CodeGenGLSL.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/CodeGenGLSL.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,34 +0,0 @@
</span><del>-//
-// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-
-#include &quot;compiler/TranslatorGLSL.h&quot;
-#include &quot;compiler/TranslatorESSL.h&quot;
-
-//
-// This function must be provided to create the actual
-// compile object used by higher level code.  It returns
-// a subclass of TCompiler.
-//
-TCompiler* ConstructCompiler(
-    ShShaderType type, ShShaderSpec spec, ShShaderOutput output)
-{
-    switch (output) {
-      case SH_GLSL_OUTPUT:
-        return new TranslatorGLSL(type, spec);
-      case SH_ESSL_OUTPUT:
-        return new TranslatorESSL(type, spec);
-      default:
-        return NULL;
-    }
-}
-
-//
-// Delete the compiler made by ConstructCompiler
-//
-void DeleteCompiler(TCompiler* compiler)
-{
-    delete compiler;
-}
</del></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerCodeGenHLSLcpp"></a>
<div class="delfile"><h4>Deleted: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/CodeGenHLSL.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/CodeGenHLSL.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/CodeGenHLSL.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,33 +0,0 @@
</span><del>-//
-// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-
-#include &quot;compiler/TranslatorHLSL.h&quot;
-
-//
-// This function must be provided to create the actual
-// compile object used by higher level code.  It returns
-// a subclass of TCompiler.
-//
-TCompiler* ConstructCompiler(
-    ShShaderType type, ShShaderSpec spec, ShShaderOutput output)
-{
-  switch (output)
-  {
-    case SH_HLSL9_OUTPUT:
-    case SH_HLSL11_OUTPUT:
-      return new TranslatorHLSL(type, spec, output);
-    default:
-      return NULL;
-  }
-}
-
-//
-// Delete the compiler made by ConstructCompiler
-//
-void DeleteCompiler(TCompiler* compiler)
-{
-    delete compiler;
-}
</del></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerCommonh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/Common.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/Common.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/Common.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -24,14 +24,14 @@
</span><span class="cx"> //
</span><span class="cx"> // Put POOL_ALLOCATOR_NEW_DELETE in base classes to make them use this scheme.
</span><span class="cx"> //
</span><del>-#define POOL_ALLOCATOR_NEW_DELETE(A)                                  \
-    void* operator new(size_t s) { return (A).allocate(s); }          \
-    void* operator new(size_t, void *_Where) { return (_Where);        }     \
-    void operator delete(void*) { }                                   \
-    void operator delete(void *, void *) { }                          \
-    void* operator new[](size_t s) { return (A).allocate(s); }        \
-    void* operator new[](size_t, void *_Where) { return (_Where);        } \
-    void operator delete[](void*) { }                                 \
</del><ins>+#define POOL_ALLOCATOR_NEW_DELETE()                                                  \
+    void* operator new(size_t s) { return GetGlobalPoolAllocator()-&gt;allocate(s); }   \
+    void* operator new(size_t, void *_Where) { return (_Where); }                    \
+    void operator delete(void*) { }                                                  \
+    void operator delete(void *, void *) { }                                         \
+    void* operator new[](size_t s) { return GetGlobalPoolAllocator()-&gt;allocate(s); } \
+    void* operator new[](size_t, void *_Where) { return (_Where); }                  \
+    void operator delete[](void*) { }                                                \
</ins><span class="cx">     void operator delete[](void *, void *) { }
</span><span class="cx"> 
</span><span class="cx"> //
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx"> typedef std::basic_ostringstream&lt;char, std::char_traits&lt;char&gt;, TStringAllocator&gt; TStringStream;
</span><span class="cx"> inline TString* NewPoolTString(const char* s)
</span><span class="cx"> {
</span><del>-        void* memory = GlobalPoolAllocator.allocate(sizeof(TString));
</del><ins>+        void* memory = GetGlobalPoolAllocator()-&gt;allocate(sizeof(TString));
</ins><span class="cx">         return new(memory) TString(s);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerCompilercpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/Compiler.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/Compiler.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/Compiler.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -8,11 +8,13 @@
</span><span class="cx"> #include &quot;compiler/DetectCallDepth.h&quot;
</span><span class="cx"> #include &quot;compiler/ForLoopUnroll.h&quot;
</span><span class="cx"> #include &quot;compiler/Initialize.h&quot;
</span><ins>+#include &quot;compiler/InitializeGLPosition.h&quot;
</ins><span class="cx"> #include &quot;compiler/InitializeParseContext.h&quot;
</span><span class="cx"> #include &quot;compiler/MapLongVariableNames.h&quot;
</span><del>-#include &quot;compiler/ParseHelper.h&quot;
</del><ins>+#include &quot;compiler/ParseContext.h&quot;
</ins><span class="cx"> #include &quot;compiler/RenameFunction.h&quot;
</span><span class="cx"> #include &quot;compiler/ShHandle.h&quot;
</span><ins>+#include &quot;compiler/UnfoldShortCircuitAST.h&quot;
</ins><span class="cx"> #include &quot;compiler/ValidateLimitations.h&quot;
</span><span class="cx"> #include &quot;compiler/VariablePacker.h&quot;
</span><span class="cx"> #include &quot;compiler/depgraph/DependencyGraph.h&quot;
</span><span class="lines">@@ -29,20 +31,33 @@
</span><span class="cx"> namespace {
</span><span class="cx"> class TScopedPoolAllocator {
</span><span class="cx"> public:
</span><del>-    TScopedPoolAllocator(TPoolAllocator* allocator, bool pushPop)
-        : mAllocator(allocator), mPushPopAllocator(pushPop) {
-        if (mPushPopAllocator) mAllocator-&gt;push();
</del><ins>+    TScopedPoolAllocator(TPoolAllocator* allocator) : mAllocator(allocator) {
+        mAllocator-&gt;push();
</ins><span class="cx">         SetGlobalPoolAllocator(mAllocator);
</span><span class="cx">     }
</span><span class="cx">     ~TScopedPoolAllocator() {
</span><span class="cx">         SetGlobalPoolAllocator(NULL);
</span><del>-        if (mPushPopAllocator) mAllocator-&gt;pop();
</del><ins>+        mAllocator-&gt;pop();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     TPoolAllocator* mAllocator;
</span><del>-    bool mPushPopAllocator;
</del><span class="cx"> };
</span><ins>+
+class TScopedSymbolTableLevel {
+public:
+    TScopedSymbolTableLevel(TSymbolTable* table) : mTable(table) {
+        ASSERT(mTable-&gt;atBuiltInLevel());
+        mTable-&gt;push();
+    }
+    ~TScopedSymbolTableLevel() {
+        while (!mTable-&gt;atBuiltInLevel())
+            mTable-&gt;pop();
+    }
+
+private:
+    TSymbolTable* mTable;
+};
</ins><span class="cx"> }  // namespace
</span><span class="cx"> 
</span><span class="cx"> TShHandleBase::TShHandleBase() {
</span><span class="lines">@@ -81,8 +96,9 @@
</span><span class="cx">         resources.MaxFragmentUniformVectors;
</span><span class="cx">     maxExpressionComplexity = resources.MaxExpressionComplexity;
</span><span class="cx">     maxCallStackDepth = resources.MaxCallStackDepth;
</span><del>-    TScopedPoolAllocator scopedAlloc(&amp;allocator, false);
</del><span class="cx"> 
</span><ins>+    SetGlobalPoolAllocator(&amp;allocator);
+
</ins><span class="cx">     // Generate built-in symbol table.
</span><span class="cx">     if (!InitBuiltInSymbolTable(resources))
</span><span class="cx">         return false;
</span><span class="lines">@@ -101,7 +117,7 @@
</span><span class="cx">                         size_t numStrings,
</span><span class="cx">                         int compileOptions)
</span><span class="cx"> {
</span><del>-    TScopedPoolAllocator scopedAlloc(&amp;allocator, true);
</del><ins>+    TScopedPoolAllocator scopedAlloc(&amp;allocator);
</ins><span class="cx">     clearResults();
</span><span class="cx"> 
</span><span class="cx">     if (numStrings == 0)
</span><span class="lines">@@ -125,15 +141,11 @@
</span><span class="cx">                                shaderType, shaderSpec, compileOptions, true,
</span><span class="cx">                                sourcePath, infoSink);
</span><span class="cx">     parseContext.fragmentPrecisionHigh = fragmentPrecisionHigh;
</span><del>-    GlobalParseContext = &amp;parseContext;
</del><ins>+    SetGlobalParseContext(&amp;parseContext);
</ins><span class="cx"> 
</span><span class="cx">     // We preserve symbols at the built-in level from compile-to-compile.
</span><span class="cx">     // Start pushing the user-defined symbols at global level.
</span><del>-    symbolTable.push();
-    if (!symbolTable.atGlobalLevel()) {
-        infoSink.info.prefix(EPrefixInternalError);
-        infoSink.info &lt;&lt; &quot;Wrong symbol table level&quot;;
-    }
</del><ins>+    TScopedSymbolTableLevel scopedSymbolLevel(&amp;symbolTable);
</ins><span class="cx"> 
</span><span class="cx">     // Parse shader.
</span><span class="cx">     bool success =
</span><span class="lines">@@ -178,8 +190,19 @@
</span><span class="cx">         if (success &amp;&amp; (compileOptions &amp; SH_MAP_LONG_VARIABLE_NAMES) &amp;&amp; hashFunction == NULL)
</span><span class="cx">             mapLongVariableNames(root);
</span><span class="cx"> 
</span><del>-        if (success &amp;&amp; (compileOptions &amp; SH_ATTRIBUTES_UNIFORMS)) {
-            collectAttribsUniforms(root);
</del><ins>+        if (success &amp;&amp; shaderType == SH_VERTEX_SHADER &amp;&amp; (compileOptions &amp; SH_INIT_GL_POSITION)) {
+            InitializeGLPosition initGLPosition;
+            root-&gt;traverse(&amp;initGLPosition);
+        }
+
+    if (success &amp;&amp; (compileOptions &amp; SH_UNFOLD_SHORT_CIRCUIT)) {
+            UnfoldShortCircuitAST unfoldShortCircuit;
+            root-&gt;traverse(&amp;unfoldShortCircuit);
+            unfoldShortCircuit.updateTree();
+    }
+
+        if (success &amp;&amp; (compileOptions &amp; SH_VARIABLES)) {
+            collectVariables(root);
</ins><span class="cx">             if (compileOptions &amp; SH_ENFORCE_PACKING_RESTRICTIONS) {
</span><span class="cx">                 success = enforcePackingRestrictions();
</span><span class="cx">                 if (!success) {
</span><span class="lines">@@ -198,10 +221,6 @@
</span><span class="cx"> 
</span><span class="cx">     // Cleanup memory.
</span><span class="cx">     intermediate.remove(parseContext.treeRoot);
</span><del>-    // Ensure symbol table is returned to the built-in level,
-    // throwing away all but the built-ins.
-    while (!symbolTable.atBuiltInLevel())
-        symbolTable.pop();
</del><span class="cx"> 
</span><span class="cx">     return success;
</span><span class="cx"> }
</span><span class="lines">@@ -225,6 +244,11 @@
</span><span class="cx">     floatingPoint.matrix = false;
</span><span class="cx">     floatingPoint.array = false;
</span><span class="cx"> 
</span><ins>+    TPublicType sampler;
+    sampler.size = 1;
+    sampler.matrix = false;
+    sampler.array = false;
+
</ins><span class="cx">     switch(shaderType)
</span><span class="cx">     {
</span><span class="cx">       case SH_FRAGMENT_SHADER:
</span><span class="lines">@@ -236,6 +260,13 @@
</span><span class="cx">         break;
</span><span class="cx">       default: assert(false &amp;&amp; &quot;Language not supported&quot;);
</span><span class="cx">     }
</span><ins>+    // We set defaults for all the sampler types, even those that are
+    // only available if an extension exists.
+    for (int samplerType = EbtGuardSamplerBegin + 1;
+         samplerType &lt; EbtGuardSamplerEnd; ++samplerType) {
+        sampler.type = static_cast&lt;TBasicType&gt;(samplerType);
+        symbolTable.setDefaultPrecision(sampler, EbpLow);
+    }
</ins><span class="cx"> 
</span><span class="cx">     InsertBuiltInFunctions(shaderType, shaderSpec, resources, symbolTable);
</span><span class="cx"> 
</span><span class="lines">@@ -253,6 +284,7 @@
</span><span class="cx"> 
</span><span class="cx">     attribs.clear();
</span><span class="cx">     uniforms.clear();
</span><ins>+    varyings.clear();
</ins><span class="cx"> 
</span><span class="cx">     builtInFunctionEmulator.Cleanup();
</span><span class="cx"> 
</span><span class="lines">@@ -358,9 +390,9 @@
</span><span class="cx">     return restrictor.numErrors() == 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void TCompiler::collectAttribsUniforms(TIntermNode* root)
</del><ins>+void TCompiler::collectVariables(TIntermNode* root)
</ins><span class="cx"> {
</span><del>-    CollectAttribsUniforms collect(attribs, uniforms, hashFunction);
</del><ins>+    CollectVariables collect(attribs, uniforms, varyings, hashFunction);
</ins><span class="cx">     root-&gt;traverse(&amp;collect);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerConstantUnionh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ConstantUnion.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ConstantUnion.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ConstantUnion.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -11,13 +11,13 @@
</span><span class="cx"> 
</span><span class="cx"> class ConstantUnion {
</span><span class="cx"> public:
</span><ins>+    POOL_ALLOCATOR_NEW_DELETE();
</ins><span class="cx">     ConstantUnion()
</span><span class="cx">     {
</span><span class="cx">         iConst = 0;
</span><span class="cx">         type = EbtVoid;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    POOL_ALLOCATOR_NEW_DELETE(GlobalPoolAllocator)        
</del><span class="cx">     void setIConst(int i) {iConst = i; type = EbtInt; }
</span><span class="cx">     void setFConst(float f) {fConst = f; type = EbtFloat; }
</span><span class="cx">     void setBConst(bool b) {bConst = b; type = EbtBool; }
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerDetectDiscontinuitycpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -10,7 +10,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;compiler/DetectDiscontinuity.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;compiler/ParseHelper.h&quot;
</del><ins>+#include &quot;compiler/ParseContext.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace sh
</span><span class="cx"> {
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerInfoSinkh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InfoSink.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InfoSink.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InfoSink.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -8,6 +8,7 @@
</span><span class="cx"> #define _INFOSINK_INCLUDED_
</span><span class="cx"> 
</span><span class="cx"> #include &lt;math.h&gt;
</span><ins>+#include &lt;stdlib.h&gt;
</ins><span class="cx"> #include &quot;compiler/Common.h&quot;
</span><span class="cx"> 
</span><span class="cx"> // Returns the fractional part of the given floating-point number.
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerInitializeDllcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeDll.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeDll.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeDll.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -10,25 +10,8 @@
</span><span class="cx"> #include &quot;compiler/InitializeParseContext.h&quot;
</span><span class="cx"> #include &quot;compiler/osinclude.h&quot;
</span><span class="cx"> 
</span><del>-OS_TLSIndex ThreadInitializeIndex = OS_INVALID_TLS_INDEX;
-
</del><span class="cx"> bool InitProcess()
</span><span class="cx"> {
</span><del>-    if (ThreadInitializeIndex != OS_INVALID_TLS_INDEX) {
-        //
-        // Function is re-entrant.
-        //
-        return true;
-    }
-
-    ThreadInitializeIndex = OS_AllocTLSIndex();
-
-    if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX) {
-        assert(0 &amp;&amp; &quot;InitProcess(): Failed to allocate TLS area for init flag&quot;);
-        return false;
-    }
-
-
</del><span class="cx">     if (!InitializePoolIndex()) {
</span><span class="cx">         assert(0 &amp;&amp; &quot;InitProcess(): Failed to initalize global pool&quot;);
</span><span class="cx">         return false;
</span><span class="lines">@@ -39,77 +22,11 @@
</span><span class="cx">         return false;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return InitThread();
</del><ins>+    return true;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool DetachProcess()
</del><ins>+void DetachProcess()
</ins><span class="cx"> {
</span><del>-    bool success = true;
-
-    if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX)
-        return true;
-
-    success = DetachThread();
-
-    if (!FreeParseContextIndex())
-        success = false;
-
</del><ins>+    FreeParseContextIndex();
</ins><span class="cx">     FreePoolIndex();
</span><del>-
-    OS_FreeTLSIndex(ThreadInitializeIndex);
-    ThreadInitializeIndex = OS_INVALID_TLS_INDEX;
-
-    return success;
</del><span class="cx"> }
</span><del>-
-bool InitThread()
-{
-    //
-    // This function is re-entrant
-    //
-    if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX) {
-        assert(0 &amp;&amp; &quot;InitThread(): Process hasn't been initalised.&quot;);
-        return false;
-    }
-
-    if (OS_GetTLSValue(ThreadInitializeIndex) != 0)
-        return true;
-
-    InitializeGlobalPools();
-
-    if (!InitializeGlobalParseContext())
-        return false;
-
-    if (!OS_SetTLSValue(ThreadInitializeIndex, (void *)1)) {
-        assert(0 &amp;&amp; &quot;InitThread(): Unable to set init flag.&quot;);
-        return false;
-    }
-
-    return true;
-}
-
-bool DetachThread()
-{
-    bool success = true;
-
-    if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX)
-        return true;
-
-    //
-    // Function is re-entrant and this thread may not have been initalised.
-    //
-    if (OS_GetTLSValue(ThreadInitializeIndex) != 0) {
-        if (!OS_SetTLSValue(ThreadInitializeIndex, (void *)0)) {
-            assert(0 &amp;&amp; &quot;DetachThread(): Unable to clear init flag.&quot;);
-            success = false;
-        }
-
-        if (!FreeParseContext())
-            success = false;
-
-        FreeGlobalPools();
-    }
-
-    return success;
-}
-
</del></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerInitializeDllh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeDll.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeDll.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeDll.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -7,10 +7,7 @@
</span><span class="cx"> #define __INITIALIZEDLL_H
</span><span class="cx"> 
</span><span class="cx"> bool InitProcess();
</span><del>-bool DetachProcess();
</del><ins>+void DetachProcess();
</ins><span class="cx"> 
</span><del>-bool InitThread();
-bool DetachThread();
-
</del><span class="cx"> #endif // __INITIALIZEDLL_H
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerInitializeGLPositioncpp"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeGLPosition.cpp (0 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeGLPosition.cpp                                (rev 0)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeGLPosition.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -0,0 +1,61 @@
</span><ins>+//
+// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+#include &quot;compiler/InitializeGLPosition.h&quot;
+#include &quot;compiler/debug.h&quot;
+
+bool InitializeGLPosition::visitAggregate(Visit visit, TIntermAggregate* node)
+{
+    bool visitChildren = !mCodeInserted;
+    switch (node-&gt;getOp())
+    {
+      case EOpSequence: break;
+      case EOpFunction:
+      {
+        // Function definition.
+        ASSERT(visit == PreVisit);
+        if (node-&gt;getName() == &quot;main(&quot;)
+        {
+            TIntermSequence &amp;sequence = node-&gt;getSequence();
+            ASSERT((sequence.size() == 1) || (sequence.size() == 2));
+            TIntermAggregate *body = NULL;
+            if (sequence.size() == 1)
+            {
+                body = new TIntermAggregate(EOpSequence);
+                sequence.push_back(body);
+            }
+            else
+            {
+                body = sequence[1]-&gt;getAsAggregate();
+            }
+            ASSERT(body);
+            insertCode(body-&gt;getSequence());
+            mCodeInserted = true;
+        }
+        break;
+      }
+      default: visitChildren = false; break;
+    }
+    return visitChildren;
+}
+
+void InitializeGLPosition::insertCode(TIntermSequence&amp; sequence)
+{
+    TIntermBinary *binary = new TIntermBinary(EOpAssign);
+    sequence.insert(sequence.begin(), binary);
+
+    TIntermSymbol *left = new TIntermSymbol(
+        0, &quot;gl_Position&quot;, TType(EbtFloat, EbpUndefined, EvqPosition, 4));
+    binary-&gt;setLeft(left);
+
+    ConstantUnion *u = new ConstantUnion[4];
+    for (int ii = 0; ii &lt; 3; ++ii)
+        u[ii].setFConst(0.0f);
+    u[3].setFConst(1.0f);
+    TIntermConstantUnion *right = new TIntermConstantUnion(
+        u, TType(EbtFloat, EbpUndefined, EvqConst, 4));
+    binary-&gt;setRight(right);
+}
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerInitializeGLPositionh"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeGLPosition.h (0 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeGLPosition.h                                (rev 0)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeGLPosition.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+//
+// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+#ifndef COMPILER_INITIALIZE_GL_POSITION_H_
+#define COMPILER_INITIALIZE_GL_POSITION_H_
+
+#include &quot;compiler/intermediate.h&quot;
+
+class InitializeGLPosition : public TIntermTraverser
+{
+public:
+    InitializeGLPosition() : mCodeInserted(false) { }
+
+protected:
+    virtual bool visitBinary(Visit visit, TIntermBinary* node) { return false; }
+    virtual bool visitUnary(Visit visit, TIntermUnary* node) { return false; }
+    virtual bool visitSelection(Visit visit, TIntermSelection* node) { return false; }
+    virtual bool visitLoop(Visit visit, TIntermLoop* node) { return false; }
+    virtual bool visitBranch(Visit visit, TIntermBranch* node) { return false; }
+
+    virtual bool visitAggregate(Visit visit, TIntermAggregate* node);
+
+private:
+    // Insert AST node in the beginning of main() for &quot;gl_Position = vec4(0.0, 0.0, 0.0, 1.0);&quot;.
+    void insertCode(TIntermSequence&amp; sequence);
+
+    bool mCodeInserted;
+};
+
+#endif  // COMPILER_INITIALIZE_GL_POSITION_H_
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerInitializeGlobalsh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeGlobals.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeGlobals.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeGlobals.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -7,8 +7,6 @@
</span><span class="cx"> #ifndef __INITIALIZE_GLOBALS_INCLUDED_
</span><span class="cx"> #define __INITIALIZE_GLOBALS_INCLUDED_
</span><span class="cx"> 
</span><del>-void InitializeGlobalPools();
-void FreeGlobalPools();
</del><span class="cx"> bool InitializePoolIndex();
</span><span class="cx"> void FreePoolIndex();
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerInitializeParseContextcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeParseContext.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeParseContext.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeParseContext.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -12,85 +12,29 @@
</span><span class="cx"> 
</span><span class="cx"> bool InitializeParseContextIndex()
</span><span class="cx"> {
</span><del>-    if (GlobalParseContextIndex != OS_INVALID_TLS_INDEX) {
-        assert(0 &amp;&amp; &quot;InitializeParseContextIndex(): Parse Context already initalized&quot;);
-        return false;
-    }
</del><ins>+    assert(GlobalParseContextIndex == OS_INVALID_TLS_INDEX);
</ins><span class="cx"> 
</span><del>-    //
-    // Allocate a TLS index.
-    //
</del><span class="cx">     GlobalParseContextIndex = OS_AllocTLSIndex();
</span><del>-    
-    if (GlobalParseContextIndex == OS_INVALID_TLS_INDEX) {
-        assert(0 &amp;&amp; &quot;InitializeParseContextIndex(): Parse Context already initalized&quot;);
-        return false;
-    }
-
-    return true;
</del><ins>+    return GlobalParseContextIndex != OS_INVALID_TLS_INDEX;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool FreeParseContextIndex()
</del><ins>+void FreeParseContextIndex()
</ins><span class="cx"> {
</span><del>-    OS_TLSIndex tlsiIndex = GlobalParseContextIndex;
</del><ins>+    assert(GlobalParseContextIndex != OS_INVALID_TLS_INDEX);
</ins><span class="cx"> 
</span><del>-    if (GlobalParseContextIndex == OS_INVALID_TLS_INDEX) {
-        assert(0 &amp;&amp; &quot;FreeParseContextIndex(): Parse Context index not initalized&quot;);
-        return false;
-    }
-
</del><ins>+    OS_FreeTLSIndex(GlobalParseContextIndex);
</ins><span class="cx">     GlobalParseContextIndex = OS_INVALID_TLS_INDEX;
</span><del>-
-    return OS_FreeTLSIndex(tlsiIndex);
</del><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool InitializeGlobalParseContext()
</del><ins>+void SetGlobalParseContext(TParseContext* context)
</ins><span class="cx"> {
</span><del>-    if (GlobalParseContextIndex == OS_INVALID_TLS_INDEX) {
-        assert(0 &amp;&amp; &quot;InitializeGlobalParseContext(): Parse Context index not initalized&quot;);
-        return false;
-    }
-
-    TThreadParseContext *lpParseContext = static_cast&lt;TThreadParseContext *&gt;(OS_GetTLSValue(GlobalParseContextIndex));
-    if (lpParseContext != 0) {
-        assert(0 &amp;&amp; &quot;InitializeParseContextIndex(): Parse Context already initalized&quot;);
-        return false;
-    }
-
-    TThreadParseContext *lpThreadData = new TThreadParseContext();
-    if (lpThreadData == 0) {
-        assert(0 &amp;&amp; &quot;InitializeGlobalParseContext(): Unable to create thread parse context&quot;);
-        return false;
-    }
-
-    lpThreadData-&gt;lpGlobalParseContext = 0;
-    OS_SetTLSValue(GlobalParseContextIndex, lpThreadData);
-
-    return true;
</del><ins>+    assert(GlobalParseContextIndex != OS_INVALID_TLS_INDEX);
+    OS_SetTLSValue(GlobalParseContextIndex, context);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool FreeParseContext()
</del><ins>+TParseContext* GetGlobalParseContext()
</ins><span class="cx"> {
</span><del>-    if (GlobalParseContextIndex == OS_INVALID_TLS_INDEX) {
-        assert(0 &amp;&amp; &quot;FreeParseContext(): Parse Context index not initalized&quot;);
-        return false;
-    }
-
-    TThreadParseContext *lpParseContext = static_cast&lt;TThreadParseContext *&gt;(OS_GetTLSValue(GlobalParseContextIndex));
-    if (lpParseContext)
-        delete lpParseContext;
-
-    return true;
</del><ins>+    assert(GlobalParseContextIndex != OS_INVALID_TLS_INDEX);
+    return static_cast&lt;TParseContext*&gt;(OS_GetTLSValue(GlobalParseContextIndex));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-TParseContextPointer&amp; GetGlobalParseContext()
-{
-    //
-    // Minimal error checking for speed
-    //
-
-    TThreadParseContext *lpParseContext = static_cast&lt;TThreadParseContext *&gt;(OS_GetTLSValue(GlobalParseContextIndex));
-
-    return lpParseContext-&gt;lpGlobalParseContext;
-}
-
</del></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerInitializeParseContexth"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeParseContext.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeParseContext.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/InitializeParseContext.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -8,19 +8,10 @@
</span><span class="cx"> #define __INITIALIZE_PARSE_CONTEXT_INCLUDED_
</span><span class="cx"> 
</span><span class="cx"> bool InitializeParseContextIndex();
</span><del>-bool FreeParseContextIndex();
</del><ins>+void FreeParseContextIndex();
</ins><span class="cx"> 
</span><del>-bool InitializeGlobalParseContext();
-bool FreeParseContext();
-
</del><span class="cx"> struct TParseContext;
</span><del>-typedef TParseContext* TParseContextPointer;
-extern TParseContextPointer&amp; GetGlobalParseContext();
-#define GlobalParseContext GetGlobalParseContext()
</del><ins>+extern void SetGlobalParseContext(TParseContext* context);
+extern TParseContext* GetGlobalParseContext();
</ins><span class="cx"> 
</span><del>-typedef struct TThreadParseContextRec
-{
-    TParseContext *lpGlobalParseContext;
-} TThreadParseContext;
-
</del><span class="cx"> #endif // __INITIALIZE_PARSE_CONTEXT_INCLUDED_
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerIntermTraversecpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/IntermTraverse.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/IntermTraverse.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/IntermTraverse.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -23,271 +23,237 @@
</span><span class="cx"> //
</span><span class="cx"> // Traversal functions for terminals are straighforward....
</span><span class="cx"> //
</span><del>-void TIntermSymbol::traverse(TIntermTraverser* it)
</del><ins>+void TIntermSymbol::traverse(TIntermTraverser *it)
</ins><span class="cx"> {
</span><del>-        it-&gt;visitSymbol(this);
</del><ins>+    it-&gt;visitSymbol(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void TIntermConstantUnion::traverse(TIntermTraverser* it)
</del><ins>+void TIntermConstantUnion::traverse(TIntermTraverser *it)
</ins><span class="cx"> {
</span><del>-        it-&gt;visitConstantUnion(this);
</del><ins>+    it-&gt;visitConstantUnion(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> //
</span><span class="cx"> // Traverse a binary node.
</span><span class="cx"> //
</span><del>-void TIntermBinary::traverse(TIntermTraverser* it)
</del><ins>+void TIntermBinary::traverse(TIntermTraverser *it)
</ins><span class="cx"> {
</span><del>-        bool visit = true;
</del><ins>+    bool visit = true;
</ins><span class="cx"> 
</span><del>-        //
-        // visit the node before children if pre-visiting.
-        //
-        if(it-&gt;preVisit)
-        {
-                visit = it-&gt;visitBinary(PreVisit, this);
-        }
-        
-        //
-        // Visit the children, in the right order.
-        //
-        if(visit)
-        {
-                it-&gt;incrementDepth();
</del><ins>+    //
+    // visit the node before children if pre-visiting.
+    //
+    if (it-&gt;preVisit)
+        visit = it-&gt;visitBinary(PreVisit, this);
+    
+    //
+    // Visit the children, in the right order.
+    //
+    if (visit)
+    {
+        it-&gt;incrementDepth(this);
</ins><span class="cx"> 
</span><del>-                if(it-&gt;rightToLeft) 
-                {
-                        if(right)
-                        {
-                                right-&gt;traverse(it);
-                        }
-                        
-                        if(it-&gt;inVisit)
-                        {
-                                visit = it-&gt;visitBinary(InVisit, this);
-                        }
</del><ins>+        if (it-&gt;rightToLeft) 
+        {
+            if (right)
+                right-&gt;traverse(it);
+            
+            if (it-&gt;inVisit)
+                visit = it-&gt;visitBinary(InVisit, this);
</ins><span class="cx"> 
</span><del>-                        if(visit &amp;&amp; left)
-                        {
-                                left-&gt;traverse(it);
-                        }
-                }
-                else
-                {
-                        if(left)
-                        {
-                                left-&gt;traverse(it);
-                        }
-                        
-                        if(it-&gt;inVisit)
-                        {
-                                visit = it-&gt;visitBinary(InVisit, this);
-                        }
</del><ins>+            if (visit &amp;&amp; left)
+                left-&gt;traverse(it);
+        }
+        else
+        {
+            if (left)
+                left-&gt;traverse(it);
+            
+            if (it-&gt;inVisit)
+                visit = it-&gt;visitBinary(InVisit, this);
</ins><span class="cx"> 
</span><del>-                        if(visit &amp;&amp; right)
-                        {
-                                right-&gt;traverse(it);
-                        }
-                }
</del><ins>+            if (visit &amp;&amp; right)
+                right-&gt;traverse(it);
+        }
</ins><span class="cx"> 
</span><del>-                it-&gt;decrementDepth();
-        }
</del><ins>+        it-&gt;decrementDepth();
+    }
</ins><span class="cx"> 
</span><del>-        //
-        // Visit the node after the children, if requested and the traversal
-        // hasn't been cancelled yet.
-        //
-        if(visit &amp;&amp; it-&gt;postVisit)
-        {
-                it-&gt;visitBinary(PostVisit, this);
-        }
</del><ins>+    //
+    // Visit the node after the children, if requested and the traversal
+    // hasn't been cancelled yet.
+    //
+    if (visit &amp;&amp; it-&gt;postVisit)
+        it-&gt;visitBinary(PostVisit, this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> //
</span><span class="cx"> // Traverse a unary node.  Same comments in binary node apply here.
</span><span class="cx"> //
</span><del>-void TIntermUnary::traverse(TIntermTraverser* it)
</del><ins>+void TIntermUnary::traverse(TIntermTraverser *it)
</ins><span class="cx"> {
</span><del>-        bool visit = true;
</del><ins>+    bool visit = true;
</ins><span class="cx"> 
</span><del>-        if (it-&gt;preVisit)
-                visit = it-&gt;visitUnary(PreVisit, this);
</del><ins>+    if (it-&gt;preVisit)
+        visit = it-&gt;visitUnary(PreVisit, this);
</ins><span class="cx"> 
</span><del>-        if (visit) {
-                it-&gt;incrementDepth();
-                operand-&gt;traverse(it);
-                it-&gt;decrementDepth();
-        }
-        
-        if (visit &amp;&amp; it-&gt;postVisit)
-                it-&gt;visitUnary(PostVisit, this);
</del><ins>+    if (visit) {
+        it-&gt;incrementDepth(this);
+        operand-&gt;traverse(it);
+        it-&gt;decrementDepth();
+    }
+    
+    if (visit &amp;&amp; it-&gt;postVisit)
+        it-&gt;visitUnary(PostVisit, this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> //
</span><span class="cx"> // Traverse an aggregate node.  Same comments in binary node apply here.
</span><span class="cx"> //
</span><del>-void TIntermAggregate::traverse(TIntermTraverser* it)
</del><ins>+void TIntermAggregate::traverse(TIntermTraverser *it)
</ins><span class="cx"> {
</span><del>-        bool visit = true;
-        
-        if(it-&gt;preVisit)
-        {
-                visit = it-&gt;visitAggregate(PreVisit, this);
-        }
-        
-        if(visit)
-        {
-                it-&gt;incrementDepth();
</del><ins>+    bool visit = true;
+    
+    if (it-&gt;preVisit)
+        visit = it-&gt;visitAggregate(PreVisit, this);
+    
+    if (visit)
+    {
+        it-&gt;incrementDepth(this);
</ins><span class="cx"> 
</span><del>-                if(it-&gt;rightToLeft)
-                {
-                        for(TIntermSequence::reverse_iterator sit = sequence.rbegin(); sit != sequence.rend(); sit++)
-                        {
-                                (*sit)-&gt;traverse(it);
</del><ins>+        if (it-&gt;rightToLeft)
+        {
+            for (TIntermSequence::reverse_iterator sit = sequence.rbegin(); sit != sequence.rend(); sit++)
+            {
+                (*sit)-&gt;traverse(it);
</ins><span class="cx"> 
</span><del>-                                if(visit &amp;&amp; it-&gt;inVisit)
-                                {
-                                        if(*sit != sequence.front())
-                                        {
-                                                visit = it-&gt;visitAggregate(InVisit, this);
-                                        }
-                                }
-                        }
-                }
-                else
-                {
-                        for(TIntermSequence::iterator sit = sequence.begin(); sit != sequence.end(); sit++)
-                        {
-                                (*sit)-&gt;traverse(it);
</del><ins>+                if (visit &amp;&amp; it-&gt;inVisit)
+                {
+                    if (*sit != sequence.front())
+                        visit = it-&gt;visitAggregate(InVisit, this);
+                }
+            }
+        }
+        else
+        {
+            for (TIntermSequence::iterator sit = sequence.begin(); sit != sequence.end(); sit++)
+            {
+                (*sit)-&gt;traverse(it);
</ins><span class="cx"> 
</span><del>-                                if(visit &amp;&amp; it-&gt;inVisit)
-                                {
-                                        if(*sit != sequence.back())
-                                        {
-                                                visit = it-&gt;visitAggregate(InVisit, this);
-                                        }
-                                }
-                        }
-                }
-                
-                it-&gt;decrementDepth();
-        }
</del><ins>+                if (visit &amp;&amp; it-&gt;inVisit)
+                {
+                    if (*sit != sequence.back())
+                        visit = it-&gt;visitAggregate(InVisit, this);
+                }
+            }
+        }
+        
+        it-&gt;decrementDepth();
+    }
</ins><span class="cx"> 
</span><del>-        if(visit &amp;&amp; it-&gt;postVisit)
-        {
-                it-&gt;visitAggregate(PostVisit, this);
-        }
</del><ins>+    if (visit &amp;&amp; it-&gt;postVisit)
+        it-&gt;visitAggregate(PostVisit, this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> //
</span><span class="cx"> // Traverse a selection node.  Same comments in binary node apply here.
</span><span class="cx"> //
</span><del>-void TIntermSelection::traverse(TIntermTraverser* it)
</del><ins>+void TIntermSelection::traverse(TIntermTraverser *it)
</ins><span class="cx"> {
</span><del>-        bool visit = true;
</del><ins>+    bool visit = true;
</ins><span class="cx"> 
</span><del>-        if (it-&gt;preVisit)
-                visit = it-&gt;visitSelection(PreVisit, this);
-        
-        if (visit) {
-                it-&gt;incrementDepth();
-                if (it-&gt;rightToLeft) {
-                        if (falseBlock)
-                                falseBlock-&gt;traverse(it);
-                        if (trueBlock)
-                                trueBlock-&gt;traverse(it);
-                        condition-&gt;traverse(it);
-                } else {
-                        condition-&gt;traverse(it);
-                        if (trueBlock)
-                                trueBlock-&gt;traverse(it);
-                        if (falseBlock)
-                                falseBlock-&gt;traverse(it);
-                }
-                it-&gt;decrementDepth();
-        }
</del><ins>+    if (it-&gt;preVisit)
+        visit = it-&gt;visitSelection(PreVisit, this);
+    
+    if (visit) {
+        it-&gt;incrementDepth(this);
+        if (it-&gt;rightToLeft) {
+            if (falseBlock)
+                falseBlock-&gt;traverse(it);
+            if (trueBlock)
+                trueBlock-&gt;traverse(it);
+            condition-&gt;traverse(it);
+        } else {
+            condition-&gt;traverse(it);
+            if (trueBlock)
+                trueBlock-&gt;traverse(it);
+            if (falseBlock)
+                falseBlock-&gt;traverse(it);
+        }
+        it-&gt;decrementDepth();
+    }
</ins><span class="cx"> 
</span><del>-        if (visit &amp;&amp; it-&gt;postVisit)
-                it-&gt;visitSelection(PostVisit, this);
</del><ins>+    if (visit &amp;&amp; it-&gt;postVisit)
+        it-&gt;visitSelection(PostVisit, this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> //
</span><span class="cx"> // Traverse a loop node.  Same comments in binary node apply here.
</span><span class="cx"> //
</span><del>-void TIntermLoop::traverse(TIntermTraverser* it)
</del><ins>+void TIntermLoop::traverse(TIntermTraverser *it)
</ins><span class="cx"> {
</span><del>-        bool visit = true;
</del><ins>+    bool visit = true;
</ins><span class="cx"> 
</span><del>-        if(it-&gt;preVisit)
-        {
-                visit = it-&gt;visitLoop(PreVisit, this);
-        }
-        
-        if(visit)
-        {
-                it-&gt;incrementDepth();
</del><ins>+    if (it-&gt;preVisit)
+        visit = it-&gt;visitLoop(PreVisit, this);
+    
+    if (visit)
+    {
+        it-&gt;incrementDepth(this);
</ins><span class="cx"> 
</span><del>-                if(it-&gt;rightToLeft)
-                {
-                        if(expr)
-                        {
-                                expr-&gt;traverse(it);
-                        }
</del><ins>+        if (it-&gt;rightToLeft)
+        {
+            if (expr)
+                expr-&gt;traverse(it);
</ins><span class="cx"> 
</span><del>-                        if(body)
-                        {
-                                body-&gt;traverse(it);
-                        }
</del><ins>+            if (body)
+                body-&gt;traverse(it);
</ins><span class="cx"> 
</span><del>-                        if(cond)
-                        {
-                                cond-&gt;traverse(it);
-                        }
-                }
-                else
-                {
-                        if(cond)
-                        {
-                                cond-&gt;traverse(it);
-                        }
</del><ins>+            if (cond)
+                cond-&gt;traverse(it);
</ins><span class="cx"> 
</span><del>-                        if(body)
-                        {
-                                body-&gt;traverse(it);
-                        }
</del><ins>+            if (init)
+                init-&gt;traverse(it);
+        }
+        else
+        {
+            if (init)
+                init-&gt;traverse(it);
</ins><span class="cx"> 
</span><del>-                        if(expr)
-                        {
-                                expr-&gt;traverse(it);
-                        }
-                }
</del><ins>+            if (cond)
+                cond-&gt;traverse(it);
</ins><span class="cx"> 
</span><del>-                it-&gt;decrementDepth();
-        }
</del><ins>+            if (body)
+                body-&gt;traverse(it);
</ins><span class="cx"> 
</span><del>-        if(visit &amp;&amp; it-&gt;postVisit)
-        {
-                it-&gt;visitLoop(PostVisit, this);
-        }
</del><ins>+            if (expr)
+                expr-&gt;traverse(it);
+        }
+
+        it-&gt;decrementDepth();
+    }
+
+    if (visit &amp;&amp; it-&gt;postVisit)
+        it-&gt;visitLoop(PostVisit, this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> //
</span><span class="cx"> // Traverse a branch node.  Same comments in binary node apply here.
</span><span class="cx"> //
</span><del>-void TIntermBranch::traverse(TIntermTraverser* it)
</del><ins>+void TIntermBranch::traverse(TIntermTraverser *it)
</ins><span class="cx"> {
</span><del>-        bool visit = true;
</del><ins>+    bool visit = true;
</ins><span class="cx"> 
</span><del>-        if (it-&gt;preVisit)
-                visit = it-&gt;visitBranch(PreVisit, this);
-        
-        if (visit &amp;&amp; expression) {
-                it-&gt;incrementDepth();
-                expression-&gt;traverse(it);
-                it-&gt;decrementDepth();
-        }
</del><ins>+    if (it-&gt;preVisit)
+        visit = it-&gt;visitBranch(PreVisit, this);
+    
+    if (visit &amp;&amp; expression) {
+        it-&gt;incrementDepth(this);
+        expression-&gt;traverse(it);
+        it-&gt;decrementDepth();
+    }
</ins><span class="cx"> 
</span><del>-        if (visit &amp;&amp; it-&gt;postVisit)
-                it-&gt;visitBranch(PostVisit, this);
</del><ins>+    if (visit &amp;&amp; it-&gt;postVisit)
+        it-&gt;visitBranch(PostVisit, this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerIntermediatecpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/Intermediate.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/Intermediate.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/Intermediate.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -19,11 +19,13 @@
</span><span class="cx"> 
</span><span class="cx"> bool CompareStructure(const TType&amp; leftNodeType, ConstantUnion* rightUnionArray, ConstantUnion* leftUnionArray);
</span><span class="cx"> 
</span><del>-static TPrecision GetHigherPrecision( TPrecision left, TPrecision right ){
</del><ins>+static TPrecision GetHigherPrecision(TPrecision left, TPrecision right)
+{
</ins><span class="cx">     return left &gt; right ? left : right;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-const char* getOperatorString(TOperator op) {
</del><ins>+const char* getOperatorString(TOperator op)
+{
</ins><span class="cx">     switch (op) {
</span><span class="cx">       case EOpInitialize: return &quot;=&quot;;
</span><span class="cx">       case EOpAssign: return &quot;=&quot;;
</span><span class="lines">@@ -742,12 +744,67 @@
</span><span class="cx"> //
</span><span class="cx"> ////////////////////////////////////////////////////////////////
</span><span class="cx"> 
</span><ins>+#define REPLACE_IF_IS(node, type, original, replacement) \
+    if (node == original) { \
+        node = static_cast&lt;type *&gt;(replacement); \
+        return true; \
+    }
+
+bool TIntermLoop::replaceChildNode(
+    TIntermNode *original, TIntermNode *replacement)
+{
+    REPLACE_IF_IS(init, TIntermNode, original, replacement);
+    REPLACE_IF_IS(cond, TIntermTyped, original, replacement);
+    REPLACE_IF_IS(expr, TIntermTyped, original, replacement);
+    REPLACE_IF_IS(body, TIntermNode, original, replacement);
+    return false;
+}
+
+bool TIntermBranch::replaceChildNode(
+    TIntermNode *original, TIntermNode *replacement)
+{
+    REPLACE_IF_IS(expression, TIntermTyped, original, replacement);
+    return false;
+}
+
+bool TIntermBinary::replaceChildNode(
+    TIntermNode *original, TIntermNode *replacement)
+{
+    REPLACE_IF_IS(left, TIntermTyped, original, replacement);
+    REPLACE_IF_IS(right, TIntermTyped, original, replacement);
+    return false;
+}
+
+bool TIntermUnary::replaceChildNode(
+    TIntermNode *original, TIntermNode *replacement)
+{
+    REPLACE_IF_IS(operand, TIntermTyped, original, replacement);
+    return false;
+}
+
+bool TIntermAggregate::replaceChildNode(
+    TIntermNode *original, TIntermNode *replacement)
+{
+    for (size_t ii = 0; ii &lt; sequence.size(); ++ii)
+    {
+        REPLACE_IF_IS(sequence[ii], TIntermNode, original, replacement);
+    }
+    return false;
+}
+
+bool TIntermSelection::replaceChildNode(
+    TIntermNode *original, TIntermNode *replacement)
+{
+    REPLACE_IF_IS(condition, TIntermTyped, original, replacement);
+    REPLACE_IF_IS(trueBlock, TIntermNode, original, replacement);
+    REPLACE_IF_IS(falseBlock, TIntermNode, original, replacement);
+    return false;
+}
+
</ins><span class="cx"> //
</span><span class="cx"> // Say whether or not an operation node changes the value of a variable.
</span><span class="cx"> //
</span><del>-// Returns true if state is modified.
-//
-bool TIntermOperator::modifiesState() const
</del><ins>+bool TIntermOperator::isAssignment() const
</ins><span class="cx"> {
</span><span class="cx">     switch (op) {
</span><span class="cx">         case EOpPostIncrement:
</span><span class="lines">@@ -796,6 +853,7 @@
</span><span class="cx">             return false;
</span><span class="cx">     }
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> //
</span><span class="cx"> // Make sure the type of a unary operator is appropriate for its
</span><span class="cx"> // combination of operation and operand type.
</span><span class="lines">@@ -1366,18 +1424,18 @@
</span><span class="cx">     ConstantUnion *leftUnionArray = new ConstantUnion[size];
</span><span class="cx"> 
</span><span class="cx">     for (size_t i = 0; i &lt; size; i++) {
</span><del>-
</del><ins>+        int index = static_cast&lt;int&gt;(i);
</ins><span class="cx">         switch (promoteTo) {
</span><span class="cx">             case EbtFloat:
</span><span class="cx">                 switch (node-&gt;getType().getBasicType()) {
</span><span class="cx">                     case EbtInt:
</span><del>-                        leftUnionArray[i].setFConst(static_cast&lt;float&gt;(node-&gt;getIConst(i)));
</del><ins>+                        leftUnionArray[i].setFConst(static_cast&lt;float&gt;(node-&gt;getIConst(index)));
</ins><span class="cx">                         break;
</span><span class="cx">                     case EbtBool:
</span><del>-                        leftUnionArray[i].setFConst(static_cast&lt;float&gt;(node-&gt;getBConst(i)));
</del><ins>+                        leftUnionArray[i].setFConst(static_cast&lt;float&gt;(node-&gt;getBConst(index)));
</ins><span class="cx">                         break;
</span><span class="cx">                     case EbtFloat:
</span><del>-                        leftUnionArray[i].setFConst(static_cast&lt;float&gt;(node-&gt;getFConst(i)));
</del><ins>+                        leftUnionArray[i].setFConst(static_cast&lt;float&gt;(node-&gt;getFConst(index)));
</ins><span class="cx">                         break;
</span><span class="cx">                     default:
</span><span class="cx">                         infoSink.info.message(EPrefixInternalError, node-&gt;getLine(), &quot;Cannot promote&quot;);
</span><span class="lines">@@ -1387,13 +1445,13 @@
</span><span class="cx">             case EbtInt:
</span><span class="cx">                 switch (node-&gt;getType().getBasicType()) {
</span><span class="cx">                     case EbtInt:
</span><del>-                        leftUnionArray[i].setIConst(static_cast&lt;int&gt;(node-&gt;getIConst(i)));
</del><ins>+                        leftUnionArray[i].setIConst(static_cast&lt;int&gt;(node-&gt;getIConst(index)));
</ins><span class="cx">                         break;
</span><span class="cx">                     case EbtBool:
</span><del>-                        leftUnionArray[i].setIConst(static_cast&lt;int&gt;(node-&gt;getBConst(i)));
</del><ins>+                        leftUnionArray[i].setIConst(static_cast&lt;int&gt;(node-&gt;getBConst(index)));
</ins><span class="cx">                         break;
</span><span class="cx">                     case EbtFloat:
</span><del>-                        leftUnionArray[i].setIConst(static_cast&lt;int&gt;(node-&gt;getFConst(i)));
</del><ins>+                        leftUnionArray[i].setIConst(static_cast&lt;int&gt;(node-&gt;getFConst(index)));
</ins><span class="cx">                         break;
</span><span class="cx">                     default:
</span><span class="cx">                         infoSink.info.message(EPrefixInternalError, node-&gt;getLine(), &quot;Cannot promote&quot;);
</span><span class="lines">@@ -1403,13 +1461,13 @@
</span><span class="cx">             case EbtBool:
</span><span class="cx">                 switch (node-&gt;getType().getBasicType()) {
</span><span class="cx">                     case EbtInt:
</span><del>-                        leftUnionArray[i].setBConst(node-&gt;getIConst(i) != 0);
</del><ins>+                        leftUnionArray[i].setBConst(node-&gt;getIConst(index) != 0);
</ins><span class="cx">                         break;
</span><span class="cx">                     case EbtBool:
</span><del>-                        leftUnionArray[i].setBConst(node-&gt;getBConst(i));
</del><ins>+                        leftUnionArray[i].setBConst(node-&gt;getBConst(index));
</ins><span class="cx">                         break;
</span><span class="cx">                     case EbtFloat:
</span><del>-                        leftUnionArray[i].setBConst(node-&gt;getFConst(i) != 0.0f);
</del><ins>+                        leftUnionArray[i].setBConst(node-&gt;getFConst(index) != 0.0f);
</ins><span class="cx">                         break;
</span><span class="cx">                     default:
</span><span class="cx">                         infoSink.info.message(EPrefixInternalError, node-&gt;getLine(), &quot;Cannot promote&quot;);
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerMapLongVariableNamescpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -102,13 +102,6 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool MapLongVariableNames::visitLoop(Visit, TIntermLoop* node)
-{
-    if (node-&gt;getInit())
-        node-&gt;getInit()-&gt;traverse(this);
-    return true;
-}
-
</del><span class="cx"> TString MapLongVariableNames::mapGlobalLongName(const TString&amp; name)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(mGlobalMap);
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerMapLongVariableNamesh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -48,7 +48,6 @@
</span><span class="cx">     MapLongVariableNames(LongNameMap* globalMap);
</span><span class="cx"> 
</span><span class="cx">     virtual void visitSymbol(TIntermSymbol*);
</span><del>-    virtual bool visitLoop(Visit, TIntermLoop*);
</del><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     TString mapGlobalLongName(const TString&amp; name);
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerNodeSearchh"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/NodeSearch.h (0 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/NodeSearch.h                                (rev 0)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/NodeSearch.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -0,0 +1,78 @@
</span><ins>+//
+// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// NodeSearch.h: Utilities for searching translator node graphs
+//
+
+#ifndef TRANSLATOR_NODESEARCH_H_
+#define TRANSLATOR_NODESEARCH_H_
+
+namespace sh
+{
+
+template &lt;class Parent&gt;
+class NodeSearchTraverser : public TIntermTraverser
+{
+  public:
+    NodeSearchTraverser()
+        : mFound(false)
+    {}
+
+    bool found() const { return mFound; }
+
+    static bool search(TIntermNode *node)
+    {
+        Parent searchTraverser;
+        node-&gt;traverse(&amp;searchTraverser);
+        return searchTraverser.found();
+    }
+
+  protected:
+    bool mFound;
+};
+
+class FindDiscard : public NodeSearchTraverser&lt;FindDiscard&gt;
+{
+  public:
+    virtual bool visitBranch(Visit visit, TIntermBranch *node)
+    {
+        switch (node-&gt;getFlowOp())
+        {
+          case EOpKill:
+            mFound = true;
+            break;
+
+          default: break;
+        }
+
+        return !mFound;
+    }
+};
+
+class FindSideEffectRewriting : public NodeSearchTraverser&lt;FindSideEffectRewriting&gt;
+{
+  public:
+    virtual bool visitBinary(Visit visit, TIntermBinary *node)
+    {
+        switch (node-&gt;getOp())
+        {
+          case EOpLogicalOr:
+          case EOpLogicalAnd:
+            if (node-&gt;getRight()-&gt;hasSideEffects())
+            {
+                mFound = true;
+            }
+            break;
+
+          default: break;
+        }
+
+        return !mFound;
+    }
+};
+
+}
+
+#endif // TRANSLATOR_NODESEARCH_H_
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerOutputGLSLBasecpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -435,7 +435,7 @@
</span><span class="cx">         node-&gt;getCondition()-&gt;traverse(this);
</span><span class="cx">         out &lt;&lt; &quot;)\n&quot;;
</span><span class="cx"> 
</span><del>-        incrementDepth();
</del><ins>+        incrementDepth(node);
</ins><span class="cx">         visitCodeBlock(node-&gt;getTrueBlock());
</span><span class="cx"> 
</span><span class="cx">         if (node-&gt;getFalseBlock())
</span><span class="lines">@@ -460,7 +460,7 @@
</span><span class="cx">             // Scope the sequences except when at the global scope.
</span><span class="cx">             if (depth &gt; 0) out &lt;&lt; &quot;{\n&quot;;
</span><span class="cx"> 
</span><del>-            incrementDepth();
</del><ins>+            incrementDepth(node);
</ins><span class="cx">             const TIntermSequence&amp; sequence = node-&gt;getSequence();
</span><span class="cx">             for (TIntermSequence::const_iterator iter = sequence.begin();
</span><span class="cx">                  iter != sequence.end(); ++iter)
</span><span class="lines">@@ -498,7 +498,7 @@
</span><span class="cx">             writeVariableType(node-&gt;getType());
</span><span class="cx">             out &lt;&lt; &quot; &quot; &lt;&lt; hashFunctionName(node-&gt;getName());
</span><span class="cx"> 
</span><del>-            incrementDepth();
</del><ins>+            incrementDepth(node);
</ins><span class="cx">             // Function definition node contains one or two children nodes
</span><span class="cx">             // representing function parameters and function body. The latter
</span><span class="cx">             // is not present in case of empty function bodies.
</span><span class="lines">@@ -638,7 +638,7 @@
</span><span class="cx"> {
</span><span class="cx">     TInfoSinkBase&amp; out = objSink();
</span><span class="cx"> 
</span><del>-    incrementDepth();
</del><ins>+    incrementDepth(node);
</ins><span class="cx">     // Loop header.
</span><span class="cx">     TLoopType loopType = node-&gt;getType();
</span><span class="cx">     if (loopType == ELoopFor)  // for loop
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerOutputGLSLBaseh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -11,7 +11,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;compiler/ForLoopUnroll.h&quot;
</span><span class="cx"> #include &quot;compiler/intermediate.h&quot;
</span><del>-#include &quot;compiler/ParseHelper.h&quot;
</del><ins>+#include &quot;compiler/ParseContext.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> class TOutputGLSLBase : public TIntermTraverser
</span><span class="cx"> {
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerOutputHLSLcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/OutputHLSL.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/OutputHLSL.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/OutputHLSL.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -12,6 +12,7 @@
</span><span class="cx"> #include &quot;compiler/InfoSink.h&quot;
</span><span class="cx"> #include &quot;compiler/SearchSymbol.h&quot;
</span><span class="cx"> #include &quot;compiler/UnfoldShortCircuit.h&quot;
</span><ins>+#include &quot;compiler/NodeSearch.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> #include &lt;algorithm&gt;
</span><span class="cx"> #include &lt;cfloat&gt;
</span><span class="lines">@@ -68,22 +69,11 @@
</span><span class="cx">     mUsesFaceforward2 = false;
</span><span class="cx">     mUsesFaceforward3 = false;
</span><span class="cx">     mUsesFaceforward4 = false;
</span><del>-    mUsesEqualMat2 = false;
-    mUsesEqualMat3 = false;
-    mUsesEqualMat4 = false;
-    mUsesEqualVec2 = false;
-    mUsesEqualVec3 = false;
-    mUsesEqualVec4 = false;
-    mUsesEqualIVec2 = false;
-    mUsesEqualIVec3 = false;
-    mUsesEqualIVec4 = false;
-    mUsesEqualBVec2 = false;
-    mUsesEqualBVec3 = false;
-    mUsesEqualBVec4 = false;
</del><span class="cx">     mUsesAtan2_1 = false;
</span><span class="cx">     mUsesAtan2_2 = false;
</span><span class="cx">     mUsesAtan2_3 = false;
</span><span class="cx">     mUsesAtan2_4 = false;
</span><ins>+    mUsesDiscardRewriting = false;
</ins><span class="cx"> 
</span><span class="cx">     mNumRenderTargets = resources.EXT_draw_buffers ? resources.MaxDrawBuffers : 1;
</span><span class="cx"> 
</span><span class="lines">@@ -208,6 +198,11 @@
</span><span class="cx">         attributes += &quot;static &quot; + typeString(type) + &quot; &quot; + decorate(name) + arrayString(type) + &quot; = &quot; + initializer(type) + &quot;;\n&quot;;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    if (mUsesDiscardRewriting)
+    {
+        out &lt;&lt; &quot;#define ANGLE_USES_DISCARD_REWRITING&quot; &lt;&lt; &quot;\n&quot;;
+    }
+
</ins><span class="cx">     if (shaderType == SH_FRAGMENT_SHADER)
</span><span class="cx">     {
</span><span class="cx">         TExtensionBehavior::const_iterator iter = mContext.extensionBehavior().find(&quot;GL_EXT_draw_buffers&quot;);
</span><span class="lines">@@ -996,108 +991,6 @@
</span><span class="cx">                &quot;\n&quot;;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (mUsesEqualMat2)
-    {
-        out &lt;&lt; &quot;bool equal(float2x2 m, float2x2 n)\n&quot;
-               &quot;{\n&quot;
-               &quot;    return m[0][0] == n[0][0] &amp;&amp; m[0][1] == n[0][1] &amp;&amp;\n&quot;
-               &quot;           m[1][0] == n[1][0] &amp;&amp; m[1][1] == n[1][1];\n&quot;
-               &quot;}\n&quot;;
-    }
-
-    if (mUsesEqualMat3)
-    {
-        out &lt;&lt; &quot;bool equal(float3x3 m, float3x3 n)\n&quot;
-               &quot;{\n&quot;
-               &quot;    return m[0][0] == n[0][0] &amp;&amp; m[0][1] == n[0][1] &amp;&amp; m[0][2] == n[0][2] &amp;&amp;\n&quot;
-               &quot;           m[1][0] == n[1][0] &amp;&amp; m[1][1] == n[1][1] &amp;&amp; m[1][2] == n[1][2] &amp;&amp;\n&quot;
-               &quot;           m[2][0] == n[2][0] &amp;&amp; m[2][1] == n[2][1] &amp;&amp; m[2][2] == n[2][2];\n&quot;
-               &quot;}\n&quot;;
-    }
-
-    if (mUsesEqualMat4)
-    {
-        out &lt;&lt; &quot;bool equal(float4x4 m, float4x4 n)\n&quot;
-               &quot;{\n&quot;
-               &quot;    return m[0][0] == n[0][0] &amp;&amp; m[0][1] == n[0][1] &amp;&amp; m[0][2] == n[0][2] &amp;&amp; m[0][3] == n[0][3] &amp;&amp;\n&quot;
-               &quot;           m[1][0] == n[1][0] &amp;&amp; m[1][1] == n[1][1] &amp;&amp; m[1][2] == n[1][2] &amp;&amp; m[1][3] == n[1][3] &amp;&amp;\n&quot;
-               &quot;           m[2][0] == n[2][0] &amp;&amp; m[2][1] == n[2][1] &amp;&amp; m[2][2] == n[2][2] &amp;&amp; m[2][3] == n[2][3] &amp;&amp;\n&quot;
-               &quot;           m[3][0] == n[3][0] &amp;&amp; m[3][1] == n[3][1] &amp;&amp; m[3][2] == n[3][2] &amp;&amp; m[3][3] == n[3][3];\n&quot;
-               &quot;}\n&quot;;
-    }
-
-    if (mUsesEqualVec2)
-    {
-        out &lt;&lt; &quot;bool equal(float2 v, float2 u)\n&quot;
-               &quot;{\n&quot;
-               &quot;    return v.x == u.x &amp;&amp; v.y == u.y;\n&quot;
-               &quot;}\n&quot;;
-    }
-
-    if (mUsesEqualVec3)
-    {
-        out &lt;&lt; &quot;bool equal(float3 v, float3 u)\n&quot;
-               &quot;{\n&quot;
-               &quot;    return v.x == u.x &amp;&amp; v.y == u.y &amp;&amp; v.z == u.z;\n&quot;
-               &quot;}\n&quot;;
-    }
-
-    if (mUsesEqualVec4)
-    {
-        out &lt;&lt; &quot;bool equal(float4 v, float4 u)\n&quot;
-               &quot;{\n&quot;
-               &quot;    return v.x == u.x &amp;&amp; v.y == u.y &amp;&amp; v.z == u.z &amp;&amp; v.w == u.w;\n&quot;
-               &quot;}\n&quot;;
-    }
-
-    if (mUsesEqualIVec2)
-    {
-        out &lt;&lt; &quot;bool equal(int2 v, int2 u)\n&quot;
-               &quot;{\n&quot;
-               &quot;    return v.x == u.x &amp;&amp; v.y == u.y;\n&quot;
-               &quot;}\n&quot;;
-    }
-
-    if (mUsesEqualIVec3)
-    {
-        out &lt;&lt; &quot;bool equal(int3 v, int3 u)\n&quot;
-               &quot;{\n&quot;
-               &quot;    return v.x == u.x &amp;&amp; v.y == u.y &amp;&amp; v.z == u.z;\n&quot;
-               &quot;}\n&quot;;
-    }
-
-    if (mUsesEqualIVec4)
-    {
-        out &lt;&lt; &quot;bool equal(int4 v, int4 u)\n&quot;
-               &quot;{\n&quot;
-               &quot;    return v.x == u.x &amp;&amp; v.y == u.y &amp;&amp; v.z == u.z &amp;&amp; v.w == u.w;\n&quot;
-               &quot;}\n&quot;;
-    }
-
-    if (mUsesEqualBVec2)
-    {
-        out &lt;&lt; &quot;bool equal(bool2 v, bool2 u)\n&quot;
-               &quot;{\n&quot;
-               &quot;    return v.x == u.x &amp;&amp; v.y == u.y;\n&quot;
-               &quot;}\n&quot;;
-    }
-
-    if (mUsesEqualBVec3)
-    {
-        out &lt;&lt; &quot;bool equal(bool3 v, bool3 u)\n&quot;
-               &quot;{\n&quot;
-               &quot;    return v.x == u.x &amp;&amp; v.y == u.y &amp;&amp; v.z == u.z;\n&quot;
-               &quot;}\n&quot;;
-    }
-
-    if (mUsesEqualBVec4)
-    {
-        out &lt;&lt; &quot;bool equal(bool4 v, bool4 u)\n&quot;
-               &quot;{\n&quot;
-               &quot;    return v.x == u.x &amp;&amp; v.y == u.y &amp;&amp; v.z == u.z &amp;&amp; v.w == u.w;\n&quot;
-               &quot;}\n&quot;;
-    }
-
</del><span class="cx">     if (mUsesAtan2_1)
</span><span class="cx">     {
</span><span class="cx">         out &lt;&lt; &quot;float atanyx(float y, float x)\n&quot;
</span><span class="lines">@@ -1391,59 +1284,15 @@
</span><span class="cx">         }
</span><span class="cx">         else
</span><span class="cx">         {
</span><del>-            if (node-&gt;getLeft()-&gt;isMatrix())
-            {
-                switch (node-&gt;getLeft()-&gt;getNominalSize())
-                {
-                  case 2: mUsesEqualMat2 = true; break;
-                  case 3: mUsesEqualMat3 = true; break;
-                  case 4: mUsesEqualMat4 = true; break;
-                  default: UNREACHABLE();
-                }
-            }
-            else if (node-&gt;getLeft()-&gt;isVector())
-            {
-                switch (node-&gt;getLeft()-&gt;getBasicType())
-                {
-                  case EbtFloat:
-                    switch (node-&gt;getLeft()-&gt;getNominalSize())
-                    {
-                      case 2: mUsesEqualVec2 = true; break;
-                      case 3: mUsesEqualVec3 = true; break;
-                      case 4: mUsesEqualVec4 = true; break;
-                      default: UNREACHABLE();
-                    }
-                    break;
-                  case EbtInt:
-                    switch (node-&gt;getLeft()-&gt;getNominalSize())
-                    {
-                      case 2: mUsesEqualIVec2 = true; break;
-                      case 3: mUsesEqualIVec3 = true; break;
-                      case 4: mUsesEqualIVec4 = true; break;
-                      default: UNREACHABLE();
-                    }
-                    break;
-                  case EbtBool:
-                    switch (node-&gt;getLeft()-&gt;getNominalSize())
-                    {
-                      case 2: mUsesEqualBVec2 = true; break;
-                      case 3: mUsesEqualBVec3 = true; break;
-                      case 4: mUsesEqualBVec4 = true; break;
-                      default: UNREACHABLE();
-                    }
-                    break;
-                  default: UNREACHABLE();
-                }
-            }
-            else UNREACHABLE();
</del><ins>+            ASSERT(node-&gt;getLeft()-&gt;isMatrix() || node-&gt;getLeft()-&gt;isVector());
</ins><span class="cx"> 
</span><span class="cx">             if (node-&gt;getOp() == EOpEqual)
</span><span class="cx">             {
</span><del>-                outputTriplet(visit, &quot;equal(&quot;, &quot;, &quot;, &quot;)&quot;);
</del><ins>+                outputTriplet(visit, &quot;all(&quot;, &quot; == &quot;, &quot;)&quot;);
</ins><span class="cx">             }
</span><span class="cx">             else
</span><span class="cx">             {
</span><del>-                outputTriplet(visit, &quot;!equal(&quot;, &quot;, &quot;, &quot;)&quot;);
</del><ins>+                outputTriplet(visit, &quot;!all(&quot;, &quot; == &quot;, &quot;)&quot;);
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">         break;
</span><span class="lines">@@ -1457,15 +1306,31 @@
</span><span class="cx">       case EOpMatrixTimesVector: outputTriplet(visit, &quot;mul(transpose(&quot;, &quot;), &quot;, &quot;)&quot;); break;
</span><span class="cx">       case EOpMatrixTimesMatrix: outputTriplet(visit, &quot;transpose(mul(transpose(&quot;, &quot;), transpose(&quot;, &quot;)))&quot;); break;
</span><span class="cx">       case EOpLogicalOr:
</span><del>-        out &lt;&lt; &quot;s&quot; &lt;&lt; mUnfoldShortCircuit-&gt;getNextTemporaryIndex();
-        return false;
</del><ins>+        if (node-&gt;getRight()-&gt;hasSideEffects())
+        {
+            out &lt;&lt; &quot;s&quot; &lt;&lt; mUnfoldShortCircuit-&gt;getNextTemporaryIndex();
+            return false;
+        }
+        else
+        {
+           outputTriplet(visit, &quot;(&quot;, &quot; || &quot;, &quot;)&quot;);
+           return true;
+        }
</ins><span class="cx">       case EOpLogicalXor:
</span><span class="cx">         mUsesXor = true;
</span><span class="cx">         outputTriplet(visit, &quot;xor(&quot;, &quot;, &quot;, &quot;)&quot;);
</span><span class="cx">         break;
</span><span class="cx">       case EOpLogicalAnd:
</span><del>-        out &lt;&lt; &quot;s&quot; &lt;&lt; mUnfoldShortCircuit-&gt;getNextTemporaryIndex();
-        return false;
</del><ins>+        if (node-&gt;getRight()-&gt;hasSideEffects())
+        {
+            out &lt;&lt; &quot;s&quot; &lt;&lt; mUnfoldShortCircuit-&gt;getNextTemporaryIndex();
+            return false;
+        }
+        else
+        {
+           outputTriplet(visit, &quot;(&quot;, &quot; &amp;&amp; &quot;, &quot;)&quot;);
+           return true;
+        }
</ins><span class="cx">       default: UNREACHABLE();
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -2102,7 +1967,7 @@
</span><span class="cx">     {
</span><span class="cx">         mUnfoldShortCircuit-&gt;traverse(node-&gt;getCondition());
</span><span class="cx"> 
</span><del>-        out &lt;&lt; &quot;if(&quot;;
</del><ins>+        out &lt;&lt; &quot;if (&quot;;
</ins><span class="cx"> 
</span><span class="cx">         node-&gt;getCondition()-&gt;traverse(this);
</span><span class="cx"> 
</span><span class="lines">@@ -2111,9 +1976,14 @@
</span><span class="cx">         outputLineDirective(node-&gt;getLine().first_line);
</span><span class="cx">         out &lt;&lt; &quot;{\n&quot;;
</span><span class="cx"> 
</span><ins>+        bool discard = false;
+
</ins><span class="cx">         if (node-&gt;getTrueBlock())
</span><span class="cx">         {
</span><span class="cx">             traverseStatements(node-&gt;getTrueBlock());
</span><ins>+
+            // Detect true discard
+            discard = (discard || FindDiscard::search(node-&gt;getTrueBlock()));
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         outputLineDirective(node-&gt;getLine().first_line);
</span><span class="lines">@@ -2131,7 +2001,16 @@
</span><span class="cx"> 
</span><span class="cx">             outputLineDirective(node-&gt;getFalseBlock()-&gt;getLine().first_line);
</span><span class="cx">             out &lt;&lt; &quot;;\n}\n&quot;;
</span><ins>+
+            // Detect false discard
+            discard = (discard || FindDiscard::search(node-&gt;getFalseBlock()));
</ins><span class="cx">         }
</span><ins>+
+        // ANGLE issue 486: Detect problematic conditional discard
+        if (discard &amp;&amp; FindSideEffectRewriting::search(node))
+        {
+            mUsesDiscardRewriting = true;
+        }
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return false;
</span><span class="lines">@@ -2228,7 +2107,9 @@
</span><span class="cx"> 
</span><span class="cx">     switch (node-&gt;getFlowOp())
</span><span class="cx">     {
</span><del>-      case EOpKill:     outputTriplet(visit, &quot;discard;\n&quot;, &quot;&quot;, &quot;&quot;);  break;
</del><ins>+      case EOpKill:
+        outputTriplet(visit, &quot;discard;\n&quot;, &quot;&quot;, &quot;&quot;);
+        break;
</ins><span class="cx">       case EOpBreak:
</span><span class="cx">         if (visit == PreVisit)
</span><span class="cx">         {
</span><span class="lines">@@ -2451,7 +2332,7 @@
</span><span class="cx"> 
</span><span class="cx">                 if (!firstLoopFragment)
</span><span class="cx">                 {
</span><del>-                    out &lt;&lt; &quot;if(!Break&quot;;
</del><ins>+                    out &lt;&lt; &quot;if (!Break&quot;;
</ins><span class="cx">                     index-&gt;traverse(this);
</span><span class="cx">                     out &lt;&lt; &quot;) {\n&quot;;
</span><span class="cx">                 }
</span><span class="lines">@@ -2863,7 +2744,7 @@
</span><span class="cx">             const size_t parameterSize = parameter.getObjectSize();
</span><span class="cx">             bool moreParameters = parameterIndex + 1 &lt; ctorParameters.size();
</span><span class="cx"> 
</span><del>-            constructor += &quot;x&quot; + str(parameterIndex);
</del><ins>+            constructor += &quot;x&quot; + str(static_cast&lt;int&gt;(parameterIndex));
</ins><span class="cx"> 
</span><span class="cx">             if (parameter.isScalar())
</span><span class="cx">             {
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerOutputHLSLh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/OutputHLSL.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/OutputHLSL.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/OutputHLSL.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -15,7 +15,7 @@
</span><span class="cx"> #include &lt;GLES2/gl2.h&gt;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;compiler/intermediate.h&quot;
</span><del>-#include &quot;compiler/ParseHelper.h&quot;
</del><ins>+#include &quot;compiler/ParseContext.h&quot;
</ins><span class="cx"> #include &quot;compiler/Uniform.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace sh
</span><span class="lines">@@ -121,22 +121,11 @@
</span><span class="cx">     bool mUsesFaceforward2;
</span><span class="cx">     bool mUsesFaceforward3;
</span><span class="cx">     bool mUsesFaceforward4;
</span><del>-    bool mUsesEqualMat2;
-    bool mUsesEqualMat3;
-    bool mUsesEqualMat4;
-    bool mUsesEqualVec2;
-    bool mUsesEqualVec3;
-    bool mUsesEqualVec4;
-    bool mUsesEqualIVec2;
-    bool mUsesEqualIVec3;
-    bool mUsesEqualIVec4;
-    bool mUsesEqualBVec2;
-    bool mUsesEqualBVec3;
-    bool mUsesEqualBVec4;
</del><span class="cx">     bool mUsesAtan2_1;
</span><span class="cx">     bool mUsesAtan2_2;
</span><span class="cx">     bool mUsesAtan2_3;
</span><span class="cx">     bool mUsesAtan2_4;
</span><ins>+    bool mUsesDiscardRewriting;
</ins><span class="cx"> 
</span><span class="cx">     int mNumRenderTargets;
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerParseContextcppfromrev162314releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerParseHelpercpp"></a>
<div class="copfile"><h4>Copied: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ParseContext.cpp (from rev 162314, releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ParseHelper.cpp) (0 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ParseContext.cpp                                (rev 0)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ParseContext.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -0,0 +1,1602 @@
</span><ins>+//
+// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+#include &quot;compiler/ParseContext.h&quot;
+
+#include &lt;stdarg.h&gt;
+#include &lt;stdio.h&gt;
+
+#include &quot;compiler/glslang.h&quot;
+#include &quot;compiler/preprocessor/SourceLocation.h&quot;
+
+///////////////////////////////////////////////////////////////////////
+//
+// Sub- vector and matrix fields
+//
+////////////////////////////////////////////////////////////////////////
+
+//
+// Look at a '.' field selector string and change it into offsets
+// for a vector.
+//
+bool TParseContext::parseVectorFields(const TString&amp; compString, int vecSize, TVectorFields&amp; fields, const TSourceLoc&amp; line)
+{
+    fields.num = (int) compString.size();
+    if (fields.num &gt; 4) {
+        error(line, &quot;illegal vector field selection&quot;, compString.c_str());
+        return false;
+    }
+
+    enum {
+        exyzw,
+        ergba,
+        estpq
+    } fieldSet[4];
+
+    for (int i = 0; i &lt; fields.num; ++i) {
+        switch (compString[i])  {
+        case 'x': 
+            fields.offsets[i] = 0;
+            fieldSet[i] = exyzw;
+            break;
+        case 'r': 
+            fields.offsets[i] = 0;
+            fieldSet[i] = ergba;
+            break;
+        case 's':
+            fields.offsets[i] = 0;
+            fieldSet[i] = estpq;
+            break;
+        case 'y': 
+            fields.offsets[i] = 1;
+            fieldSet[i] = exyzw;
+            break;
+        case 'g': 
+            fields.offsets[i] = 1;
+            fieldSet[i] = ergba;
+            break;
+        case 't':
+            fields.offsets[i] = 1;
+            fieldSet[i] = estpq;
+            break;
+        case 'z': 
+            fields.offsets[i] = 2;
+            fieldSet[i] = exyzw;
+            break;
+        case 'b': 
+            fields.offsets[i] = 2;
+            fieldSet[i] = ergba;
+            break;
+        case 'p':
+            fields.offsets[i] = 2;
+            fieldSet[i] = estpq;
+            break;
+        
+        case 'w': 
+            fields.offsets[i] = 3;
+            fieldSet[i] = exyzw;
+            break;
+        case 'a': 
+            fields.offsets[i] = 3;
+            fieldSet[i] = ergba;
+            break;
+        case 'q':
+            fields.offsets[i] = 3;
+            fieldSet[i] = estpq;
+            break;
+        default:
+            error(line, &quot;illegal vector field selection&quot;, compString.c_str());
+            return false;
+        }
+    }
+
+    for (int i = 0; i &lt; fields.num; ++i) {
+        if (fields.offsets[i] &gt;= vecSize) {
+            error(line, &quot;vector field selection out of range&quot;,  compString.c_str());
+            return false;
+        }
+
+        if (i &gt; 0) {
+            if (fieldSet[i] != fieldSet[i-1]) {
+                error(line, &quot;illegal - vector component fields not from the same set&quot;, compString.c_str());
+                return false;
+            }
+        }
+    }
+
+    return true;
+}
+
+
+//
+// Look at a '.' field selector string and change it into offsets
+// for a matrix.
+//
+bool TParseContext::parseMatrixFields(const TString&amp; compString, int matSize, TMatrixFields&amp; fields, const TSourceLoc&amp; line)
+{
+    fields.wholeRow = false;
+    fields.wholeCol = false;
+    fields.row = -1;
+    fields.col = -1;
+
+    if (compString.size() != 2) {
+        error(line, &quot;illegal length of matrix field selection&quot;, compString.c_str());
+        return false;
+    }
+
+    if (compString[0] == '_') {
+        if (compString[1] &lt; '0' || compString[1] &gt; '3') {
+            error(line, &quot;illegal matrix field selection&quot;, compString.c_str());
+            return false;
+        }
+        fields.wholeCol = true;
+        fields.col = compString[1] - '0';
+    } else if (compString[1] == '_') {
+        if (compString[0] &lt; '0' || compString[0] &gt; '3') {
+            error(line, &quot;illegal matrix field selection&quot;, compString.c_str());
+            return false;
+        }
+        fields.wholeRow = true;
+        fields.row = compString[0] - '0';
+    } else {
+        if (compString[0] &lt; '0' || compString[0] &gt; '3' ||
+            compString[1] &lt; '0' || compString[1] &gt; '3') {
+            error(line, &quot;illegal matrix field selection&quot;, compString.c_str());
+            return false;
+        }
+        fields.row = compString[0] - '0';
+        fields.col = compString[1] - '0';
+    }
+
+    if (fields.row &gt;= matSize || fields.col &gt;= matSize) {
+        error(line, &quot;matrix field selection out of range&quot;, compString.c_str());
+        return false;
+    }
+
+    return true;
+}
+
+///////////////////////////////////////////////////////////////////////
+//
+// Errors
+//
+////////////////////////////////////////////////////////////////////////
+
+//
+// Track whether errors have occurred.
+//
+void TParseContext::recover()
+{
+}
+
+//
+// Used by flex/bison to output all syntax and parsing errors.
+//
+void TParseContext::error(const TSourceLoc&amp; loc,
+                          const char* reason, const char* token, 
+                          const char* extraInfo)
+{
+    pp::SourceLocation srcLoc;
+    srcLoc.file = loc.first_file;
+    srcLoc.line = loc.first_line;
+    diagnostics.writeInfo(pp::Diagnostics::ERROR,
+                          srcLoc, reason, token, extraInfo);
+
+}
+
+void TParseContext::warning(const TSourceLoc&amp; loc,
+                            const char* reason, const char* token,
+                            const char* extraInfo) {
+    pp::SourceLocation srcLoc;
+    srcLoc.file = loc.first_file;
+    srcLoc.line = loc.first_line;
+    diagnostics.writeInfo(pp::Diagnostics::WARNING,
+                          srcLoc, reason, token, extraInfo);
+}
+
+void TParseContext::trace(const char* str)
+{
+    diagnostics.writeDebug(str);
+}
+
+//
+// Same error message for all places assignments don't work.
+//
+void TParseContext::assignError(const TSourceLoc&amp; line, const char* op, TString left, TString right)
+{
+    std::stringstream extraInfoStream;
+    extraInfoStream &lt;&lt; &quot;cannot convert from '&quot; &lt;&lt; right &lt;&lt; &quot;' to '&quot; &lt;&lt; left &lt;&lt; &quot;'&quot;;
+    std::string extraInfo = extraInfoStream.str();
+    error(line, &quot;&quot;, op, extraInfo.c_str());
+}
+
+//
+// Same error message for all places unary operations don't work.
+//
+void TParseContext::unaryOpError(const TSourceLoc&amp; line, const char* op, TString operand)
+{
+    std::stringstream extraInfoStream;
+    extraInfoStream &lt;&lt; &quot;no operation '&quot; &lt;&lt; op &lt;&lt; &quot;' exists that takes an operand of type &quot; &lt;&lt; operand 
+                    &lt;&lt; &quot; (or there is no acceptable conversion)&quot;;
+    std::string extraInfo = extraInfoStream.str();
+    error(line, &quot; wrong operand type&quot;, op, extraInfo.c_str());
+}
+
+//
+// Same error message for all binary operations don't work.
+//
+void TParseContext::binaryOpError(const TSourceLoc&amp; line, const char* op, TString left, TString right)
+{
+    std::stringstream extraInfoStream;
+    extraInfoStream &lt;&lt; &quot;no operation '&quot; &lt;&lt; op &lt;&lt; &quot;' exists that takes a left-hand operand of type '&quot; &lt;&lt; left 
+                    &lt;&lt; &quot;' and a right operand of type '&quot; &lt;&lt; right &lt;&lt; &quot;' (or there is no acceptable conversion)&quot;;
+    std::string extraInfo = extraInfoStream.str();
+    error(line, &quot; wrong operand types &quot;, op, extraInfo.c_str()); 
+}
+
+bool TParseContext::precisionErrorCheck(const TSourceLoc&amp; line, TPrecision precision, TBasicType type){
+    if (!checksPrecisionErrors)
+        return false;
+    switch( type ){
+    case EbtFloat:
+        if( precision == EbpUndefined ){
+            error( line, &quot;No precision specified for (float)&quot;, &quot;&quot; );
+            return true;
+        }
+        break;
+    case EbtInt:
+        if( precision == EbpUndefined ){
+            error( line, &quot;No precision specified (int)&quot;, &quot;&quot; );
+            return true;
+        }
+        break;
+    default:
+        return false;
+    }
+    return false;
+}
+
+//
+// Both test and if necessary, spit out an error, to see if the node is really
+// an l-value that can be operated on this way.
+//
+// Returns true if the was an error.
+//
+bool TParseContext::lValueErrorCheck(const TSourceLoc&amp; line, const char* op, TIntermTyped* node)
+{
+    TIntermSymbol* symNode = node-&gt;getAsSymbolNode();
+    TIntermBinary* binaryNode = node-&gt;getAsBinaryNode();
+
+    if (binaryNode) {
+        bool errorReturn;
+
+        switch(binaryNode-&gt;getOp()) {
+        case EOpIndexDirect:
+        case EOpIndexIndirect:
+        case EOpIndexDirectStruct:
+            return lValueErrorCheck(line, op, binaryNode-&gt;getLeft());
+        case EOpVectorSwizzle:
+            errorReturn = lValueErrorCheck(line, op, binaryNode-&gt;getLeft());
+            if (!errorReturn) {
+                int offset[4] = {0,0,0,0};
+
+                TIntermTyped* rightNode = binaryNode-&gt;getRight();
+                TIntermAggregate *aggrNode = rightNode-&gt;getAsAggregate();
+                
+                for (TIntermSequence::iterator p = aggrNode-&gt;getSequence().begin(); 
+                                               p != aggrNode-&gt;getSequence().end(); p++) {
+                    int value = (*p)-&gt;getAsTyped()-&gt;getAsConstantUnion()-&gt;getIConst(0);
+                    offset[value]++;     
+                    if (offset[value] &gt; 1) {
+                        error(line, &quot; l-value of swizzle cannot have duplicate components&quot;, op);
+
+                        return true;
+                    }
+                }
+            } 
+
+            return errorReturn;
+        default: 
+            break;
+        }
+        error(line, &quot; l-value required&quot;, op);
+
+        return true;
+    }
+
+
+    const char* symbol = 0;
+    if (symNode != 0)
+        symbol = symNode-&gt;getSymbol().c_str();
+
+    const char* message = 0;
+    switch (node-&gt;getQualifier()) {
+    case EvqConst:          message = &quot;can't modify a const&quot;;        break;
+    case EvqConstReadOnly:  message = &quot;can't modify a const&quot;;        break;
+    case EvqAttribute:      message = &quot;can't modify an attribute&quot;;   break;
+    case EvqUniform:        message = &quot;can't modify a uniform&quot;;      break;
+    case EvqVaryingIn:      message = &quot;can't modify a varying&quot;;      break;
+    case EvqFragCoord:      message = &quot;can't modify gl_FragCoord&quot;;   break;
+    case EvqFrontFacing:    message = &quot;can't modify gl_FrontFacing&quot;; break;
+    case EvqPointCoord:     message = &quot;can't modify gl_PointCoord&quot;;  break;
+    default:
+
+        //
+        // Type that can't be written to?
+        //
+        switch (node-&gt;getBasicType()) {
+        case EbtSampler2D:
+        case EbtSamplerCube:
+            message = &quot;can't modify a sampler&quot;;
+            break;
+        case EbtVoid:
+            message = &quot;can't modify void&quot;;
+            break;
+        default: 
+            break;
+        }
+    }
+
+    if (message == 0 &amp;&amp; binaryNode == 0 &amp;&amp; symNode == 0) {
+        error(line, &quot; l-value required&quot;, op);
+
+        return true;
+    }
+
+
+    //
+    // Everything else is okay, no error.
+    //
+    if (message == 0)
+        return false;
+
+    //
+    // If we get here, we have an error and a message.
+    //
+    if (symNode) {
+        std::stringstream extraInfoStream;
+        extraInfoStream &lt;&lt; &quot;\&quot;&quot; &lt;&lt; symbol &lt;&lt; &quot;\&quot; (&quot; &lt;&lt; message &lt;&lt; &quot;)&quot;;
+        std::string extraInfo = extraInfoStream.str();
+        error(line, &quot; l-value required&quot;, op, extraInfo.c_str());
+    }
+    else {
+        std::stringstream extraInfoStream;
+        extraInfoStream &lt;&lt; &quot;(&quot; &lt;&lt; message &lt;&lt; &quot;)&quot;;
+        std::string extraInfo = extraInfoStream.str();
+        error(line, &quot; l-value required&quot;, op, extraInfo.c_str());
+    }
+
+    return true;
+}
+
+//
+// Both test, and if necessary spit out an error, to see if the node is really
+// a constant.
+//
+// Returns true if the was an error.
+//
+bool TParseContext::constErrorCheck(TIntermTyped* node)
+{
+    if (node-&gt;getQualifier() == EvqConst)
+        return false;
+
+    error(node-&gt;getLine(), &quot;constant expression required&quot;, &quot;&quot;);
+
+    return true;
+}
+
+//
+// Both test, and if necessary spit out an error, to see if the node is really
+// an integer.
+//
+// Returns true if the was an error.
+//
+bool TParseContext::integerErrorCheck(TIntermTyped* node, const char* token)
+{
+    if (node-&gt;getBasicType() == EbtInt &amp;&amp; node-&gt;getNominalSize() == 1)
+        return false;
+
+    error(node-&gt;getLine(), &quot;integer expression required&quot;, token);
+
+    return true;
+}
+
+//
+// Both test, and if necessary spit out an error, to see if we are currently
+// globally scoped.
+//
+// Returns true if the was an error.
+//
+bool TParseContext::globalErrorCheck(const TSourceLoc&amp; line, bool global, const char* token)
+{
+    if (global)
+        return false;
+
+    error(line, &quot;only allowed at global scope&quot;, token);
+
+    return true;
+}
+
+//
+// For now, keep it simple:  if it starts &quot;gl_&quot;, it's reserved, independent
+// of scope.  Except, if the symbol table is at the built-in push-level,
+// which is when we are parsing built-ins.
+// Also checks for &quot;webgl_&quot; and &quot;_webgl_&quot; reserved identifiers if parsing a
+// webgl shader.
+//
+// Returns true if there was an error.
+//
+bool TParseContext::reservedErrorCheck(const TSourceLoc&amp; line, const TString&amp; identifier)
+{
+    static const char* reservedErrMsg = &quot;reserved built-in name&quot;;
+    if (!symbolTable.atBuiltInLevel()) {
+        if (identifier.compare(0, 3, &quot;gl_&quot;) == 0) {
+            error(line, reservedErrMsg, &quot;gl_&quot;);
+            return true;
+        }
+        if (isWebGLBasedSpec(shaderSpec)) {
+            if (identifier.compare(0, 6, &quot;webgl_&quot;) == 0) {
+                error(line, reservedErrMsg, &quot;webgl_&quot;);
+                return true;
+            }
+            if (identifier.compare(0, 7, &quot;_webgl_&quot;) == 0) {
+                error(line, reservedErrMsg, &quot;_webgl_&quot;);
+                return true;
+            }
+            if (shaderSpec == SH_CSS_SHADERS_SPEC &amp;&amp; identifier.compare(0, 4, &quot;css_&quot;) == 0) {
+                error(line, reservedErrMsg, &quot;css_&quot;);
+                return true;
+            }
+        }
+        if (identifier.find(&quot;__&quot;) != TString::npos) {
+            error(line, &quot;identifiers containing two consecutive underscores (__) are reserved as possible future keywords&quot;, identifier.c_str());
+            return true;
+        }
+    }
+
+    return false;
+}
+
+//
+// Make sure there is enough data provided to the constructor to build
+// something of the type of the constructor.  Also returns the type of
+// the constructor.
+//
+// Returns true if there was an error in construction.
+//
+bool TParseContext::constructorErrorCheck(const TSourceLoc&amp; line, TIntermNode* node, TFunction&amp; function, TOperator op, TType* type)
+{
+    *type = function.getReturnType();
+
+    bool constructingMatrix = false;
+    switch(op) {
+    case EOpConstructMat2:
+    case EOpConstructMat3:
+    case EOpConstructMat4:
+        constructingMatrix = true;
+        break;
+    default: 
+        break;
+    }
+
+    //
+    // Note: It's okay to have too many components available, but not okay to have unused
+    // arguments.  'full' will go to true when enough args have been seen.  If we loop
+    // again, there is an extra argument, so 'overfull' will become true.
+    //
+
+    size_t size = 0;
+    bool constType = true;
+    bool full = false;
+    bool overFull = false;
+    bool matrixInMatrix = false;
+    bool arrayArg = false;
+    for (size_t i = 0; i &lt; function.getParamCount(); ++i) {
+        const TParameter&amp; param = function.getParam(i);
+        size += param.type-&gt;getObjectSize();
+        
+        if (constructingMatrix &amp;&amp; param.type-&gt;isMatrix())
+            matrixInMatrix = true;
+        if (full)
+            overFull = true;
+        if (op != EOpConstructStruct &amp;&amp; !type-&gt;isArray() &amp;&amp; size &gt;= type-&gt;getObjectSize())
+            full = true;
+        if (param.type-&gt;getQualifier() != EvqConst)
+            constType = false;
+        if (param.type-&gt;isArray())
+            arrayArg = true;
+    }
+    
+    if (constType)
+        type-&gt;setQualifier(EvqConst);
+
+    if (type-&gt;isArray() &amp;&amp; static_cast&lt;size_t&gt;(type-&gt;getArraySize()) != function.getParamCount()) {
+        error(line, &quot;array constructor needs one argument per array element&quot;, &quot;constructor&quot;);
+        return true;
+    }
+
+    if (arrayArg &amp;&amp; op != EOpConstructStruct) {
+        error(line, &quot;constructing from a non-dereferenced array&quot;, &quot;constructor&quot;);
+        return true;
+    }
+
+    if (matrixInMatrix &amp;&amp; !type-&gt;isArray()) {
+        if (function.getParamCount() != 1) {
+          error(line, &quot;constructing matrix from matrix can only take one argument&quot;, &quot;constructor&quot;);
+          return true;
+        }
+    }
+
+    if (overFull) {
+        error(line, &quot;too many arguments&quot;, &quot;constructor&quot;);
+        return true;
+    }
+    
+    if (op == EOpConstructStruct &amp;&amp; !type-&gt;isArray() &amp;&amp; int(type-&gt;getStruct()-&gt;fields().size()) != function.getParamCount()) {
+        error(line, &quot;Number of constructor parameters does not match the number of structure fields&quot;, &quot;constructor&quot;);
+        return true;
+    }
+
+    if (!type-&gt;isMatrix() || !matrixInMatrix) {
+        if ((op != EOpConstructStruct &amp;&amp; size != 1 &amp;&amp; size &lt; type-&gt;getObjectSize()) ||
+            (op == EOpConstructStruct &amp;&amp; size &lt; type-&gt;getObjectSize())) {
+            error(line, &quot;not enough data provided for construction&quot;, &quot;constructor&quot;);
+            return true;
+        }
+    }
+
+    TIntermTyped *typed = node ? node-&gt;getAsTyped() : 0;
+    if (typed == 0) {
+        error(line, &quot;constructor argument does not have a type&quot;, &quot;constructor&quot;);
+        return true;
+    }
+    if (op != EOpConstructStruct &amp;&amp; IsSampler(typed-&gt;getBasicType())) {
+        error(line, &quot;cannot convert a sampler&quot;, &quot;constructor&quot;);
+        return true;
+    }
+    if (typed-&gt;getBasicType() == EbtVoid) {
+        error(line, &quot;cannot convert a void&quot;, &quot;constructor&quot;);
+        return true;
+    }
+
+    return false;
+}
+
+// This function checks to see if a void variable has been declared and raise an error message for such a case
+//
+// returns true in case of an error
+//
+bool TParseContext::voidErrorCheck(const TSourceLoc&amp; line, const TString&amp; identifier, const TPublicType&amp; pubType)
+{
+    if (pubType.type == EbtVoid) {
+        error(line, &quot;illegal use of type 'void'&quot;, identifier.c_str());
+        return true;
+    } 
+
+    return false;
+}
+
+// This function checks to see if the node (for the expression) contains a scalar boolean expression or not
+//
+// returns true in case of an error
+//
+bool TParseContext::boolErrorCheck(const TSourceLoc&amp; line, const TIntermTyped* type)
+{
+    if (type-&gt;getBasicType() != EbtBool || type-&gt;isArray() || type-&gt;isMatrix() || type-&gt;isVector()) {
+        error(line, &quot;boolean expression expected&quot;, &quot;&quot;);
+        return true;
+    } 
+
+    return false;
+}
+
+// This function checks to see if the node (for the expression) contains a scalar boolean expression or not
+//
+// returns true in case of an error
+//
+bool TParseContext::boolErrorCheck(const TSourceLoc&amp; line, const TPublicType&amp; pType)
+{
+    if (pType.type != EbtBool || pType.array || pType.matrix || (pType.size &gt; 1)) {
+        error(line, &quot;boolean expression expected&quot;, &quot;&quot;);
+        return true;
+    } 
+
+    return false;
+}
+
+bool TParseContext::samplerErrorCheck(const TSourceLoc&amp; line, const TPublicType&amp; pType, const char* reason)
+{
+    if (pType.type == EbtStruct) {
+        if (containsSampler(*pType.userDef)) {
+            error(line, reason, getBasicString(pType.type), &quot;(structure contains a sampler)&quot;);
+        
+            return true;
+        }
+        
+        return false;
+    } else if (IsSampler(pType.type)) {
+        error(line, reason, getBasicString(pType.type));
+
+        return true;
+    }
+
+    return false;
+}
+
+bool TParseContext::structQualifierErrorCheck(const TSourceLoc&amp; line, const TPublicType&amp; pType)
+{
+    if ((pType.qualifier == EvqVaryingIn || pType.qualifier == EvqVaryingOut || pType.qualifier == EvqAttribute) &amp;&amp;
+        pType.type == EbtStruct) {
+        error(line, &quot;cannot be used with a structure&quot;, getQualifierString(pType.qualifier));
+        
+        return true;
+    }
+
+    if (pType.qualifier != EvqUniform &amp;&amp; samplerErrorCheck(line, pType, &quot;samplers must be uniform&quot;))
+        return true;
+
+    return false;
+}
+
+bool TParseContext::parameterSamplerErrorCheck(const TSourceLoc&amp; line, TQualifier qualifier, const TType&amp; type)
+{
+    if ((qualifier == EvqOut || qualifier == EvqInOut) &amp;&amp; 
+             type.getBasicType() != EbtStruct &amp;&amp; IsSampler(type.getBasicType())) {
+        error(line, &quot;samplers cannot be output parameters&quot;, type.getBasicString());
+        return true;
+    }
+
+    return false;
+}
+
+bool TParseContext::containsSampler(TType&amp; type)
+{
+    if (IsSampler(type.getBasicType()))
+        return true;
+
+    if (type.getBasicType() == EbtStruct) {
+        const TFieldList&amp; fields = type.getStruct()-&gt;fields();
+        for (unsigned int i = 0; i &lt; fields.size(); ++i) {
+            if (containsSampler(*fields[i]-&gt;type()))
+                return true;
+        }
+    }
+
+    return false;
+}
+
+//
+// Do size checking for an array type's size.
+//
+// Returns true if there was an error.
+//
+bool TParseContext::arraySizeErrorCheck(const TSourceLoc&amp; line, TIntermTyped* expr, int&amp; size)
+{
+    TIntermConstantUnion* constant = expr-&gt;getAsConstantUnion();
+    if (constant == 0 || constant-&gt;getBasicType() != EbtInt) {
+        error(line, &quot;array size must be a constant integer expression&quot;, &quot;&quot;);
+        return true;
+    }
+
+    size = constant-&gt;getIConst(0);
+
+    if (size &lt;= 0) {
+        error(line, &quot;array size must be a positive integer&quot;, &quot;&quot;);
+        size = 1;
+        return true;
+    }
+
+    return false;
+}
+
+//
+// See if this qualifier can be an array.
+//
+// Returns true if there is an error.
+//
+bool TParseContext::arrayQualifierErrorCheck(const TSourceLoc&amp; line, TPublicType type)
+{
+    if ((type.qualifier == EvqAttribute) || (type.qualifier == EvqConst)) {
+        error(line, &quot;cannot declare arrays of this qualifier&quot;, TType(type).getCompleteString().c_str());
+        return true;
+    }
+
+    return false;
+}
+
+//
+// See if this type can be an array.
+//
+// Returns true if there is an error.
+//
+bool TParseContext::arrayTypeErrorCheck(const TSourceLoc&amp; line, TPublicType type)
+{
+    //
+    // Can the type be an array?
+    //
+    if (type.array) {
+        error(line, &quot;cannot declare arrays of arrays&quot;, TType(type).getCompleteString().c_str());
+        return true;
+    }
+
+    return false;
+}
+
+//
+// Do all the semantic checking for declaring an array, with and 
+// without a size, and make the right changes to the symbol table.
+//
+// size == 0 means no specified size.
+//
+// Returns true if there was an error.
+//
+bool TParseContext::arrayErrorCheck(const TSourceLoc&amp; line, TString&amp; identifier, TPublicType type, TVariable*&amp; variable)
+{
+    //
+    // Don't check for reserved word use until after we know it's not in the symbol table,
+    // because reserved arrays can be redeclared.
+    //
+
+    bool builtIn = false; 
+    bool sameScope = false;
+    TSymbol* symbol = symbolTable.find(identifier, &amp;builtIn, &amp;sameScope);
+    if (symbol == 0 || !sameScope) {
+        if (reservedErrorCheck(line, identifier))
+            return true;
+        
+        variable = new TVariable(&amp;identifier, TType(type));
+
+        if (type.arraySize)
+            variable-&gt;getType().setArraySize(type.arraySize);
+
+        if (! symbolTable.insert(*variable)) {
+            delete variable;
+            error(line, &quot;INTERNAL ERROR inserting new symbol&quot;, identifier.c_str());
+            return true;
+        }
+    } else {
+        if (! symbol-&gt;isVariable()) {
+            error(line, &quot;variable expected&quot;, identifier.c_str());
+            return true;
+        }
+
+        variable = static_cast&lt;TVariable*&gt;(symbol);
+        if (! variable-&gt;getType().isArray()) {
+            error(line, &quot;redeclaring non-array as array&quot;, identifier.c_str());
+            return true;
+        }
+        if (variable-&gt;getType().getArraySize() &gt; 0) {
+            error(line, &quot;redeclaration of array with size&quot;, identifier.c_str());
+            return true;
+        }
+        
+        if (! variable-&gt;getType().sameElementType(TType(type))) {
+            error(line, &quot;redeclaration of array with a different type&quot;, identifier.c_str());
+            return true;
+        }
+
+        if (type.arraySize)
+            variable-&gt;getType().setArraySize(type.arraySize);
+    } 
+
+    if (voidErrorCheck(line, identifier, type))
+        return true;
+
+    return false;
+}
+
+//
+// Enforce non-initializer type/qualifier rules.
+//
+// Returns true if there was an error.
+//
+bool TParseContext::nonInitConstErrorCheck(const TSourceLoc&amp; line, TString&amp; identifier, TPublicType&amp; type, bool array)
+{
+    if (type.qualifier == EvqConst)
+    {
+        // Make the qualifier make sense.
+        type.qualifier = EvqTemporary;
+        
+        if (array)
+        {
+            error(line, &quot;arrays may not be declared constant since they cannot be initialized&quot;, identifier.c_str());
+        }
+        else if (type.isStructureContainingArrays())
+        {
+            error(line, &quot;structures containing arrays may not be declared constant since they cannot be initialized&quot;, identifier.c_str());
+        }
+        else
+        {
+            error(line, &quot;variables with qualifier 'const' must be initialized&quot;, identifier.c_str());
+        }
+
+        return true;
+    }
+
+    return false;
+}
+
+//
+// Do semantic checking for a variable declaration that has no initializer,
+// and update the symbol table.
+//
+// Returns true if there was an error.
+//
+bool TParseContext::nonInitErrorCheck(const TSourceLoc&amp; line, TString&amp; identifier, TPublicType&amp; type, TVariable*&amp; variable)
+{
+    if (reservedErrorCheck(line, identifier))
+        recover();
+
+    variable = new TVariable(&amp;identifier, TType(type));
+
+    if (! symbolTable.insert(*variable)) {
+        error(line, &quot;redefinition&quot;, variable-&gt;getName().c_str());
+        delete variable;
+        variable = 0;
+        return true;
+    }
+
+    if (voidErrorCheck(line, identifier, type))
+        return true;
+
+    return false;
+}
+
+bool TParseContext::paramErrorCheck(const TSourceLoc&amp; line, TQualifier qualifier, TQualifier paramQualifier, TType* type)
+{    
+    if (qualifier != EvqConst &amp;&amp; qualifier != EvqTemporary) {
+        error(line, &quot;qualifier not allowed on function parameter&quot;, getQualifierString(qualifier));
+        return true;
+    }
+    if (qualifier == EvqConst &amp;&amp; paramQualifier != EvqIn) {
+        error(line, &quot;qualifier not allowed with &quot;, getQualifierString(qualifier), getQualifierString(paramQualifier));
+        return true;
+    }
+
+    if (qualifier == EvqConst)
+        type-&gt;setQualifier(EvqConstReadOnly);
+    else
+        type-&gt;setQualifier(paramQualifier);
+
+    return false;
+}
+
+bool TParseContext::extensionErrorCheck(const TSourceLoc&amp; line, const TString&amp; extension)
+{
+    const TExtensionBehavior&amp; extBehavior = extensionBehavior();
+    TExtensionBehavior::const_iterator iter = extBehavior.find(extension.c_str());
+    if (iter == extBehavior.end()) {
+        error(line, &quot;extension&quot;, extension.c_str(), &quot;is not supported&quot;);
+        return true;
+    }
+    // In GLSL ES, an extension's default behavior is &quot;disable&quot;.
+    if (iter-&gt;second == EBhDisable || iter-&gt;second == EBhUndefined) {
+        error(line, &quot;extension&quot;, extension.c_str(), &quot;is disabled&quot;);
+        return true;
+    }
+    if (iter-&gt;second == EBhWarn) {
+        warning(line, &quot;extension&quot;, extension.c_str(), &quot;is being used&quot;);
+        return false;
+    }
+
+    return false;
+}
+
+bool TParseContext::supportsExtension(const char* extension)
+{
+    const TExtensionBehavior&amp; extbehavior = extensionBehavior();
+    TExtensionBehavior::const_iterator iter = extbehavior.find(extension);
+    return (iter != extbehavior.end());
+}
+
+bool TParseContext::isExtensionEnabled(const char* extension) const
+{
+    const TExtensionBehavior&amp; extbehavior = extensionBehavior();
+    TExtensionBehavior::const_iterator iter = extbehavior.find(extension);
+
+    if (iter == extbehavior.end())
+    {
+        return false;
+    }
+
+    return (iter-&gt;second == EBhEnable || iter-&gt;second == EBhRequire);
+}
+
+/////////////////////////////////////////////////////////////////////////////////
+//
+// Non-Errors.
+//
+/////////////////////////////////////////////////////////////////////////////////
+
+//
+// Look up a function name in the symbol table, and make sure it is a function.
+//
+// Return the function symbol if found, otherwise 0.
+//
+const TFunction* TParseContext::findFunction(const TSourceLoc&amp; line, TFunction* call, bool *builtIn)
+{
+    // First find by unmangled name to check whether the function name has been
+    // hidden by a variable name or struct typename.
+    // If a function is found, check for one with a matching argument list.
+    const TSymbol* symbol = symbolTable.find(call-&gt;getName(), builtIn);
+    if (symbol == 0 || symbol-&gt;isFunction()) {
+        symbol = symbolTable.find(call-&gt;getMangledName(), builtIn);
+    }
+
+    if (symbol == 0) {
+        error(line, &quot;no matching overloaded function found&quot;, call-&gt;getName().c_str());
+        return 0;
+    }
+
+    if (!symbol-&gt;isFunction()) {
+        error(line, &quot;function name expected&quot;, call-&gt;getName().c_str());
+        return 0;
+    }
+
+    return static_cast&lt;const TFunction*&gt;(symbol);
+}
+
+//
+// Initializers show up in several places in the grammar.  Have one set of
+// code to handle them here.
+//
+bool TParseContext::executeInitializer(const TSourceLoc&amp; line, TString&amp; identifier, TPublicType&amp; pType, 
+                                       TIntermTyped* initializer, TIntermNode*&amp; intermNode, TVariable* variable)
+{
+    TType type = TType(pType);
+
+    if (variable == 0) {
+        if (reservedErrorCheck(line, identifier))
+            return true;
+
+        if (voidErrorCheck(line, identifier, pType))
+            return true;
+
+        //
+        // add variable to symbol table
+        //
+        variable = new TVariable(&amp;identifier, type);
+        if (! symbolTable.insert(*variable)) {
+            error(line, &quot;redefinition&quot;, variable-&gt;getName().c_str());
+            return true;
+            // don't delete variable, it's used by error recovery, and the pool 
+            // pop will take care of the memory
+        }
+    }
+
+    //
+    // identifier must be of type constant, a global, or a temporary
+    //
+    TQualifier qualifier = variable-&gt;getType().getQualifier();
+    if ((qualifier != EvqTemporary) &amp;&amp; (qualifier != EvqGlobal) &amp;&amp; (qualifier != EvqConst)) {
+        error(line, &quot; cannot initialize this type of qualifier &quot;, variable-&gt;getType().getQualifierString());
+        return true;
+    }
+    //
+    // test for and propagate constant
+    //
+
+    if (qualifier == EvqConst) {
+        if (qualifier != initializer-&gt;getType().getQualifier()) {
+            std::stringstream extraInfoStream;
+            extraInfoStream &lt;&lt; &quot;'&quot; &lt;&lt; variable-&gt;getType().getCompleteString() &lt;&lt; &quot;'&quot;;
+            std::string extraInfo = extraInfoStream.str();
+            error(line, &quot; assigning non-constant to&quot;, &quot;=&quot;, extraInfo.c_str());
+            variable-&gt;getType().setQualifier(EvqTemporary);
+            return true;
+        }
+        if (type != initializer-&gt;getType()) {
+            error(line, &quot; non-matching types for const initializer &quot;, 
+                variable-&gt;getType().getQualifierString());
+            variable-&gt;getType().setQualifier(EvqTemporary);
+            return true;
+        }
+        if (initializer-&gt;getAsConstantUnion()) { 
+            variable-&gt;shareConstPointer(initializer-&gt;getAsConstantUnion()-&gt;getUnionArrayPointer());
+        } else if (initializer-&gt;getAsSymbolNode()) {
+            const TSymbol* symbol = symbolTable.find(initializer-&gt;getAsSymbolNode()-&gt;getSymbol());
+            const TVariable* tVar = static_cast&lt;const TVariable*&gt;(symbol);
+
+            ConstantUnion* constArray = tVar-&gt;getConstPointer();
+            variable-&gt;shareConstPointer(constArray);
+        } else {
+            std::stringstream extraInfoStream;
+            extraInfoStream &lt;&lt; &quot;'&quot; &lt;&lt; variable-&gt;getType().getCompleteString() &lt;&lt; &quot;'&quot;;
+            std::string extraInfo = extraInfoStream.str();
+            error(line, &quot; cannot assign to&quot;, &quot;=&quot;, extraInfo.c_str());
+            variable-&gt;getType().setQualifier(EvqTemporary);
+            return true;
+        }
+    }

+    if (qualifier != EvqConst) {
+        TIntermSymbol* intermSymbol = intermediate.addSymbol(variable-&gt;getUniqueId(), variable-&gt;getName(), variable-&gt;getType(), line);
+        intermNode = intermediate.addAssign(EOpInitialize, intermSymbol, initializer, line);
+        if (intermNode == 0) {
+            assignError(line, &quot;=&quot;, intermSymbol-&gt;getCompleteString(), initializer-&gt;getCompleteString());
+            return true;
+        }
+    } else 
+        intermNode = 0;
+
+    return false;
+}
+
+bool TParseContext::areAllChildConst(TIntermAggregate* aggrNode)
+{
+    ASSERT(aggrNode != NULL);
+    if (!aggrNode-&gt;isConstructor())
+        return false;
+
+    bool allConstant = true;
+
+    // check if all the child nodes are constants so that they can be inserted into 
+    // the parent node
+    TIntermSequence &amp;sequence = aggrNode-&gt;getSequence() ;
+    for (TIntermSequence::iterator p = sequence.begin(); p != sequence.end(); ++p) {
+        if (!(*p)-&gt;getAsTyped()-&gt;getAsConstantUnion())
+            return false;
+    }
+
+    return allConstant;
+}
+
+// This function is used to test for the correctness of the parameters passed to various constructor functions
+// and also convert them to the right datatype if it is allowed and required. 
+//
+// Returns 0 for an error or the constructed node (aggregate or typed) for no error.
+//
+TIntermTyped* TParseContext::addConstructor(TIntermNode* node, const TType* type, TOperator op, TFunction* fnCall, const TSourceLoc&amp; line)
+{
+    if (node == 0)
+        return 0;
+
+    TIntermAggregate* aggrNode = node-&gt;getAsAggregate();
+    
+    TFieldList::const_iterator memberFields;
+    if (op == EOpConstructStruct)
+        memberFields = type-&gt;getStruct()-&gt;fields().begin();
+    
+    TType elementType = *type;
+    if (type-&gt;isArray())
+        elementType.clearArrayness();
+
+    bool singleArg;
+    if (aggrNode) {
+        if (aggrNode-&gt;getOp() != EOpNull || aggrNode-&gt;getSequence().size() == 1)
+            singleArg = true;
+        else
+            singleArg = false;
+    } else
+        singleArg = true;
+
+    TIntermTyped *newNode;
+    if (singleArg) {
+        // If structure constructor or array constructor is being called 
+        // for only one parameter inside the structure, we need to call constructStruct function once.
+        if (type-&gt;isArray())
+            newNode = constructStruct(node, &amp;elementType, 1, node-&gt;getLine(), false);
+        else if (op == EOpConstructStruct)
+            newNode = constructStruct(node, (*memberFields)-&gt;type(), 1, node-&gt;getLine(), false);
+        else
+            newNode = constructBuiltIn(type, op, node, node-&gt;getLine(), false);
+
+        if (newNode &amp;&amp; newNode-&gt;getAsAggregate()) {
+            TIntermTyped* constConstructor = foldConstConstructor(newNode-&gt;getAsAggregate(), *type);
+            if (constConstructor)
+                return constConstructor;
+        }
+
+        return newNode;
+    }
+    
+    //
+    // Handle list of arguments.
+    //
+    TIntermSequence &amp;sequenceVector = aggrNode-&gt;getSequence() ;    // Stores the information about the parameter to the constructor
+    // if the structure constructor contains more than one parameter, then construct
+    // each parameter
+    
+    int paramCount = 0;  // keeps a track of the constructor parameter number being checked    
+    
+    // for each parameter to the constructor call, check to see if the right type is passed or convert them 
+    // to the right type if possible (and allowed).
+    // for structure constructors, just check if the right type is passed, no conversion is allowed.
+    
+    for (TIntermSequence::iterator p = sequenceVector.begin(); 
+                                   p != sequenceVector.end(); p++, paramCount++) {
+        if (type-&gt;isArray())
+            newNode = constructStruct(*p, &amp;elementType, paramCount+1, node-&gt;getLine(), true);
+        else if (op == EOpConstructStruct)
+            newNode = constructStruct(*p, memberFields[paramCount]-&gt;type(), paramCount+1, node-&gt;getLine(), true);
+        else
+            newNode = constructBuiltIn(type, op, *p, node-&gt;getLine(), true);
+        
+        if (newNode) {
+            *p = newNode;
+        }
+    }
+
+    TIntermTyped* constructor = intermediate.setAggregateOperator(aggrNode, op, line);
+    TIntermTyped* constConstructor = foldConstConstructor(constructor-&gt;getAsAggregate(), *type);
+    if (constConstructor)
+        return constConstructor;
+
+    return constructor;
+}
+
+TIntermTyped* TParseContext::foldConstConstructor(TIntermAggregate* aggrNode, const TType&amp; type)
+{
+    bool canBeFolded = areAllChildConst(aggrNode);
+    aggrNode-&gt;setType(type);
+    if (canBeFolded) {
+        bool returnVal = false;
+        ConstantUnion* unionArray = new ConstantUnion[type.getObjectSize()];
+        if (aggrNode-&gt;getSequence().size() == 1)  {
+            returnVal = intermediate.parseConstTree(aggrNode-&gt;getLine(), aggrNode, unionArray, aggrNode-&gt;getOp(), symbolTable,  type, true);
+        }
+        else {
+            returnVal = intermediate.parseConstTree(aggrNode-&gt;getLine(), aggrNode, unionArray, aggrNode-&gt;getOp(), symbolTable,  type);
+        }
+        if (returnVal)
+            return 0;
+
+        return intermediate.addConstantUnion(unionArray, type, aggrNode-&gt;getLine());
+    }
+
+    return 0;
+}
+
+// Function for constructor implementation. Calls addUnaryMath with appropriate EOp value
+// for the parameter to the constructor (passed to this function). Essentially, it converts
+// the parameter types correctly. If a constructor expects an int (like ivec2) and is passed a 
+// float, then float is converted to int.
+//
+// Returns 0 for an error or the constructed node.
+//
+TIntermTyped* TParseContext::constructBuiltIn(const TType* type, TOperator op, TIntermNode* node, const TSourceLoc&amp; line, bool subset)
+{
+    TIntermTyped* newNode;
+    TOperator basicOp;
+
+    //
+    // First, convert types as needed.
+    //
+    switch (op) {
+    case EOpConstructVec2:
+    case EOpConstructVec3:
+    case EOpConstructVec4:
+    case EOpConstructMat2:
+    case EOpConstructMat3:
+    case EOpConstructMat4:
+    case EOpConstructFloat:
+        basicOp = EOpConstructFloat;
+        break;
+
+    case EOpConstructIVec2:
+    case EOpConstructIVec3:
+    case EOpConstructIVec4:
+    case EOpConstructInt:
+        basicOp = EOpConstructInt;
+        break;
+
+    case EOpConstructBVec2:
+    case EOpConstructBVec3:
+    case EOpConstructBVec4:
+    case EOpConstructBool:
+        basicOp = EOpConstructBool;
+        break;
+
+    default:
+        error(line, &quot;unsupported construction&quot;, &quot;&quot;);
+        recover();
+
+        return 0;
+    }
+    newNode = intermediate.addUnaryMath(basicOp, node, node-&gt;getLine(), symbolTable);
+    if (newNode == 0) {
+        error(line, &quot;can't convert&quot;, &quot;constructor&quot;);
+        return 0;
+    }
+
+    //
+    // Now, if there still isn't an operation to do the construction, and we need one, add one.
+    //
+    
+    // Otherwise, skip out early.
+    if (subset || (newNode != node &amp;&amp; newNode-&gt;getType() == *type))
+        return newNode;
+
+    // setAggregateOperator will insert a new node for the constructor, as needed.
+    return intermediate.setAggregateOperator(newNode, op, line);
+}
+
+// This function tests for the type of the parameters to the structures constructors. Raises
+// an error message if the expected type does not match the parameter passed to the constructor.
+//
+// Returns 0 for an error or the input node itself if the expected and the given parameter types match.
+//
+TIntermTyped* TParseContext::constructStruct(TIntermNode* node, TType* type, int paramCount, const TSourceLoc&amp; line, bool subset)
+{
+    if (*type == node-&gt;getAsTyped()-&gt;getType()) {
+        if (subset)
+            return node-&gt;getAsTyped();
+        else
+            return intermediate.setAggregateOperator(node-&gt;getAsTyped(), EOpConstructStruct, line);
+    } else {
+        std::stringstream extraInfoStream;
+        extraInfoStream &lt;&lt; &quot;cannot convert parameter &quot; &lt;&lt; paramCount 
+                        &lt;&lt; &quot; from '&quot; &lt;&lt; node-&gt;getAsTyped()-&gt;getType().getBasicString()
+                        &lt;&lt; &quot;' to '&quot; &lt;&lt; type-&gt;getBasicString() &lt;&lt; &quot;'&quot;;
+        std::string extraInfo = extraInfoStream.str();
+        error(line, &quot;&quot;, &quot;constructor&quot;, extraInfo.c_str());
+        recover();
+    }
+
+    return 0;
+}
+
+//
+// This function returns the tree representation for the vector field(s) being accessed from contant vector.
+// If only one component of vector is accessed (v.x or v[0] where v is a contant vector), then a contant node is
+// returned, else an aggregate node is returned (for v.xy). The input to this function could either be the symbol
+// node or it could be the intermediate tree representation of accessing fields in a constant structure or column of 
+// a constant matrix.
+//
+TIntermTyped* TParseContext::addConstVectorNode(TVectorFields&amp; fields, TIntermTyped* node, const TSourceLoc&amp; line)
+{
+    TIntermTyped* typedNode;
+    TIntermConstantUnion* tempConstantNode = node-&gt;getAsConstantUnion();
+
+    ConstantUnion *unionArray;
+    if (tempConstantNode) {
+        unionArray = tempConstantNode-&gt;getUnionArrayPointer();
+
+        if (!unionArray) {
+            return node;
+        }
+    } else { // The node has to be either a symbol node or an aggregate node or a tempConstant node, else, its an error
+        error(line, &quot;Cannot offset into the vector&quot;, &quot;Error&quot;);
+        recover();
+
+        return 0;
+    }
+
+    ConstantUnion* constArray = new ConstantUnion[fields.num];
+
+    for (int i = 0; i &lt; fields.num; i++) {
+        if (fields.offsets[i] &gt;= node-&gt;getType().getNominalSize()) {
+            std::stringstream extraInfoStream;
+            extraInfoStream &lt;&lt; &quot;vector field selection out of range '&quot; &lt;&lt; fields.offsets[i] &lt;&lt; &quot;'&quot;;
+            std::string extraInfo = extraInfoStream.str();
+            error(line, &quot;&quot;, &quot;[&quot;, extraInfo.c_str());
+            recover();
+            fields.offsets[i] = 0;
+        }
+        
+        constArray[i] = unionArray[fields.offsets[i]];
+
+    } 
+    typedNode = intermediate.addConstantUnion(constArray, node-&gt;getType(), line);
+    return typedNode;
+}
+
+//
+// This function returns the column being accessed from a constant matrix. The values are retrieved from
+// the symbol table and parse-tree is built for a vector (each column of a matrix is a vector). The input 
+// to the function could either be a symbol node (m[0] where m is a constant matrix)that represents a 
+// constant matrix or it could be the tree representation of the constant matrix (s.m1[0] where s is a constant structure)
+//
+TIntermTyped* TParseContext::addConstMatrixNode(int index, TIntermTyped* node, const TSourceLoc&amp; line)
+{
+    TIntermTyped* typedNode;
+    TIntermConstantUnion* tempConstantNode = node-&gt;getAsConstantUnion();
+
+    if (index &gt;= node-&gt;getType().getNominalSize()) {
+        std::stringstream extraInfoStream;
+        extraInfoStream &lt;&lt; &quot;matrix field selection out of range '&quot; &lt;&lt; index &lt;&lt; &quot;'&quot;;
+        std::string extraInfo = extraInfoStream.str();
+        error(line, &quot;&quot;, &quot;[&quot;, extraInfo.c_str());
+        recover();
+        index = 0;
+    }
+
+    if (tempConstantNode) {
+         ConstantUnion* unionArray = tempConstantNode-&gt;getUnionArrayPointer();
+         int size = tempConstantNode-&gt;getType().getNominalSize();
+         typedNode = intermediate.addConstantUnion(&amp;unionArray[size*index], tempConstantNode-&gt;getType(), line);
+    } else {
+        error(line, &quot;Cannot offset into the matrix&quot;, &quot;Error&quot;);
+        recover();
+
+        return 0;
+    }
+
+    return typedNode;
+}
+
+
+//
+// This function returns an element of an array accessed from a constant array. The values are retrieved from
+// the symbol table and parse-tree is built for the type of the element. The input 
+// to the function could either be a symbol node (a[0] where a is a constant array)that represents a 
+// constant array or it could be the tree representation of the constant array (s.a1[0] where s is a constant structure)
+//
+TIntermTyped* TParseContext::addConstArrayNode(int index, TIntermTyped* node, const TSourceLoc&amp; line)
+{
+    TIntermTyped* typedNode;
+    TIntermConstantUnion* tempConstantNode = node-&gt;getAsConstantUnion();
+    TType arrayElementType = node-&gt;getType();
+    arrayElementType.clearArrayness();
+
+    if (index &gt;= node-&gt;getType().getArraySize()) {
+        std::stringstream extraInfoStream;
+        extraInfoStream &lt;&lt; &quot;array field selection out of range '&quot; &lt;&lt; index &lt;&lt; &quot;'&quot;;
+        std::string extraInfo = extraInfoStream.str();
+        error(line, &quot;&quot;, &quot;[&quot;, extraInfo.c_str());
+        recover();
+        index = 0;
+    }
+
+    if (tempConstantNode) {
+         size_t arrayElementSize = arrayElementType.getObjectSize();
+         ConstantUnion* unionArray = tempConstantNode-&gt;getUnionArrayPointer();
+         typedNode = intermediate.addConstantUnion(&amp;unionArray[arrayElementSize * index], tempConstantNode-&gt;getType(), line);
+    } else {
+        error(line, &quot;Cannot offset into the array&quot;, &quot;Error&quot;);
+        recover();
+
+        return 0;
+    }
+
+    return typedNode;
+}
+
+
+//
+// This function returns the value of a particular field inside a constant structure from the symbol table. 
+// If there is an embedded/nested struct, it appropriately calls addConstStructNested or addConstStructFromAggr
+// function and returns the parse-tree with the values of the embedded/nested struct.
+//
+TIntermTyped* TParseContext::addConstStruct(TString&amp; identifier, TIntermTyped* node, const TSourceLoc&amp; line)
+{
+    const TFieldList&amp; fields = node-&gt;getType().getStruct()-&gt;fields();
+
+    size_t instanceSize = 0;
+    for (size_t index = 0; index &lt; fields.size(); ++index) {
+        if (fields[index]-&gt;name() == identifier) {
+            break;
+        } else {
+            instanceSize += fields[index]-&gt;type()-&gt;getObjectSize();
+        }
+    }
+
+    TIntermTyped* typedNode = 0;
+    TIntermConstantUnion* tempConstantNode = node-&gt;getAsConstantUnion();
+    if (tempConstantNode) {
+         ConstantUnion* constArray = tempConstantNode-&gt;getUnionArrayPointer();
+
+         typedNode = intermediate.addConstantUnion(constArray+instanceSize, tempConstantNode-&gt;getType(), line); // type will be changed in the calling function
+    } else {
+        error(line, &quot;Cannot offset into the structure&quot;, &quot;Error&quot;);
+        recover();
+
+        return 0;
+    }
+
+    return typedNode;
+}
+
+bool TParseContext::enterStructDeclaration(const TSourceLoc&amp; line, const TString&amp; identifier)
+{
+    ++structNestingLevel;
+
+    // Embedded structure definitions are not supported per GLSL ES spec.
+    // They aren't allowed in GLSL either, but we need to detect this here
+    // so we don't rely on the GLSL compiler to catch it.
+    if (structNestingLevel &gt; 1) {
+        error(line, &quot;&quot;, &quot;Embedded struct definitions are not allowed&quot;);
+        return true;
+    }
+
+    return false;
+}
+
+void TParseContext::exitStructDeclaration()
+{
+    --structNestingLevel;
+}
+
+namespace {
+
+const int kWebGLMaxStructNesting = 4;
+
+}  // namespace
+
+bool TParseContext::structNestingErrorCheck(const TSourceLoc&amp; line, const TField&amp; field)
+{
+    if (!isWebGLBasedSpec(shaderSpec)) {
+        return false;
+    }
+
+    if (field.type()-&gt;getBasicType() != EbtStruct) {
+        return false;
+    }
+
+    // We're already inside a structure definition at this point, so add
+    // one to the field's struct nesting.
+    if (1 + field.type()-&gt;getDeepestStructNesting() &gt; kWebGLMaxStructNesting) {
+        std::stringstream reasonStream;
+        reasonStream &lt;&lt; &quot;Reference of struct type &quot;
+                     &lt;&lt; field.type()-&gt;getStruct()-&gt;name().c_str()
+                     &lt;&lt; &quot; exceeds maximum allowed nesting level of &quot;
+                     &lt;&lt; kWebGLMaxStructNesting;
+        std::string reason = reasonStream.str();
+        error(line, reason.c_str(), field.name().c_str(), &quot;&quot;);
+        return true;
+    }
+
+    return false;
+}
+
+//
+// Parse an array index expression
+//
+TIntermTyped* TParseContext::addIndexExpression(TIntermTyped *baseExpression, const TSourceLoc&amp; location, TIntermTyped *indexExpression)
+{
+    TIntermTyped *indexedExpression = NULL;
+
+    if (!baseExpression-&gt;isArray() &amp;&amp; !baseExpression-&gt;isMatrix() &amp;&amp; !baseExpression-&gt;isVector())
+    {
+        if (baseExpression-&gt;getAsSymbolNode())
+        {
+            error(location, &quot; left of '[' is not of type array, matrix, or vector &quot;, baseExpression-&gt;getAsSymbolNode()-&gt;getSymbol().c_str());
+        }
+        else
+        {
+            error(location, &quot; left of '[' is not of type array, matrix, or vector &quot;, &quot;expression&quot;);
+        }
+        recover();
+    }
+
+    if (indexExpression-&gt;getQualifier() == EvqConst)
+    {
+        int index = indexExpression-&gt;getAsConstantUnion()-&gt;getIConst(0);
+        if (index &lt; 0)
+        {
+            std::stringstream infoStream;
+            infoStream &lt;&lt; index;
+            std::string info = infoStream.str();
+            error(location, &quot;negative index&quot;, info.c_str());
+            recover();
+            index = 0;
+        }
+        if (baseExpression-&gt;getType().getQualifier() == EvqConst)
+        {
+            if (baseExpression-&gt;isArray())
+            {
+                // constant folding for arrays
+                indexedExpression = addConstArrayNode(index, baseExpression, location);
+            }
+            else if (baseExpression-&gt;isVector())
+            {
+                // constant folding for vectors
+                TVectorFields fields;
+                fields.num = 1;
+                fields.offsets[0] = index; // need to do it this way because v.xy sends fields integer array
+                indexedExpression = addConstVectorNode(fields, baseExpression, location);
+            }
+            else if (baseExpression-&gt;isMatrix())
+            {
+                // constant folding for matrices
+                indexedExpression = addConstMatrixNode(index, baseExpression, location);
+            }
+        }
+        else
+        {
+            if (baseExpression-&gt;isArray())
+            {
+                if (index &gt;= baseExpression-&gt;getType().getArraySize())
+                {
+                    std::stringstream extraInfoStream;
+                    extraInfoStream &lt;&lt; &quot;array index out of range '&quot; &lt;&lt; index &lt;&lt; &quot;'&quot;;
+                    std::string extraInfo = extraInfoStream.str();
+                    error(location, &quot;&quot;, &quot;[&quot;, extraInfo.c_str());
+                    recover();
+                    index = baseExpression-&gt;getType().getArraySize() - 1;
+                }
+                else if (baseExpression-&gt;getQualifier() == EvqFragData &amp;&amp; index &gt; 0 &amp;&amp; !isExtensionEnabled(&quot;GL_EXT_draw_buffers&quot;))
+                {
+                    error(location, &quot;&quot;, &quot;[&quot;, &quot;array indexes for gl_FragData must be zero when GL_EXT_draw_buffers is disabled&quot;);
+                    recover();
+                    index = 0;
+                }
+            }
+            else if ((baseExpression-&gt;isVector() || baseExpression-&gt;isMatrix()) &amp;&amp; baseExpression-&gt;getType().getNominalSize() &lt;= index)
+            {
+                std::stringstream extraInfoStream;
+                extraInfoStream &lt;&lt; &quot;field selection out of range '&quot; &lt;&lt; index &lt;&lt; &quot;'&quot;;
+                std::string extraInfo = extraInfoStream.str();
+                error(location, &quot;&quot;, &quot;[&quot;, extraInfo.c_str());
+                recover();
+                index = baseExpression-&gt;getType().getNominalSize() - 1;
+            }
+
+            indexExpression-&gt;getAsConstantUnion()-&gt;getUnionArrayPointer()-&gt;setIConst(index);
+            indexedExpression = intermediate.addIndex(EOpIndexDirect, baseExpression, indexExpression, location);
+        }
+    }
+    else
+    {
+        indexedExpression = intermediate.addIndex(EOpIndexIndirect, baseExpression, indexExpression, location);
+    }
+
+    if (indexedExpression == 0)
+    {
+        ConstantUnion *unionArray = new ConstantUnion[1];
+        unionArray-&gt;setFConst(0.0f);
+        indexedExpression = intermediate.addConstantUnion(unionArray, TType(EbtFloat, EbpHigh, EvqConst), location);
+    }
+    else if (baseExpression-&gt;isArray())
+    {
+        const TType &amp;baseType = baseExpression-&gt;getType();
+        if (baseType.getStruct())
+        {
+            TType copyOfType(baseType.getStruct());
+            indexedExpression-&gt;setType(copyOfType);
+        }
+        else
+        {
+            indexedExpression-&gt;setType(TType(baseExpression-&gt;getBasicType(), baseExpression-&gt;getPrecision(), EvqTemporary, baseExpression-&gt;getNominalSize(), baseExpression-&gt;isMatrix()));
+        }
+
+        if (baseExpression-&gt;getType().getQualifier() == EvqConst)
+        {
+            indexedExpression-&gt;getTypePointer()-&gt;setQualifier(EvqConst);
+        }
+    }
+    else if (baseExpression-&gt;isMatrix())
+    {
+        TQualifier qualifier = baseExpression-&gt;getType().getQualifier() == EvqConst ? EvqConst : EvqTemporary;
+        indexedExpression-&gt;setType(TType(baseExpression-&gt;getBasicType(), baseExpression-&gt;getPrecision(), qualifier, baseExpression-&gt;getNominalSize()));
+    }
+    else if (baseExpression-&gt;isVector())
+    {
+        TQualifier qualifier = baseExpression-&gt;getType().getQualifier() == EvqConst ? EvqConst : EvqTemporary;
+        indexedExpression-&gt;setType(TType(baseExpression-&gt;getBasicType(), baseExpression-&gt;getPrecision(), qualifier));
+    }
+    else
+    {
+        indexedExpression-&gt;setType(baseExpression-&gt;getType());
+    }
+
+    return indexedExpression;
+}
+
+//
+// Parse an array of strings using yyparse.
+//
+// Returns 0 for success.
+//
+int PaParseStrings(size_t count, const char* const string[], const int length[],
+                   TParseContext* context) {
+    if ((count == 0) || (string == NULL))
+        return 1;
+
+    if (glslang_initialize(context))
+        return 1;
+
+    int error = glslang_scan(count, string, length, context);
+    if (!error)
+        error = glslang_parse(context);
+
+    glslang_finalize(context);
+
+    return (error == 0) &amp;&amp; (context-&gt;numErrors() == 0) ? 0 : 1;
+}
+
+
+
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerParseContexthfromrev162314releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerParseHelperh"></a>
<div class="copfile"><h4>Copied: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ParseContext.h (from rev 162314, releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ParseHelper.h) (0 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ParseContext.h                                (rev 0)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ParseContext.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -0,0 +1,134 @@
</span><ins>+//
+// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+#ifndef _PARSER_HELPER_INCLUDED_
+#define _PARSER_HELPER_INCLUDED_
+
+#include &quot;compiler/Diagnostics.h&quot;
+#include &quot;compiler/DirectiveHandler.h&quot;
+#include &quot;compiler/localintermediate.h&quot;
+#include &quot;compiler/preprocessor/Preprocessor.h&quot;
+#include &quot;compiler/ShHandle.h&quot;
+#include &quot;compiler/SymbolTable.h&quot;
+
+struct TMatrixFields {
+    bool wholeRow;
+    bool wholeCol;
+    int row;
+    int col;
+};
+
+//
+// The following are extra variables needed during parsing, grouped together so
+// they can be passed to the parser without needing a global.
+//
+struct TParseContext {
+    TParseContext(TSymbolTable&amp; symt, TExtensionBehavior&amp; ext, TIntermediate&amp; interm, ShShaderType type, ShShaderSpec spec, int options, bool checksPrecErrors, const char* sourcePath, TInfoSink&amp; is) :
+            intermediate(interm),
+            symbolTable(symt),
+            shaderType(type),
+            shaderSpec(spec),
+            compileOptions(options),
+            sourcePath(sourcePath),
+            treeRoot(0),
+            loopNestingLevel(0),
+            structNestingLevel(0),
+            currentFunctionType(NULL),
+            functionReturnsValue(false),
+            checksPrecisionErrors(checksPrecErrors),
+            diagnostics(is),
+            directiveHandler(ext, diagnostics),
+            preprocessor(&amp;diagnostics, &amp;directiveHandler),
+            scanner(NULL) {  }
+    TIntermediate&amp; intermediate; // to hold and build a parse tree
+    TSymbolTable&amp; symbolTable;   // symbol table that goes with the language currently being parsed
+    ShShaderType shaderType;              // vertex or fragment language (future: pack or unpack)
+    ShShaderSpec shaderSpec;              // The language specification compiler conforms to - GLES2 or WebGL.
+    int compileOptions;
+    const char* sourcePath;      // Path of source file or NULL.
+    TIntermNode* treeRoot;       // root of parse tree being created
+    int loopNestingLevel;        // 0 if outside all loops
+    int structNestingLevel;      // incremented while parsing a struct declaration
+    const TType* currentFunctionType;  // the return type of the function that's currently being parsed
+    bool functionReturnsValue;   // true if a non-void function has a return
+    bool checksPrecisionErrors;  // true if an error will be generated when a variable is declared without precision, explicit or implicit.
+    bool fragmentPrecisionHigh;  // true if highp precision is supported in the fragment language.
+    TString HashErrMsg;
+    TDiagnostics diagnostics;
+    TDirectiveHandler directiveHandler;
+    pp::Preprocessor preprocessor;
+    void* scanner;
+
+    int numErrors() const { return diagnostics.numErrors(); }
+    TInfoSink&amp; infoSink() { return diagnostics.infoSink(); }
+    void error(const TSourceLoc&amp; loc, const char *reason, const char* token,
+               const char* extraInfo=&quot;&quot;);
+    void warning(const TSourceLoc&amp; loc, const char* reason, const char* token,
+                 const char* extraInfo=&quot;&quot;);
+    void trace(const char* str);
+    void recover();
+
+    bool parseVectorFields(const TString&amp;, int vecSize, TVectorFields&amp;, const TSourceLoc&amp; line);
+    bool parseMatrixFields(const TString&amp;, int matSize, TMatrixFields&amp;, const TSourceLoc&amp; line);
+
+    bool reservedErrorCheck(const TSourceLoc&amp; line, const TString&amp; identifier);
+    void assignError(const TSourceLoc&amp; line, const char* op, TString left, TString right);
+    void unaryOpError(const TSourceLoc&amp; line, const char* op, TString operand);
+    void binaryOpError(const TSourceLoc&amp; line, const char* op, TString left, TString right);
+    bool precisionErrorCheck(const TSourceLoc&amp; line, TPrecision precision, TBasicType type);
+    bool lValueErrorCheck(const TSourceLoc&amp; line, const char* op, TIntermTyped*);
+    bool constErrorCheck(TIntermTyped* node);
+    bool integerErrorCheck(TIntermTyped* node, const char* token);
+    bool globalErrorCheck(const TSourceLoc&amp; line, bool global, const char* token);
+    bool constructorErrorCheck(const TSourceLoc&amp; line, TIntermNode*, TFunction&amp;, TOperator, TType*);
+    bool arraySizeErrorCheck(const TSourceLoc&amp; line, TIntermTyped* expr, int&amp; size);
+    bool arrayQualifierErrorCheck(const TSourceLoc&amp; line, TPublicType type);
+    bool arrayTypeErrorCheck(const TSourceLoc&amp; line, TPublicType type);
+    bool arrayErrorCheck(const TSourceLoc&amp; line, TString&amp; identifier, TPublicType type, TVariable*&amp; variable);
+    bool voidErrorCheck(const TSourceLoc&amp;, const TString&amp;, const TPublicType&amp;);
+    bool boolErrorCheck(const TSourceLoc&amp;, const TIntermTyped*);
+    bool boolErrorCheck(const TSourceLoc&amp;, const TPublicType&amp;);
+    bool samplerErrorCheck(const TSourceLoc&amp; line, const TPublicType&amp; pType, const char* reason);
+    bool structQualifierErrorCheck(const TSourceLoc&amp; line, const TPublicType&amp; pType);
+    bool parameterSamplerErrorCheck(const TSourceLoc&amp; line, TQualifier qualifier, const TType&amp; type);
+    bool nonInitConstErrorCheck(const TSourceLoc&amp; line, TString&amp; identifier, TPublicType&amp; type, bool array);
+    bool nonInitErrorCheck(const TSourceLoc&amp; line, TString&amp; identifier, TPublicType&amp; type, TVariable*&amp; variable);
+    bool paramErrorCheck(const TSourceLoc&amp; line, TQualifier qualifier, TQualifier paramQualifier, TType* type);
+    bool extensionErrorCheck(const TSourceLoc&amp; line, const TString&amp;);
+
+    const TPragma&amp; pragma() const { return directiveHandler.pragma(); }
+    const TExtensionBehavior&amp; extensionBehavior() const { return directiveHandler.extensionBehavior(); }
+    bool supportsExtension(const char* extension);
+    bool isExtensionEnabled(const char* extension) const;
+
+    bool containsSampler(TType&amp; type);
+    bool areAllChildConst(TIntermAggregate* aggrNode);
+    const TFunction* findFunction(const TSourceLoc&amp; line, TFunction* pfnCall, bool *builtIn = 0);
+    bool executeInitializer(const TSourceLoc&amp; line, TString&amp; identifier, TPublicType&amp; pType,
+                            TIntermTyped* initializer, TIntermNode*&amp; intermNode, TVariable* variable = 0);
+
+    TIntermTyped* addConstructor(TIntermNode*, const TType*, TOperator, TFunction*, const TSourceLoc&amp;);
+    TIntermTyped* foldConstConstructor(TIntermAggregate* aggrNode, const TType&amp; type);
+    TIntermTyped* constructStruct(TIntermNode*, TType*, int, const TSourceLoc&amp;, bool subset);
+    TIntermTyped* constructBuiltIn(const TType*, TOperator, TIntermNode*, const TSourceLoc&amp;, bool subset);
+    TIntermTyped* addConstVectorNode(TVectorFields&amp;, TIntermTyped*, const TSourceLoc&amp;);
+    TIntermTyped* addConstMatrixNode(int , TIntermTyped*, const TSourceLoc&amp;);
+    TIntermTyped* addConstArrayNode(int index, TIntermTyped* node, const TSourceLoc&amp; line);
+    TIntermTyped* addConstStruct(TString&amp; , TIntermTyped*, const TSourceLoc&amp;);
+    TIntermTyped* addIndexExpression(TIntermTyped *baseExpression, const TSourceLoc&amp; location, TIntermTyped *indexExpression);
+
+    // Performs an error check for embedded struct declarations.
+    // Returns true if an error was raised due to the declaration of
+    // this struct.
+    bool enterStructDeclaration(const TSourceLoc&amp; line, const TString&amp; identifier);
+    void exitStructDeclaration();
+
+    bool structNestingErrorCheck(const TSourceLoc&amp; line, const TField&amp; field);
+};
+
+int PaParseStrings(size_t count, const char* const string[], const int length[],
+                   TParseContext* context);
+
+#endif // _PARSER_HELPER_INCLUDED_
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerParseHelpercpp"></a>
<div class="delfile"><h4>Deleted: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ParseHelper.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ParseHelper.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ParseHelper.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,1600 +0,0 @@
</span><del>-//
-// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-
-#include &quot;compiler/ParseHelper.h&quot;
-
-#include &lt;stdarg.h&gt;
-#include &lt;stdio.h&gt;
-
-#include &quot;compiler/glslang.h&quot;
-#include &quot;compiler/preprocessor/SourceLocation.h&quot;
-
-///////////////////////////////////////////////////////////////////////
-//
-// Sub- vector and matrix fields
-//
-////////////////////////////////////////////////////////////////////////
-
-//
-// Look at a '.' field selector string and change it into offsets
-// for a vector.
-//
-bool TParseContext::parseVectorFields(const TString&amp; compString, int vecSize, TVectorFields&amp; fields, const TSourceLoc&amp; line)
-{
-    fields.num = (int) compString.size();
-    if (fields.num &gt; 4) {
-        error(line, &quot;illegal vector field selection&quot;, compString.c_str());
-        return false;
-    }
-
-    enum {
-        exyzw,
-        ergba,
-        estpq
-    } fieldSet[4];
-
-    for (int i = 0; i &lt; fields.num; ++i) {
-        switch (compString[i])  {
-        case 'x': 
-            fields.offsets[i] = 0;
-            fieldSet[i] = exyzw;
-            break;
-        case 'r': 
-            fields.offsets[i] = 0;
-            fieldSet[i] = ergba;
-            break;
-        case 's':
-            fields.offsets[i] = 0;
-            fieldSet[i] = estpq;
-            break;
-        case 'y': 
-            fields.offsets[i] = 1;
-            fieldSet[i] = exyzw;
-            break;
-        case 'g': 
-            fields.offsets[i] = 1;
-            fieldSet[i] = ergba;
-            break;
-        case 't':
-            fields.offsets[i] = 1;
-            fieldSet[i] = estpq;
-            break;
-        case 'z': 
-            fields.offsets[i] = 2;
-            fieldSet[i] = exyzw;
-            break;
-        case 'b': 
-            fields.offsets[i] = 2;
-            fieldSet[i] = ergba;
-            break;
-        case 'p':
-            fields.offsets[i] = 2;
-            fieldSet[i] = estpq;
-            break;
-        
-        case 'w': 
-            fields.offsets[i] = 3;
-            fieldSet[i] = exyzw;
-            break;
-        case 'a': 
-            fields.offsets[i] = 3;
-            fieldSet[i] = ergba;
-            break;
-        case 'q':
-            fields.offsets[i] = 3;
-            fieldSet[i] = estpq;
-            break;
-        default:
-            error(line, &quot;illegal vector field selection&quot;, compString.c_str());
-            return false;
-        }
-    }
-
-    for (int i = 0; i &lt; fields.num; ++i) {
-        if (fields.offsets[i] &gt;= vecSize) {
-            error(line, &quot;vector field selection out of range&quot;,  compString.c_str());
-            return false;
-        }
-
-        if (i &gt; 0) {
-            if (fieldSet[i] != fieldSet[i-1]) {
-                error(line, &quot;illegal - vector component fields not from the same set&quot;, compString.c_str());
-                return false;
-            }
-        }
-    }
-
-    return true;
-}
-
-
-//
-// Look at a '.' field selector string and change it into offsets
-// for a matrix.
-//
-bool TParseContext::parseMatrixFields(const TString&amp; compString, int matSize, TMatrixFields&amp; fields, const TSourceLoc&amp; line)
-{
-    fields.wholeRow = false;
-    fields.wholeCol = false;
-    fields.row = -1;
-    fields.col = -1;
-
-    if (compString.size() != 2) {
-        error(line, &quot;illegal length of matrix field selection&quot;, compString.c_str());
-        return false;
-    }
-
-    if (compString[0] == '_') {
-        if (compString[1] &lt; '0' || compString[1] &gt; '3') {
-            error(line, &quot;illegal matrix field selection&quot;, compString.c_str());
-            return false;
-        }
-        fields.wholeCol = true;
-        fields.col = compString[1] - '0';
-    } else if (compString[1] == '_') {
-        if (compString[0] &lt; '0' || compString[0] &gt; '3') {
-            error(line, &quot;illegal matrix field selection&quot;, compString.c_str());
-            return false;
-        }
-        fields.wholeRow = true;
-        fields.row = compString[0] - '0';
-    } else {
-        if (compString[0] &lt; '0' || compString[0] &gt; '3' ||
-            compString[1] &lt; '0' || compString[1] &gt; '3') {
-            error(line, &quot;illegal matrix field selection&quot;, compString.c_str());
-            return false;
-        }
-        fields.row = compString[0] - '0';
-        fields.col = compString[1] - '0';
-    }
-
-    if (fields.row &gt;= matSize || fields.col &gt;= matSize) {
-        error(line, &quot;matrix field selection out of range&quot;, compString.c_str());
-        return false;
-    }
-
-    return true;
-}
-
-///////////////////////////////////////////////////////////////////////
-//
-// Errors
-//
-////////////////////////////////////////////////////////////////////////
-
-//
-// Track whether errors have occurred.
-//
-void TParseContext::recover()
-{
-}
-
-//
-// Used by flex/bison to output all syntax and parsing errors.
-//
-void TParseContext::error(const TSourceLoc&amp; loc,
-                          const char* reason, const char* token, 
-                          const char* extraInfo)
-{
-    pp::SourceLocation srcLoc;
-    srcLoc.file = loc.first_file;
-    srcLoc.line = loc.first_line;
-    diagnostics.writeInfo(pp::Diagnostics::ERROR,
-                          srcLoc, reason, token, extraInfo);
-
-}
-
-void TParseContext::warning(const TSourceLoc&amp; loc,
-                            const char* reason, const char* token,
-                            const char* extraInfo) {
-    pp::SourceLocation srcLoc;
-    srcLoc.file = loc.first_file;
-    srcLoc.line = loc.first_line;
-    diagnostics.writeInfo(pp::Diagnostics::WARNING,
-                          srcLoc, reason, token, extraInfo);
-}
-
-void TParseContext::trace(const char* str)
-{
-    diagnostics.writeDebug(str);
-}
-
-//
-// Same error message for all places assignments don't work.
-//
-void TParseContext::assignError(const TSourceLoc&amp; line, const char* op, TString left, TString right)
-{
-    std::stringstream extraInfoStream;
-    extraInfoStream &lt;&lt; &quot;cannot convert from '&quot; &lt;&lt; right &lt;&lt; &quot;' to '&quot; &lt;&lt; left &lt;&lt; &quot;'&quot;;
-    std::string extraInfo = extraInfoStream.str();
-    error(line, &quot;&quot;, op, extraInfo.c_str());
-}
-
-//
-// Same error message for all places unary operations don't work.
-//
-void TParseContext::unaryOpError(const TSourceLoc&amp; line, const char* op, TString operand)
-{
-    std::stringstream extraInfoStream;
-    extraInfoStream &lt;&lt; &quot;no operation '&quot; &lt;&lt; op &lt;&lt; &quot;' exists that takes an operand of type &quot; &lt;&lt; operand 
-                    &lt;&lt; &quot; (or there is no acceptable conversion)&quot;;
-    std::string extraInfo = extraInfoStream.str();
-    error(line, &quot; wrong operand type&quot;, op, extraInfo.c_str());
-}
-
-//
-// Same error message for all binary operations don't work.
-//
-void TParseContext::binaryOpError(const TSourceLoc&amp; line, const char* op, TString left, TString right)
-{
-    std::stringstream extraInfoStream;
-    extraInfoStream &lt;&lt; &quot;no operation '&quot; &lt;&lt; op &lt;&lt; &quot;' exists that takes a left-hand operand of type '&quot; &lt;&lt; left 
-                    &lt;&lt; &quot;' and a right operand of type '&quot; &lt;&lt; right &lt;&lt; &quot;' (or there is no acceptable conversion)&quot;;
-    std::string extraInfo = extraInfoStream.str();
-    error(line, &quot; wrong operand types &quot;, op, extraInfo.c_str()); 
-}
-
-bool TParseContext::precisionErrorCheck(const TSourceLoc&amp; line, TPrecision precision, TBasicType type){
-    if (!checksPrecisionErrors)
-        return false;
-    switch( type ){
-    case EbtFloat:
-        if( precision == EbpUndefined ){
-            error( line, &quot;No precision specified for (float)&quot;, &quot;&quot; );
-            return true;
-        }
-        break;
-    case EbtInt:
-        if( precision == EbpUndefined ){
-            error( line, &quot;No precision specified (int)&quot;, &quot;&quot; );
-            return true;
-        }
-        break;
-    default:
-        return false;
-    }
-    return false;
-}
-
-//
-// Both test and if necessary, spit out an error, to see if the node is really
-// an l-value that can be operated on this way.
-//
-// Returns true if the was an error.
-//
-bool TParseContext::lValueErrorCheck(const TSourceLoc&amp; line, const char* op, TIntermTyped* node)
-{
-    TIntermSymbol* symNode = node-&gt;getAsSymbolNode();
-    TIntermBinary* binaryNode = node-&gt;getAsBinaryNode();
-
-    if (binaryNode) {
-        bool errorReturn;
-
-        switch(binaryNode-&gt;getOp()) {
-        case EOpIndexDirect:
-        case EOpIndexIndirect:
-        case EOpIndexDirectStruct:
-            return lValueErrorCheck(line, op, binaryNode-&gt;getLeft());
-        case EOpVectorSwizzle:
-            errorReturn = lValueErrorCheck(line, op, binaryNode-&gt;getLeft());
-            if (!errorReturn) {
-                int offset[4] = {0,0,0,0};
-
-                TIntermTyped* rightNode = binaryNode-&gt;getRight();
-                TIntermAggregate *aggrNode = rightNode-&gt;getAsAggregate();
-                
-                for (TIntermSequence::iterator p = aggrNode-&gt;getSequence().begin(); 
-                                               p != aggrNode-&gt;getSequence().end(); p++) {
-                    int value = (*p)-&gt;getAsTyped()-&gt;getAsConstantUnion()-&gt;getIConst(0);
-                    offset[value]++;     
-                    if (offset[value] &gt; 1) {
-                        error(line, &quot; l-value of swizzle cannot have duplicate components&quot;, op);
-
-                        return true;
-                    }
-                }
-            } 
-
-            return errorReturn;
-        default: 
-            break;
-        }
-        error(line, &quot; l-value required&quot;, op);
-
-        return true;
-    }
-
-
-    const char* symbol = 0;
-    if (symNode != 0)
-        symbol = symNode-&gt;getSymbol().c_str();
-
-    const char* message = 0;
-    switch (node-&gt;getQualifier()) {
-    case EvqConst:          message = &quot;can't modify a const&quot;;        break;
-    case EvqConstReadOnly:  message = &quot;can't modify a const&quot;;        break;
-    case EvqAttribute:      message = &quot;can't modify an attribute&quot;;   break;
-    case EvqUniform:        message = &quot;can't modify a uniform&quot;;      break;
-    case EvqVaryingIn:      message = &quot;can't modify a varying&quot;;      break;
-    case EvqFragCoord:      message = &quot;can't modify gl_FragCoord&quot;;   break;
-    case EvqFrontFacing:    message = &quot;can't modify gl_FrontFacing&quot;; break;
-    case EvqPointCoord:     message = &quot;can't modify gl_PointCoord&quot;;  break;
-    default:
-
-        //
-        // Type that can't be written to?
-        //
-        switch (node-&gt;getBasicType()) {
-        case EbtSampler2D:
-        case EbtSamplerCube:
-            message = &quot;can't modify a sampler&quot;;
-            break;
-        case EbtVoid:
-            message = &quot;can't modify void&quot;;
-            break;
-        default: 
-            break;
-        }
-    }
-
-    if (message == 0 &amp;&amp; binaryNode == 0 &amp;&amp; symNode == 0) {
-        error(line, &quot; l-value required&quot;, op);
-
-        return true;
-    }
-
-
-    //
-    // Everything else is okay, no error.
-    //
-    if (message == 0)
-        return false;
-
-    //
-    // If we get here, we have an error and a message.
-    //
-    if (symNode) {
-        std::stringstream extraInfoStream;
-        extraInfoStream &lt;&lt; &quot;\&quot;&quot; &lt;&lt; symbol &lt;&lt; &quot;\&quot; (&quot; &lt;&lt; message &lt;&lt; &quot;)&quot;;
-        std::string extraInfo = extraInfoStream.str();
-        error(line, &quot; l-value required&quot;, op, extraInfo.c_str());
-    }
-    else {
-        std::stringstream extraInfoStream;
-        extraInfoStream &lt;&lt; &quot;(&quot; &lt;&lt; message &lt;&lt; &quot;)&quot;;
-        std::string extraInfo = extraInfoStream.str();
-        error(line, &quot; l-value required&quot;, op, extraInfo.c_str());
-    }
-
-    return true;
-}
-
-//
-// Both test, and if necessary spit out an error, to see if the node is really
-// a constant.
-//
-// Returns true if the was an error.
-//
-bool TParseContext::constErrorCheck(TIntermTyped* node)
-{
-    if (node-&gt;getQualifier() == EvqConst)
-        return false;
-
-    error(node-&gt;getLine(), &quot;constant expression required&quot;, &quot;&quot;);
-
-    return true;
-}
-
-//
-// Both test, and if necessary spit out an error, to see if the node is really
-// an integer.
-//
-// Returns true if the was an error.
-//
-bool TParseContext::integerErrorCheck(TIntermTyped* node, const char* token)
-{
-    if (node-&gt;getBasicType() == EbtInt &amp;&amp; node-&gt;getNominalSize() == 1)
-        return false;
-
-    error(node-&gt;getLine(), &quot;integer expression required&quot;, token);
-
-    return true;
-}
-
-//
-// Both test, and if necessary spit out an error, to see if we are currently
-// globally scoped.
-//
-// Returns true if the was an error.
-//
-bool TParseContext::globalErrorCheck(const TSourceLoc&amp; line, bool global, const char* token)
-{
-    if (global)
-        return false;
-
-    error(line, &quot;only allowed at global scope&quot;, token);
-
-    return true;
-}
-
-//
-// For now, keep it simple:  if it starts &quot;gl_&quot;, it's reserved, independent
-// of scope.  Except, if the symbol table is at the built-in push-level,
-// which is when we are parsing built-ins.
-// Also checks for &quot;webgl_&quot; and &quot;_webgl_&quot; reserved identifiers if parsing a
-// webgl shader.
-//
-// Returns true if there was an error.
-//
-bool TParseContext::reservedErrorCheck(const TSourceLoc&amp; line, const TString&amp; identifier)
-{
-    static const char* reservedErrMsg = &quot;reserved built-in name&quot;;
-    if (!symbolTable.atBuiltInLevel()) {
-        if (identifier.compare(0, 3, &quot;gl_&quot;) == 0) {
-            error(line, reservedErrMsg, &quot;gl_&quot;);
-            return true;
-        }
-        if (isWebGLBasedSpec(shaderSpec)) {
-            if (identifier.compare(0, 6, &quot;webgl_&quot;) == 0) {
-                error(line, reservedErrMsg, &quot;webgl_&quot;);
-                return true;
-            }
-            if (identifier.compare(0, 7, &quot;_webgl_&quot;) == 0) {
-                error(line, reservedErrMsg, &quot;_webgl_&quot;);
-                return true;
-            }
-            if (shaderSpec == SH_CSS_SHADERS_SPEC &amp;&amp; identifier.compare(0, 4, &quot;css_&quot;) == 0) {
-                error(line, reservedErrMsg, &quot;css_&quot;);
-                return true;
-            }
-        }
-        if (identifier.find(&quot;__&quot;) != TString::npos) {
-            error(line, &quot;identifiers containing two consecutive underscores (__) are reserved as possible future keywords&quot;, identifier.c_str());
-            return true;
-        }
-    }
-
-    return false;
-}
-
-//
-// Make sure there is enough data provided to the constructor to build
-// something of the type of the constructor.  Also returns the type of
-// the constructor.
-//
-// Returns true if there was an error in construction.
-//
-bool TParseContext::constructorErrorCheck(const TSourceLoc&amp; line, TIntermNode* node, TFunction&amp; function, TOperator op, TType* type)
-{
-    *type = function.getReturnType();
-
-    bool constructingMatrix = false;
-    switch(op) {
-    case EOpConstructMat2:
-    case EOpConstructMat3:
-    case EOpConstructMat4:
-        constructingMatrix = true;
-        break;
-    default: 
-        break;
-    }
-
-    //
-    // Note: It's okay to have too many components available, but not okay to have unused
-    // arguments.  'full' will go to true when enough args have been seen.  If we loop
-    // again, there is an extra argument, so 'overfull' will become true.
-    //
-
-    size_t size = 0;
-    bool constType = true;
-    bool full = false;
-    bool overFull = false;
-    bool matrixInMatrix = false;
-    bool arrayArg = false;
-    for (size_t i = 0; i &lt; function.getParamCount(); ++i) {
-        const TParameter&amp; param = function.getParam(i);
-        size += param.type-&gt;getObjectSize();
-        
-        if (constructingMatrix &amp;&amp; param.type-&gt;isMatrix())
-            matrixInMatrix = true;
-        if (full)
-            overFull = true;
-        if (op != EOpConstructStruct &amp;&amp; !type-&gt;isArray() &amp;&amp; size &gt;= type-&gt;getObjectSize())
-            full = true;
-        if (param.type-&gt;getQualifier() != EvqConst)
-            constType = false;
-        if (param.type-&gt;isArray())
-            arrayArg = true;
-    }
-    
-    if (constType)
-        type-&gt;setQualifier(EvqConst);
-
-    if (type-&gt;isArray() &amp;&amp; static_cast&lt;size_t&gt;(type-&gt;getArraySize()) != function.getParamCount()) {
-        error(line, &quot;array constructor needs one argument per array element&quot;, &quot;constructor&quot;);
-        return true;
-    }
-
-    if (arrayArg &amp;&amp; op != EOpConstructStruct) {
-        error(line, &quot;constructing from a non-dereferenced array&quot;, &quot;constructor&quot;);
-        return true;
-    }
-
-    if (matrixInMatrix &amp;&amp; !type-&gt;isArray()) {
-        if (function.getParamCount() != 1) {
-          error(line, &quot;constructing matrix from matrix can only take one argument&quot;, &quot;constructor&quot;);
-          return true;
-        }
-    }
-
-    if (overFull) {
-        error(line, &quot;too many arguments&quot;, &quot;constructor&quot;);
-        return true;
-    }
-    
-    if (op == EOpConstructStruct &amp;&amp; !type-&gt;isArray() &amp;&amp; int(type-&gt;getStruct()-&gt;fields().size()) != function.getParamCount()) {
-        error(line, &quot;Number of constructor parameters does not match the number of structure fields&quot;, &quot;constructor&quot;);
-        return true;
-    }
-
-    if (!type-&gt;isMatrix() || !matrixInMatrix) {
-        if ((op != EOpConstructStruct &amp;&amp; size != 1 &amp;&amp; size &lt; type-&gt;getObjectSize()) ||
-            (op == EOpConstructStruct &amp;&amp; size &lt; type-&gt;getObjectSize())) {
-            error(line, &quot;not enough data provided for construction&quot;, &quot;constructor&quot;);
-            return true;
-        }
-    }
-
-    TIntermTyped *typed = node ? node-&gt;getAsTyped() : 0;
-    if (typed == 0) {
-        error(line, &quot;constructor argument does not have a type&quot;, &quot;constructor&quot;);
-        return true;
-    }
-    if (op != EOpConstructStruct &amp;&amp; IsSampler(typed-&gt;getBasicType())) {
-        error(line, &quot;cannot convert a sampler&quot;, &quot;constructor&quot;);
-        return true;
-    }
-    if (typed-&gt;getBasicType() == EbtVoid) {
-        error(line, &quot;cannot convert a void&quot;, &quot;constructor&quot;);
-        return true;
-    }
-
-    return false;
-}
-
-// This function checks to see if a void variable has been declared and raise an error message for such a case
-//
-// returns true in case of an error
-//
-bool TParseContext::voidErrorCheck(const TSourceLoc&amp; line, const TString&amp; identifier, const TPublicType&amp; pubType)
-{
-    if (pubType.type == EbtVoid) {
-        error(line, &quot;illegal use of type 'void'&quot;, identifier.c_str());
-        return true;
-    } 
-
-    return false;
-}
-
-// This function checks to see if the node (for the expression) contains a scalar boolean expression or not
-//
-// returns true in case of an error
-//
-bool TParseContext::boolErrorCheck(const TSourceLoc&amp; line, const TIntermTyped* type)
-{
-    if (type-&gt;getBasicType() != EbtBool || type-&gt;isArray() || type-&gt;isMatrix() || type-&gt;isVector()) {
-        error(line, &quot;boolean expression expected&quot;, &quot;&quot;);
-        return true;
-    } 
-
-    return false;
-}
-
-// This function checks to see if the node (for the expression) contains a scalar boolean expression or not
-//
-// returns true in case of an error
-//
-bool TParseContext::boolErrorCheck(const TSourceLoc&amp; line, const TPublicType&amp; pType)
-{
-    if (pType.type != EbtBool || pType.array || pType.matrix || (pType.size &gt; 1)) {
-        error(line, &quot;boolean expression expected&quot;, &quot;&quot;);
-        return true;
-    } 
-
-    return false;
-}
-
-bool TParseContext::samplerErrorCheck(const TSourceLoc&amp; line, const TPublicType&amp; pType, const char* reason)
-{
-    if (pType.type == EbtStruct) {
-        if (containsSampler(*pType.userDef)) {
-            error(line, reason, getBasicString(pType.type), &quot;(structure contains a sampler)&quot;);
-        
-            return true;
-        }
-        
-        return false;
-    } else if (IsSampler(pType.type)) {
-        error(line, reason, getBasicString(pType.type));
-
-        return true;
-    }
-
-    return false;
-}
-
-bool TParseContext::structQualifierErrorCheck(const TSourceLoc&amp; line, const TPublicType&amp; pType)
-{
-    if ((pType.qualifier == EvqVaryingIn || pType.qualifier == EvqVaryingOut || pType.qualifier == EvqAttribute) &amp;&amp;
-        pType.type == EbtStruct) {
-        error(line, &quot;cannot be used with a structure&quot;, getQualifierString(pType.qualifier));
-        
-        return true;
-    }
-
-    if (pType.qualifier != EvqUniform &amp;&amp; samplerErrorCheck(line, pType, &quot;samplers must be uniform&quot;))
-        return true;
-
-    return false;
-}
-
-bool TParseContext::parameterSamplerErrorCheck(const TSourceLoc&amp; line, TQualifier qualifier, const TType&amp; type)
-{
-    if ((qualifier == EvqOut || qualifier == EvqInOut) &amp;&amp; 
-             type.getBasicType() != EbtStruct &amp;&amp; IsSampler(type.getBasicType())) {
-        error(line, &quot;samplers cannot be output parameters&quot;, type.getBasicString());
-        return true;
-    }
-
-    return false;
-}
-
-bool TParseContext::containsSampler(TType&amp; type)
-{
-    if (IsSampler(type.getBasicType()))
-        return true;
-
-    if (type.getBasicType() == EbtStruct) {
-        const TFieldList&amp; fields = type.getStruct()-&gt;fields();
-        for (unsigned int i = 0; i &lt; fields.size(); ++i) {
-            if (containsSampler(*fields[i]-&gt;type()))
-                return true;
-        }
-    }
-
-    return false;
-}
-
-//
-// Do size checking for an array type's size.
-//
-// Returns true if there was an error.
-//
-bool TParseContext::arraySizeErrorCheck(const TSourceLoc&amp; line, TIntermTyped* expr, int&amp; size)
-{
-    TIntermConstantUnion* constant = expr-&gt;getAsConstantUnion();
-    if (constant == 0 || constant-&gt;getBasicType() != EbtInt) {
-        error(line, &quot;array size must be a constant integer expression&quot;, &quot;&quot;);
-        return true;
-    }
-
-    size = constant-&gt;getIConst(0);
-
-    if (size &lt;= 0) {
-        error(line, &quot;array size must be a positive integer&quot;, &quot;&quot;);
-        size = 1;
-        return true;
-    }
-
-    return false;
-}
-
-//
-// See if this qualifier can be an array.
-//
-// Returns true if there is an error.
-//
-bool TParseContext::arrayQualifierErrorCheck(const TSourceLoc&amp; line, TPublicType type)
-{
-    if ((type.qualifier == EvqAttribute) || (type.qualifier == EvqConst)) {
-        error(line, &quot;cannot declare arrays of this qualifier&quot;, TType(type).getCompleteString().c_str());
-        return true;
-    }
-
-    return false;
-}
-
-//
-// See if this type can be an array.
-//
-// Returns true if there is an error.
-//
-bool TParseContext::arrayTypeErrorCheck(const TSourceLoc&amp; line, TPublicType type)
-{
-    //
-    // Can the type be an array?
-    //
-    if (type.array) {
-        error(line, &quot;cannot declare arrays of arrays&quot;, TType(type).getCompleteString().c_str());
-        return true;
-    }
-
-    return false;
-}
-
-//
-// Do all the semantic checking for declaring an array, with and 
-// without a size, and make the right changes to the symbol table.
-//
-// size == 0 means no specified size.
-//
-// Returns true if there was an error.
-//
-bool TParseContext::arrayErrorCheck(const TSourceLoc&amp; line, TString&amp; identifier, TPublicType type, TVariable*&amp; variable)
-{
-    //
-    // Don't check for reserved word use until after we know it's not in the symbol table,
-    // because reserved arrays can be redeclared.
-    //
-
-    bool builtIn = false; 
-    bool sameScope = false;
-    TSymbol* symbol = symbolTable.find(identifier, &amp;builtIn, &amp;sameScope);
-    if (symbol == 0 || !sameScope) {
-        if (reservedErrorCheck(line, identifier))
-            return true;
-        
-        variable = new TVariable(&amp;identifier, TType(type));
-
-        if (type.arraySize)
-            variable-&gt;getType().setArraySize(type.arraySize);
-
-        if (! symbolTable.insert(*variable)) {
-            delete variable;
-            error(line, &quot;INTERNAL ERROR inserting new symbol&quot;, identifier.c_str());
-            return true;
-        }
-    } else {
-        if (! symbol-&gt;isVariable()) {
-            error(line, &quot;variable expected&quot;, identifier.c_str());
-            return true;
-        }
-
-        variable = static_cast&lt;TVariable*&gt;(symbol);
-        if (! variable-&gt;getType().isArray()) {
-            error(line, &quot;redeclaring non-array as array&quot;, identifier.c_str());
-            return true;
-        }
-        if (variable-&gt;getType().getArraySize() &gt; 0) {
-            error(line, &quot;redeclaration of array with size&quot;, identifier.c_str());
-            return true;
-        }
-        
-        if (! variable-&gt;getType().sameElementType(TType(type))) {
-            error(line, &quot;redeclaration of array with a different type&quot;, identifier.c_str());
-            return true;
-        }
-
-        if (type.arraySize)
-            variable-&gt;getType().setArraySize(type.arraySize);
-    } 
-
-    if (voidErrorCheck(line, identifier, type))
-        return true;
-
-    return false;
-}
-
-//
-// Enforce non-initializer type/qualifier rules.
-//
-// Returns true if there was an error.
-//
-bool TParseContext::nonInitConstErrorCheck(const TSourceLoc&amp; line, TString&amp; identifier, TPublicType&amp; type, bool array)
-{
-    if (type.qualifier == EvqConst)
-    {
-        // Make the qualifier make sense.
-        type.qualifier = EvqTemporary;
-        
-        if (array)
-        {
-            error(line, &quot;arrays may not be declared constant since they cannot be initialized&quot;, identifier.c_str());
-        }
-        else if (type.isStructureContainingArrays())
-        {
-            error(line, &quot;structures containing arrays may not be declared constant since they cannot be initialized&quot;, identifier.c_str());
-        }
-        else
-        {
-            error(line, &quot;variables with qualifier 'const' must be initialized&quot;, identifier.c_str());
-        }
-
-        return true;
-    }
-
-    return false;
-}
-
-//
-// Do semantic checking for a variable declaration that has no initializer,
-// and update the symbol table.
-//
-// Returns true if there was an error.
-//
-bool TParseContext::nonInitErrorCheck(const TSourceLoc&amp; line, TString&amp; identifier, TPublicType&amp; type, TVariable*&amp; variable)
-{
-    if (reservedErrorCheck(line, identifier))
-        recover();
-
-    variable = new TVariable(&amp;identifier, TType(type));
-
-    if (! symbolTable.insert(*variable)) {
-        error(line, &quot;redefinition&quot;, variable-&gt;getName().c_str());
-        delete variable;
-        variable = 0;
-        return true;
-    }
-
-    if (voidErrorCheck(line, identifier, type))
-        return true;
-
-    return false;
-}
-
-bool TParseContext::paramErrorCheck(const TSourceLoc&amp; line, TQualifier qualifier, TQualifier paramQualifier, TType* type)
-{    
-    if (qualifier != EvqConst &amp;&amp; qualifier != EvqTemporary) {
-        error(line, &quot;qualifier not allowed on function parameter&quot;, getQualifierString(qualifier));
-        return true;
-    }
-    if (qualifier == EvqConst &amp;&amp; paramQualifier != EvqIn) {
-        error(line, &quot;qualifier not allowed with &quot;, getQualifierString(qualifier), getQualifierString(paramQualifier));
-        return true;
-    }
-
-    if (qualifier == EvqConst)
-        type-&gt;setQualifier(EvqConstReadOnly);
-    else
-        type-&gt;setQualifier(paramQualifier);
-
-    return false;
-}
-
-bool TParseContext::extensionErrorCheck(const TSourceLoc&amp; line, const TString&amp; extension)
-{
-    const TExtensionBehavior&amp; extBehavior = extensionBehavior();
-    TExtensionBehavior::const_iterator iter = extBehavior.find(extension.c_str());
-    if (iter == extBehavior.end()) {
-        error(line, &quot;extension&quot;, extension.c_str(), &quot;is not supported&quot;);
-        return true;
-    }
-    // In GLSL ES, an extension's default behavior is &quot;disable&quot;.
-    if (iter-&gt;second == EBhDisable || iter-&gt;second == EBhUndefined) {
-        error(line, &quot;extension&quot;, extension.c_str(), &quot;is disabled&quot;);
-        return true;
-    }
-    if (iter-&gt;second == EBhWarn) {
-        warning(line, &quot;extension&quot;, extension.c_str(), &quot;is being used&quot;);
-        return false;
-    }
-
-    return false;
-}
-
-bool TParseContext::supportsExtension(const char* extension)
-{
-    const TExtensionBehavior&amp; extbehavior = extensionBehavior();
-    TExtensionBehavior::const_iterator iter = extbehavior.find(extension);
-    return (iter != extbehavior.end());
-}
-
-bool TParseContext::isExtensionEnabled(const char* extension) const
-{
-    const TExtensionBehavior&amp; extbehavior = extensionBehavior();
-    std::map&lt;std::string, TBehavior&gt;::const_iterator iter = extbehavior.find(extension);
-
-    if (iter == extbehavior.end())
-    {
-        return false;
-    }
-
-    return (iter-&gt;second == EBhEnable || iter-&gt;second == EBhRequire);
-}
-
-/////////////////////////////////////////////////////////////////////////////////
-//
-// Non-Errors.
-//
-/////////////////////////////////////////////////////////////////////////////////
-
-//
-// Look up a function name in the symbol table, and make sure it is a function.
-//
-// Return the function symbol if found, otherwise 0.
-//
-const TFunction* TParseContext::findFunction(const TSourceLoc&amp; line, TFunction* call, bool *builtIn)
-{
-    // First find by unmangled name to check whether the function name has been
-    // hidden by a variable name or struct typename.
-    // If a function is found, check for one with a matching argument list.
-    const TSymbol* symbol = symbolTable.find(call-&gt;getName(), builtIn);
-    if (symbol == 0 || symbol-&gt;isFunction()) {
-        symbol = symbolTable.find(call-&gt;getMangledName(), builtIn);
-    }
-
-    if (symbol == 0) {
-        error(line, &quot;no matching overloaded function found&quot;, call-&gt;getName().c_str());
-        return 0;
-    }
-
-    if (!symbol-&gt;isFunction()) {
-        error(line, &quot;function name expected&quot;, call-&gt;getName().c_str());
-        return 0;
-    }
-
-    return static_cast&lt;const TFunction*&gt;(symbol);
-}
-
-//
-// Initializers show up in several places in the grammar.  Have one set of
-// code to handle them here.
-//
-bool TParseContext::executeInitializer(const TSourceLoc&amp; line, TString&amp; identifier, TPublicType&amp; pType, 
-                                       TIntermTyped* initializer, TIntermNode*&amp; intermNode, TVariable* variable)
-{
-    TType type = TType(pType);
-
-    if (variable == 0) {
-        if (reservedErrorCheck(line, identifier))
-            return true;
-
-        if (voidErrorCheck(line, identifier, pType))
-            return true;
-
-        //
-        // add variable to symbol table
-        //
-        variable = new TVariable(&amp;identifier, type);
-        if (! symbolTable.insert(*variable)) {
-            error(line, &quot;redefinition&quot;, variable-&gt;getName().c_str());
-            return true;
-            // don't delete variable, it's used by error recovery, and the pool 
-            // pop will take care of the memory
-        }
-    }
-
-    //
-    // identifier must be of type constant, a global, or a temporary
-    //
-    TQualifier qualifier = variable-&gt;getType().getQualifier();
-    if ((qualifier != EvqTemporary) &amp;&amp; (qualifier != EvqGlobal) &amp;&amp; (qualifier != EvqConst)) {
-        error(line, &quot; cannot initialize this type of qualifier &quot;, variable-&gt;getType().getQualifierString());
-        return true;
-    }
-    //
-    // test for and propagate constant
-    //
-
-    if (qualifier == EvqConst) {
-        if (qualifier != initializer-&gt;getType().getQualifier()) {
-            std::stringstream extraInfoStream;
-            extraInfoStream &lt;&lt; &quot;'&quot; &lt;&lt; variable-&gt;getType().getCompleteString() &lt;&lt; &quot;'&quot;;
-            std::string extraInfo = extraInfoStream.str();
-            error(line, &quot; assigning non-constant to&quot;, &quot;=&quot;, extraInfo.c_str());
-            variable-&gt;getType().setQualifier(EvqTemporary);
-            return true;
-        }
-        if (type != initializer-&gt;getType()) {
-            error(line, &quot; non-matching types for const initializer &quot;, 
-                variable-&gt;getType().getQualifierString());
-            variable-&gt;getType().setQualifier(EvqTemporary);
-            return true;
-        }
-        if (initializer-&gt;getAsConstantUnion()) { 
-            variable-&gt;shareConstPointer(initializer-&gt;getAsConstantUnion()-&gt;getUnionArrayPointer());
-        } else if (initializer-&gt;getAsSymbolNode()) {
-            const TSymbol* symbol = symbolTable.find(initializer-&gt;getAsSymbolNode()-&gt;getSymbol());
-            const TVariable* tVar = static_cast&lt;const TVariable*&gt;(symbol);
-
-            ConstantUnion* constArray = tVar-&gt;getConstPointer();
-            variable-&gt;shareConstPointer(constArray);
-        } else {
-            std::stringstream extraInfoStream;
-            extraInfoStream &lt;&lt; &quot;'&quot; &lt;&lt; variable-&gt;getType().getCompleteString() &lt;&lt; &quot;'&quot;;
-            std::string extraInfo = extraInfoStream.str();
-            error(line, &quot; cannot assign to&quot;, &quot;=&quot;, extraInfo.c_str());
-            variable-&gt;getType().setQualifier(EvqTemporary);
-            return true;
-        }
-    }

-    if (qualifier != EvqConst) {
-        TIntermSymbol* intermSymbol = intermediate.addSymbol(variable-&gt;getUniqueId(), variable-&gt;getName(), variable-&gt;getType(), line);
-        intermNode = intermediate.addAssign(EOpInitialize, intermSymbol, initializer, line);
-        if (intermNode == 0) {
-            assignError(line, &quot;=&quot;, intermSymbol-&gt;getCompleteString(), initializer-&gt;getCompleteString());
-            return true;
-        }
-    } else 
-        intermNode = 0;
-
-    return false;
-}
-
-bool TParseContext::areAllChildConst(TIntermAggregate* aggrNode)
-{
-    ASSERT(aggrNode != NULL);
-    if (!aggrNode-&gt;isConstructor())
-        return false;
-
-    bool allConstant = true;
-
-    // check if all the child nodes are constants so that they can be inserted into 
-    // the parent node
-    TIntermSequence &amp;sequence = aggrNode-&gt;getSequence() ;
-    for (TIntermSequence::iterator p = sequence.begin(); p != sequence.end(); ++p) {
-        if (!(*p)-&gt;getAsTyped()-&gt;getAsConstantUnion())
-            return false;
-    }
-
-    return allConstant;
-}
-
-// This function is used to test for the correctness of the parameters passed to various constructor functions
-// and also convert them to the right datatype if it is allowed and required. 
-//
-// Returns 0 for an error or the constructed node (aggregate or typed) for no error.
-//
-TIntermTyped* TParseContext::addConstructor(TIntermNode* node, const TType* type, TOperator op, TFunction* fnCall, const TSourceLoc&amp; line)
-{
-    if (node == 0)
-        return 0;
-
-    TIntermAggregate* aggrNode = node-&gt;getAsAggregate();
-    
-    TFieldList::const_iterator memberFields;
-    if (op == EOpConstructStruct)
-        memberFields = type-&gt;getStruct()-&gt;fields().begin();
-    
-    TType elementType = *type;
-    if (type-&gt;isArray())
-        elementType.clearArrayness();
-
-    bool singleArg;
-    if (aggrNode) {
-        if (aggrNode-&gt;getOp() != EOpNull || aggrNode-&gt;getSequence().size() == 1)
-            singleArg = true;
-        else
-            singleArg = false;
-    } else
-        singleArg = true;
-
-    TIntermTyped *newNode;
-    if (singleArg) {
-        // If structure constructor or array constructor is being called 
-        // for only one parameter inside the structure, we need to call constructStruct function once.
-        if (type-&gt;isArray())
-            newNode = constructStruct(node, &amp;elementType, 1, node-&gt;getLine(), false);
-        else if (op == EOpConstructStruct)
-            newNode = constructStruct(node, (*memberFields)-&gt;type(), 1, node-&gt;getLine(), false);
-        else
-            newNode = constructBuiltIn(type, op, node, node-&gt;getLine(), false);
-
-        if (newNode &amp;&amp; newNode-&gt;getAsAggregate()) {
-            TIntermTyped* constConstructor = foldConstConstructor(newNode-&gt;getAsAggregate(), *type);
-            if (constConstructor)
-                return constConstructor;
-        }
-
-        return newNode;
-    }
-    
-    //
-    // Handle list of arguments.
-    //
-    TIntermSequence &amp;sequenceVector = aggrNode-&gt;getSequence() ;    // Stores the information about the parameter to the constructor
-    // if the structure constructor contains more than one parameter, then construct
-    // each parameter
-    
-    int paramCount = 0;  // keeps a track of the constructor parameter number being checked    
-    
-    // for each parameter to the constructor call, check to see if the right type is passed or convert them 
-    // to the right type if possible (and allowed).
-    // for structure constructors, just check if the right type is passed, no conversion is allowed.
-    
-    for (TIntermSequence::iterator p = sequenceVector.begin(); 
-                                   p != sequenceVector.end(); p++, paramCount++) {
-        if (type-&gt;isArray())
-            newNode = constructStruct(*p, &amp;elementType, paramCount+1, node-&gt;getLine(), true);
-        else if (op == EOpConstructStruct)
-            newNode = constructStruct(*p, memberFields[paramCount]-&gt;type(), paramCount+1, node-&gt;getLine(), true);
-        else
-            newNode = constructBuiltIn(type, op, *p, node-&gt;getLine(), true);
-        
-        if (newNode) {
-            *p = newNode;
-        }
-    }
-
-    TIntermTyped* constructor = intermediate.setAggregateOperator(aggrNode, op, line);
-    TIntermTyped* constConstructor = foldConstConstructor(constructor-&gt;getAsAggregate(), *type);
-    if (constConstructor)
-        return constConstructor;
-
-    return constructor;
-}
-
-TIntermTyped* TParseContext::foldConstConstructor(TIntermAggregate* aggrNode, const TType&amp; type)
-{
-    bool canBeFolded = areAllChildConst(aggrNode);
-    aggrNode-&gt;setType(type);
-    if (canBeFolded) {
-        bool returnVal = false;
-        ConstantUnion* unionArray = new ConstantUnion[type.getObjectSize()];
-        if (aggrNode-&gt;getSequence().size() == 1)  {
-            returnVal = intermediate.parseConstTree(aggrNode-&gt;getLine(), aggrNode, unionArray, aggrNode-&gt;getOp(), symbolTable,  type, true);
-        }
-        else {
-            returnVal = intermediate.parseConstTree(aggrNode-&gt;getLine(), aggrNode, unionArray, aggrNode-&gt;getOp(), symbolTable,  type);
-        }
-        if (returnVal)
-            return 0;
-
-        return intermediate.addConstantUnion(unionArray, type, aggrNode-&gt;getLine());
-    }
-
-    return 0;
-}
-
-// Function for constructor implementation. Calls addUnaryMath with appropriate EOp value
-// for the parameter to the constructor (passed to this function). Essentially, it converts
-// the parameter types correctly. If a constructor expects an int (like ivec2) and is passed a 
-// float, then float is converted to int.
-//
-// Returns 0 for an error or the constructed node.
-//
-TIntermTyped* TParseContext::constructBuiltIn(const TType* type, TOperator op, TIntermNode* node, const TSourceLoc&amp; line, bool subset)
-{
-    TIntermTyped* newNode;
-    TOperator basicOp;
-
-    //
-    // First, convert types as needed.
-    //
-    switch (op) {
-    case EOpConstructVec2:
-    case EOpConstructVec3:
-    case EOpConstructVec4:
-    case EOpConstructMat2:
-    case EOpConstructMat3:
-    case EOpConstructMat4:
-    case EOpConstructFloat:
-        basicOp = EOpConstructFloat;
-        break;
-
-    case EOpConstructIVec2:
-    case EOpConstructIVec3:
-    case EOpConstructIVec4:
-    case EOpConstructInt:
-        basicOp = EOpConstructInt;
-        break;
-
-    case EOpConstructBVec2:
-    case EOpConstructBVec3:
-    case EOpConstructBVec4:
-    case EOpConstructBool:
-        basicOp = EOpConstructBool;
-        break;
-
-    default:
-        error(line, &quot;unsupported construction&quot;, &quot;&quot;);
-        recover();
-
-        return 0;
-    }
-    newNode = intermediate.addUnaryMath(basicOp, node, node-&gt;getLine(), symbolTable);
-    if (newNode == 0) {
-        error(line, &quot;can't convert&quot;, &quot;constructor&quot;);
-        return 0;
-    }
-
-    //
-    // Now, if there still isn't an operation to do the construction, and we need one, add one.
-    //
-    
-    // Otherwise, skip out early.
-    if (subset || (newNode != node &amp;&amp; newNode-&gt;getType() == *type))
-        return newNode;
-
-    // setAggregateOperator will insert a new node for the constructor, as needed.
-    return intermediate.setAggregateOperator(newNode, op, line);
-}
-
-// This function tests for the type of the parameters to the structures constructors. Raises
-// an error message if the expected type does not match the parameter passed to the constructor.
-//
-// Returns 0 for an error or the input node itself if the expected and the given parameter types match.
-//
-TIntermTyped* TParseContext::constructStruct(TIntermNode* node, TType* type, int paramCount, const TSourceLoc&amp; line, bool subset)
-{
-    if (*type == node-&gt;getAsTyped()-&gt;getType()) {
-        if (subset)
-            return node-&gt;getAsTyped();
-        else
-            return intermediate.setAggregateOperator(node-&gt;getAsTyped(), EOpConstructStruct, line);
-    } else {
-        std::stringstream extraInfoStream;
-        extraInfoStream &lt;&lt; &quot;cannot convert parameter &quot; &lt;&lt; paramCount 
-                        &lt;&lt; &quot; from '&quot; &lt;&lt; node-&gt;getAsTyped()-&gt;getType().getBasicString()
-                        &lt;&lt; &quot;' to '&quot; &lt;&lt; type-&gt;getBasicString() &lt;&lt; &quot;'&quot;;
-        std::string extraInfo = extraInfoStream.str();
-        error(line, &quot;&quot;, &quot;constructor&quot;, extraInfo.c_str());
-        recover();
-    }
-
-    return 0;
-}
-
-//
-// This function returns the tree representation for the vector field(s) being accessed from contant vector.
-// If only one component of vector is accessed (v.x or v[0] where v is a contant vector), then a contant node is
-// returned, else an aggregate node is returned (for v.xy). The input to this function could either be the symbol
-// node or it could be the intermediate tree representation of accessing fields in a constant structure or column of 
-// a constant matrix.
-//
-TIntermTyped* TParseContext::addConstVectorNode(TVectorFields&amp; fields, TIntermTyped* node, const TSourceLoc&amp; line)
-{
-    TIntermTyped* typedNode;
-    TIntermConstantUnion* tempConstantNode = node-&gt;getAsConstantUnion();
-
-    ConstantUnion *unionArray;
-    if (tempConstantNode) {
-        unionArray = tempConstantNode-&gt;getUnionArrayPointer();
-
-        if (!unionArray) {
-            return node;
-        }
-    } else { // The node has to be either a symbol node or an aggregate node or a tempConstant node, else, its an error
-        error(line, &quot;Cannot offset into the vector&quot;, &quot;Error&quot;);
-        recover();
-
-        return 0;
-    }
-
-    ConstantUnion* constArray = new ConstantUnion[fields.num];
-
-    for (int i = 0; i &lt; fields.num; i++) {
-        if (fields.offsets[i] &gt;= node-&gt;getType().getNominalSize()) {
-            std::stringstream extraInfoStream;
-            extraInfoStream &lt;&lt; &quot;vector field selection out of range '&quot; &lt;&lt; fields.offsets[i] &lt;&lt; &quot;'&quot;;
-            std::string extraInfo = extraInfoStream.str();
-            error(line, &quot;&quot;, &quot;[&quot;, extraInfo.c_str());
-            recover();
-            fields.offsets[i] = 0;
-        }
-        
-        constArray[i] = unionArray[fields.offsets[i]];
-
-    } 
-    typedNode = intermediate.addConstantUnion(constArray, node-&gt;getType(), line);
-    return typedNode;
-}
-
-//
-// This function returns the column being accessed from a constant matrix. The values are retrieved from
-// the symbol table and parse-tree is built for a vector (each column of a matrix is a vector). The input 
-// to the function could either be a symbol node (m[0] where m is a constant matrix)that represents a 
-// constant matrix or it could be the tree representation of the constant matrix (s.m1[0] where s is a constant structure)
-//
-TIntermTyped* TParseContext::addConstMatrixNode(int index, TIntermTyped* node, const TSourceLoc&amp; line)
-{
-    TIntermTyped* typedNode;
-    TIntermConstantUnion* tempConstantNode = node-&gt;getAsConstantUnion();
-
-    if (index &gt;= node-&gt;getType().getNominalSize()) {
-        std::stringstream extraInfoStream;
-        extraInfoStream &lt;&lt; &quot;matrix field selection out of range '&quot; &lt;&lt; index &lt;&lt; &quot;'&quot;;
-        std::string extraInfo = extraInfoStream.str();
-        error(line, &quot;&quot;, &quot;[&quot;, extraInfo.c_str());
-        recover();
-        index = 0;
-    }
-
-    if (tempConstantNode) {
-         ConstantUnion* unionArray = tempConstantNode-&gt;getUnionArrayPointer();
-         int size = tempConstantNode-&gt;getType().getNominalSize();
-         typedNode = intermediate.addConstantUnion(&amp;unionArray[size*index], tempConstantNode-&gt;getType(), line);
-    } else {
-        error(line, &quot;Cannot offset into the matrix&quot;, &quot;Error&quot;);
-        recover();
-
-        return 0;
-    }
-
-    return typedNode;
-}
-
-
-//
-// This function returns an element of an array accessed from a constant array. The values are retrieved from
-// the symbol table and parse-tree is built for the type of the element. The input 
-// to the function could either be a symbol node (a[0] where a is a constant array)that represents a 
-// constant array or it could be the tree representation of the constant array (s.a1[0] where s is a constant structure)
-//
-TIntermTyped* TParseContext::addConstArrayNode(int index, TIntermTyped* node, const TSourceLoc&amp; line)
-{
-    TIntermTyped* typedNode;
-    TIntermConstantUnion* tempConstantNode = node-&gt;getAsConstantUnion();
-    TType arrayElementType = node-&gt;getType();
-    arrayElementType.clearArrayness();
-
-    if (index &gt;= node-&gt;getType().getArraySize()) {
-        std::stringstream extraInfoStream;
-        extraInfoStream &lt;&lt; &quot;array field selection out of range '&quot; &lt;&lt; index &lt;&lt; &quot;'&quot;;
-        std::string extraInfo = extraInfoStream.str();
-        error(line, &quot;&quot;, &quot;[&quot;, extraInfo.c_str());
-        recover();
-        index = 0;
-    }
-
-    if (tempConstantNode) {
-         size_t arrayElementSize = arrayElementType.getObjectSize();
-         ConstantUnion* unionArray = tempConstantNode-&gt;getUnionArrayPointer();
-         typedNode = intermediate.addConstantUnion(&amp;unionArray[arrayElementSize * index], tempConstantNode-&gt;getType(), line);
-    } else {
-        error(line, &quot;Cannot offset into the array&quot;, &quot;Error&quot;);
-        recover();
-
-        return 0;
-    }
-
-    return typedNode;
-}
-
-
-//
-// This function returns the value of a particular field inside a constant structure from the symbol table. 
-// If there is an embedded/nested struct, it appropriately calls addConstStructNested or addConstStructFromAggr
-// function and returns the parse-tree with the values of the embedded/nested struct.
-//
-TIntermTyped* TParseContext::addConstStruct(TString&amp; identifier, TIntermTyped* node, const TSourceLoc&amp; line)
-{
-    const TFieldList&amp; fields = node-&gt;getType().getStruct()-&gt;fields();
-
-    size_t instanceSize = 0;
-    for (size_t index = 0; index &lt; fields.size(); ++index) {
-        if (fields[index]-&gt;name() == identifier) {
-            break;
-        } else {
-            instanceSize += fields[index]-&gt;type()-&gt;getObjectSize();
-        }
-    }
-
-    TIntermTyped* typedNode = 0;
-    TIntermConstantUnion* tempConstantNode = node-&gt;getAsConstantUnion();
-    if (tempConstantNode) {
-         ConstantUnion* constArray = tempConstantNode-&gt;getUnionArrayPointer();
-
-         typedNode = intermediate.addConstantUnion(constArray+instanceSize, tempConstantNode-&gt;getType(), line); // type will be changed in the calling function
-    } else {
-        error(line, &quot;Cannot offset into the structure&quot;, &quot;Error&quot;);
-        recover();
-
-        return 0;
-    }
-
-    return typedNode;
-}
-
-bool TParseContext::enterStructDeclaration(const TSourceLoc&amp; line, const TString&amp; identifier)
-{
-    ++structNestingLevel;
-
-    // Embedded structure definitions are not supported per GLSL ES spec.
-    // They aren't allowed in GLSL either, but we need to detect this here
-    // so we don't rely on the GLSL compiler to catch it.
-    if (structNestingLevel &gt; 1) {
-        error(line, &quot;&quot;, &quot;Embedded struct definitions are not allowed&quot;);
-        return true;
-    }
-
-    return false;
-}
-
-void TParseContext::exitStructDeclaration()
-{
-    --structNestingLevel;
-}
-
-namespace {
-
-const int kWebGLMaxStructNesting = 4;
-
-}  // namespace
-
-bool TParseContext::structNestingErrorCheck(const TSourceLoc&amp; line, const TField&amp; field)
-{
-    if (!isWebGLBasedSpec(shaderSpec)) {
-        return false;
-    }
-
-    if (field.type()-&gt;getBasicType() != EbtStruct) {
-        return false;
-    }
-
-    // We're already inside a structure definition at this point, so add
-    // one to the field's struct nesting.
-    if (1 + field.type()-&gt;getDeepestStructNesting() &gt; kWebGLMaxStructNesting) {
-        std::stringstream extraInfoStream;
-        extraInfoStream &lt;&lt; &quot;Reference of struct type &quot; &lt;&lt; field.name()
-                        &lt;&lt; &quot; exceeds maximum struct nesting of &quot; &lt;&lt; kWebGLMaxStructNesting;
-        std::string extraInfo = extraInfoStream.str();
-        error(line, &quot;&quot;, &quot;&quot;, extraInfo.c_str());
-        return true;
-    }
-
-    return false;
-}
-
-//
-// Parse an array index expression
-//
-TIntermTyped* TParseContext::addIndexExpression(TIntermTyped *baseExpression, const TSourceLoc&amp; location, TIntermTyped *indexExpression)
-{
-    TIntermTyped *indexedExpression = NULL;
-
-    if (!baseExpression-&gt;isArray() &amp;&amp; !baseExpression-&gt;isMatrix() &amp;&amp; !baseExpression-&gt;isVector())
-    {
-        if (baseExpression-&gt;getAsSymbolNode())
-        {
-            error(location, &quot; left of '[' is not of type array, matrix, or vector &quot;, baseExpression-&gt;getAsSymbolNode()-&gt;getSymbol().c_str());
-        }
-        else
-        {
-            error(location, &quot; left of '[' is not of type array, matrix, or vector &quot;, &quot;expression&quot;);
-        }
-        recover();
-    }
-
-    if (indexExpression-&gt;getQualifier() == EvqConst)
-    {
-        int index = indexExpression-&gt;getAsConstantUnion()-&gt;getIConst(0);
-        if (index &lt; 0)
-        {
-            std::stringstream infoStream;
-            infoStream &lt;&lt; index;
-            std::string info = infoStream.str();
-            error(location, &quot;negative index&quot;, info.c_str());
-            recover();
-            index = 0;
-        }
-        if (baseExpression-&gt;getType().getQualifier() == EvqConst)
-        {
-            if (baseExpression-&gt;isArray())
-            {
-                // constant folding for arrays
-                indexedExpression = addConstArrayNode(index, baseExpression, location);
-            }
-            else if (baseExpression-&gt;isVector())
-            {
-                // constant folding for vectors
-                TVectorFields fields;
-                fields.num = 1;
-                fields.offsets[0] = index; // need to do it this way because v.xy sends fields integer array
-                indexedExpression = addConstVectorNode(fields, baseExpression, location);
-            }
-            else if (baseExpression-&gt;isMatrix())
-            {
-                // constant folding for matrices
-                indexedExpression = addConstMatrixNode(index, baseExpression, location);
-            }
-        }
-        else
-        {
-            if (baseExpression-&gt;isArray())
-            {
-                if (index &gt;= baseExpression-&gt;getType().getArraySize())
-                {
-                    std::stringstream extraInfoStream;
-                    extraInfoStream &lt;&lt; &quot;array index out of range '&quot; &lt;&lt; index &lt;&lt; &quot;'&quot;;
-                    std::string extraInfo = extraInfoStream.str();
-                    error(location, &quot;&quot;, &quot;[&quot;, extraInfo.c_str());
-                    recover();
-                    index = baseExpression-&gt;getType().getArraySize() - 1;
-                }
-                else if (baseExpression-&gt;getQualifier() == EvqFragData &amp;&amp; index &gt; 0 &amp;&amp; !isExtensionEnabled(&quot;GL_EXT_draw_buffers&quot;))
-                {
-                    error(location, &quot;&quot;, &quot;[&quot;, &quot;array indexes for gl_FragData must be zero when GL_EXT_draw_buffers is disabled&quot;);
-                    recover();
-                    index = 0;
-                }
-            }
-            else if ((baseExpression-&gt;isVector() || baseExpression-&gt;isMatrix()) &amp;&amp; baseExpression-&gt;getType().getNominalSize() &lt;= index)
-            {
-                std::stringstream extraInfoStream;
-                extraInfoStream &lt;&lt; &quot;field selection out of range '&quot; &lt;&lt; index &lt;&lt; &quot;'&quot;;
-                std::string extraInfo = extraInfoStream.str();
-                error(location, &quot;&quot;, &quot;[&quot;, extraInfo.c_str());
-                recover();
-                index = baseExpression-&gt;getType().getNominalSize() - 1;
-            }
-
-            indexExpression-&gt;getAsConstantUnion()-&gt;getUnionArrayPointer()-&gt;setIConst(index);
-            indexedExpression = intermediate.addIndex(EOpIndexDirect, baseExpression, indexExpression, location);
-        }
-    }
-    else
-    {
-        indexedExpression = intermediate.addIndex(EOpIndexIndirect, baseExpression, indexExpression, location);
-    }
-
-    if (indexedExpression == 0)
-    {
-        ConstantUnion *unionArray = new ConstantUnion[1];
-        unionArray-&gt;setFConst(0.0f);
-        indexedExpression = intermediate.addConstantUnion(unionArray, TType(EbtFloat, EbpHigh, EvqConst), location);
-    }
-    else if (baseExpression-&gt;isArray())
-    {
-        const TType &amp;baseType = baseExpression-&gt;getType();
-        if (baseType.getStruct())
-        {
-            TType copyOfType(baseType.getStruct());
-            indexedExpression-&gt;setType(copyOfType);
-        }
-        else
-        {
-            indexedExpression-&gt;setType(TType(baseExpression-&gt;getBasicType(), baseExpression-&gt;getPrecision(), EvqTemporary, baseExpression-&gt;getNominalSize(), baseExpression-&gt;isMatrix()));
-        }
-
-        if (baseExpression-&gt;getType().getQualifier() == EvqConst)
-        {
-            indexedExpression-&gt;getTypePointer()-&gt;setQualifier(EvqConst);
-        }
-    }
-    else if (baseExpression-&gt;isMatrix())
-    {
-        TQualifier qualifier = baseExpression-&gt;getType().getQualifier() == EvqConst ? EvqConst : EvqTemporary;
-        indexedExpression-&gt;setType(TType(baseExpression-&gt;getBasicType(), baseExpression-&gt;getPrecision(), qualifier, baseExpression-&gt;getNominalSize()));
-    }
-    else if (baseExpression-&gt;isVector())
-    {
-        TQualifier qualifier = baseExpression-&gt;getType().getQualifier() == EvqConst ? EvqConst : EvqTemporary;
-        indexedExpression-&gt;setType(TType(baseExpression-&gt;getBasicType(), baseExpression-&gt;getPrecision(), qualifier));
-    }
-    else
-    {
-        indexedExpression-&gt;setType(baseExpression-&gt;getType());
-    }
-
-    return indexedExpression;
-}
-
-//
-// Parse an array of strings using yyparse.
-//
-// Returns 0 for success.
-//
-int PaParseStrings(size_t count, const char* const string[], const int length[],
-                   TParseContext* context) {
-    if ((count == 0) || (string == NULL))
-        return 1;
-
-    if (glslang_initialize(context))
-        return 1;
-
-    int error = glslang_scan(count, string, length, context);
-    if (!error)
-        error = glslang_parse(context);
-
-    glslang_finalize(context);
-
-    return (error == 0) &amp;&amp; (context-&gt;numErrors() == 0) ? 0 : 1;
-}
-
-
-
</del></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerParseHelperh"></a>
<div class="delfile"><h4>Deleted: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ParseHelper.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ParseHelper.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ParseHelper.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,134 +0,0 @@
</span><del>-//
-// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-#ifndef _PARSER_HELPER_INCLUDED_
-#define _PARSER_HELPER_INCLUDED_
-
-#include &quot;compiler/Diagnostics.h&quot;
-#include &quot;compiler/DirectiveHandler.h&quot;
-#include &quot;compiler/localintermediate.h&quot;
-#include &quot;compiler/preprocessor/Preprocessor.h&quot;
-#include &quot;compiler/ShHandle.h&quot;
-#include &quot;compiler/SymbolTable.h&quot;
-
-struct TMatrixFields {
-    bool wholeRow;
-    bool wholeCol;
-    int row;
-    int col;
-};
-
-//
-// The following are extra variables needed during parsing, grouped together so
-// they can be passed to the parser without needing a global.
-//
-struct TParseContext {
-    TParseContext(TSymbolTable&amp; symt, TExtensionBehavior&amp; ext, TIntermediate&amp; interm, ShShaderType type, ShShaderSpec spec, int options, bool checksPrecErrors, const char* sourcePath, TInfoSink&amp; is) :
-            intermediate(interm),
-            symbolTable(symt),
-            shaderType(type),
-            shaderSpec(spec),
-            compileOptions(options),
-            sourcePath(sourcePath),
-            treeRoot(0),
-            loopNestingLevel(0),
-            structNestingLevel(0),
-            currentFunctionType(NULL),
-            functionReturnsValue(false),
-            checksPrecisionErrors(checksPrecErrors),
-            diagnostics(is),
-            directiveHandler(ext, diagnostics),
-            preprocessor(&amp;diagnostics, &amp;directiveHandler),
-            scanner(NULL) {  }
-    TIntermediate&amp; intermediate; // to hold and build a parse tree
-    TSymbolTable&amp; symbolTable;   // symbol table that goes with the language currently being parsed
-    ShShaderType shaderType;              // vertex or fragment language (future: pack or unpack)
-    ShShaderSpec shaderSpec;              // The language specification compiler conforms to - GLES2 or WebGL.
-    int compileOptions;
-    const char* sourcePath;      // Path of source file or NULL.
-    TIntermNode* treeRoot;       // root of parse tree being created
-    int loopNestingLevel;        // 0 if outside all loops
-    int structNestingLevel;      // incremented while parsing a struct declaration
-    const TType* currentFunctionType;  // the return type of the function that's currently being parsed
-    bool functionReturnsValue;   // true if a non-void function has a return
-    bool checksPrecisionErrors;  // true if an error will be generated when a variable is declared without precision, explicit or implicit.
-    bool fragmentPrecisionHigh;  // true if highp precision is supported in the fragment language.
-    TString HashErrMsg;
-    TDiagnostics diagnostics;
-    TDirectiveHandler directiveHandler;
-    pp::Preprocessor preprocessor;
-    void* scanner;
-
-    int numErrors() const { return diagnostics.numErrors(); }
-    TInfoSink&amp; infoSink() { return diagnostics.infoSink(); }
-    void error(const TSourceLoc&amp; loc, const char *reason, const char* token,
-               const char* extraInfo=&quot;&quot;);
-    void warning(const TSourceLoc&amp; loc, const char* reason, const char* token,
-                 const char* extraInfo=&quot;&quot;);
-    void trace(const char* str);
-    void recover();
-
-    bool parseVectorFields(const TString&amp;, int vecSize, TVectorFields&amp;, const TSourceLoc&amp; line);
-    bool parseMatrixFields(const TString&amp;, int matSize, TMatrixFields&amp;, const TSourceLoc&amp; line);
-
-    bool reservedErrorCheck(const TSourceLoc&amp; line, const TString&amp; identifier);
-    void assignError(const TSourceLoc&amp; line, const char* op, TString left, TString right);
-    void unaryOpError(const TSourceLoc&amp; line, const char* op, TString operand);
-    void binaryOpError(const TSourceLoc&amp; line, const char* op, TString left, TString right);
-    bool precisionErrorCheck(const TSourceLoc&amp; line, TPrecision precision, TBasicType type);
-    bool lValueErrorCheck(const TSourceLoc&amp; line, const char* op, TIntermTyped*);
-    bool constErrorCheck(TIntermTyped* node);
-    bool integerErrorCheck(TIntermTyped* node, const char* token);
-    bool globalErrorCheck(const TSourceLoc&amp; line, bool global, const char* token);
-    bool constructorErrorCheck(const TSourceLoc&amp; line, TIntermNode*, TFunction&amp;, TOperator, TType*);
-    bool arraySizeErrorCheck(const TSourceLoc&amp; line, TIntermTyped* expr, int&amp; size);
-    bool arrayQualifierErrorCheck(const TSourceLoc&amp; line, TPublicType type);
-    bool arrayTypeErrorCheck(const TSourceLoc&amp; line, TPublicType type);
-    bool arrayErrorCheck(const TSourceLoc&amp; line, TString&amp; identifier, TPublicType type, TVariable*&amp; variable);
-    bool voidErrorCheck(const TSourceLoc&amp;, const TString&amp;, const TPublicType&amp;);
-    bool boolErrorCheck(const TSourceLoc&amp;, const TIntermTyped*);
-    bool boolErrorCheck(const TSourceLoc&amp;, const TPublicType&amp;);
-    bool samplerErrorCheck(const TSourceLoc&amp; line, const TPublicType&amp; pType, const char* reason);
-    bool structQualifierErrorCheck(const TSourceLoc&amp; line, const TPublicType&amp; pType);
-    bool parameterSamplerErrorCheck(const TSourceLoc&amp; line, TQualifier qualifier, const TType&amp; type);
-    bool nonInitConstErrorCheck(const TSourceLoc&amp; line, TString&amp; identifier, TPublicType&amp; type, bool array);
-    bool nonInitErrorCheck(const TSourceLoc&amp; line, TString&amp; identifier, TPublicType&amp; type, TVariable*&amp; variable);
-    bool paramErrorCheck(const TSourceLoc&amp; line, TQualifier qualifier, TQualifier paramQualifier, TType* type);
-    bool extensionErrorCheck(const TSourceLoc&amp; line, const TString&amp;);
-
-    const TPragma&amp; pragma() const { return directiveHandler.pragma(); }
-    const TExtensionBehavior&amp; extensionBehavior() const { return directiveHandler.extensionBehavior(); }
-    bool supportsExtension(const char* extension);
-    bool isExtensionEnabled(const char* extension) const;
-
-    bool containsSampler(TType&amp; type);
-    bool areAllChildConst(TIntermAggregate* aggrNode);
-    const TFunction* findFunction(const TSourceLoc&amp; line, TFunction* pfnCall, bool *builtIn = 0);
-    bool executeInitializer(const TSourceLoc&amp; line, TString&amp; identifier, TPublicType&amp; pType,
-                            TIntermTyped* initializer, TIntermNode*&amp; intermNode, TVariable* variable = 0);
-
-    TIntermTyped* addConstructor(TIntermNode*, const TType*, TOperator, TFunction*, const TSourceLoc&amp;);
-    TIntermTyped* foldConstConstructor(TIntermAggregate* aggrNode, const TType&amp; type);
-    TIntermTyped* constructStruct(TIntermNode*, TType*, int, const TSourceLoc&amp;, bool subset);
-    TIntermTyped* constructBuiltIn(const TType*, TOperator, TIntermNode*, const TSourceLoc&amp;, bool subset);
-    TIntermTyped* addConstVectorNode(TVectorFields&amp;, TIntermTyped*, const TSourceLoc&amp;);
-    TIntermTyped* addConstMatrixNode(int , TIntermTyped*, const TSourceLoc&amp;);
-    TIntermTyped* addConstArrayNode(int index, TIntermTyped* node, const TSourceLoc&amp; line);
-    TIntermTyped* addConstStruct(TString&amp; , TIntermTyped*, const TSourceLoc&amp;);
-    TIntermTyped* addIndexExpression(TIntermTyped *baseExpression, const TSourceLoc&amp; location, TIntermTyped *indexExpression);
-
-    // Performs an error check for embedded struct declarations.
-    // Returns true if an error was raised due to the declaration of
-    // this struct.
-    bool enterStructDeclaration(const TSourceLoc&amp; line, const TString&amp; identifier);
-    void exitStructDeclaration();
-
-    bool structNestingErrorCheck(const TSourceLoc&amp; line, const TField&amp; field);
-};
-
-int PaParseStrings(size_t count, const char* const string[], const int length[],
-                   TParseContext* context);
-
-#endif // _PARSER_HELPER_INCLUDED_
</del></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerPoolAlloccpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/PoolAlloc.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/PoolAlloc.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/PoolAlloc.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -17,55 +17,32 @@
</span><span class="cx"> 
</span><span class="cx"> OS_TLSIndex PoolIndex = OS_INVALID_TLS_INDEX;
</span><span class="cx"> 
</span><del>-void InitializeGlobalPools()
-{
-    TThreadGlobalPools* globalPools= static_cast&lt;TThreadGlobalPools*&gt;(OS_GetTLSValue(PoolIndex));    
-    if (globalPools)
-        return;
-
-    TThreadGlobalPools* threadData = new TThreadGlobalPools();
-    threadData-&gt;globalPoolAllocator = 0;
-
-    OS_SetTLSValue(PoolIndex, threadData);
-}
-
-void FreeGlobalPools()
-{
-    // Release the allocated memory for this thread.
-    TThreadGlobalPools* globalPools= static_cast&lt;TThreadGlobalPools*&gt;(OS_GetTLSValue(PoolIndex));    
-    if (!globalPools)
-        return;

-    delete globalPools;
-}
-
</del><span class="cx"> bool InitializePoolIndex()
</span><span class="cx"> {
</span><del>-    // Allocate a TLS index.
-    if ((PoolIndex = OS_AllocTLSIndex()) == OS_INVALID_TLS_INDEX)
-        return false;
</del><ins>+    assert(PoolIndex == OS_INVALID_TLS_INDEX);
</ins><span class="cx"> 
</span><del>-    return true;
</del><ins>+    PoolIndex = OS_AllocTLSIndex();
+    return PoolIndex != OS_INVALID_TLS_INDEX;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void FreePoolIndex()
</span><span class="cx"> {
</span><del>-    // Release the TLS index.
</del><ins>+    assert(PoolIndex != OS_INVALID_TLS_INDEX);
+
</ins><span class="cx">     OS_FreeTLSIndex(PoolIndex);
</span><ins>+    PoolIndex = OS_INVALID_TLS_INDEX;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-TPoolAllocator&amp; GetGlobalPoolAllocator()
</del><ins>+TPoolAllocator* GetGlobalPoolAllocator()
</ins><span class="cx"> {
</span><del>-    TThreadGlobalPools* threadData = static_cast&lt;TThreadGlobalPools*&gt;(OS_GetTLSValue(PoolIndex));
-
-    return *threadData-&gt;globalPoolAllocator;
</del><ins>+    assert(PoolIndex != OS_INVALID_TLS_INDEX);
+    return static_cast&lt;TPoolAllocator*&gt;(OS_GetTLSValue(PoolIndex));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SetGlobalPoolAllocator(TPoolAllocator* poolAllocator)
</span><span class="cx"> {
</span><del>-    TThreadGlobalPools* threadData = static_cast&lt;TThreadGlobalPools*&gt;(OS_GetTLSValue(PoolIndex));
-
-    threadData-&gt;globalPoolAllocator = poolAllocator;
</del><ins>+    assert(PoolIndex != OS_INVALID_TLS_INDEX);
+    OS_SetTLSValue(PoolIndex, poolAllocator);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> //
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerPoolAlloch"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/PoolAlloc.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/PoolAlloc.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/PoolAlloc.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -219,15 +219,9 @@
</span><span class="cx"> // different times.  But a simple use is to have a global pop
</span><span class="cx"> // with everyone using the same global allocator.
</span><span class="cx"> //
</span><del>-extern TPoolAllocator&amp; GetGlobalPoolAllocator();
</del><ins>+extern TPoolAllocator* GetGlobalPoolAllocator();
</ins><span class="cx"> extern void SetGlobalPoolAllocator(TPoolAllocator* poolAllocator);
</span><del>-#define GlobalPoolAllocator GetGlobalPoolAllocator()
</del><span class="cx"> 
</span><del>-struct TThreadGlobalPools
-{
-    TPoolAllocator* globalPoolAllocator;
-};
-
</del><span class="cx"> //
</span><span class="cx"> // This STL compatible allocator is intended to be used as the allocator
</span><span class="cx"> // parameter to templatized STL containers, like vector and map.
</span><span class="lines">@@ -253,7 +247,7 @@
</span><span class="cx">     pointer address(reference x) const { return &amp;x; }
</span><span class="cx">     const_pointer address(const_reference x) const { return &amp;x; }
</span><span class="cx"> 
</span><del>-    pool_allocator() : allocator(&amp;GlobalPoolAllocator) { }
</del><ins>+    pool_allocator() : allocator(GetGlobalPoolAllocator()) { }
</ins><span class="cx">     pool_allocator(TPoolAllocator&amp; a) : allocator(&amp;a) { }
</span><span class="cx">     pool_allocator(const pool_allocator&lt;T&gt;&amp; p) : allocator(p.allocator) { }
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerSearchSymbolh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/SearchSymbol.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/SearchSymbol.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/SearchSymbol.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -10,7 +10,7 @@
</span><span class="cx"> #define COMPILER_SEARCHSYMBOL_H_
</span><span class="cx"> 
</span><span class="cx"> #include &quot;compiler/intermediate.h&quot;
</span><del>-#include &quot;compiler/ParseHelper.h&quot;
</del><ins>+#include &quot;compiler/ParseContext.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace sh
</span><span class="cx"> {
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerShHandleh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ShHandle.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ShHandle.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ShHandle.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -70,6 +70,7 @@
</span><span class="cx">     TInfoSink&amp; getInfoSink() { return infoSink; }
</span><span class="cx">     const TVariableInfoList&amp; getAttribs() const { return attribs; }
</span><span class="cx">     const TVariableInfoList&amp; getUniforms() const { return uniforms; }
</span><ins>+    const TVariableInfoList&amp; getVaryings() const { return varyings; }
</ins><span class="cx">     int getMappedNameMaxLength() const;
</span><span class="cx"> 
</span><span class="cx">     ShHashFunction64 getHashFunction() const { return hashFunction; }
</span><span class="lines">@@ -90,8 +91,8 @@
</span><span class="cx">     // Returns true if the given shader does not exceed the minimum
</span><span class="cx">     // functionality mandated in GLSL 1.0 spec Appendix A.
</span><span class="cx">     bool validateLimitations(TIntermNode* root);
</span><del>-    // Collect info for all attribs and uniforms.
-    void collectAttribsUniforms(TIntermNode* root);
</del><ins>+    // Collect info for all attribs, uniforms, varyings.
+    void collectVariables(TIntermNode* root);
</ins><span class="cx">     // Map long variable names into shorter ones.
</span><span class="cx">     void mapLongVariableNames(TIntermNode* root);
</span><span class="cx">     // Translate to object code.
</span><span class="lines">@@ -142,6 +143,7 @@
</span><span class="cx">     TInfoSink infoSink;  // Output sink.
</span><span class="cx">     TVariableInfoList attribs;  // Active attributes in the compiled shader.
</span><span class="cx">     TVariableInfoList uniforms;  // Active uniforms in the compiled shader.
</span><ins>+    TVariableInfoList varyings;  // Varyings in the compiled shader.
</ins><span class="cx"> 
</span><span class="cx">     // Cached copy of the ref-counted singleton.
</span><span class="cx">     LongNameMap* longNameMap;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerShaderLangcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ShaderLang.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ShaderLang.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ShaderLang.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -15,20 +15,25 @@
</span><span class="cx"> #include &quot;compiler/preprocessor/length_limits.h&quot;
</span><span class="cx"> #include &quot;compiler/ShHandle.h&quot;
</span><span class="cx"> #include &quot;compiler/TranslatorHLSL.h&quot;
</span><ins>+#include &quot;compiler/VariablePacker.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> //
</span><span class="cx"> // This is the platform independent interface between an OGL driver
</span><span class="cx"> // and the shading language compiler.
</span><span class="cx"> //
</span><span class="cx"> 
</span><del>-static bool checkActiveUniformAndAttribMaxLengths(const ShHandle handle,
-                                                  size_t expectedValue)
</del><ins>+static bool checkVariableMaxLengths(const ShHandle handle,
+                                    size_t expectedValue)
</ins><span class="cx"> {
</span><span class="cx">     size_t activeUniformLimit = 0;
</span><span class="cx">     ShGetInfo(handle, SH_ACTIVE_UNIFORM_MAX_LENGTH, &amp;activeUniformLimit);
</span><span class="cx">     size_t activeAttribLimit = 0;
</span><span class="cx">     ShGetInfo(handle, SH_ACTIVE_ATTRIBUTE_MAX_LENGTH, &amp;activeAttribLimit);
</span><del>-    return (expectedValue == activeUniformLimit &amp;&amp; expectedValue == activeAttribLimit);
</del><ins>+    size_t varyingLimit = 0;
+    ShGetInfo(handle, SH_VARYING_MAX_LENGTH, &amp;varyingLimit);
+    return (expectedValue == activeUniformLimit &amp;&amp;
+            expectedValue == activeAttribLimit &amp;&amp;
+            expectedValue == varyingLimit);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static bool checkMappedNameMaxLength(const ShHandle handle, size_t expectedValue)
</span><span class="lines">@@ -38,62 +43,14 @@
</span><span class="cx">     return (expectedValue == mappedNameMaxLength);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static void getVariableInfo(ShShaderInfo varType,
-                            const ShHandle handle,
-                            int index,
-                            size_t* length,
-                            int* size,
-                            ShDataType* type,
-                            char* name,
-                            char* mappedName)
-{
-    if (!handle || !size || !type || !name)
-        return;
-    ASSERT((varType == SH_ACTIVE_ATTRIBUTES) ||
-           (varType == SH_ACTIVE_UNIFORMS));
-
-    TShHandleBase* base = reinterpret_cast&lt;TShHandleBase*&gt;(handle);
-    TCompiler* compiler = base-&gt;getAsCompiler();
-    if (compiler == 0)
-        return;
-
-    const TVariableInfoList&amp; varList = varType == SH_ACTIVE_ATTRIBUTES ?
-        compiler-&gt;getAttribs() : compiler-&gt;getUniforms();
-    if (index &lt; 0 || index &gt;= static_cast&lt;int&gt;(varList.size()))
-        return;
-
-    const TVariableInfo&amp; varInfo = varList[index];
-    if (length) *length = varInfo.name.size();
-    *size = varInfo.size;
-    *type = varInfo.type;
-
-    // This size must match that queried by
-    // SH_ACTIVE_UNIFORM_MAX_LENGTH and SH_ACTIVE_ATTRIBUTE_MAX_LENGTH
-    // in ShGetInfo, below.
-    size_t activeUniformAndAttribLength = 1 + MAX_SYMBOL_NAME_LEN;
-    ASSERT(checkActiveUniformAndAttribMaxLengths(handle, activeUniformAndAttribLength));
-    strncpy(name, varInfo.name.c_str(), activeUniformAndAttribLength);
-    name[activeUniformAndAttribLength - 1] = 0;
-    if (mappedName) {
-        // This size must match that queried by
-        // SH_MAPPED_NAME_MAX_LENGTH in ShGetInfo, below.
-        size_t maxMappedNameLength = 1 + MAX_SYMBOL_NAME_LEN;
-        ASSERT(checkMappedNameMaxLength(handle, maxMappedNameLength));
-        strncpy(mappedName, varInfo.mappedName.c_str(), maxMappedNameLength);
-        mappedName[maxMappedNameLength - 1] = 0;
-    }
-}
-
</del><span class="cx"> //
</span><del>-// Driver must call this first, once, before doing any other
-// compiler operations.
</del><ins>+// Driver must call this first, once, before doing any other compiler operations.
+// Subsequent calls to this function are no-op.
</ins><span class="cx"> //
</span><span class="cx"> int ShInitialize()
</span><span class="cx"> {
</span><del>-    if (!InitProcess())
-        return 0;
-
-    return 1;
</del><ins>+    static const bool kInitialized = InitProcess();
+    return kInitialized ? 1 : 0;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> //
</span><span class="lines">@@ -101,9 +58,7 @@
</span><span class="cx"> //
</span><span class="cx"> int ShFinalize()
</span><span class="cx"> {
</span><del>-    if (!DetachProcess())
-        return 0;
-
</del><ins>+    DetachProcess();
</ins><span class="cx">     return 1;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -145,9 +100,6 @@
</span><span class="cx">                              ShShaderOutput output,
</span><span class="cx">                              const ShBuiltInResources* resources)
</span><span class="cx"> {
</span><del>-    if (!InitThread())
-        return 0;
-
</del><span class="cx">     TShHandleBase* base = static_cast&lt;TShHandleBase*&gt;(ConstructCompiler(type, spec, output));
</span><span class="cx">     TCompiler* compiler = base-&gt;getAsCompiler();
</span><span class="cx">     if (compiler == 0)
</span><span class="lines">@@ -186,9 +138,6 @@
</span><span class="cx">     size_t numStrings,
</span><span class="cx">     int compileOptions)
</span><span class="cx"> {
</span><del>-    if (!InitThread())
-        return 0;
-
</del><span class="cx">     if (handle == 0)
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><span class="lines">@@ -230,6 +179,12 @@
</span><span class="cx">     case SH_ACTIVE_ATTRIBUTE_MAX_LENGTH:
</span><span class="cx">         *params = 1 + MAX_SYMBOL_NAME_LEN;
</span><span class="cx">         break;
</span><ins>+    case SH_VARYINGS:
+        *params = compiler-&gt;getVaryings().size();
+        break;
+    case SH_VARYING_MAX_LENGTH:
+        *params = 1 + MAX_SYMBOL_NAME_LEN;
+        break;
</ins><span class="cx">     case SH_MAPPED_NAME_MAX_LENGTH:
</span><span class="cx">         // Use longer length than MAX_SHORTENED_IDENTIFIER_SIZE to
</span><span class="cx">         // handle array and struct dereferences.
</span><span class="lines">@@ -287,28 +242,71 @@
</span><span class="cx">     strcpy(objCode, infoSink.obj.c_str());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ShGetActiveAttrib(const ShHandle handle,
</del><ins>+void ShGetVariableInfo(const ShHandle handle,
+                       ShShaderInfo varType,
</ins><span class="cx">                        int index,
</span><span class="cx">                        size_t* length,
</span><span class="cx">                        int* size,
</span><span class="cx">                        ShDataType* type,
</span><ins>+                       ShPrecisionType* precision,
+                       int* staticUse,
</ins><span class="cx">                        char* name,
</span><span class="cx">                        char* mappedName)
</span><span class="cx"> {
</span><del>-    getVariableInfo(SH_ACTIVE_ATTRIBUTES,
-                    handle, index, length, size, type, name, mappedName);
-}
</del><ins>+    if (!handle || !size || !type || !precision || !staticUse || !name)
+        return;
+    ASSERT((varType == SH_ACTIVE_ATTRIBUTES) ||
+           (varType == SH_ACTIVE_UNIFORMS) ||
+           (varType == SH_VARYINGS));
</ins><span class="cx"> 
</span><del>-void ShGetActiveUniform(const ShHandle handle,
-                        int index,
-                        size_t* length,
-                        int* size,
-                        ShDataType* type,
-                        char* name,
-                        char* mappedName)
-{
-    getVariableInfo(SH_ACTIVE_UNIFORMS,
-                    handle, index, length, size, type, name, mappedName);
</del><ins>+    TShHandleBase* base = reinterpret_cast&lt;TShHandleBase*&gt;(handle);
+    TCompiler* compiler = base-&gt;getAsCompiler();
+    if (compiler == 0)
+        return;
+
+    const TVariableInfoList&amp; varList =
+        varType == SH_ACTIVE_ATTRIBUTES ? compiler-&gt;getAttribs() :
+            (varType == SH_ACTIVE_UNIFORMS ? compiler-&gt;getUniforms() :
+                compiler-&gt;getVaryings());
+    if (index &lt; 0 || index &gt;= static_cast&lt;int&gt;(varList.size()))
+        return;
+
+    const TVariableInfo&amp; varInfo = varList[index];
+    if (length) *length = varInfo.name.size();
+    *size = varInfo.size;
+    *type = varInfo.type;
+    switch (varInfo.precision) {
+    case EbpLow:
+        *precision = SH_PRECISION_LOWP;
+        break;
+    case EbpMedium:
+        *precision = SH_PRECISION_MEDIUMP;
+        break;
+    case EbpHigh:
+        *precision = SH_PRECISION_HIGHP;
+        break;
+    default:
+        // Some types does not support precision, for example, boolean.
+        *precision = SH_PRECISION_UNDEFINED;
+        break;
+    }
+    *staticUse = varInfo.staticUse ? 1 : 0;
+
+    // This size must match that queried by
+    // SH_ACTIVE_UNIFORM_MAX_LENGTH, SH_ACTIVE_ATTRIBUTE_MAX_LENGTH, SH_VARYING_MAX_LENGTH
+    // in ShGetInfo, below.
+    size_t variableLength = 1 + MAX_SYMBOL_NAME_LEN;
+    ASSERT(checkVariableMaxLengths(handle, variableLength));
+    strncpy(name, varInfo.name.c_str(), variableLength);
+    name[variableLength - 1] = 0;
+    if (mappedName) {
+        // This size must match that queried by
+        // SH_MAPPED_NAME_MAX_LENGTH in ShGetInfo, below.
+        size_t maxMappedNameLength = 1 + MAX_SYMBOL_NAME_LEN;
+        ASSERT(checkMappedNameMaxLength(handle, maxMappedNameLength));
+        strncpy(mappedName, varInfo.mappedName.c_str(), maxMappedNameLength);
+        mappedName[maxMappedNameLength - 1] = 0;
+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ShGetNameHashingEntry(const ShHandle handle,
</span><span class="lines">@@ -371,3 +369,19 @@
</span><span class="cx">     default: UNREACHABLE();
</span><span class="cx">     }
</span><span class="cx"> }
</span><ins>+
+int ShCheckVariablesWithinPackingLimits(
+    int maxVectors, ShVariableInfo* varInfoArray, size_t varInfoArraySize)
+{
+    if (varInfoArraySize == 0)
+        return 1;
+    ASSERT(varInfoArray);
+    TVariableInfoList variables;
+    for (size_t ii = 0; ii &lt; varInfoArraySize; ++ii)
+    {
+        TVariableInfo var(varInfoArray[ii].type, varInfoArray[ii].size);
+        variables.push_back(var);
+    }
+    VariablePacker packer;
+    return packer.CheckVariablesWithinPackingLimits(maxVectors, variables) ? 1 : 0;
+}
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerSymbolTablecpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/SymbolTable.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/SymbolTable.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/SymbolTable.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -206,3 +206,11 @@
</span><span class="cx">             symbol-&gt;relateToExtension(ext);
</span><span class="cx">     }
</span><span class="cx"> }
</span><ins>+
+TSymbolTable::~TSymbolTable()
+{
+    for (size_t i = 0; i &lt; table.size(); ++i)
+        delete table[i];
+    for (size_t i = 0; i &lt; precisionStack.size(); ++i)
+        delete precisionStack[i];
+}
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerSymbolTableh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -41,9 +41,10 @@
</span><span class="cx"> //
</span><span class="cx"> class TSymbol {    
</span><span class="cx"> public:
</span><del>-    POOL_ALLOCATOR_NEW_DELETE(GlobalPoolAllocator)
-    TSymbol(const TString *n) :  name(n) { }
</del><ins>+    POOL_ALLOCATOR_NEW_DELETE();
+    TSymbol(const TString* n) :  uniqueId(0), name(n) { }
</ins><span class="cx">     virtual ~TSymbol() { /* don't delete name, it's from the pool */ }
</span><ins>+
</ins><span class="cx">     const TString&amp; getName() const { return *name; }
</span><span class="cx">     virtual const TString&amp; getMangledName() const { return getName(); }
</span><span class="cx">     virtual bool isFunction() const { return false; }
</span><span class="lines">@@ -57,8 +58,8 @@
</span><span class="cx"> private:
</span><span class="cx">     DISALLOW_COPY_AND_ASSIGN(TSymbol);
</span><span class="cx"> 
</span><ins>+    int uniqueId;      // For real comparing during code generation
</ins><span class="cx">     const TString *name;
</span><del>-    unsigned int uniqueId;      // For real comparing during code generation
</del><span class="cx">     TString extension;
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="lines">@@ -186,7 +187,6 @@
</span><span class="cx">     typedef const tLevel::value_type tLevelPair;
</span><span class="cx">     typedef std::pair&lt;tLevel::iterator, bool&gt; tInsertResult;
</span><span class="cx"> 
</span><del>-    POOL_ALLOCATOR_NEW_DELETE(GlobalPoolAllocator)
</del><span class="cx">     TSymbolTableLevel() { }
</span><span class="cx">     ~TSymbolTableLevel();
</span><span class="cx"> 
</span><span class="lines">@@ -195,8 +195,7 @@
</span><span class="cx">         //
</span><span class="cx">         // returning true means symbol was added to the table
</span><span class="cx">         //
</span><del>-        tInsertResult result;
-        result = level.insert(tLevelPair(name, &amp;symbol));
</del><ins>+        tInsertResult result = level.insert(tLevelPair(name, &amp;symbol));
</ins><span class="cx"> 
</span><span class="cx">         return result.second;
</span><span class="cx">     }
</span><span class="lines">@@ -243,14 +242,8 @@
</span><span class="cx">         // that the symbol table has not been preloaded with built-ins.
</span><span class="cx">         //
</span><span class="cx">     }
</span><ins>+    ~TSymbolTable();
</ins><span class="cx"> 
</span><del>-    ~TSymbolTable()
-    {
-        // level 0 is always built In symbols, so we never pop that out
-        while (table.size() &gt; 1)
-            pop();
-    }
-
</del><span class="cx">     //
</span><span class="cx">     // When the symbol table is initialized with the built-ins, there should
</span><span class="cx">     // 'push' calls, so that built-ins are at level 0 and the shader
</span><span class="lines">@@ -262,13 +255,15 @@
</span><span class="cx">     void push()
</span><span class="cx">     {
</span><span class="cx">         table.push_back(new TSymbolTableLevel);
</span><del>-        precisionStack.push_back( PrecisionStackLevel() );
</del><ins>+        precisionStack.push_back(new PrecisionStackLevel);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void pop()
</span><del>-    { 
-        delete table[currentLevel()]; 
-        table.pop_back(); 
</del><ins>+    {
+        delete table.back();
+        table.pop_back();
+
+        delete precisionStack.back();
</ins><span class="cx">         precisionStack.pop_back();
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -323,16 +318,11 @@
</span><span class="cx">         return symbol;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    TSymbol *findBuiltIn(const TString &amp;name)
</del><ins>+    TSymbol* findBuiltIn(const TString &amp;name)
</ins><span class="cx">     {
</span><span class="cx">         return table[0]-&gt;find(name);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    TSymbolTableLevel* getGlobalLevel() {
-        assert(table.size() &gt;= 2);
-        return table[1];
-    }
-
</del><span class="cx">     TSymbolTableLevel* getOuterLevel() {
</span><span class="cx">         assert(table.size() &gt;= 2);
</span><span class="cx">         return table[currentLevel() - 1];
</span><span class="lines">@@ -344,31 +334,29 @@
</span><span class="cx">     void relateToExtension(const char* name, const TString&amp; ext) {
</span><span class="cx">         table[0]-&gt;relateToExtension(name, ext);
</span><span class="cx">     }
</span><del>-    int getMaxSymbolId() { return uniqueId; }
</del><span class="cx">     void dump(TInfoSink &amp;infoSink) const;
</span><span class="cx"> 
</span><del>-    bool setDefaultPrecision( const TPublicType&amp; type, TPrecision prec ){
-        if (IsSampler(type.type))
-            return true;  // Skip sampler types for the time being
-        if (type.type != EbtFloat &amp;&amp; type.type != EbtInt)
-            return false; // Only set default precision for int/float
</del><ins>+    bool setDefaultPrecision(const TPublicType&amp; type, TPrecision prec) {
+        if (!supportsPrecision(type.type))
+            return false;
</ins><span class="cx">         if (type.size != 1 || type.matrix || type.array)
</span><span class="cx">             return false; // Not allowed to set for aggregate types
</span><span class="cx">         int indexOfLastElement = static_cast&lt;int&gt;(precisionStack.size()) - 1;
</span><del>-        precisionStack[indexOfLastElement][type.type] = prec; // Uses map operator [], overwrites the current value
</del><ins>+        (*precisionStack[indexOfLastElement])[type.type] = prec; // Uses map operator [], overwrites the current value
</ins><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Searches down the precisionStack for a precision qualifier for the specified TBasicType
</span><del>-    TPrecision getDefaultPrecision( TBasicType type){
-        if( type != EbtFloat &amp;&amp; type != EbtInt ) return EbpUndefined;
</del><ins>+    TPrecision getDefaultPrecision(TBasicType type) {
+        if (!supportsPrecision(type))
+            return EbpUndefined;
</ins><span class="cx">         int level = static_cast&lt;int&gt;(precisionStack.size()) - 1;
</span><del>-        assert( level &gt;= 0); // Just to be safe. Should not happen.
</del><ins>+        assert(level &gt;= 0); // Just to be safe. Should not happen.
</ins><span class="cx">         PrecisionStackLevel::iterator it;
</span><span class="cx">         TPrecision prec = EbpUndefined; // If we dont find anything we return this. Should we error check this?
</span><del>-        while( level &gt;= 0 ){
-            it = precisionStack[level].find( type );
-            if( it != precisionStack[level].end() ){
</del><ins>+        while (level &gt;= 0) {
+            it = precisionStack[level]-&gt;find(type);
+            if (it != precisionStack[level]-&gt;end()) {
</ins><span class="cx">                 prec = (*it).second;
</span><span class="cx">                 break;
</span><span class="cx">             }
</span><span class="lines">@@ -377,13 +365,18 @@
</span><span class="cx">         return prec;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-protected:    
</del><ins>+private:
</ins><span class="cx">     int currentLevel() const { return static_cast&lt;int&gt;(table.size()) - 1; }
</span><span class="cx"> 
</span><del>-    std::vector&lt;TSymbolTableLevel*&gt; table;
-    typedef std::map&lt; TBasicType, TPrecision &gt; PrecisionStackLevel;
-    std::vector&lt; PrecisionStackLevel &gt; precisionStack;
</del><ins>+    bool supportsPrecision(TBasicType type) {
+      // Only supports precision for int, float, and sampler types.
+      return type == EbtFloat || type == EbtInt || IsSampler(type);
+    }
+
</ins><span class="cx">     int uniqueId;     // for unique identification in code generation
</span><ins>+    std::vector&lt;TSymbolTableLevel*&gt; table;
+    typedef TMap&lt;TBasicType, TPrecision&gt; PrecisionStackLevel;
+    std::vector&lt;PrecisionStackLevel*&gt; precisionStack;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> #endif // _SYMBOL_TABLE_INCLUDED_
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerTypesh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/Types.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/Types.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/Types.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> //
</span><del>-// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
</del><ins>+// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
</ins><span class="cx"> // Use of this source code is governed by a BSD-style license that can be
</span><span class="cx"> // found in the LICENSE file.
</span><span class="cx"> //
</span><span class="lines">@@ -19,7 +19,7 @@
</span><span class="cx"> class TField
</span><span class="cx"> {
</span><span class="cx"> public:
</span><del>-    POOL_ALLOCATOR_NEW_DELETE(GlobalPoolAllocator);
</del><ins>+    POOL_ALLOCATOR_NEW_DELETE();
</ins><span class="cx">     TField(TType* type, TString* name) : mType(type), mName(name) {}
</span><span class="cx"> 
</span><span class="cx">     // TODO(alokp): We should only return const type.
</span><span class="lines">@@ -38,14 +38,14 @@
</span><span class="cx"> typedef TVector&lt;TField*&gt; TFieldList;
</span><span class="cx"> inline TFieldList* NewPoolTFieldList()
</span><span class="cx"> {
</span><del>-    void* memory = GlobalPoolAllocator.allocate(sizeof(TFieldList));
</del><ins>+    void* memory = GetGlobalPoolAllocator()-&gt;allocate(sizeof(TFieldList));
</ins><span class="cx">     return new(memory) TFieldList;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> class TStructure
</span><span class="cx"> {
</span><span class="cx"> public:
</span><del>-    POOL_ALLOCATOR_NEW_DELETE(GlobalPoolAllocator);
</del><ins>+    POOL_ALLOCATOR_NEW_DELETE();
</ins><span class="cx">     TStructure(TString* name, TFieldList* fields)
</span><span class="cx">         : mName(name),
</span><span class="cx">           mFields(fields),
</span><span class="lines">@@ -93,9 +93,9 @@
</span><span class="cx"> class TType
</span><span class="cx"> {
</span><span class="cx"> public:
</span><del>-    POOL_ALLOCATOR_NEW_DELETE(GlobalPoolAllocator)
</del><ins>+    POOL_ALLOCATOR_NEW_DELETE();
</ins><span class="cx">     TType() {}
</span><del>-    TType(TBasicType t, TPrecision p, TQualifier q = EvqTemporary, int s = 1, bool m = false, bool a = false) :
</del><ins>+    TType(TBasicType t, TPrecision p, TQualifier q = EvqTemporary, unsigned char s = 1, bool m = false, bool a = false) :
</ins><span class="cx">             type(t), precision(p), qualifier(q), size(s), matrix(m), array(a), arraySize(0), structure(0)
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="lines">@@ -116,7 +116,7 @@
</span><span class="cx"> 
</span><span class="cx">     // One-dimensional size of single instance type
</span><span class="cx">     int getNominalSize() const { return size; }
</span><del>-    void setNominalSize(int s) { size = s; }
</del><ins>+    void setNominalSize(unsigned char s) { size = s; }
</ins><span class="cx">     // Full size of single instance of type
</span><span class="cx">     size_t getObjectSize() const;
</span><span class="cx"> 
</span><span class="lines">@@ -234,18 +234,12 @@
</span><span class="cx"> private:
</span><span class="cx">     TString buildMangledName() const;
</span><span class="cx"> 
</span><del>-#ifdef __GNUC__
</del><span class="cx">     TBasicType type;
</span><span class="cx">     TPrecision precision;
</span><span class="cx">     TQualifier qualifier;
</span><del>-#else
-    TBasicType type      : 6;
-    TPrecision precision;
-    TQualifier qualifier : 7;
-#endif
-    int size             : 8; // size of vector or matrix, not size of array
-    unsigned int matrix  : 1;
-    unsigned int array   : 1;
</del><ins>+    unsigned char size;
+    bool matrix;
+    bool array;
</ins><span class="cx">     int arraySize;
</span><span class="cx"> 
</span><span class="cx">     TStructure* structure;      // 0 unless this is a struct
</span><span class="lines">@@ -267,7 +261,7 @@
</span><span class="cx">     TBasicType type;
</span><span class="cx">     TQualifier qualifier;
</span><span class="cx">     TPrecision precision;
</span><del>-    int size;          // size of vector or matrix, not size of array
</del><ins>+    unsigned char size;          // size of vector or matrix, not size of array
</ins><span class="cx">     bool matrix;
</span><span class="cx">     bool array;
</span><span class="cx">     int arraySize;
</span><span class="lines">@@ -287,7 +281,7 @@
</span><span class="cx">         line = ln;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    void setAggregate(int s, bool m = false)
</del><ins>+    void setAggregate(unsigned char s, bool m = false)
</ins><span class="cx">     {
</span><span class="cx">         size = s;
</span><span class="cx">         matrix = m;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerUnfoldShortCircuitcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuit.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuit.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuit.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -31,6 +31,14 @@
</span><span class="cx"> {
</span><span class="cx">     TInfoSinkBase &amp;out = mOutputHLSL-&gt;getBodyStream();
</span><span class="cx"> 
</span><ins>+    // If our right node doesn't have side effects, we know we don't need to unfold this
+    // expression: there will be no short-circuiting side effects to avoid
+    // (note: unfolding doesn't depend on the left node -- it will always be evaluated)
+    if (!node-&gt;getRight()-&gt;hasSideEffects())
+    {
+        return true;
+    }
+
</ins><span class="cx">     switch (node-&gt;getOp())
</span><span class="cx">     {
</span><span class="cx">       case EOpLogicalOr:
</span><span class="lines">@@ -49,7 +57,7 @@
</span><span class="cx">             mTemporaryIndex = i + 1;
</span><span class="cx">             node-&gt;getLeft()-&gt;traverse(mOutputHLSL);
</span><span class="cx">             out &lt;&lt; &quot;;\n&quot;;
</span><del>-            out &lt;&lt; &quot;if(!s&quot; &lt;&lt; i &lt;&lt; &quot;)\n&quot;
</del><ins>+            out &lt;&lt; &quot;if (!s&quot; &lt;&lt; i &lt;&lt; &quot;)\n&quot;
</ins><span class="cx">                    &quot;{\n&quot;;
</span><span class="cx">             mTemporaryIndex = i + 1;
</span><span class="cx">             node-&gt;getRight()-&gt;traverse(this);
</span><span class="lines">@@ -80,7 +88,7 @@
</span><span class="cx">             mTemporaryIndex = i + 1;
</span><span class="cx">             node-&gt;getLeft()-&gt;traverse(mOutputHLSL);
</span><span class="cx">             out &lt;&lt; &quot;;\n&quot;;
</span><del>-            out &lt;&lt; &quot;if(s&quot; &lt;&lt; i &lt;&lt; &quot;)\n&quot;
</del><ins>+            out &lt;&lt; &quot;if (s&quot; &lt;&lt; i &lt;&lt; &quot;)\n&quot;
</ins><span class="cx">                    &quot;{\n&quot;;
</span><span class="cx">             mTemporaryIndex = i + 1;
</span><span class="cx">             node-&gt;getRight()-&gt;traverse(this);
</span><span class="lines">@@ -115,7 +123,7 @@
</span><span class="cx"> 
</span><span class="cx">         mTemporaryIndex = i + 1;
</span><span class="cx">         node-&gt;getCondition()-&gt;traverse(this);
</span><del>-        out &lt;&lt; &quot;if(&quot;;
</del><ins>+        out &lt;&lt; &quot;if (&quot;;
</ins><span class="cx">         mTemporaryIndex = i + 1;
</span><span class="cx">         node-&gt;getCondition()-&gt;traverse(mOutputHLSL);
</span><span class="cx">         out &lt;&lt; &quot;)\n&quot;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerUnfoldShortCircuith"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuit.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuit.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuit.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -10,7 +10,7 @@
</span><span class="cx"> #define COMPILER_UNFOLDSHORTCIRCUIT_H_
</span><span class="cx"> 
</span><span class="cx"> #include &quot;compiler/intermediate.h&quot;
</span><del>-#include &quot;compiler/ParseHelper.h&quot;
</del><ins>+#include &quot;compiler/ParseContext.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace sh
</span><span class="cx"> {
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerUnfoldShortCircuitASTcpp"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuitAST.cpp (0 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuitAST.cpp                                (rev 0)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuitAST.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -0,0 +1,81 @@
</span><ins>+//
+// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+#include &quot;compiler/UnfoldShortCircuitAST.h&quot;
+
+namespace
+{
+
+// &quot;x || y&quot; is equivalent to &quot;x ? true : y&quot;.
+TIntermSelection *UnfoldOR(TIntermTyped *x, TIntermTyped *y)
+{
+    const TType boolType(EbtBool, EbpUndefined);
+    ConstantUnion *u = new ConstantUnion;
+    u-&gt;setBConst(true);
+    TIntermConstantUnion *trueNode = new TIntermConstantUnion(
+        u, TType(EbtBool, EbpUndefined, EvqConst, 1));
+    return new TIntermSelection(x, trueNode, y, boolType);
+}
+
+// &quot;x &amp;&amp; y&quot; is equivalent to &quot;x ? y : false&quot;.
+TIntermSelection *UnfoldAND(TIntermTyped *x, TIntermTyped *y)
+{
+    const TType boolType(EbtBool, EbpUndefined);
+    ConstantUnion *u = new ConstantUnion;
+    u-&gt;setBConst(false);
+    TIntermConstantUnion *falseNode = new TIntermConstantUnion(
+        u, TType(EbtBool, EbpUndefined, EvqConst, 1));
+    return new TIntermSelection(x, y, falseNode, boolType);
+}
+
+}  // namespace anonymous
+
+bool UnfoldShortCircuitAST::visitBinary(Visit visit, TIntermBinary *node)
+{
+    TIntermSelection *replacement = NULL;
+
+    switch (node-&gt;getOp())
+    {
+      case EOpLogicalOr:
+        replacement = UnfoldOR(node-&gt;getLeft(), node-&gt;getRight());
+        break;
+      case EOpLogicalAnd:
+        replacement = UnfoldAND(node-&gt;getLeft(), node-&gt;getRight());
+        break;
+      default:
+        break;
+    }
+    if (replacement)
+    {
+        replacements.push_back(
+            NodeUpdateEntry(getParentNode(), node, replacement));
+    }
+    return true;
+}
+
+void UnfoldShortCircuitAST::updateTree()
+{
+    for (size_t ii = 0; ii &lt; replacements.size(); ++ii)
+    {
+        const NodeUpdateEntry&amp; entry = replacements[ii];
+        ASSERT(entry.parent);
+        bool replaced = entry.parent-&gt;replaceChildNode(
+            entry.original, entry.replacement);
+        ASSERT(replaced);
+
+        // In AST traversing, a parent is visited before its children.
+        // After we replace a node, if an immediate child is to
+        // be replaced, we need to make sure we don't update the replaced
+    // node; instead, we update the replacement node.
+        for (size_t jj = ii + 1; jj &lt; replacements.size(); ++jj)
+        {
+            NodeUpdateEntry&amp; entry2 = replacements[jj];
+            if (entry2.parent == entry.original)
+                entry2.parent = entry.replacement;
+        }
+    }
+}
+
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerUnfoldShortCircuitASTh"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuitAST.h (0 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuitAST.h                                (rev 0)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/UnfoldShortCircuitAST.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -0,0 +1,51 @@
</span><ins>+//
+// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// UnfoldShortCircuitAST is an AST traverser to replace short-circuiting
+// operations with ternary operations.
+//
+
+#ifndef COMPILER_UNFOLD_SHORT_CIRCUIT_AST_H_
+#define COMPILER_UNFOLD_SHORT_CIRCUIT_AST_H_
+
+#include &quot;common/angleutils.h&quot;
+#include &quot;compiler/intermediate.h&quot;
+
+// This traverser identifies all the short circuit binary  nodes that need to
+// be replaced, and creates the corresponding replacement nodes. However,
+// the actual replacements happen after the traverse through updateTree().
+
+class UnfoldShortCircuitAST : public TIntermTraverser
+{
+  public:
+    UnfoldShortCircuitAST() { }
+
+    virtual bool visitBinary(Visit visit, TIntermBinary *);
+
+    void updateTree();
+
+  private:
+    struct NodeUpdateEntry
+    {
+        NodeUpdateEntry(TIntermNode *_parent,
+                        TIntermNode *_original,
+                        TIntermNode *_replacement)
+            : parent(_parent),
+              original(_original),
+              replacement(_replacement) {}
+
+        TIntermNode *parent;
+        TIntermNode *original;
+        TIntermNode *replacement;
+    };
+
+    // During traversing, save all the replacements that need to happen;
+    // then replace them by calling updateNodes().
+    std::vector&lt;NodeUpdateEntry&gt; replacements;
+
+    DISALLOW_COPY_AND_ASSIGN(UnfoldShortCircuitAST);
+};
+
+#endif  // COMPILER_UNFOLD_SHORT_CIRCUIT_AST_H_
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerUniformcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/Uniform.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/Uniform.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/Uniform.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,21 +1,21 @@
</span><del>-//
-// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-
-#include &quot;compiler/Uniform.h&quot;
-
-namespace sh
-{
-
-Uniform::Uniform(GLenum type, GLenum precision, const char *name, int arraySize, int registerIndex)
-{
-    this-&gt;type = type;
-    this-&gt;precision = precision;
-    this-&gt;name = name;
-    this-&gt;arraySize = arraySize;
-    this-&gt;registerIndex = registerIndex;
-}
-
-}
</del><ins>+//
+// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+#include &quot;compiler/Uniform.h&quot;
+
+namespace sh
+{
+
+Uniform::Uniform(GLenum type, GLenum precision, const char *name, int arraySize, int registerIndex)
+{
+    this-&gt;type = type;
+    this-&gt;precision = precision;
+    this-&gt;name = name;
+    this-&gt;arraySize = arraySize;
+    this-&gt;registerIndex = registerIndex;
+}
+
+}
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerUniformh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/Uniform.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/Uniform.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/Uniform.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,35 +1,35 @@
</span><del>-//
-// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-
-#ifndef COMPILER_UNIFORM_H_
-#define COMPILER_UNIFORM_H_
-
-#include &lt;string&gt;
-#include &lt;vector&gt;
-
-#define GL_APICALL
-#include &lt;GLES2/gl2.h&gt;
-
-namespace sh
-{
-
-struct Uniform
-{
-    Uniform(GLenum type, GLenum precision, const char *name, int arraySize, int registerIndex);
-
-    GLenum type;
-    GLenum precision;
-    std::string name;
-    unsigned int arraySize;
-    
-    int registerIndex;
-};
-
-typedef std::vector&lt;Uniform&gt; ActiveUniforms;
-
-}
-
-#endif   // COMPILER_UNIFORM_H_
</del><ins>+//
+// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+#ifndef COMPILER_UNIFORM_H_
+#define COMPILER_UNIFORM_H_
+
+#include &lt;string&gt;
+#include &lt;vector&gt;
+
+#define GL_APICALL
+#include &lt;GLES2/gl2.h&gt;
+
+namespace sh
+{
+
+struct Uniform
+{
+    Uniform(GLenum type, GLenum precision, const char *name, int arraySize, int registerIndex);
+
+    GLenum type;
+    GLenum precision;
+    std::string name;
+    unsigned int arraySize;
+    
+    int registerIndex;
+};
+
+typedef std::vector&lt;Uniform&gt; ActiveUniforms;
+
+}
+
+#endif   // COMPILER_UNIFORM_H_
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerValidateLimitationscpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ValidateLimitations.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ValidateLimitations.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/ValidateLimitations.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> #include &quot;compiler/ValidateLimitations.h&quot;
</span><span class="cx"> #include &quot;compiler/InfoSink.h&quot;
</span><span class="cx"> #include &quot;compiler/InitializeParseContext.h&quot;
</span><del>-#include &quot;compiler/ParseHelper.h&quot;
</del><ins>+#include &quot;compiler/ParseContext.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace {
</span><span class="cx"> bool IsLoopIndex(const TIntermSymbol* symbol, const TLoopStack&amp; stack) {
</span><span class="lines">@@ -435,7 +435,7 @@
</span><span class="cx">         return true;
</span><span class="cx"> 
</span><span class="cx">     bool valid = true;
</span><del>-    TSymbolTable&amp; symbolTable = GlobalParseContext-&gt;symbolTable;
</del><ins>+    TSymbolTable&amp; symbolTable = GetGlobalParseContext()-&gt;symbolTable;
</ins><span class="cx">     TSymbol* symbol = symbolTable.find(node-&gt;getName());
</span><span class="cx">     ASSERT(symbol &amp;&amp; symbol-&gt;isFunction());
</span><span class="cx">     TFunction* function = static_cast&lt;TFunction*&gt;(symbol);
</span><span class="lines">@@ -457,7 +457,7 @@
</span><span class="cx"> bool ValidateLimitations::validateOperation(TIntermOperator* node,
</span><span class="cx">                                             TIntermNode* operand) {
</span><span class="cx">     // Check if loop index is modified in the loop body.
</span><del>-    if (!withinLoopBody() || !node-&gt;modifiesState())
</del><ins>+    if (!withinLoopBody() || !node-&gt;isAssignment())
</ins><span class="cx">         return true;
</span><span class="cx"> 
</span><span class="cx">     const TIntermSymbol* symbol = operand-&gt;getAsSymbolNode();
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerVariableInfocpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/VariableInfo.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/VariableInfo.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/VariableInfo.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -6,15 +6,17 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;compiler/VariableInfo.h&quot;
</span><span class="cx"> 
</span><del>-static TString arrayBrackets(int index)
</del><ins>+namespace {
+
+TString arrayBrackets(int index)
</ins><span class="cx"> {
</span><span class="cx">     TStringStream stream;
</span><span class="cx">     stream &lt;&lt; &quot;[&quot; &lt;&lt; index &lt;&lt; &quot;]&quot;;
</span><span class="cx">     return stream.str();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-// Returns the data type for an attribute or uniform.
-static ShDataType getVariableDataType(const TType&amp; type)
</del><ins>+// Returns the data type for an attribute, uniform, or varying.
+ShDataType getVariableDataType(const TType&amp; type)
</ins><span class="cx"> {
</span><span class="cx">     switch (type.getBasicType()) {
</span><span class="cx">       case EbtFloat:
</span><span class="lines">@@ -70,22 +72,22 @@
</span><span class="cx">     return SH_NONE;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static void getBuiltInVariableInfo(const TType&amp; type,
-                                   const TString&amp; name,
-                                   const TString&amp; mappedName,
-                                   TVariableInfoList&amp; infoList);
-static void getUserDefinedVariableInfo(const TType&amp; type,
-                                       const TString&amp; name,
-                                       const TString&amp; mappedName,
-                                       TVariableInfoList&amp; infoList,
-                                       ShHashFunction64 hashFunction);
-
-// Returns info for an attribute or uniform.
-static void getVariableInfo(const TType&amp; type,
</del><ins>+void getBuiltInVariableInfo(const TType&amp; type,
</ins><span class="cx">                             const TString&amp; name,
</span><span class="cx">                             const TString&amp; mappedName,
</span><del>-                            TVariableInfoList&amp; infoList,
-                            ShHashFunction64 hashFunction)
</del><ins>+                            TVariableInfoList&amp; infoList);
+void getUserDefinedVariableInfo(const TType&amp; type,
+                                const TString&amp; name,
+                                const TString&amp; mappedName,
+                                TVariableInfoList&amp; infoList,
+                                ShHashFunction64 hashFunction);
+
+// Returns info for an attribute, uniform, or varying.
+void getVariableInfo(const TType&amp; type,
+                     const TString&amp; name,
+                     const TString&amp; mappedName,
+                     TVariableInfoList&amp; infoList,
+                     ShHashFunction64 hashFunction)
</ins><span class="cx"> {
</span><span class="cx">     if (type.getBasicType() == EbtStruct) {
</span><span class="cx">         if (type.isArray()) {
</span><span class="lines">@@ -119,6 +121,7 @@
</span><span class="cx">         varInfo.mappedName = mappedName.c_str();
</span><span class="cx">         varInfo.size = 1;
</span><span class="cx">     }
</span><ins>+    varInfo.precision = type.getPrecision();
</ins><span class="cx">     varInfo.type = getVariableDataType(type);
</span><span class="cx">     infoList.push_back(varInfo);
</span><span class="cx"> }
</span><span class="lines">@@ -143,75 +146,144 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+TVariableInfo* findVariable(const TType&amp; type,
+                            const TString&amp; name,
+                            TVariableInfoList&amp; infoList)
+{
+    // TODO(zmo): optimize this function.
+    TString myName = name;
+    if (type.isArray())
+        myName += &quot;[0]&quot;;
+    for (size_t ii = 0; ii &lt; infoList.size(); ++ii)
+    {
+        if (infoList[ii].name.c_str() == myName)
+            return &amp;(infoList[ii]);
+    }
+    return NULL;
+}
+
+}  // namespace anonymous
+
</ins><span class="cx"> TVariableInfo::TVariableInfo()
</span><ins>+    : type(SH_NONE),
+      size(0),
+      precision(EbpUndefined),
+      staticUse(false)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> TVariableInfo::TVariableInfo(ShDataType type, int size)
</span><span class="cx">     : type(type),
</span><del>-      size(size)
</del><ins>+      size(size),
+      precision(EbpUndefined),
+      staticUse(false)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-CollectAttribsUniforms::CollectAttribsUniforms(TVariableInfoList&amp; attribs,
-                                               TVariableInfoList&amp; uniforms,
-                                               ShHashFunction64 hashFunction)
</del><ins>+CollectVariables::CollectVariables(TVariableInfoList&amp; attribs,
+                                   TVariableInfoList&amp; uniforms,
+                                   TVariableInfoList&amp; varyings,
+                                   ShHashFunction64 hashFunction)
</ins><span class="cx">     : mAttribs(attribs),
</span><span class="cx">       mUniforms(uniforms),
</span><ins>+      mVaryings(varyings),
+      mPointCoordAdded(false),
+      mFrontFacingAdded(false),
+      mFragCoordAdded(false),
</ins><span class="cx">       mHashFunction(hashFunction)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-// We are only interested in attribute and uniform variable declaration.
-void CollectAttribsUniforms::visitSymbol(TIntermSymbol*)
</del><ins>+// We want to check whether a uniform/varying is statically used
+// because we only count the used ones in packing computing.
+// Also, gl_FragCoord, gl_PointCoord, and gl_FrontFacing count
+// toward varying counting if they are statically used in a fragment
+// shader.
+void CollectVariables::visitSymbol(TIntermSymbol* symbol)
</ins><span class="cx"> {
</span><ins>+    ASSERT(symbol != NULL);
+    TVariableInfo* var = NULL;
+    switch (symbol-&gt;getQualifier())
+    {
+    case EvqVaryingOut:
+    case EvqInvariantVaryingOut:
+    case EvqVaryingIn:
+    case EvqInvariantVaryingIn:
+        var = findVariable(symbol-&gt;getType(), symbol-&gt;getSymbol(), mVaryings);
+        break;
+    case EvqUniform:
+        var = findVariable(symbol-&gt;getType(), symbol-&gt;getSymbol(), mUniforms);
+        break;
+    case EvqFragCoord:
+        if (!mFragCoordAdded) {
+            TVariableInfo info;
+            info.name = &quot;gl_FragCoord&quot;;
+            info.mappedName = &quot;gl_FragCoord&quot;;
+            info.type = SH_FLOAT_VEC4;
+            info.size = 1;
+            info.precision = EbpMedium;  // Use mediump as it doesn't really matter.
+            info.staticUse = true;
+        mVaryings.push_back(info);
+            mFragCoordAdded = true;
+        }
+        return;
+    case EvqFrontFacing:
+        if (!mFrontFacingAdded) {
+            TVariableInfo info;
+            info.name = &quot;gl_FrontFacing&quot;;
+            info.mappedName = &quot;gl_FrontFacing&quot;;
+            info.type = SH_BOOL;
+            info.size = 1;
+            info.precision = EbpUndefined;
+            info.staticUse = true;
+        mVaryings.push_back(info);
+            mFrontFacingAdded = true;
+        }
+        return;
+    case EvqPointCoord:
+        if (!mPointCoordAdded) {
+            TVariableInfo info;
+            info.name = &quot;gl_PointCoord&quot;;
+            info.mappedName = &quot;gl_PointCoord&quot;;
+            info.type = SH_FLOAT_VEC2;
+            info.size = 1;
+            info.precision = EbpMedium;  // Use mediump as it doesn't really matter.
+            info.staticUse = true;
+        mVaryings.push_back(info);
+            mPointCoordAdded = true;
+        }
+        return;
+    default:
+        break;
+    }
+    if (var)
+        var-&gt;staticUse = true;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CollectAttribsUniforms::visitConstantUnion(TIntermConstantUnion*)
</del><ins>+bool CollectVariables::visitAggregate(Visit, TIntermAggregate* node)
</ins><span class="cx"> {
</span><del>-}
</del><ins>+    bool visitChildren = true;
</ins><span class="cx"> 
</span><del>-bool CollectAttribsUniforms::visitBinary(Visit, TIntermBinary*)
-{
-    return false;
-}
-
-bool CollectAttribsUniforms::visitUnary(Visit, TIntermUnary*)
-{
-    return false;
-}
-
-bool CollectAttribsUniforms::visitSelection(Visit, TIntermSelection*)
-{
-    return false;
-}
-
-bool CollectAttribsUniforms::visitAggregate(Visit, TIntermAggregate* node)
-{
-    bool visitChildren = false;
-
</del><span class="cx">     switch (node-&gt;getOp())
</span><span class="cx">     {
</span><del>-    case EOpSequence:
-        // We need to visit sequence children to get to variable declarations.
-        visitChildren = true;
-        break;
</del><span class="cx">     case EOpDeclaration: {
</span><span class="cx">         const TIntermSequence&amp; sequence = node-&gt;getSequence();
</span><span class="cx">         TQualifier qualifier = sequence.front()-&gt;getAsTyped()-&gt;getQualifier();
</span><del>-        if (qualifier == EvqAttribute || qualifier == EvqUniform)
</del><ins>+        if (qualifier == EvqAttribute || qualifier == EvqUniform ||
+            qualifier == EvqVaryingIn || qualifier == EvqVaryingOut ||
+            qualifier == EvqInvariantVaryingIn || qualifier == EvqInvariantVaryingOut)
</ins><span class="cx">         {
</span><del>-            TVariableInfoList&amp; infoList = qualifier == EvqAttribute ?
-                mAttribs : mUniforms;
</del><ins>+            TVariableInfoList&amp; infoList = qualifier == EvqAttribute ? mAttribs :
+                (qualifier == EvqUniform ? mUniforms : mVaryings);
</ins><span class="cx">             for (TIntermSequence::const_iterator i = sequence.begin();
</span><span class="cx">                  i != sequence.end(); ++i)
</span><span class="cx">             {
</span><span class="cx">                 const TIntermSymbol* variable = (*i)-&gt;getAsSymbolNode();
</span><span class="cx">                 // The only case in which the sequence will not contain a
</span><span class="cx">                 // TIntermSymbol node is initialization. It will contain a
</span><del>-                // TInterBinary node in that case. Since attributes and unifroms
-                // cannot be initialized in a shader, we must have only
-                // TIntermSymbol nodes in the sequence.
</del><ins>+                // TInterBinary node in that case. Since attributes, uniforms,
+                // and varyings cannot be initialized in a shader, we must have
+                // only TIntermSymbol nodes in the sequence.
</ins><span class="cx">                 ASSERT(variable != NULL);
</span><span class="cx">                 TString processedSymbol;
</span><span class="cx">                 if (mHashFunction == NULL)
</span><span class="lines">@@ -223,6 +295,7 @@
</span><span class="cx">                                 processedSymbol,
</span><span class="cx">                                 infoList,
</span><span class="cx">                                 mHashFunction);
</span><ins>+                visitChildren = false;
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">         break;
</span><span class="lines">@@ -233,13 +306,3 @@
</span><span class="cx">     return visitChildren;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool CollectAttribsUniforms::visitLoop(Visit, TIntermLoop*)
-{
-    return false;
-}
-
-bool CollectAttribsUniforms::visitBranch(Visit, TIntermBranch*)
-{
-    return false;
-}
-
</del></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerVariableInfoh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/VariableInfo.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/VariableInfo.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/VariableInfo.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -20,29 +20,31 @@
</span><span class="cx">     TPersistString mappedName;
</span><span class="cx">     ShDataType type;
</span><span class="cx">     int size;
</span><ins>+    TPrecision precision;
+    bool staticUse;
</ins><span class="cx"> };
</span><span class="cx"> typedef std::vector&lt;TVariableInfo&gt; TVariableInfoList;
</span><span class="cx"> 
</span><del>-// Traverses intermediate tree to collect all attributes and uniforms.
-class CollectAttribsUniforms : public TIntermTraverser {
</del><ins>+// Traverses intermediate tree to collect all attributes, uniforms, varyings.
+class CollectVariables : public TIntermTraverser {
</ins><span class="cx"> public:
</span><del>-    CollectAttribsUniforms(TVariableInfoList&amp; attribs,
-                           TVariableInfoList&amp; uniforms,
-                           ShHashFunction64 hashFunction);
</del><ins>+    CollectVariables(TVariableInfoList&amp; attribs,
+                     TVariableInfoList&amp; uniforms,
+                     TVariableInfoList&amp; varyings,
+                     ShHashFunction64 hashFunction);
</ins><span class="cx"> 
</span><span class="cx">     virtual void visitSymbol(TIntermSymbol*);
</span><del>-    virtual void visitConstantUnion(TIntermConstantUnion*);
-    virtual bool visitBinary(Visit, TIntermBinary*);
-    virtual bool visitUnary(Visit, TIntermUnary*);
-    virtual bool visitSelection(Visit, TIntermSelection*);
</del><span class="cx">     virtual bool visitAggregate(Visit, TIntermAggregate*);
</span><del>-    virtual bool visitLoop(Visit, TIntermLoop*);
-    virtual bool visitBranch(Visit, TIntermBranch*);
</del><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     TVariableInfoList&amp; mAttribs;
</span><span class="cx">     TVariableInfoList&amp; mUniforms;
</span><ins>+    TVariableInfoList&amp; mVaryings;
</ins><span class="cx"> 
</span><ins>+    bool mPointCoordAdded;
+    bool mFrontFacingAdded;
+    bool mFragCoordAdded;
+
</ins><span class="cx">     ShHashFunction64 mHashFunction;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerdebugcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/debug.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/debug.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/debug.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -12,19 +12,10 @@
</span><span class="cx"> #include &lt;stdio.h&gt;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;compiler/InitializeParseContext.h&quot;
</span><del>-#include &quot;compiler/ParseHelper.h&quot;
</del><ins>+#include &quot;compiler/ParseContext.h&quot;
</ins><span class="cx"> 
</span><del>-#if defined(__clang__)
-#pragma clang diagnostic push
-#pragma GCC diagnostic ignored &quot;-Wunused-variable&quot;
-#endif
-
</del><span class="cx"> static const int kTraceBufferLen = 1024;
</span><span class="cx"> 
</span><del>-#if defined(__clang__)
-#pragma clang diagnostic pop
-#endif
-
</del><span class="cx"> #ifdef TRACE_ENABLED
</span><span class="cx"> extern &quot;C&quot; {
</span><span class="cx"> void Trace(const char *format, ...) {
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerdepgraphDependencyGraphcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraph.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraph.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraph.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -4,9 +4,7 @@
</span><span class="cx"> // found in the LICENSE file.
</span><span class="cx"> //
</span><span class="cx"> 
</span><del>-#if defined(_MSC_VER)
</del><span class="cx"> #pragma warning(disable: 4718)
</span><del>-#endif
</del><span class="cx"> 
</span><span class="cx"> #include &quot;compiler/depgraph/DependencyGraph.h&quot;
</span><span class="cx"> #include &quot;compiler/depgraph/DependencyGraphBuilder.h&quot;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerdepgraphDependencyGraphBuildercpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphBuilder.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphBuilder.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/depgraph/DependencyGraphBuilder.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -94,7 +94,7 @@
</span><span class="cx"> bool TDependencyGraphBuilder::visitBinary(Visit visit, TIntermBinary* intermBinary)
</span><span class="cx"> {
</span><span class="cx">     TOperator op = intermBinary-&gt;getOp();
</span><del>-    if (op == EOpInitialize || intermBinary-&gt;modifiesState())
</del><ins>+    if (op == EOpInitialize || intermBinary-&gt;isAssignment())
</ins><span class="cx">         visitAssignment(intermBinary);
</span><span class="cx">     else if (op == EOpLogicalAnd || op == EOpLogicalOr)
</span><span class="cx">         visitLogicalOp(intermBinary);
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilergenerate_parsersh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/generate_parser.sh (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/generate_parser.sh        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/generate_parser.sh        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -25,3 +25,4 @@
</span><span class="cx"> # Generate Parser
</span><span class="cx"> run_flex glslang
</span><span class="cx"> run_bison glslang
</span><ins>+patch --silent --forward &lt; 64bit-lexer-safety.patch
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerglslangl"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/glslang.l (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/glslang.l        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/glslang.l        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx"> 
</span><span class="cx"> %{
</span><span class="cx"> #include &quot;compiler/glslang.h&quot;
</span><del>-#include &quot;compiler/ParseHelper.h&quot;
</del><ins>+#include &quot;compiler/ParseContext.h&quot;
</ins><span class="cx"> #include &quot;compiler/preprocessor/Token.h&quot;
</span><span class="cx"> #include &quot;compiler/util.h&quot;
</span><span class="cx"> #include &quot;glslang_tab.h&quot;
</span><span class="lines">@@ -63,6 +63,8 @@
</span><span class="cx"> static yy_size_t string_input(char* buf, yy_size_t max_size, yyscan_t yyscanner);
</span><span class="cx"> static int check_type(yyscan_t yyscanner);
</span><span class="cx"> static int reserved_word(yyscan_t yyscanner);
</span><ins>+static int int_constant(yyscan_t yyscanner);
+static int float_constant(yyscan_t yyscanner);
</ins><span class="cx"> %}
</span><span class="cx"> 
</span><span class="cx"> %option noyywrap nounput never-interactive
</span><span class="lines">@@ -195,13 +197,13 @@
</span><span class="cx">    return check_type(yyscanner);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-0[xX]{H}+         { yylval-&gt;lex.i = static_cast&lt;int&gt;(strtol(yytext, 0, 0)); return INTCONSTANT; }
-0{O}+             { yylval-&gt;lex.i = static_cast&lt;int&gt;(strtol(yytext, 0, 0)); return INTCONSTANT; }
-{D}+              { yylval-&gt;lex.i = static_cast&lt;int&gt;(strtol(yytext, 0, 0)); return INTCONSTANT; }
</del><ins>+0[xX]{H}+         { return int_constant(yyscanner); }
+0{O}+             { return int_constant(yyscanner); }
+{D}+              { return int_constant(yyscanner); }
</ins><span class="cx"> 
</span><del>-{D}+{E}           { yylval-&gt;lex.f = static_cast&lt;float&gt;(atof_dot(yytext)); return FLOATCONSTANT; }
-{D}+&quot;.&quot;{D}*({E})? { yylval-&gt;lex.f = static_cast&lt;float&gt;(atof_dot(yytext)); return FLOATCONSTANT; }
-&quot;.&quot;{D}+({E})?     { yylval-&gt;lex.f = static_cast&lt;float&gt;(atof_dot(yytext)); return FLOATCONSTANT; }
</del><ins>+{D}+{E}           { return float_constant(yyscanner); }
+{D}+&quot;.&quot;{D}*({E})? { return float_constant(yyscanner); }
+&quot;.&quot;{D}+({E})?     { return float_constant(yyscanner); }
</ins><span class="cx"> 
</span><span class="cx"> &quot;+=&quot;            { return ADD_ASSIGN; }
</span><span class="cx"> &quot;-=&quot;            { return SUB_ASSIGN; }
</span><span class="lines">@@ -298,6 +300,27 @@
</span><span class="cx">     return 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void yyerror(YYLTYPE* lloc, TParseContext* context, const char* reason) {
+    context-&gt;error(*lloc, reason, yyget_text(context-&gt;scanner));
+    context-&gt;recover();
+}
+
+int int_constant(yyscan_t yyscanner) {
+    struct yyguts_t* yyg = (struct yyguts_t*) yyscanner;
+
+    if (!atoi_clamp(yytext, &amp;(yylval-&gt;lex.i)))
+        yyextra-&gt;warning(*yylloc, &quot;Integer overflow&quot;, yytext, &quot;&quot;);
+    return INTCONSTANT;
+}
+
+int float_constant(yyscan_t yyscanner) {
+    struct yyguts_t* yyg = (struct yyguts_t*) yyscanner;
+
+    if (!atof_clamp(yytext, &amp;(yylval-&gt;lex.f)))
+        yyextra-&gt;warning(*yylloc, &quot;Float overflow&quot;, yytext, &quot;&quot;);
+    return FLOATCONSTANT;
+}
+
</ins><span class="cx"> int glslang_initialize(TParseContext* context) {
</span><span class="cx">     yyscan_t scanner = NULL;
</span><span class="cx">     if (yylex_init_extra(context, &amp;scanner))
</span><span class="lines">@@ -326,6 +349,7 @@
</span><span class="cx">     // Initialize preprocessor.
</span><span class="cx">     if (!context-&gt;preprocessor.init(count, string, length))
</span><span class="cx">         return 1;
</span><ins>+    context-&gt;preprocessor.setMaxTokenLength(SH_MAX_TOKEN_LENGTH);
</ins><span class="cx"> 
</span><span class="cx">     // Define extension macros.
</span><span class="cx">     const TExtensionBehavior&amp; extBehavior = context-&gt;extensionBehavior();
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerglslangy"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/glslang.y (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/glslang.y        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/glslang.y        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #include &quot;compiler/SymbolTable.h&quot;
</span><del>-#include &quot;compiler/ParseHelper.h&quot;
</del><ins>+#include &quot;compiler/ParseContext.h&quot;
</ins><span class="cx"> #include &quot;GLSLANG/ShaderLang.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #define YYENABLE_NLS 0
</span><span class="lines">@@ -49,9 +49,13 @@
</span><span class="cx"> %locations
</span><span class="cx"> %lex-param {YYLEX_PARAM}
</span><span class="cx"> 
</span><del>-%union {
</del><ins>+%code requires {
</ins><span class="cx"> #define YYLTYPE TSourceLoc
</span><span class="cx"> #define YYLTYPE_IS_DECLARED 1
</span><ins>+#define SH_MAX_TOKEN_LENGTH 256  // WebGL spec.
+}
+
+%union {
</ins><span class="cx">     struct {
</span><span class="cx">         union {
</span><span class="cx">             TString *string;
</span><span class="lines">@@ -83,7 +87,7 @@
</span><span class="cx"> 
</span><span class="cx"> %{
</span><span class="cx"> extern int yylex(YYSTYPE* yylval, YYLTYPE* yylloc, void* yyscanner);
</span><del>-static void yyerror(YYLTYPE* yylloc, TParseContext* context, const char* reason);
</del><ins>+extern void yyerror(YYLTYPE* yylloc, TParseContext* context, const char* reason);
</ins><span class="cx"> 
</span><span class="cx"> #define YYLLOC_DEFAULT(Current, Rhs, N)                      \
</span><span class="cx">   do {                                                       \
</span><span class="lines">@@ -225,14 +229,6 @@
</span><span class="cx">         $$ = $1;
</span><span class="cx">     }
</span><span class="cx">     | INTCONSTANT {
</span><del>-        //
-        // INT_TYPE is only 16-bit plus sign bit for vertex/fragment shaders,
-        // check for overflow for constants
-        //
-        if (abs($1.i) &gt;= (1 &lt;&lt; 16)) {
-            context-&gt;error(@1, &quot; integer constant overflow&quot;, &quot;&quot;);
-            context-&gt;recover();
-        }
</del><span class="cx">         ConstantUnion *unionArray = new ConstantUnion[1];
</span><span class="cx">         unionArray-&gt;setIConst($1.i);
</span><span class="cx">         $$ = context-&gt;intermediate.addConstantUnion(unionArray, TType(EbtInt, EbpUndefined, EvqConst), @1);
</span><span class="lines">@@ -2002,11 +1998,6 @@
</span><span class="cx"> 
</span><span class="cx"> %%
</span><span class="cx"> 
</span><del>-void yyerror(YYLTYPE* yylloc, TParseContext* context, const char* reason) {
-    context-&gt;error(*yylloc, reason, &quot;&quot;);
-    context-&gt;recover();
-}
-
</del><span class="cx"> int glslang_parse(TParseContext* context) {
</span><span class="cx">     return yyparse(context);
</span><span class="cx"> }
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerglslang_lexcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -788,7 +788,7 @@
</span><span class="cx"> */
</span><span class="cx"> 
</span><span class="cx"> #include &quot;compiler/glslang.h&quot;
</span><del>-#include &quot;compiler/ParseHelper.h&quot;
</del><ins>+#include &quot;compiler/ParseContext.h&quot;
</ins><span class="cx"> #include &quot;compiler/preprocessor/Token.h&quot;
</span><span class="cx"> #include &quot;compiler/util.h&quot;
</span><span class="cx"> #include &quot;glslang_tab.h&quot;
</span><span class="lines">@@ -808,6 +808,8 @@
</span><span class="cx"> static yy_size_t string_input(char* buf, yy_size_t max_size, yyscan_t yyscanner);
</span><span class="cx"> static int check_type(yyscan_t yyscanner);
</span><span class="cx"> static int reserved_word(yyscan_t yyscanner);
</span><ins>+static int int_constant(yyscan_t yyscanner);
+static int float_constant(yyscan_t yyscanner);
</ins><span class="cx"> 
</span><span class="cx"> #define INITIAL 0
</span><span class="cx"> 
</span><span class="lines">@@ -1506,27 +1508,27 @@
</span><span class="cx">         YY_BREAK
</span><span class="cx"> case 94:
</span><span class="cx"> YY_RULE_SETUP
</span><del>-{ yylval-&gt;lex.i = static_cast&lt;int&gt;(strtol(yytext, 0, 0)); return INTCONSTANT; }
</del><ins>+{ return int_constant(yyscanner); }
</ins><span class="cx">         YY_BREAK
</span><span class="cx"> case 95:
</span><span class="cx"> YY_RULE_SETUP
</span><del>-{ yylval-&gt;lex.i = static_cast&lt;int&gt;(strtol(yytext, 0, 0)); return INTCONSTANT; }
</del><ins>+{ return int_constant(yyscanner); }
</ins><span class="cx">         YY_BREAK
</span><span class="cx"> case 96:
</span><span class="cx"> YY_RULE_SETUP
</span><del>-{ yylval-&gt;lex.i = static_cast&lt;int&gt;(strtol(yytext, 0, 0)); return INTCONSTANT; }
</del><ins>+{ return int_constant(yyscanner); }
</ins><span class="cx">         YY_BREAK
</span><span class="cx"> case 97:
</span><span class="cx"> YY_RULE_SETUP
</span><del>-{ yylval-&gt;lex.f = static_cast&lt;float&gt;(atof_dot(yytext)); return FLOATCONSTANT; }
</del><ins>+{ return float_constant(yyscanner); }
</ins><span class="cx">         YY_BREAK
</span><span class="cx"> case 98:
</span><span class="cx"> YY_RULE_SETUP
</span><del>-{ yylval-&gt;lex.f = static_cast&lt;float&gt;(atof_dot(yytext)); return FLOATCONSTANT; }
</del><ins>+{ return float_constant(yyscanner); }
</ins><span class="cx">         YY_BREAK
</span><span class="cx"> case 99:
</span><span class="cx"> YY_RULE_SETUP
</span><del>-{ yylval-&gt;lex.f = static_cast&lt;float&gt;(atof_dot(yytext)); return FLOATCONSTANT; }
</del><ins>+{ return float_constant(yyscanner); }
</ins><span class="cx">         YY_BREAK
</span><span class="cx"> case 100:
</span><span class="cx"> YY_RULE_SETUP
</span><span class="lines">@@ -2103,7 +2105,7 @@
</span><span class="cx">                                 case EOB_ACT_END_OF_FILE:
</span><span class="cx">                                         {
</span><span class="cx">                                         if ( yywrap(yyscanner ) )
</span><del>-                                                return 0;
</del><ins>+                                                return EOF;
</ins><span class="cx"> 
</span><span class="cx">                                         if ( ! yyg-&gt;yy_did_buffer_switch_on_eof )
</span><span class="cx">                                                 YY_NEW_FILE;
</span><span class="lines">@@ -2907,6 +2909,27 @@
</span><span class="cx">     return 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void yyerror(YYLTYPE* lloc, TParseContext* context, const char* reason) {
+    context-&gt;error(*lloc, reason, yyget_text(context-&gt;scanner));
+    context-&gt;recover();
+}
+
+int int_constant(yyscan_t yyscanner) {
+    struct yyguts_t* yyg = (struct yyguts_t*) yyscanner;
+
+    if (!atoi_clamp(yytext, &amp;(yylval-&gt;lex.i)))
+        yyextra-&gt;warning(*yylloc, &quot;Integer overflow&quot;, yytext, &quot;&quot;);
+    return INTCONSTANT;
+}
+
+int float_constant(yyscan_t yyscanner) {
+    struct yyguts_t* yyg = (struct yyguts_t*) yyscanner;
+
+    if (!atof_clamp(yytext, &amp;(yylval-&gt;lex.f)))
+        yyextra-&gt;warning(*yylloc, &quot;Float overflow&quot;, yytext, &quot;&quot;);
+    return FLOATCONSTANT;
+}
+
</ins><span class="cx"> int glslang_initialize(TParseContext* context) {
</span><span class="cx">     yyscan_t scanner = NULL;
</span><span class="cx">     if (yylex_init_extra(context,&amp;scanner))
</span><span class="lines">@@ -2935,6 +2958,7 @@
</span><span class="cx">     // Initialize preprocessor.
</span><span class="cx">     if (!context-&gt;preprocessor.init(count, string, length))
</span><span class="cx">         return 1;
</span><ins>+    context-&gt;preprocessor.setMaxTokenLength(SH_MAX_TOKEN_LENGTH);
</ins><span class="cx"> 
</span><span class="cx">     // Define extension macros.
</span><span class="cx">     const TExtensionBehavior&amp; extBehavior = context-&gt;extensionBehavior();
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerglslang_tabcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -281,7 +281,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #include &quot;compiler/SymbolTable.h&quot;
</span><del>-#include &quot;compiler/ParseHelper.h&quot;
</del><ins>+#include &quot;compiler/ParseContext.h&quot;
</ins><span class="cx"> #include &quot;GLSLANG/ShaderLang.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #define YYENABLE_NLS 0
</span><span class="lines">@@ -343,7 +343,7 @@
</span><span class="cx"> }
</span><span class="cx"> /* Line 193 of yacc.c.  */
</span><span class="cx"> 
</span><del>-        YYSTYPE;
</del><ins>+    YYSTYPE;
</ins><span class="cx"> # define yystype YYSTYPE /* obsolescent; will be withdrawn */
</span><span class="cx"> # define YYSTYPE_IS_DECLARED 1
</span><span class="cx"> # define YYSTYPE_IS_TRIVIAL 1
</span><span class="lines">@@ -533,7 +533,7 @@
</span><span class="cx"> #  endif
</span><span class="cx"> #  if (defined __cplusplus &amp;&amp; ! defined _STDLIB_H \
</span><span class="cx">        &amp;&amp; ! ((defined YYMALLOC || defined malloc) \
</span><del>-             &amp;&amp; (defined YYFREE || defined free)))
</del><ins>+         &amp;&amp; (defined YYFREE || defined free)))
</ins><span class="cx"> #   include &lt;stdlib.h&gt; /* INFRINGES ON USER NAME SPACE */
</span><span class="cx"> #   ifndef _STDLIB_H
</span><span class="cx"> #    define _STDLIB_H 1
</span><span class="lines">@@ -559,8 +559,8 @@
</span><span class="cx"> 
</span><span class="cx"> #if (! defined yyoverflow \
</span><span class="cx">      &amp;&amp; (! defined __cplusplus \
</span><del>-         || (defined YYLTYPE_IS_TRIVIAL &amp;&amp; YYLTYPE_IS_TRIVIAL \
-             &amp;&amp; defined YYSTYPE_IS_TRIVIAL &amp;&amp; YYSTYPE_IS_TRIVIAL)))
</del><ins>+     || (defined YYLTYPE_IS_TRIVIAL &amp;&amp; YYLTYPE_IS_TRIVIAL \
+         &amp;&amp; defined YYSTYPE_IS_TRIVIAL &amp;&amp; YYSTYPE_IS_TRIVIAL)))
</ins><span class="cx"> 
</span><span class="cx"> /* A type that is properly aligned for any stack member.  */
</span><span class="cx"> union yyalloc
</span><span class="lines">@@ -586,13 +586,13 @@
</span><span class="cx"> #   define YYCOPY(To, From, Count) \
</span><span class="cx">       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
</span><span class="cx"> #  else
</span><del>-#   define YYCOPY(To, From, Count)                \
-      do                                        \
-        {                                        \
-          YYSIZE_T yyi;                                \
-          for (yyi = 0; yyi &lt; (Count); yyi++)        \
-            (To)[yyi] = (From)[yyi];                \
-        }                                        \
</del><ins>+#   define YYCOPY(To, From, Count)        \
+      do                    \
+    {                    \
+      YYSIZE_T yyi;                \
+      for (yyi = 0; yyi &lt; (Count); yyi++)    \
+        (To)[yyi] = (From)[yyi];        \
+    }                    \
</ins><span class="cx">       while (YYID (0))
</span><span class="cx"> #  endif
</span><span class="cx"> # endif
</span><span class="lines">@@ -602,15 +602,15 @@
</span><span class="cx">    elements in the stack, and YYPTR gives the new location of the
</span><span class="cx">    stack.  Advance YYPTR to a properly aligned location for the next
</span><span class="cx">    stack.  */
</span><del>-# define YYSTACK_RELOCATE(Stack)                                        \
-    do                                                                        \
-      {                                                                        \
-        YYSIZE_T yynewbytes;                                                \
-        YYCOPY (&amp;yyptr-&gt;Stack, Stack, yysize);                                \
-        Stack = &amp;yyptr-&gt;Stack;                                                \
-        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-        yyptr += yynewbytes / sizeof (*yyptr);                                \
-      }                                                                        \
</del><ins>+# define YYSTACK_RELOCATE(Stack)                    \
+    do                                    \
+      {                                    \
+    YYSIZE_T yynewbytes;                        \
+    YYCOPY (&amp;yyptr-&gt;Stack, Stack, yysize);                \
+    Stack = &amp;yyptr-&gt;Stack;                        \
+    yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+    yyptr += yynewbytes / sizeof (*yyptr);                \
+      }                                    \
</ins><span class="cx">     while (YYID (0))
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="lines">@@ -633,7 +633,7 @@
</span><span class="cx"> #define YYUNDEFTOK  2
</span><span class="cx"> #define YYMAXUTOK   349
</span><span class="cx"> 
</span><del>-#define YYTRANSLATE(YYX)                                                \
</del><ins>+#define YYTRANSLATE(YYX)                        \
</ins><span class="cx">   ((unsigned int) (YYX) &lt;= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
</span><span class="cx"> 
</span><span class="cx"> /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
</span><span class="lines">@@ -1371,44 +1371,44 @@
</span><span class="cx">      161,    72,   124,   157,   158,   150,    81
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-#define yyerrok                (yyerrstatus = 0)
-#define yyclearin        (yychar = YYEMPTY)
-#define YYEMPTY                (-2)
-#define YYEOF                0
</del><ins>+#define yyerrok        (yyerrstatus = 0)
+#define yyclearin    (yychar = YYEMPTY)
+#define YYEMPTY        (-2)
+#define YYEOF        0
</ins><span class="cx"> 
</span><del>-#define YYACCEPT        goto yyacceptlab
-#define YYABORT                goto yyabortlab
-#define YYERROR                goto yyerrorlab
</del><ins>+#define YYACCEPT    goto yyacceptlab
+#define YYABORT        goto yyabortlab
+#define YYERROR        goto yyerrorlab
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> /* Like YYERROR except do call yyerror.  This remains here temporarily
</span><span class="cx">    to ease the transition to the new meaning of YYERROR, for GCC.
</span><span class="cx">    Once GCC version 2 has supplanted version 1, this can go.  */
</span><span class="cx"> 
</span><del>-#define YYFAIL                goto yyerrlab
</del><ins>+#define YYFAIL        goto yyerrlab
</ins><span class="cx"> 
</span><span class="cx"> #define YYRECOVERING()  (!!yyerrstatus)
</span><span class="cx"> 
</span><del>-#define YYBACKUP(Token, Value)                                        \
-do                                                                \
-  if (yychar == YYEMPTY &amp;&amp; yylen == 1)                                \
-    {                                                                \
-      yychar = (Token);                                                \
-      yylval = (Value);                                                \
-      yytoken = YYTRANSLATE (yychar);                                \
-      YYPOPSTACK (1);                                                \
-      goto yybackup;                                                \
-    }                                                                \
-  else                                                                \
-    {                                                                \
</del><ins>+#define YYBACKUP(Token, Value)                    \
+do                                \
+  if (yychar == YYEMPTY &amp;&amp; yylen == 1)                \
+    {                                \
+      yychar = (Token);                        \
+      yylval = (Value);                        \
+      yytoken = YYTRANSLATE (yychar);                \
+      YYPOPSTACK (1);                        \
+      goto yybackup;                        \
+    }                                \
+  else                                \
+    {                                \
</ins><span class="cx">       yyerror (&amp;yylloc, context, YY_(&quot;syntax error: cannot back up&quot;)); \
</span><del>-      YYERROR;                                                        \
-    }                                                                \
</del><ins>+      YYERROR;                            \
+    }                                \
</ins><span class="cx"> while (YYID (0))
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-#define YYTERROR        1
-#define YYERRCODE        256
</del><ins>+#define YYTERROR    1
+#define YYERRCODE    256
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
</span><span class="lines">@@ -1417,22 +1417,22 @@
</span><span class="cx"> 
</span><span class="cx"> #define YYRHSLOC(Rhs, K) ((Rhs)[K])
</span><span class="cx"> #ifndef YYLLOC_DEFAULT
</span><del>-# define YYLLOC_DEFAULT(Current, Rhs, N)                                \
-    do                                                                        \
</del><ins>+# define YYLLOC_DEFAULT(Current, Rhs, N)                \
+    do                                    \
</ins><span class="cx">       if (YYID (N))                                                    \
</span><del>-        {                                                                \
-          (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
-          (Current).first_column = YYRHSLOC (Rhs, 1).first_column;        \
-          (Current).last_line    = YYRHSLOC (Rhs, N).last_line;                \
-          (Current).last_column  = YYRHSLOC (Rhs, N).last_column;        \
-        }                                                                \
-      else                                                                \
-        {                                                                \
-          (Current).first_line   = (Current).last_line   =                \
-            YYRHSLOC (Rhs, 0).last_line;                                \
-          (Current).first_column = (Current).last_column =                \
-            YYRHSLOC (Rhs, 0).last_column;                                \
-        }                                                                \
</del><ins>+    {                                \
+      (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;    \
+      (Current).first_column = YYRHSLOC (Rhs, 1).first_column;    \
+      (Current).last_line    = YYRHSLOC (Rhs, N).last_line;        \
+      (Current).last_column  = YYRHSLOC (Rhs, N).last_column;    \
+    }                                \
+      else                                \
+    {                                \
+      (Current).first_line   = (Current).last_line   =        \
+        YYRHSLOC (Rhs, 0).last_line;                \
+      (Current).first_column = (Current).last_column =        \
+        YYRHSLOC (Rhs, 0).last_column;                \
+    }                                \
</ins><span class="cx">     while (YYID (0))
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -1443,10 +1443,10 @@
</span><span class="cx"> 
</span><span class="cx"> #ifndef YY_LOCATION_PRINT
</span><span class="cx"> # if defined YYLTYPE_IS_TRIVIAL &amp;&amp; YYLTYPE_IS_TRIVIAL
</span><del>-#  define YY_LOCATION_PRINT(File, Loc)                        \
-     fprintf (File, &quot;%d.%d-%d.%d&quot;,                        \
-              (Loc).first_line, (Loc).first_column,        \
-              (Loc).last_line,  (Loc).last_column)
</del><ins>+#  define YY_LOCATION_PRINT(File, Loc)            \
+     fprintf (File, &quot;%d.%d-%d.%d&quot;,            \
+          (Loc).first_line, (Loc).first_column,    \
+          (Loc).last_line,  (Loc).last_column)
</ins><span class="cx"> # else
</span><span class="cx"> #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
</span><span class="cx"> # endif
</span><span class="lines">@@ -1469,21 +1469,21 @@
</span><span class="cx"> #  define YYFPRINTF fprintf
</span><span class="cx"> # endif
</span><span class="cx"> 
</span><del>-# define YYDPRINTF(Args)                        \
-do {                                                \
-  if (yydebug)                                        \
-    YYFPRINTF Args;                                \
</del><ins>+# define YYDPRINTF(Args)            \
+do {                        \
+  if (yydebug)                    \
+    YYFPRINTF Args;                \
</ins><span class="cx"> } while (YYID (0))
</span><span class="cx"> 
</span><del>-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                          \
-do {                                                                          \
-  if (yydebug)                                                                  \
-    {                                                                          \
-      YYFPRINTF (stderr, &quot;%s &quot;, Title);                                          \
-      yy_symbol_print (stderr,                                                  \
-                  Type, Value, Location, context); \
-      YYFPRINTF (stderr, &quot;\n&quot;);                                                  \
-    }                                                                          \
</del><ins>+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)              \
+do {                                      \
+  if (yydebug)                                  \
+    {                                      \
+      YYFPRINTF (stderr, &quot;%s &quot;, Title);                      \
+      yy_symbol_print (stderr,                          \
+          Type, Value, Location, context); \
+      YYFPRINTF (stderr, &quot;\n&quot;);                          \
+    }                                      \
</ins><span class="cx"> } while (YYID (0))
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -1519,7 +1519,7 @@
</span><span class="cx">   switch (yytype)
</span><span class="cx">     {
</span><span class="cx">       default:
</span><del>-        break;
</del><ins>+    break;
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1575,10 +1575,10 @@
</span><span class="cx">   YYFPRINTF (stderr, &quot;\n&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-# define YY_STACK_PRINT(Bottom, Top)                                \
-do {                                                                \
-  if (yydebug)                                                        \
-    yy_stack_print ((Bottom), (Top));                                \
</del><ins>+# define YY_STACK_PRINT(Bottom, Top)                \
+do {                                \
+  if (yydebug)                            \
+    yy_stack_print ((Bottom), (Top));                \
</ins><span class="cx"> } while (YYID (0))
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -1603,21 +1603,21 @@
</span><span class="cx">   int yyi;
</span><span class="cx">   unsigned long int yylno = yyrline[yyrule];
</span><span class="cx">   YYFPRINTF (stderr, &quot;Reducing stack by rule %d (line %lu):\n&quot;,
</span><del>-             yyrule - 1, yylno);
</del><ins>+         yyrule - 1, yylno);
</ins><span class="cx">   /* The symbols being reduced.  */
</span><span class="cx">   for (yyi = 0; yyi &lt; yynrhs; yyi++)
</span><span class="cx">     {
</span><span class="cx">       fprintf (stderr, &quot;   $%d = &quot;, yyi + 1);
</span><span class="cx">       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
</span><del>-                       &amp;(yyvsp[(yyi + 1) - (yynrhs)])
-                       , &amp;(yylsp[(yyi + 1) - (yynrhs)])                       , context);
</del><ins>+               &amp;(yyvsp[(yyi + 1) - (yynrhs)])
+               , &amp;(yylsp[(yyi + 1) - (yynrhs)])               , context);
</ins><span class="cx">       fprintf (stderr, &quot;\n&quot;);
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-# define YY_REDUCE_PRINT(Rule)                \
-do {                                        \
-  if (yydebug)                                \
</del><ins>+# define YY_REDUCE_PRINT(Rule)        \
+do {                    \
+  if (yydebug)                \
</ins><span class="cx">     yy_reduce_print (yyvsp, yylsp, Rule, context); \
</span><span class="cx"> } while (YYID (0))
</span><span class="cx"> 
</span><span class="lines">@@ -1633,7 +1633,7 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> /* YYINITDEPTH -- initial size of the parser's stacks.  */
</span><del>-#ifndef        YYINITDEPTH
</del><ins>+#ifndef    YYINITDEPTH
</ins><span class="cx"> # define YYINITDEPTH 200
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -1720,27 +1720,27 @@
</span><span class="cx">       char const *yyp = yystr;
</span><span class="cx"> 
</span><span class="cx">       for (;;)
</span><del>-        switch (*++yyp)
-          {
-          case '\'':
-          case ',':
-            goto do_not_strip_quotes;
</del><ins>+    switch (*++yyp)
+      {
+      case '\'':
+      case ',':
+        goto do_not_strip_quotes;
</ins><span class="cx"> 
</span><del>-          case '\\':
-            if (*++yyp != '\\')
-              goto do_not_strip_quotes;
-            /* Fall through.  */
-          default:
-            if (yyres)
-              yyres[yyn] = *yyp;
-            yyn++;
-            break;
</del><ins>+      case '\\':
+        if (*++yyp != '\\')
+          goto do_not_strip_quotes;
+        /* Fall through.  */
+      default:
+        if (yyres)
+          yyres[yyn] = *yyp;
+        yyn++;
+        break;
</ins><span class="cx"> 
</span><del>-          case '&quot;':
-            if (yyres)
-              yyres[yyn] = '\0';
-            return yyn;
-          }
</del><ins>+      case '&quot;':
+        if (yyres)
+          yyres[yyn] = '\0';
+        return yyn;
+      }
</ins><span class="cx">     do_not_strip_quotes: ;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1778,7 +1778,7 @@
</span><span class="cx"> 
</span><span class="cx"> # if 0
</span><span class="cx">       /* This is so xgettext sees the translatable formats that are
</span><del>-         constructed on the fly.  */
</del><ins>+     constructed on the fly.  */
</ins><span class="cx">       YY_(&quot;syntax error, unexpected %s&quot;);
</span><span class="cx">       YY_(&quot;syntax error, unexpected %s, expecting %s&quot;);
</span><span class="cx">       YY_(&quot;syntax error, unexpected %s, expecting %s or %s&quot;);
</span><span class="lines">@@ -1791,13 +1791,13 @@
</span><span class="cx">       static char const yyexpecting[] = &quot;, expecting %s&quot;;
</span><span class="cx">       static char const yyor[] = &quot; or %s&quot;;
</span><span class="cx">       char yyformat[sizeof yyunexpected
</span><del>-                    + sizeof yyexpecting - 1
-                    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-                       * (sizeof yyor - 1))];
</del><ins>+            + sizeof yyexpecting - 1
+            + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+               * (sizeof yyor - 1))];
</ins><span class="cx">       char const *yyprefix = yyexpecting;
</span><span class="cx"> 
</span><span class="cx">       /* Start YYX at -YYN if negative to avoid negative indexes in
</span><del>-         YYCHECK.  */
</del><ins>+     YYCHECK.  */
</ins><span class="cx">       int yyxbegin = yyn &lt; 0 ? -yyn : 0;
</span><span class="cx"> 
</span><span class="cx">       /* Stay within bounds of both yycheck and yytname.  */
</span><span class="lines">@@ -1809,22 +1809,22 @@
</span><span class="cx">       yyfmt = yystpcpy (yyformat, yyunexpected);
</span><span class="cx"> 
</span><span class="cx">       for (yyx = yyxbegin; yyx &lt; yyxend; ++yyx)
</span><del>-        if (yycheck[yyx + yyn] == yyx &amp;&amp; yyx != YYTERROR)
-          {
-            if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-              {
-                yycount = 1;
-                yysize = yysize0;
-                yyformat[sizeof yyunexpected - 1] = '\0';
-                break;
-              }
-            yyarg[yycount++] = yytname[yyx];
-            yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-            yysize_overflow |= (yysize1 &lt; yysize);
-            yysize = yysize1;
-            yyfmt = yystpcpy (yyfmt, yyprefix);
-            yyprefix = yyor;
-          }
</del><ins>+    if (yycheck[yyx + yyn] == yyx &amp;&amp; yyx != YYTERROR)
+      {
+        if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+          {
+        yycount = 1;
+        yysize = yysize0;
+        yyformat[sizeof yyunexpected - 1] = '\0';
+        break;
+          }
+        yyarg[yycount++] = yytname[yyx];
+        yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+        yysize_overflow |= (yysize1 &lt; yysize);
+        yysize = yysize1;
+        yyfmt = yystpcpy (yyfmt, yyprefix);
+        yyprefix = yyor;
+      }
</ins><span class="cx"> 
</span><span class="cx">       yyf = YY_(yyformat);
</span><span class="cx">       yysize1 = yysize + yystrlen (yyf);
</span><span class="lines">@@ -1832,29 +1832,29 @@
</span><span class="cx">       yysize = yysize1;
</span><span class="cx"> 
</span><span class="cx">       if (yysize_overflow)
</span><del>-        return YYSIZE_MAXIMUM;
</del><ins>+    return YYSIZE_MAXIMUM;
</ins><span class="cx"> 
</span><span class="cx">       if (yyresult)
</span><del>-        {
-          /* Avoid sprintf, as that infringes on the user's name space.
-             Don't have undefined behavior even if the translation
-             produced a string with the wrong number of &quot;%s&quot;s.  */
-          char *yyp = yyresult;
-          int yyi = 0;
-          while ((*yyp = *yyf) != '\0')
-            {
-              if (*yyp == '%' &amp;&amp; yyf[1] == 's' &amp;&amp; yyi &lt; yycount)
-                {
-                  yyp += yytnamerr (yyp, yyarg[yyi++]);
-                  yyf += 2;
-                }
-              else
-                {
-                  yyp++;
-                  yyf++;
-                }
-            }
-        }
</del><ins>+    {
+      /* Avoid sprintf, as that infringes on the user's name space.
+         Don't have undefined behavior even if the translation
+         produced a string with the wrong number of &quot;%s&quot;s.  */
+      char *yyp = yyresult;
+      int yyi = 0;
+      while ((*yyp = *yyf) != '\0')
+        {
+          if (*yyp == '%' &amp;&amp; yyf[1] == 's' &amp;&amp; yyi &lt; yycount)
+        {
+          yyp += yytnamerr (yyp, yyarg[yyi++]);
+          yyf += 2;
+        }
+          else
+        {
+          yyp++;
+          yyf++;
+        }
+        }
+    }
</ins><span class="cx">       return yysize;
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -1892,7 +1892,7 @@
</span><span class="cx">     {
</span><span class="cx"> 
</span><span class="cx">       default:
</span><del>-        break;
</del><ins>+    break;
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2012,7 +2012,7 @@
</span><span class="cx">   yystate = 0;
</span><span class="cx">   yyerrstatus = 0;
</span><span class="cx">   yynerrs = 0;
</span><del>-  yychar = YYEMPTY;                /* Cause a token to be read.  */
</del><ins>+  yychar = YYEMPTY;        /* Cause a token to be read.  */
</ins><span class="cx"> 
</span><span class="cx">   /* Initialize stack pointers.
</span><span class="cx">      Waste one element of value and location stack
</span><span class="lines">@@ -2048,25 +2048,25 @@
</span><span class="cx"> 
</span><span class="cx"> #ifdef yyoverflow
</span><span class="cx">       {
</span><del>-        /* Give user a chance to reallocate the stack.  Use copies of
-           these so that the &amp;'s don't force the real ones into
-           memory.  */
-        YYSTYPE *yyvs1 = yyvs;
-        yytype_int16 *yyss1 = yyss;
-        YYLTYPE *yyls1 = yyls;
</del><ins>+    /* Give user a chance to reallocate the stack.  Use copies of
+       these so that the &amp;'s don't force the real ones into
+       memory.  */
+    YYSTYPE *yyvs1 = yyvs;
+    yytype_int16 *yyss1 = yyss;
+    YYLTYPE *yyls1 = yyls;
</ins><span class="cx"> 
</span><del>-        /* Each stack pointer address is followed by the size of the
-           data in use in that stack, in bytes.  This used to be a
-           conditional around just the two extra args, but that might
-           be undefined if yyoverflow is a macro.  */
-        yyoverflow (YY_(&quot;memory exhausted&quot;),
-                    &amp;yyss1, yysize * sizeof (*yyssp),
-                    &amp;yyvs1, yysize * sizeof (*yyvsp),
-                    &amp;yyls1, yysize * sizeof (*yylsp),
-                    &amp;yystacksize);
-        yyls = yyls1;
-        yyss = yyss1;
-        yyvs = yyvs1;
</del><ins>+    /* Each stack pointer address is followed by the size of the
+       data in use in that stack, in bytes.  This used to be a
+       conditional around just the two extra args, but that might
+       be undefined if yyoverflow is a macro.  */
+    yyoverflow (YY_(&quot;memory exhausted&quot;),
+            &amp;yyss1, yysize * sizeof (*yyssp),
+            &amp;yyvs1, yysize * sizeof (*yyvsp),
+            &amp;yyls1, yysize * sizeof (*yylsp),
+            &amp;yystacksize);
+    yyls = yyls1;
+    yyss = yyss1;
+    yyvs = yyvs1;
</ins><span class="cx">       }
</span><span class="cx"> #else /* no yyoverflow */
</span><span class="cx"> # ifndef YYSTACK_RELOCATE
</span><span class="lines">@@ -2074,23 +2074,23 @@
</span><span class="cx"> # else
</span><span class="cx">       /* Extend the stack our own way.  */
</span><span class="cx">       if (YYMAXDEPTH &lt;= yystacksize)
</span><del>-        goto yyexhaustedlab;
</del><ins>+    goto yyexhaustedlab;
</ins><span class="cx">       yystacksize *= 2;
</span><span class="cx">       if (YYMAXDEPTH &lt; yystacksize)
</span><del>-        yystacksize = YYMAXDEPTH;
</del><ins>+    yystacksize = YYMAXDEPTH;
</ins><span class="cx"> 
</span><span class="cx">       {
</span><del>-        yytype_int16 *yyss1 = yyss;
-        union yyalloc *yyptr =
-          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-        if (! yyptr)
-          goto yyexhaustedlab;
-        YYSTACK_RELOCATE (yyss);
-        YYSTACK_RELOCATE (yyvs);
-        YYSTACK_RELOCATE (yyls);
</del><ins>+    yytype_int16 *yyss1 = yyss;
+    union yyalloc *yyptr =
+      (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+    if (! yyptr)
+      goto yyexhaustedlab;
+    YYSTACK_RELOCATE (yyss);
+    YYSTACK_RELOCATE (yyvs);
+    YYSTACK_RELOCATE (yyls);
</ins><span class="cx"> #  undef YYSTACK_RELOCATE
</span><del>-        if (yyss1 != yyssa)
-          YYSTACK_FREE (yyss1);
</del><ins>+    if (yyss1 != yyssa)
+      YYSTACK_FREE (yyss1);
</ins><span class="cx">       }
</span><span class="cx"> # endif
</span><span class="cx"> #endif /* no yyoverflow */
</span><span class="lines">@@ -2100,10 +2100,10 @@
</span><span class="cx">       yylsp = yyls + yysize - 1;
</span><span class="cx"> 
</span><span class="cx">       YYDPRINTF ((stderr, &quot;Stack size increased to %lu\n&quot;,
</span><del>-                  (unsigned long int) yystacksize));
</del><ins>+          (unsigned long int) yystacksize));
</ins><span class="cx"> 
</span><span class="cx">       if (yyss + yystacksize - 1 &lt;= yyssp)
</span><del>-        YYABORT;
</del><ins>+    YYABORT;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">   YYDPRINTF ((stderr, &quot;Entering state %d\n&quot;, yystate));
</span><span class="lines">@@ -2152,7 +2152,7 @@
</span><span class="cx">   if (yyn &lt;= 0)
</span><span class="cx">     {
</span><span class="cx">       if (yyn == 0 || yyn == YYTABLE_NINF)
</span><del>-        goto yyerrlab;
</del><ins>+    goto yyerrlab;
</ins><span class="cx">       yyn = -yyn;
</span><span class="cx">       goto yyreduce;
</span><span class="cx">     }
</span><span class="lines">@@ -4638,36 +4638,36 @@
</span><span class="cx">       yyerror (&amp;yylloc, context, YY_(&quot;syntax error&quot;));
</span><span class="cx"> #else
</span><span class="cx">       {
</span><del>-        YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-        if (yymsg_alloc &lt; yysize &amp;&amp; yymsg_alloc &lt; YYSTACK_ALLOC_MAXIMUM)
-          {
-            YYSIZE_T yyalloc = 2 * yysize;
-            if (! (yysize &lt;= yyalloc &amp;&amp; yyalloc &lt;= YYSTACK_ALLOC_MAXIMUM))
-              yyalloc = YYSTACK_ALLOC_MAXIMUM;
-            if (yymsg != yymsgbuf)
-              YYSTACK_FREE (yymsg);
-            yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-            if (yymsg)
-              yymsg_alloc = yyalloc;
-            else
-              {
-                yymsg = yymsgbuf;
-                yymsg_alloc = sizeof yymsgbuf;
-              }
-          }
</del><ins>+    YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
+    if (yymsg_alloc &lt; yysize &amp;&amp; yymsg_alloc &lt; YYSTACK_ALLOC_MAXIMUM)
+      {
+        YYSIZE_T yyalloc = 2 * yysize;
+        if (! (yysize &lt;= yyalloc &amp;&amp; yyalloc &lt;= YYSTACK_ALLOC_MAXIMUM))
+          yyalloc = YYSTACK_ALLOC_MAXIMUM;
+        if (yymsg != yymsgbuf)
+          YYSTACK_FREE (yymsg);
+        yymsg = (char *) YYSTACK_ALLOC (yyalloc);
+        if (yymsg)
+          yymsg_alloc = yyalloc;
+        else
+          {
+        yymsg = yymsgbuf;
+        yymsg_alloc = sizeof yymsgbuf;
+          }
+      }
</ins><span class="cx"> 
</span><del>-        if (0 &lt; yysize &amp;&amp; yysize &lt;= yymsg_alloc)
-          {
-            (void) yysyntax_error (yymsg, yystate, yychar);
-            yyerror (&amp;yylloc, context, yymsg);
-          }
-        else
-          {
-            yyerror (&amp;yylloc, context, YY_(&quot;syntax error&quot;));
-            if (yysize != 0)
-              goto yyexhaustedlab;
-          }
</del><ins>+    if (0 &lt; yysize &amp;&amp; yysize &lt;= yymsg_alloc)
+      {
+        (void) yysyntax_error (yymsg, yystate, yychar);
+        yyerror (&amp;yylloc, context, yymsg);
</ins><span class="cx">       }
</span><ins>+    else
+      {
+        yyerror (&amp;yylloc, context, YY_(&quot;syntax error&quot;));
+        if (yysize != 0)
+          goto yyexhaustedlab;
+      }
+      }
</ins><span class="cx"> #endif
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -4676,21 +4676,21 @@
</span><span class="cx">   if (yyerrstatus == 3)
</span><span class="cx">     {
</span><span class="cx">       /* If just tried and failed to reuse look-ahead token after an
</span><del>-         error, discard it.  */
</del><ins>+     error, discard it.  */
</ins><span class="cx"> 
</span><span class="cx">       if (yychar &lt;= YYEOF)
</span><del>-        {
-          /* Return failure if at end of input.  */
-          if (yychar == YYEOF)
-            YYABORT;
-        }
</del><ins>+    {
+      /* Return failure if at end of input.  */
+      if (yychar == YYEOF)
+        YYABORT;
+    }
</ins><span class="cx">       else
</span><del>-        {
-          yydestruct (&quot;Error: discarding&quot;,
-                      yytoken, &amp;yylval, &amp;yylloc, context);
-          yychar = YYEMPTY;
-        }
</del><ins>+    {
+      yydestruct (&quot;Error: discarding&quot;,
+              yytoken, &amp;yylval, &amp;yylloc, context);
+      yychar = YYEMPTY;
</ins><span class="cx">     }
</span><ins>+    }
</ins><span class="cx"> 
</span><span class="cx">   /* Else will try to reuse look-ahead token after shifting the error
</span><span class="cx">      token.  */
</span><span class="lines">@@ -4722,29 +4722,29 @@
</span><span class="cx"> | yyerrlab1 -- common code for both syntax error and YYERROR.  |
</span><span class="cx"> `-------------------------------------------------------------*/
</span><span class="cx"> yyerrlab1:
</span><del>-  yyerrstatus = 3;        /* Each real token shifted decrements this.  */
</del><ins>+  yyerrstatus = 3;    /* Each real token shifted decrements this.  */
</ins><span class="cx"> 
</span><span class="cx">   for (;;)
</span><span class="cx">     {
</span><span class="cx">       yyn = yypact[yystate];
</span><span class="cx">       if (yyn != YYPACT_NINF)
</span><del>-        {
-          yyn += YYTERROR;
-          if (0 &lt;= yyn &amp;&amp; yyn &lt;= YYLAST &amp;&amp; yycheck[yyn] == YYTERROR)
-            {
-              yyn = yytable[yyn];
-              if (0 &lt; yyn)
-                break;
-            }
-        }
</del><ins>+    {
+      yyn += YYTERROR;
+      if (0 &lt;= yyn &amp;&amp; yyn &lt;= YYLAST &amp;&amp; yycheck[yyn] == YYTERROR)
+        {
+          yyn = yytable[yyn];
+          if (0 &lt; yyn)
+        break;
+        }
+    }
</ins><span class="cx"> 
</span><span class="cx">       /* Pop the current state because it cannot handle the error token.  */
</span><span class="cx">       if (yyssp == yyss)
</span><del>-        YYABORT;
</del><ins>+    YYABORT;
</ins><span class="cx"> 
</span><span class="cx">       yyerror_range[0] = *yylsp;
</span><span class="cx">       yydestruct (&quot;Error: popping&quot;,
</span><del>-                  yystos[yystate], yyvsp, yylsp, context);
</del><ins>+          yystos[yystate], yyvsp, yylsp, context);
</ins><span class="cx">       YYPOPSTACK (1);
</span><span class="cx">       yystate = *yyssp;
</span><span class="cx">       YY_STACK_PRINT (yyss, yyssp);
</span><span class="lines">@@ -4795,7 +4795,7 @@
</span><span class="cx"> yyreturn:
</span><span class="cx">   if (yychar != YYEOF &amp;&amp; yychar != YYEMPTY)
</span><span class="cx">      yydestruct (&quot;Cleanup: discarding lookahead&quot;,
</span><del>-                 yytoken, &amp;yylval, &amp;yylloc, context);
</del><ins>+         yytoken, &amp;yylval, &amp;yylloc, context);
</ins><span class="cx">   /* Do not reclaim the symbols of the rule which action triggered
</span><span class="cx">      this YYABORT or YYACCEPT.  */
</span><span class="cx">   YYPOPSTACK (yylen);
</span><span class="lines">@@ -4803,7 +4803,7 @@
</span><span class="cx">   while (yyssp != yyss)
</span><span class="cx">     {
</span><span class="cx">       yydestruct (&quot;Cleanup: popping&quot;,
</span><del>-                  yystos[*yyssp], yyvsp, yylsp, context);
</del><ins>+          yystos[*yyssp], yyvsp, yylsp, context);
</ins><span class="cx">       YYPOPSTACK (1);
</span><span class="cx">     }
</span><span class="cx"> #ifndef yyoverflow
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerglslang_tabh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -33,6 +33,10 @@
</span><span class="cx">    This special exception was added by the Free Software Foundation in
</span><span class="cx">    version 2.2 of Bison.  */
</span><span class="cx"> 
</span><ins>+#define YYLTYPE TSourceLoc
+#define YYLTYPE_IS_DECLARED 1
+#define SH_MAX_TOKEN_LENGTH 256  // WebGL spec.
+
</ins><span class="cx"> /* Tokens.  */
</span><span class="cx"> #ifndef YYTOKENTYPE
</span><span class="cx"> # define YYTOKENTYPE
</span><span class="lines">@@ -266,10 +270,11 @@
</span><span class="cx"> }
</span><span class="cx"> /* Line 1529 of yacc.c.  */
</span><span class="cx"> 
</span><del>-        YYSTYPE;
</del><ins>+    YYSTYPE;
</ins><span class="cx"> # define yystype YYSTYPE /* obsolescent; will be withdrawn */
</span><span class="cx"> # define YYSTYPE_IS_DECLARED 1
</span><span class="cx"> # define YYSTYPE_IS_TRIVIAL 1
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerintermediateh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/intermediate.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/intermediate.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/intermediate.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -205,8 +205,7 @@
</span><span class="cx"> //
</span><span class="cx"> class TIntermNode {
</span><span class="cx"> public:
</span><del>-    POOL_ALLOCATOR_NEW_DELETE(GlobalPoolAllocator)
-
</del><ins>+    POOL_ALLOCATOR_NEW_DELETE();
</ins><span class="cx">     TIntermNode() {
</span><span class="cx">         // TODO: Move this to TSourceLoc constructor
</span><span class="cx">         // after getting rid of TPublicType.
</span><span class="lines">@@ -228,6 +227,11 @@
</span><span class="cx">     virtual TIntermSymbol* getAsSymbolNode() { return 0; }
</span><span class="cx">     virtual TIntermLoop* getAsLoopNode() { return 0; }
</span><span class="cx"> 
</span><ins>+    // Replace a child node. Return true if |original| is a child
+    // node and it is replaced; otherwise, return false.
+    virtual bool replaceChildNode(
+        TIntermNode *original, TIntermNode *replacement) = 0;
+
</ins><span class="cx"> protected:
</span><span class="cx">     TSourceLoc line;
</span><span class="cx"> };
</span><span class="lines">@@ -248,6 +252,8 @@
</span><span class="cx">     TIntermTyped(const TType&amp; t) : type(t)  { }
</span><span class="cx">     virtual TIntermTyped* getAsTyped() { return this; }
</span><span class="cx"> 
</span><ins>+    virtual bool hasSideEffects() const = 0;
+
</ins><span class="cx">     void setType(const TType&amp; t) { type = t; }
</span><span class="cx">     const TType&amp; getType() const { return type; }
</span><span class="cx">     TType* getTypePointer() { return &amp;type; }
</span><span class="lines">@@ -296,6 +302,8 @@
</span><span class="cx"> 
</span><span class="cx">     virtual TIntermLoop* getAsLoopNode() { return this; }
</span><span class="cx">     virtual void traverse(TIntermTraverser*);
</span><ins>+    virtual bool replaceChildNode(
+        TIntermNode *original, TIntermNode *replacement);
</ins><span class="cx"> 
</span><span class="cx">     TLoopType getType() const { return type; }
</span><span class="cx">     TIntermNode* getInit() { return init; }
</span><span class="lines">@@ -326,6 +334,8 @@
</span><span class="cx">             expression(e) { }
</span><span class="cx"> 
</span><span class="cx">     virtual void traverse(TIntermTraverser*);
</span><ins>+    virtual bool replaceChildNode(
+        TIntermNode *original, TIntermNode *replacement);
</ins><span class="cx"> 
</span><span class="cx">     TOperator getFlowOp() { return flowOp; }
</span><span class="cx">     TIntermTyped* getExpression() { return expression; }
</span><span class="lines">@@ -346,6 +356,8 @@
</span><span class="cx">     TIntermSymbol(int i, const TString&amp; sym, const TType&amp; t) : 
</span><span class="cx">             TIntermTyped(t), id(i)  { symbol = sym; originalSymbol = sym; } 
</span><span class="cx"> 
</span><ins>+    virtual bool hasSideEffects() const { return false; }
+
</ins><span class="cx">     int getId() const { return id; }
</span><span class="cx">     const TString&amp; getSymbol() const { return symbol; }
</span><span class="cx"> 
</span><span class="lines">@@ -356,6 +368,7 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void traverse(TIntermTraverser*);
</span><span class="cx">     virtual TIntermSymbol* getAsSymbolNode() { return this; }
</span><ins>+    virtual bool replaceChildNode(TIntermNode *, TIntermNode *) { return false; }
</ins><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="cx">     int id;
</span><span class="lines">@@ -367,14 +380,17 @@
</span><span class="cx"> public:
</span><span class="cx">     TIntermConstantUnion(ConstantUnion *unionPointer, const TType&amp; t) : TIntermTyped(t), unionArrayPointer(unionPointer) { }
</span><span class="cx"> 
</span><ins>+    virtual bool hasSideEffects() const { return false; }
+
</ins><span class="cx">     ConstantUnion* getUnionArrayPointer() const { return unionArrayPointer; }
</span><span class="cx">     
</span><del>-    int getIConst(size_t index) const { return unionArrayPointer ? unionArrayPointer[index].getIConst() : 0; }
-    float getFConst(size_t index) const { return unionArrayPointer ? unionArrayPointer[index].getFConst() : 0.0f; }
-    bool getBConst(size_t index) const { return unionArrayPointer ? unionArrayPointer[index].getBConst() : false; }
</del><ins>+    int getIConst(int index) const { return unionArrayPointer ? unionArrayPointer[index].getIConst() : 0; }
+    float getFConst(int index) const { return unionArrayPointer ? unionArrayPointer[index].getFConst() : 0.0f; }
+    bool getBConst(int index) const { return unionArrayPointer ? unionArrayPointer[index].getBConst() : false; }
</ins><span class="cx"> 
</span><span class="cx">     virtual TIntermConstantUnion* getAsConstantUnion()  { return this; }
</span><span class="cx">     virtual void traverse(TIntermTraverser*);
</span><ins>+    virtual bool replaceChildNode(TIntermNode *, TIntermNode *) { return false; }
</ins><span class="cx"> 
</span><span class="cx">     TIntermTyped* fold(TOperator, TIntermTyped*, TInfoSink&amp;);
</span><span class="cx"> 
</span><span class="lines">@@ -390,9 +406,11 @@
</span><span class="cx">     TOperator getOp() const { return op; }
</span><span class="cx">     void setOp(TOperator o) { op = o; }
</span><span class="cx"> 
</span><del>-    bool modifiesState() const;
</del><ins>+    bool isAssignment() const;
</ins><span class="cx">     bool isConstructor() const;
</span><span class="cx"> 
</span><ins>+    virtual bool hasSideEffects() const { return isAssignment(); }
+
</ins><span class="cx"> protected:
</span><span class="cx">     TIntermOperator(TOperator o) : TIntermTyped(TType(EbtFloat, EbpUndefined)), op(o) {}
</span><span class="cx">     TIntermOperator(TOperator o, TType&amp; t) : TIntermTyped(t), op(o) {}   
</span><span class="lines">@@ -408,7 +426,11 @@
</span><span class="cx"> 
</span><span class="cx">     virtual TIntermBinary* getAsBinaryNode() { return this; }
</span><span class="cx">     virtual void traverse(TIntermTraverser*);
</span><ins>+    virtual bool replaceChildNode(
+        TIntermNode *original, TIntermNode *replacement);
</ins><span class="cx"> 
</span><ins>+    virtual bool hasSideEffects() const { return (isAssignment() || left-&gt;hasSideEffects() || right-&gt;hasSideEffects()); }
+
</ins><span class="cx">     void setLeft(TIntermTyped* n) { left = n; }
</span><span class="cx">     void setRight(TIntermTyped* n) { right = n; }
</span><span class="cx">     TIntermTyped* getLeft() const { return left; }
</span><span class="lines">@@ -436,7 +458,11 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void traverse(TIntermTraverser*);
</span><span class="cx">     virtual TIntermUnary* getAsUnaryNode() { return this; }
</span><ins>+    virtual bool replaceChildNode(
+        TIntermNode *original, TIntermNode *replacement);
</ins><span class="cx"> 
</span><ins>+    virtual bool hasSideEffects() const { return (isAssignment() || operand-&gt;hasSideEffects()); }
+
</ins><span class="cx">     void setOperand(TIntermTyped* o) { operand = o; }
</span><span class="cx">     TIntermTyped* getOperand() { return operand; }    
</span><span class="cx">     bool promote(TInfoSink&amp;);
</span><span class="lines">@@ -466,7 +492,12 @@
</span><span class="cx"> 
</span><span class="cx">     virtual TIntermAggregate* getAsAggregate() { return this; }
</span><span class="cx">     virtual void traverse(TIntermTraverser*);
</span><ins>+    virtual bool replaceChildNode(
+        TIntermNode *original, TIntermNode *replacement);
</ins><span class="cx"> 
</span><ins>+    // Conservatively assume function calls and other aggregate operators have side-effects
+    virtual bool hasSideEffects() const { return true; }
+
</ins><span class="cx">     TIntermSequence&amp; getSequence() { return sequence; }
</span><span class="cx"> 
</span><span class="cx">     void setName(const TString&amp; n) { name = n; }
</span><span class="lines">@@ -509,7 +540,12 @@
</span><span class="cx">             TIntermTyped(type), condition(cond), trueBlock(trueB), falseBlock(falseB) {}
</span><span class="cx"> 
</span><span class="cx">     virtual void traverse(TIntermTraverser*);
</span><ins>+    virtual bool replaceChildNode(
+        TIntermNode *original, TIntermNode *replacement);
</ins><span class="cx"> 
</span><ins>+    // Conservatively assume selections have side-effects
+    virtual bool hasSideEffects() const { return true; }
+
</ins><span class="cx">     bool usesTernaryOperator() const { return getBasicType() != EbtVoid; }
</span><span class="cx">     TIntermNode* getCondition() const { return condition; }
</span><span class="cx">     TIntermNode* getTrueBlock() const { return trueBlock; }
</span><span class="lines">@@ -540,8 +576,7 @@
</span><span class="cx"> class TIntermTraverser
</span><span class="cx"> {
</span><span class="cx"> public:
</span><del>-    POOL_ALLOCATOR_NEW_DELETE(GlobalPoolAllocator)
-
</del><ins>+    POOL_ALLOCATOR_NEW_DELETE();
</ins><span class="cx">     TIntermTraverser(bool preVisit = true, bool inVisit = false, bool postVisit = false, bool rightToLeft = false) : 
</span><span class="cx">             preVisit(preVisit),
</span><span class="cx">             inVisit(inVisit),
</span><span class="lines">@@ -549,7 +584,7 @@
</span><span class="cx">             rightToLeft(rightToLeft),
</span><span class="cx">             depth(0),
</span><span class="cx">             maxDepth(0) {}
</span><del>-    virtual ~TIntermTraverser() {};
</del><ins>+    virtual ~TIntermTraverser() {}
</ins><span class="cx"> 
</span><span class="cx">     virtual void visitSymbol(TIntermSymbol*) {}
</span><span class="cx">     virtual void visitConstantUnion(TIntermConstantUnion*) {}
</span><span class="lines">@@ -561,9 +596,25 @@
</span><span class="cx">     virtual bool visitBranch(Visit visit, TIntermBranch*) {return true;}
</span><span class="cx"> 
</span><span class="cx">     int getMaxDepth() const {return maxDepth;}
</span><del>-    void incrementDepth() {depth++; maxDepth = std::max(maxDepth, depth); }
-    void decrementDepth() {depth--;}
</del><span class="cx"> 
</span><ins>+    void incrementDepth(TIntermNode *current)
+    {
+        depth++;
+        maxDepth = std::max(maxDepth, depth);
+        path.push_back(current);
+    }
+
+    void decrementDepth()
+    {
+        depth--;
+        path.pop_back();
+    }
+
+    TIntermNode *getParentNode()
+    {
+        return path.size() == 0 ? NULL : path.back();
+    }
+
</ins><span class="cx">     // Return the original name if hash function pointer is NULL;
</span><span class="cx">     // otherwise return the hashed name.
</span><span class="cx">     static TString hash(const TString&amp; name, ShHashFunction64 hashFunction);
</span><span class="lines">@@ -576,6 +627,9 @@
</span><span class="cx"> protected:
</span><span class="cx">     int depth;
</span><span class="cx">     int maxDepth;
</span><ins>+
+    // All the nodes from root to the current node's parent during traversing.
+    TVector&lt;TIntermNode *&gt; path;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> #endif // __INTERMEDIATE_H
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerlocalintermediateh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/localintermediate.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/localintermediate.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/localintermediate.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -22,9 +22,9 @@
</span><span class="cx"> class TInfoSink;
</span><span class="cx"> class TIntermediate {
</span><span class="cx"> public:    
</span><del>-    POOL_ALLOCATOR_NEW_DELETE(GlobalPoolAllocator)
</del><ins>+    POOL_ALLOCATOR_NEW_DELETE();
+    TIntermediate(TInfoSink&amp; i) : infoSink(i) { }
</ins><span class="cx"> 
</span><del>-    TIntermediate(TInfoSink&amp; i) : infoSink(i) { }
</del><span class="cx">     TIntermSymbol* addSymbol(int Id, const TString&amp;, const TType&amp;, const TSourceLoc&amp;);
</span><span class="cx">     TIntermTyped* addConversion(TOperator, const TType&amp;, TIntermTyped*);
</span><span class="cx">     TIntermTyped* addBinaryMath(TOperator op, TIntermTyped* left, TIntermTyped* right, const TSourceLoc&amp;, TSymbolTable&amp;);
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerparseConstcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/parseConst.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/parseConst.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/parseConst.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -4,7 +4,7 @@
</span><span class="cx"> // found in the LICENSE file.
</span><span class="cx"> //
</span><span class="cx"> 
</span><del>-#include &quot;compiler/ParseHelper.h&quot;
</del><ins>+#include &quot;compiler/ParseContext.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> //
</span><span class="cx"> // Use this class to carry along data from node to node in 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerpreprocessorExpressionParsercpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -321,7 +321,7 @@
</span><span class="cx"> #  endif
</span><span class="cx"> #  if (defined __cplusplus &amp;&amp; ! defined _STDLIB_H \
</span><span class="cx">        &amp;&amp; ! ((defined YYMALLOC || defined malloc) \
</span><del>-             &amp;&amp; (defined YYFREE || defined free)))
</del><ins>+         &amp;&amp; (defined YYFREE || defined free)))
</ins><span class="cx"> #   include &lt;stdlib.h&gt; /* INFRINGES ON USER NAME SPACE */
</span><span class="cx"> #   ifndef _STDLIB_H
</span><span class="cx"> #    define _STDLIB_H 1
</span><span class="lines">@@ -347,7 +347,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if (! defined yyoverflow \
</span><span class="cx">      &amp;&amp; (! defined __cplusplus \
</span><del>-         || (defined YYSTYPE_IS_TRIVIAL &amp;&amp; YYSTYPE_IS_TRIVIAL)))
</del><ins>+     || (defined YYSTYPE_IS_TRIVIAL &amp;&amp; YYSTYPE_IS_TRIVIAL)))
</ins><span class="cx"> 
</span><span class="cx"> /* A type that is properly aligned for any stack member.  */
</span><span class="cx"> union yyalloc
</span><span class="lines">@@ -372,13 +372,13 @@
</span><span class="cx"> #   define YYCOPY(To, From, Count) \
</span><span class="cx">       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
</span><span class="cx"> #  else
</span><del>-#   define YYCOPY(To, From, Count)                \
-      do                                        \
-        {                                        \
-          YYSIZE_T yyi;                                \
-          for (yyi = 0; yyi &lt; (Count); yyi++)        \
-            (To)[yyi] = (From)[yyi];                \
-        }                                        \
</del><ins>+#   define YYCOPY(To, From, Count)        \
+      do                    \
+    {                    \
+      YYSIZE_T yyi;                \
+      for (yyi = 0; yyi &lt; (Count); yyi++)    \
+        (To)[yyi] = (From)[yyi];        \
+    }                    \
</ins><span class="cx">       while (YYID (0))
</span><span class="cx"> #  endif
</span><span class="cx"> # endif
</span><span class="lines">@@ -388,15 +388,15 @@
</span><span class="cx">    elements in the stack, and YYPTR gives the new location of the
</span><span class="cx">    stack.  Advance YYPTR to a properly aligned location for the next
</span><span class="cx">    stack.  */
</span><del>-# define YYSTACK_RELOCATE(Stack)                                        \
-    do                                                                        \
-      {                                                                        \
-        YYSIZE_T yynewbytes;                                                \
-        YYCOPY (&amp;yyptr-&gt;Stack, Stack, yysize);                                \
-        Stack = &amp;yyptr-&gt;Stack;                                                \
-        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-        yyptr += yynewbytes / sizeof (*yyptr);                                \
-      }                                                                        \
</del><ins>+# define YYSTACK_RELOCATE(Stack)                    \
+    do                                    \
+      {                                    \
+    YYSIZE_T yynewbytes;                        \
+    YYCOPY (&amp;yyptr-&gt;Stack, Stack, yysize);                \
+    Stack = &amp;yyptr-&gt;Stack;                        \
+    yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+    yyptr += yynewbytes / sizeof (*yyptr);                \
+      }                                    \
</ins><span class="cx">     while (YYID (0))
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="lines">@@ -419,7 +419,7 @@
</span><span class="cx"> #define YYUNDEFTOK  2
</span><span class="cx"> #define YYMAXUTOK   267
</span><span class="cx"> 
</span><del>-#define YYTRANSLATE(YYX)                                                \
</del><ins>+#define YYTRANSLATE(YYX)                        \
</ins><span class="cx">   ((unsigned int) (YYX) &lt;= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
</span><span class="cx"> 
</span><span class="cx"> /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
</span><span class="lines">@@ -627,44 +627,44 @@
</span><span class="cx">       29,    29
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-#define yyerrok                (yyerrstatus = 0)
-#define yyclearin        (yychar = YYEMPTY)
-#define YYEMPTY                (-2)
-#define YYEOF                0
</del><ins>+#define yyerrok        (yyerrstatus = 0)
+#define yyclearin    (yychar = YYEMPTY)
+#define YYEMPTY        (-2)
+#define YYEOF        0
</ins><span class="cx"> 
</span><del>-#define YYACCEPT        goto yyacceptlab
-#define YYABORT                goto yyabortlab
-#define YYERROR                goto yyerrorlab
</del><ins>+#define YYACCEPT    goto yyacceptlab
+#define YYABORT        goto yyabortlab
+#define YYERROR        goto yyerrorlab
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> /* Like YYERROR except do call yyerror.  This remains here temporarily
</span><span class="cx">    to ease the transition to the new meaning of YYERROR, for GCC.
</span><span class="cx">    Once GCC version 2 has supplanted version 1, this can go.  */
</span><span class="cx"> 
</span><del>-#define YYFAIL                goto yyerrlab
</del><ins>+#define YYFAIL        goto yyerrlab
</ins><span class="cx"> 
</span><span class="cx"> #define YYRECOVERING()  (!!yyerrstatus)
</span><span class="cx"> 
</span><del>-#define YYBACKUP(Token, Value)                                        \
-do                                                                \
-  if (yychar == YYEMPTY &amp;&amp; yylen == 1)                                \
-    {                                                                \
-      yychar = (Token);                                                \
-      yylval = (Value);                                                \
-      yytoken = YYTRANSLATE (yychar);                                \
-      YYPOPSTACK (1);                                                \
-      goto yybackup;                                                \
-    }                                                                \
-  else                                                                \
-    {                                                                \
</del><ins>+#define YYBACKUP(Token, Value)                    \
+do                                \
+  if (yychar == YYEMPTY &amp;&amp; yylen == 1)                \
+    {                                \
+      yychar = (Token);                        \
+      yylval = (Value);                        \
+      yytoken = YYTRANSLATE (yychar);                \
+      YYPOPSTACK (1);                        \
+      goto yybackup;                        \
+    }                                \
+  else                                \
+    {                                \
</ins><span class="cx">       yyerror (context, YY_(&quot;syntax error: cannot back up&quot;)); \
</span><del>-      YYERROR;                                                        \
-    }                                                                \
</del><ins>+      YYERROR;                            \
+    }                                \
</ins><span class="cx"> while (YYID (0))
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-#define YYTERROR        1
-#define YYERRCODE        256
</del><ins>+#define YYTERROR    1
+#define YYERRCODE    256
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
</span><span class="lines">@@ -673,22 +673,22 @@
</span><span class="cx"> 
</span><span class="cx"> #define YYRHSLOC(Rhs, K) ((Rhs)[K])
</span><span class="cx"> #ifndef YYLLOC_DEFAULT
</span><del>-# define YYLLOC_DEFAULT(Current, Rhs, N)                                \
-    do                                                                        \
</del><ins>+# define YYLLOC_DEFAULT(Current, Rhs, N)                \
+    do                                    \
</ins><span class="cx">       if (YYID (N))                                                    \
</span><del>-        {                                                                \
-          (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
-          (Current).first_column = YYRHSLOC (Rhs, 1).first_column;        \
-          (Current).last_line    = YYRHSLOC (Rhs, N).last_line;                \
-          (Current).last_column  = YYRHSLOC (Rhs, N).last_column;        \
-        }                                                                \
-      else                                                                \
-        {                                                                \
-          (Current).first_line   = (Current).last_line   =                \
-            YYRHSLOC (Rhs, 0).last_line;                                \
-          (Current).first_column = (Current).last_column =                \
-            YYRHSLOC (Rhs, 0).last_column;                                \
-        }                                                                \
</del><ins>+    {                                \
+      (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;    \
+      (Current).first_column = YYRHSLOC (Rhs, 1).first_column;    \
+      (Current).last_line    = YYRHSLOC (Rhs, N).last_line;        \
+      (Current).last_column  = YYRHSLOC (Rhs, N).last_column;    \
+    }                                \
+      else                                \
+    {                                \
+      (Current).first_line   = (Current).last_line   =        \
+        YYRHSLOC (Rhs, 0).last_line;                \
+      (Current).first_column = (Current).last_column =        \
+        YYRHSLOC (Rhs, 0).last_column;                \
+    }                                \
</ins><span class="cx">     while (YYID (0))
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -699,10 +699,10 @@
</span><span class="cx"> 
</span><span class="cx"> #ifndef YY_LOCATION_PRINT
</span><span class="cx"> # if defined YYLTYPE_IS_TRIVIAL &amp;&amp; YYLTYPE_IS_TRIVIAL
</span><del>-#  define YY_LOCATION_PRINT(File, Loc)                        \
-     fprintf (File, &quot;%d.%d-%d.%d&quot;,                        \
-              (Loc).first_line, (Loc).first_column,        \
-              (Loc).last_line,  (Loc).last_column)
</del><ins>+#  define YY_LOCATION_PRINT(File, Loc)            \
+     fprintf (File, &quot;%d.%d-%d.%d&quot;,            \
+          (Loc).first_line, (Loc).first_column,    \
+          (Loc).last_line,  (Loc).last_column)
</ins><span class="cx"> # else
</span><span class="cx"> #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
</span><span class="cx"> # endif
</span><span class="lines">@@ -725,21 +725,21 @@
</span><span class="cx"> #  define YYFPRINTF fprintf
</span><span class="cx"> # endif
</span><span class="cx"> 
</span><del>-# define YYDPRINTF(Args)                        \
-do {                                                \
-  if (yydebug)                                        \
-    YYFPRINTF Args;                                \
</del><ins>+# define YYDPRINTF(Args)            \
+do {                        \
+  if (yydebug)                    \
+    YYFPRINTF Args;                \
</ins><span class="cx"> } while (YYID (0))
</span><span class="cx"> 
</span><del>-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                          \
-do {                                                                          \
-  if (yydebug)                                                                  \
-    {                                                                          \
-      YYFPRINTF (stderr, &quot;%s &quot;, Title);                                          \
-      yy_symbol_print (stderr,                                                  \
-                  Type, Value, context); \
-      YYFPRINTF (stderr, &quot;\n&quot;);                                                  \
-    }                                                                          \
</del><ins>+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)              \
+do {                                      \
+  if (yydebug)                                  \
+    {                                      \
+      YYFPRINTF (stderr, &quot;%s &quot;, Title);                      \
+      yy_symbol_print (stderr,                          \
+          Type, Value, context); \
+      YYFPRINTF (stderr, &quot;\n&quot;);                          \
+    }                                      \
</ins><span class="cx"> } while (YYID (0))
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -773,7 +773,7 @@
</span><span class="cx">   switch (yytype)
</span><span class="cx">     {
</span><span class="cx">       default:
</span><del>-        break;
</del><ins>+    break;
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -826,10 +826,10 @@
</span><span class="cx">   YYFPRINTF (stderr, &quot;\n&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-# define YY_STACK_PRINT(Bottom, Top)                                \
-do {                                                                \
-  if (yydebug)                                                        \
-    yy_stack_print ((Bottom), (Top));                                \
</del><ins>+# define YY_STACK_PRINT(Bottom, Top)                \
+do {                                \
+  if (yydebug)                            \
+    yy_stack_print ((Bottom), (Top));                \
</ins><span class="cx"> } while (YYID (0))
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -853,21 +853,21 @@
</span><span class="cx">   int yyi;
</span><span class="cx">   unsigned long int yylno = yyrline[yyrule];
</span><span class="cx">   YYFPRINTF (stderr, &quot;Reducing stack by rule %d (line %lu):\n&quot;,
</span><del>-             yyrule - 1, yylno);
</del><ins>+         yyrule - 1, yylno);
</ins><span class="cx">   /* The symbols being reduced.  */
</span><span class="cx">   for (yyi = 0; yyi &lt; yynrhs; yyi++)
</span><span class="cx">     {
</span><span class="cx">       fprintf (stderr, &quot;   $%d = &quot;, yyi + 1);
</span><span class="cx">       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
</span><del>-                       &amp;(yyvsp[(yyi + 1) - (yynrhs)])
-                                              , context);
</del><ins>+               &amp;(yyvsp[(yyi + 1) - (yynrhs)])
+                              , context);
</ins><span class="cx">       fprintf (stderr, &quot;\n&quot;);
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-# define YY_REDUCE_PRINT(Rule)                \
-do {                                        \
-  if (yydebug)                                \
</del><ins>+# define YY_REDUCE_PRINT(Rule)        \
+do {                    \
+  if (yydebug)                \
</ins><span class="cx">     yy_reduce_print (yyvsp, Rule, context); \
</span><span class="cx"> } while (YYID (0))
</span><span class="cx"> 
</span><span class="lines">@@ -883,7 +883,7 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> /* YYINITDEPTH -- initial size of the parser's stacks.  */
</span><del>-#ifndef        YYINITDEPTH
</del><ins>+#ifndef    YYINITDEPTH
</ins><span class="cx"> # define YYINITDEPTH 200
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -970,27 +970,27 @@
</span><span class="cx">       char const *yyp = yystr;
</span><span class="cx"> 
</span><span class="cx">       for (;;)
</span><del>-        switch (*++yyp)
-          {
-          case '\'':
-          case ',':
-            goto do_not_strip_quotes;
</del><ins>+    switch (*++yyp)
+      {
+      case '\'':
+      case ',':
+        goto do_not_strip_quotes;
</ins><span class="cx"> 
</span><del>-          case '\\':
-            if (*++yyp != '\\')
-              goto do_not_strip_quotes;
-            /* Fall through.  */
-          default:
-            if (yyres)
-              yyres[yyn] = *yyp;
-            yyn++;
-            break;
</del><ins>+      case '\\':
+        if (*++yyp != '\\')
+          goto do_not_strip_quotes;
+        /* Fall through.  */
+      default:
+        if (yyres)
+          yyres[yyn] = *yyp;
+        yyn++;
+        break;
</ins><span class="cx"> 
</span><del>-          case '&quot;':
-            if (yyres)
-              yyres[yyn] = '\0';
-            return yyn;
-          }
</del><ins>+      case '&quot;':
+        if (yyres)
+          yyres[yyn] = '\0';
+        return yyn;
+      }
</ins><span class="cx">     do_not_strip_quotes: ;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1028,7 +1028,7 @@
</span><span class="cx"> 
</span><span class="cx"> # if 0
</span><span class="cx">       /* This is so xgettext sees the translatable formats that are
</span><del>-         constructed on the fly.  */
</del><ins>+     constructed on the fly.  */
</ins><span class="cx">       YY_(&quot;syntax error, unexpected %s&quot;);
</span><span class="cx">       YY_(&quot;syntax error, unexpected %s, expecting %s&quot;);
</span><span class="cx">       YY_(&quot;syntax error, unexpected %s, expecting %s or %s&quot;);
</span><span class="lines">@@ -1041,13 +1041,13 @@
</span><span class="cx">       static char const yyexpecting[] = &quot;, expecting %s&quot;;
</span><span class="cx">       static char const yyor[] = &quot; or %s&quot;;
</span><span class="cx">       char yyformat[sizeof yyunexpected
</span><del>-                    + sizeof yyexpecting - 1
-                    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-                       * (sizeof yyor - 1))];
</del><ins>+            + sizeof yyexpecting - 1
+            + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+               * (sizeof yyor - 1))];
</ins><span class="cx">       char const *yyprefix = yyexpecting;
</span><span class="cx"> 
</span><span class="cx">       /* Start YYX at -YYN if negative to avoid negative indexes in
</span><del>-         YYCHECK.  */
</del><ins>+     YYCHECK.  */
</ins><span class="cx">       int yyxbegin = yyn &lt; 0 ? -yyn : 0;
</span><span class="cx"> 
</span><span class="cx">       /* Stay within bounds of both yycheck and yytname.  */
</span><span class="lines">@@ -1059,22 +1059,22 @@
</span><span class="cx">       yyfmt = yystpcpy (yyformat, yyunexpected);
</span><span class="cx"> 
</span><span class="cx">       for (yyx = yyxbegin; yyx &lt; yyxend; ++yyx)
</span><del>-        if (yycheck[yyx + yyn] == yyx &amp;&amp; yyx != YYTERROR)
-          {
-            if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-              {
-                yycount = 1;
-                yysize = yysize0;
-                yyformat[sizeof yyunexpected - 1] = '\0';
-                break;
-              }
-            yyarg[yycount++] = yytname[yyx];
-            yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-            yysize_overflow |= (yysize1 &lt; yysize);
-            yysize = yysize1;
-            yyfmt = yystpcpy (yyfmt, yyprefix);
-            yyprefix = yyor;
-          }
</del><ins>+    if (yycheck[yyx + yyn] == yyx &amp;&amp; yyx != YYTERROR)
+      {
+        if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+          {
+        yycount = 1;
+        yysize = yysize0;
+        yyformat[sizeof yyunexpected - 1] = '\0';
+        break;
+          }
+        yyarg[yycount++] = yytname[yyx];
+        yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+        yysize_overflow |= (yysize1 &lt; yysize);
+        yysize = yysize1;
+        yyfmt = yystpcpy (yyfmt, yyprefix);
+        yyprefix = yyor;
+      }
</ins><span class="cx"> 
</span><span class="cx">       yyf = YY_(yyformat);
</span><span class="cx">       yysize1 = yysize + yystrlen (yyf);
</span><span class="lines">@@ -1082,29 +1082,29 @@
</span><span class="cx">       yysize = yysize1;
</span><span class="cx"> 
</span><span class="cx">       if (yysize_overflow)
</span><del>-        return YYSIZE_MAXIMUM;
</del><ins>+    return YYSIZE_MAXIMUM;
</ins><span class="cx"> 
</span><span class="cx">       if (yyresult)
</span><del>-        {
-          /* Avoid sprintf, as that infringes on the user's name space.
-             Don't have undefined behavior even if the translation
-             produced a string with the wrong number of &quot;%s&quot;s.  */
-          char *yyp = yyresult;
-          int yyi = 0;
-          while ((*yyp = *yyf) != '\0')
-            {
-              if (*yyp == '%' &amp;&amp; yyf[1] == 's' &amp;&amp; yyi &lt; yycount)
-                {
-                  yyp += yytnamerr (yyp, yyarg[yyi++]);
-                  yyf += 2;
-                }
-              else
-                {
-                  yyp++;
-                  yyf++;
-                }
-            }
-        }
</del><ins>+    {
+      /* Avoid sprintf, as that infringes on the user's name space.
+         Don't have undefined behavior even if the translation
+         produced a string with the wrong number of &quot;%s&quot;s.  */
+      char *yyp = yyresult;
+      int yyi = 0;
+      while ((*yyp = *yyf) != '\0')
+        {
+          if (*yyp == '%' &amp;&amp; yyf[1] == 's' &amp;&amp; yyi &lt; yycount)
+        {
+          yyp += yytnamerr (yyp, yyarg[yyi++]);
+          yyf += 2;
+        }
+          else
+        {
+          yyp++;
+          yyf++;
+        }
+        }
+    }
</ins><span class="cx">       return yysize;
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -1140,7 +1140,7 @@
</span><span class="cx">     {
</span><span class="cx"> 
</span><span class="cx">       default:
</span><del>-        break;
</del><ins>+    break;
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1253,7 +1253,7 @@
</span><span class="cx">   yystate = 0;
</span><span class="cx">   yyerrstatus = 0;
</span><span class="cx">   yynerrs = 0;
</span><del>-  yychar = YYEMPTY;                /* Cause a token to be read.  */
</del><ins>+  yychar = YYEMPTY;        /* Cause a token to be read.  */
</ins><span class="cx"> 
</span><span class="cx">   /* Initialize stack pointers.
</span><span class="cx">      Waste one element of value and location stack
</span><span class="lines">@@ -1283,25 +1283,25 @@
</span><span class="cx"> 
</span><span class="cx"> #ifdef yyoverflow
</span><span class="cx">       {
</span><del>-        /* Give user a chance to reallocate the stack.  Use copies of
-           these so that the &amp;'s don't force the real ones into
-           memory.  */
-        YYSTYPE *yyvs1 = yyvs;
-        yytype_int16 *yyss1 = yyss;
</del><ins>+    /* Give user a chance to reallocate the stack.  Use copies of
+       these so that the &amp;'s don't force the real ones into
+       memory.  */
+    YYSTYPE *yyvs1 = yyvs;
+    yytype_int16 *yyss1 = yyss;
</ins><span class="cx"> 
</span><span class="cx"> 
</span><del>-        /* Each stack pointer address is followed by the size of the
-           data in use in that stack, in bytes.  This used to be a
-           conditional around just the two extra args, but that might
-           be undefined if yyoverflow is a macro.  */
-        yyoverflow (YY_(&quot;memory exhausted&quot;),
-                    &amp;yyss1, yysize * sizeof (*yyssp),
-                    &amp;yyvs1, yysize * sizeof (*yyvsp),
</del><ins>+    /* Each stack pointer address is followed by the size of the
+       data in use in that stack, in bytes.  This used to be a
+       conditional around just the two extra args, but that might
+       be undefined if yyoverflow is a macro.  */
+    yyoverflow (YY_(&quot;memory exhausted&quot;),
+            &amp;yyss1, yysize * sizeof (*yyssp),
+            &amp;yyvs1, yysize * sizeof (*yyvsp),
</ins><span class="cx"> 
</span><del>-                    &amp;yystacksize);
</del><ins>+            &amp;yystacksize);
</ins><span class="cx"> 
</span><del>-        yyss = yyss1;
-        yyvs = yyvs1;
</del><ins>+    yyss = yyss1;
+    yyvs = yyvs1;
</ins><span class="cx">       }
</span><span class="cx"> #else /* no yyoverflow */
</span><span class="cx"> # ifndef YYSTACK_RELOCATE
</span><span class="lines">@@ -1309,23 +1309,23 @@
</span><span class="cx"> # else
</span><span class="cx">       /* Extend the stack our own way.  */
</span><span class="cx">       if (YYMAXDEPTH &lt;= yystacksize)
</span><del>-        goto yyexhaustedlab;
</del><ins>+    goto yyexhaustedlab;
</ins><span class="cx">       yystacksize *= 2;
</span><span class="cx">       if (YYMAXDEPTH &lt; yystacksize)
</span><del>-        yystacksize = YYMAXDEPTH;
</del><ins>+    yystacksize = YYMAXDEPTH;
</ins><span class="cx"> 
</span><span class="cx">       {
</span><del>-        yytype_int16 *yyss1 = yyss;
-        union yyalloc *yyptr =
-          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-        if (! yyptr)
-          goto yyexhaustedlab;
-        YYSTACK_RELOCATE (yyss);
-        YYSTACK_RELOCATE (yyvs);
</del><ins>+    yytype_int16 *yyss1 = yyss;
+    union yyalloc *yyptr =
+      (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+    if (! yyptr)
+      goto yyexhaustedlab;
+    YYSTACK_RELOCATE (yyss);
+    YYSTACK_RELOCATE (yyvs);
</ins><span class="cx"> 
</span><span class="cx"> #  undef YYSTACK_RELOCATE
</span><del>-        if (yyss1 != yyssa)
-          YYSTACK_FREE (yyss1);
</del><ins>+    if (yyss1 != yyssa)
+      YYSTACK_FREE (yyss1);
</ins><span class="cx">       }
</span><span class="cx"> # endif
</span><span class="cx"> #endif /* no yyoverflow */
</span><span class="lines">@@ -1335,10 +1335,10 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx">       YYDPRINTF ((stderr, &quot;Stack size increased to %lu\n&quot;,
</span><del>-                  (unsigned long int) yystacksize));
</del><ins>+          (unsigned long int) yystacksize));
</ins><span class="cx"> 
</span><span class="cx">       if (yyss + yystacksize - 1 &lt;= yyssp)
</span><del>-        YYABORT;
</del><ins>+    YYABORT;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">   YYDPRINTF ((stderr, &quot;Entering state %d\n&quot;, yystate));
</span><span class="lines">@@ -1387,7 +1387,7 @@
</span><span class="cx">   if (yyn &lt;= 0)
</span><span class="cx">     {
</span><span class="cx">       if (yyn == 0 || yyn == YYTABLE_NINF)
</span><del>-        goto yyerrlab;
</del><ins>+    goto yyerrlab;
</ins><span class="cx">       yyn = -yyn;
</span><span class="cx">       goto yyreduce;
</span><span class="cx">     }
</span><span class="lines">@@ -1674,36 +1674,36 @@
</span><span class="cx">       yyerror (context, YY_(&quot;syntax error&quot;));
</span><span class="cx"> #else
</span><span class="cx">       {
</span><del>-        YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-        if (yymsg_alloc &lt; yysize &amp;&amp; yymsg_alloc &lt; YYSTACK_ALLOC_MAXIMUM)
-          {
-            YYSIZE_T yyalloc = 2 * yysize;
-            if (! (yysize &lt;= yyalloc &amp;&amp; yyalloc &lt;= YYSTACK_ALLOC_MAXIMUM))
-              yyalloc = YYSTACK_ALLOC_MAXIMUM;
-            if (yymsg != yymsgbuf)
-              YYSTACK_FREE (yymsg);
-            yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-            if (yymsg)
-              yymsg_alloc = yyalloc;
-            else
-              {
-                yymsg = yymsgbuf;
-                yymsg_alloc = sizeof yymsgbuf;
-              }
-          }
</del><ins>+    YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
+    if (yymsg_alloc &lt; yysize &amp;&amp; yymsg_alloc &lt; YYSTACK_ALLOC_MAXIMUM)
+      {
+        YYSIZE_T yyalloc = 2 * yysize;
+        if (! (yysize &lt;= yyalloc &amp;&amp; yyalloc &lt;= YYSTACK_ALLOC_MAXIMUM))
+          yyalloc = YYSTACK_ALLOC_MAXIMUM;
+        if (yymsg != yymsgbuf)
+          YYSTACK_FREE (yymsg);
+        yymsg = (char *) YYSTACK_ALLOC (yyalloc);
+        if (yymsg)
+          yymsg_alloc = yyalloc;
+        else
+          {
+        yymsg = yymsgbuf;
+        yymsg_alloc = sizeof yymsgbuf;
+          }
+      }
</ins><span class="cx"> 
</span><del>-        if (0 &lt; yysize &amp;&amp; yysize &lt;= yymsg_alloc)
-          {
-            (void) yysyntax_error (yymsg, yystate, yychar);
-            yyerror (context, yymsg);
-          }
-        else
-          {
-            yyerror (context, YY_(&quot;syntax error&quot;));
-            if (yysize != 0)
-              goto yyexhaustedlab;
-          }
</del><ins>+    if (0 &lt; yysize &amp;&amp; yysize &lt;= yymsg_alloc)
+      {
+        (void) yysyntax_error (yymsg, yystate, yychar);
+        yyerror (context, yymsg);
</ins><span class="cx">       }
</span><ins>+    else
+      {
+        yyerror (context, YY_(&quot;syntax error&quot;));
+        if (yysize != 0)
+          goto yyexhaustedlab;
+      }
+      }
</ins><span class="cx"> #endif
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1712,21 +1712,21 @@
</span><span class="cx">   if (yyerrstatus == 3)
</span><span class="cx">     {
</span><span class="cx">       /* If just tried and failed to reuse look-ahead token after an
</span><del>-         error, discard it.  */
</del><ins>+     error, discard it.  */
</ins><span class="cx"> 
</span><span class="cx">       if (yychar &lt;= YYEOF)
</span><del>-        {
-          /* Return failure if at end of input.  */
-          if (yychar == YYEOF)
-            YYABORT;
-        }
</del><ins>+    {
+      /* Return failure if at end of input.  */
+      if (yychar == YYEOF)
+        YYABORT;
+    }
</ins><span class="cx">       else
</span><del>-        {
-          yydestruct (&quot;Error: discarding&quot;,
-                      yytoken, &amp;yylval, context);
-          yychar = YYEMPTY;
-        }
</del><ins>+    {
+      yydestruct (&quot;Error: discarding&quot;,
+              yytoken, &amp;yylval, context);
+      yychar = YYEMPTY;
</ins><span class="cx">     }
</span><ins>+    }
</ins><span class="cx"> 
</span><span class="cx">   /* Else will try to reuse look-ahead token after shifting the error
</span><span class="cx">      token.  */
</span><span class="lines">@@ -1757,29 +1757,29 @@
</span><span class="cx"> | yyerrlab1 -- common code for both syntax error and YYERROR.  |
</span><span class="cx"> `-------------------------------------------------------------*/
</span><span class="cx"> yyerrlab1:
</span><del>-  yyerrstatus = 3;        /* Each real token shifted decrements this.  */
</del><ins>+  yyerrstatus = 3;    /* Each real token shifted decrements this.  */
</ins><span class="cx"> 
</span><span class="cx">   for (;;)
</span><span class="cx">     {
</span><span class="cx">       yyn = yypact[yystate];
</span><span class="cx">       if (yyn != YYPACT_NINF)
</span><del>-        {
-          yyn += YYTERROR;
-          if (0 &lt;= yyn &amp;&amp; yyn &lt;= YYLAST &amp;&amp; yycheck[yyn] == YYTERROR)
-            {
-              yyn = yytable[yyn];
-              if (0 &lt; yyn)
-                break;
-            }
-        }
</del><ins>+    {
+      yyn += YYTERROR;
+      if (0 &lt;= yyn &amp;&amp; yyn &lt;= YYLAST &amp;&amp; yycheck[yyn] == YYTERROR)
+        {
+          yyn = yytable[yyn];
+          if (0 &lt; yyn)
+        break;
+        }
+    }
</ins><span class="cx"> 
</span><span class="cx">       /* Pop the current state because it cannot handle the error token.  */
</span><span class="cx">       if (yyssp == yyss)
</span><del>-        YYABORT;
</del><ins>+    YYABORT;
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx">       yydestruct (&quot;Error: popping&quot;,
</span><del>-                  yystos[yystate], yyvsp, context);
</del><ins>+          yystos[yystate], yyvsp, context);
</ins><span class="cx">       YYPOPSTACK (1);
</span><span class="cx">       yystate = *yyssp;
</span><span class="cx">       YY_STACK_PRINT (yyss, yyssp);
</span><span class="lines">@@ -1825,7 +1825,7 @@
</span><span class="cx"> yyreturn:
</span><span class="cx">   if (yychar != YYEOF &amp;&amp; yychar != YYEMPTY)
</span><span class="cx">      yydestruct (&quot;Cleanup: discarding lookahead&quot;,
</span><del>-                 yytoken, &amp;yylval, context);
</del><ins>+         yytoken, &amp;yylval, context);
</ins><span class="cx">   /* Do not reclaim the symbols of the rule which action triggered
</span><span class="cx">      this YYABORT or YYACCEPT.  */
</span><span class="cx">   YYPOPSTACK (yylen);
</span><span class="lines">@@ -1833,7 +1833,7 @@
</span><span class="cx">   while (yyssp != yyss)
</span><span class="cx">     {
</span><span class="cx">       yydestruct (&quot;Cleanup: popping&quot;,
</span><del>-                  yystos[*yyssp], yyvsp, context);
</del><ins>+          yystos[*yyssp], yyvsp, context);
</ins><span class="cx">       YYPOPSTACK (1);
</span><span class="cx">     }
</span><span class="cx"> #ifndef yyoverflow
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerpreprocessorExpressionParsery"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.y (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.y        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.y        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -33,6 +33,12 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ExpressionParser.h&quot;
</span><span class="cx"> 
</span><ins>+#if defined(_MSC_VER)
+#include &lt;malloc.h&gt;
+#else
+#include &lt;stdlib.h&gt;
+#endif
+
</ins><span class="cx"> #include &lt;cassert&gt;
</span><span class="cx"> #include &lt;sstream&gt;
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerpreprocessorPreprocessorcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -81,6 +81,11 @@
</span><span class="cx">     mImpl-&gt;macroSet[name] = macro;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void Preprocessor::setMaxTokenLength(size_t maxLength)
+{
+    mImpl-&gt;tokenizer.setMaxTokenLength(maxLength);
+}
+
</ins><span class="cx"> void Preprocessor::lex(Token* token)
</span><span class="cx"> {
</span><span class="cx">     bool validToken = false;
</span><span class="lines">@@ -95,34 +100,6 @@
</span><span class="cx">           case Token::PP_HASH:
</span><span class="cx">             assert(false);
</span><span class="cx">             break;
</span><del>-          case Token::CONST_INT:
-          {
-            int val = 0;
-            if (!token-&gt;iValue(&amp;val))
-            {
-                // Do not mark the token as invalid.
-                // Just emit the diagnostic and reset value to 0.
-                mImpl-&gt;diagnostics-&gt;report(Diagnostics::INTEGER_OVERFLOW,
-                                           token-&gt;location, token-&gt;text);
-                token-&gt;text.assign(&quot;0&quot;);
-            }
-            validToken = true;
-            break;
-          }
-          case Token::CONST_FLOAT:
-          {
-            float val = 0;
-            if (!token-&gt;fValue(&amp;val))
-            {
-                // Do not mark the token as invalid.
-                // Just emit the diagnostic and reset value to 0.0.
-                mImpl-&gt;diagnostics-&gt;report(Diagnostics::FLOAT_OVERFLOW,
-                                           token-&gt;location, token-&gt;text);
-                token-&gt;text.assign(&quot;0.0&quot;);
-            }
-            validToken = true;
-            break;
-          }
</del><span class="cx">           case Token::PP_NUMBER:
</span><span class="cx">             mImpl-&gt;diagnostics-&gt;report(Diagnostics::INVALID_NUMBER,
</span><span class="cx">                                        token-&gt;location, token-&gt;text);
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerpreprocessorPreprocessorh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -37,6 +37,12 @@
</span><span class="cx">     bool init(size_t count, const char* const string[], const int length[]);
</span><span class="cx">     // Adds a pre-defined macro.
</span><span class="cx">     void predefineMacro(const char* name, int value);
</span><ins>+    // Sets maximum allowed token length.
+    // If token length exceeds this limit,
+    // the token text will be truncated to the given maximum length, and
+    // TOKEN_TOO_LONG diagnostic will be generated.
+    // The maximum length defaults to 256.
+    void setMaxTokenLength(size_t maxLength);
</ins><span class="cx"> 
</span><span class="cx">     void lex(Token* token);
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerpreprocessorTokenizercpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -680,16 +680,6 @@
</span><span class="cx"> static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#ifndef YY_NO_INPUT
-
-#ifdef __cplusplus
-static int yyinput (yyscan_t yyscanner );
-#else
-static int input (yyscan_t yyscanner );
-#endif
-
-#endif
-
</del><span class="cx"> /* Amount of stuff to slurp up with each read. */
</span><span class="cx"> #ifndef YY_READ_BUF_SIZE
</span><span class="cx"> #define YY_READ_BUF_SIZE 8192
</span><span class="lines">@@ -1490,81 +1480,6 @@
</span><span class="cx">         return yy_is_jam ? 0 : yy_current_state;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#ifndef YY_NO_INPUT
-#ifdef __cplusplus
-    static int yyinput (yyscan_t yyscanner)
-#else
-    static int input  (yyscan_t yyscanner)
-#endif
-
-{
-        int c;
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
-        *yyg-&gt;yy_c_buf_p = yyg-&gt;yy_hold_char;
-
-        if ( *yyg-&gt;yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
-                {
-                /* yy_c_buf_p now points to the character we want to return.
-                 * If this occurs *before* the EOB characters, then it's a
-                 * valid NUL; if not, then we've hit the end of the buffer.
-                 */
-                if ( yyg-&gt;yy_c_buf_p &lt; &amp;YY_CURRENT_BUFFER_LVALUE-&gt;yy_ch_buf[yyg-&gt;yy_n_chars] )
-                        /* This was really a NUL. */
-                        *yyg-&gt;yy_c_buf_p = '\0';
-
-                else
-                        { /* need more input */
-                        yy_size_t offset = yyg-&gt;yy_c_buf_p - yyg-&gt;yytext_ptr;
-                        ++yyg-&gt;yy_c_buf_p;
-
-                        switch ( yy_get_next_buffer( yyscanner ) )
-                                {
-                                case EOB_ACT_LAST_MATCH:
-                                        /* This happens because yy_g_n_b()
-                                         * sees that we've accumulated a
-                                         * token and flags that we need to
-                                         * try matching the token before
-                                         * proceeding.  But for input(),
-                                         * there's no matching to consider.
-                                         * So convert the EOB_ACT_LAST_MATCH
-                                         * to EOB_ACT_END_OF_FILE.
-                                         */
-
-                                        /* Reset buffer status. */
-                                        pprestart(yyin ,yyscanner);
-
-                                        /*FALLTHROUGH*/
-
-                                case EOB_ACT_END_OF_FILE:
-                                        {
-                                        if ( ppwrap(yyscanner ) )
-                                                return 0;
-
-                                        if ( ! yyg-&gt;yy_did_buffer_switch_on_eof )
-                                                YY_NEW_FILE;
-#ifdef __cplusplus
-                                        return yyinput(yyscanner);
-#else
-                                        return input(yyscanner);
-#endif
-                                        }
-
-                                case EOB_ACT_CONTINUE_SCAN:
-                                        yyg-&gt;yy_c_buf_p = yyg-&gt;yytext_ptr + offset;
-                                        break;
-                                }
-                        }
-                }
-
-        c = *(unsigned char *) yyg-&gt;yy_c_buf_p;        /* cast for 8-bit char's */
-        *yyg-&gt;yy_c_buf_p = '\0';        /* preserve yytext */
-        yyg-&gt;yy_hold_char = *++yyg-&gt;yy_c_buf_p;
-
-        return c;
-}
-#endif        /* ifndef YY_NO_INPUT */
-
</del><span class="cx"> /** Immediately switch to a different input stream.
</span><span class="cx">  * @param input_file A readable stream.
</span><span class="cx">  * @param yyscanner The scanner object.
</span><span class="lines">@@ -2300,11 +2215,9 @@
</span><span class="cx"> 
</span><span class="cx"> namespace pp {
</span><span class="cx"> 
</span><del>-// TODO(alokp): Maximum token length should ideally be specified by
-// the preprocessor client, i.e., the compiler.
-const size_t Tokenizer::kMaxTokenLength = 256;
-
-Tokenizer::Tokenizer(Diagnostics* diagnostics) : mHandle(0)
</del><ins>+Tokenizer::Tokenizer(Diagnostics* diagnostics)
+    : mHandle(0),
+      mMaxTokenLength(256)
</ins><span class="cx"> {
</span><span class="cx">     mContext.diagnostics = diagnostics;
</span><span class="cx"> }
</span><span class="lines">@@ -2337,11 +2250,11 @@
</span><span class="cx"> void Tokenizer::lex(Token* token)
</span><span class="cx"> {
</span><span class="cx">     token-&gt;type = pplex(&amp;token-&gt;text,&amp;token-&gt;location,mHandle);
</span><del>-    if (token-&gt;text.size() &gt; kMaxTokenLength)
</del><ins>+    if (token-&gt;text.size() &gt; mMaxTokenLength)
</ins><span class="cx">     {
</span><span class="cx">         mContext.diagnostics-&gt;report(Diagnostics::TOKEN_TOO_LONG,
</span><span class="cx">                                      token-&gt;location, token-&gt;text);
</span><del>-        token-&gt;text.erase(kMaxTokenLength);
</del><ins>+        token-&gt;text.erase(mMaxTokenLength);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     token-&gt;flags = 0;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerpreprocessorTokenizerh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -32,13 +32,13 @@
</span><span class="cx">         bool leadingSpace;
</span><span class="cx">         bool lineStart;
</span><span class="cx">     };
</span><del>-    static const std::size_t kMaxTokenLength;
</del><span class="cx"> 
</span><span class="cx">     Tokenizer(Diagnostics* diagnostics);
</span><span class="cx">     ~Tokenizer();
</span><span class="cx"> 
</span><span class="cx">     bool init(size_t count, const char* const string[], const int length[]);
</span><span class="cx"> 
</span><ins>+    void setMaxTokenLength(size_t maxLength) { mMaxTokenLength = maxLength; }
</ins><span class="cx">     void setFileNumber(int file);
</span><span class="cx">     void setLineNumber(int line);
</span><span class="cx"> 
</span><span class="lines">@@ -51,6 +51,7 @@
</span><span class="cx"> 
</span><span class="cx">     void* mHandle;  // Scanner handle.
</span><span class="cx">     Context mContext;  // Scanner extra.
</span><ins>+    size_t mMaxTokenLength;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }  // namespace pp
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerpreprocessorTokenizerl"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.l (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.l        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.l        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -277,11 +277,9 @@
</span><span class="cx"> 
</span><span class="cx"> namespace pp {
</span><span class="cx"> 
</span><del>-// TODO(alokp): Maximum token length should ideally be specified by
-// the preprocessor client, i.e., the compiler.
-const size_t Tokenizer::kMaxTokenLength = 256;
-
-Tokenizer::Tokenizer(Diagnostics* diagnostics) : mHandle(0)
</del><ins>+Tokenizer::Tokenizer(Diagnostics* diagnostics)
+    : mHandle(0),
+      mMaxTokenLength(256)
</ins><span class="cx"> {
</span><span class="cx">     mContext.diagnostics = diagnostics;
</span><span class="cx"> }
</span><span class="lines">@@ -314,11 +312,11 @@
</span><span class="cx"> void Tokenizer::lex(Token* token)
</span><span class="cx"> {
</span><span class="cx">     token-&gt;type = yylex(&amp;token-&gt;text, &amp;token-&gt;location, mHandle);
</span><del>-    if (token-&gt;text.size() &gt; kMaxTokenLength)
</del><ins>+    if (token-&gt;text.size() &gt; mMaxTokenLength)
</ins><span class="cx">     {
</span><span class="cx">         mContext.diagnostics-&gt;report(Diagnostics::TOKEN_TOO_LONG,
</span><span class="cx">                                      token-&gt;location, token-&gt;text);
</span><del>-        token-&gt;text.erase(kMaxTokenLength);
</del><ins>+        token-&gt;text.erase(mMaxTokenLength);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     token-&gt;flags = 0;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerpreprocessorgenerate_parsersh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/generate_parser.sh (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/generate_parser.sh        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/generate_parser.sh        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -24,3 +24,4 @@
</span><span class="cx"> # Generate preprocessor
</span><span class="cx"> run_flex Tokenizer.l Tokenizer.cpp
</span><span class="cx"> run_bison ExpressionParser.y ExpressionParser.cpp
</span><ins>+patch --silent --forward &lt; 64bit-tokenizer-safety.patch
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerpreprocessorpreprocessorvcxproj"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/preprocessor.vcxproj (0 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/preprocessor.vcxproj                                (rev 0)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/preprocessor.vcxproj        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -0,0 +1,172 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;Project DefaultTargets=&quot;Build&quot; ToolsVersion=&quot;4.0&quot; xmlns=&quot;http://schemas.microsoft.com/developer/msbuild/2003&quot;&gt;
+  &lt;ItemGroup Label=&quot;ProjectConfigurations&quot;&gt;
+    &lt;ProjectConfiguration Include=&quot;Debug|Win32&quot;&gt;
+      &lt;Configuration&gt;Debug&lt;/Configuration&gt;
+      &lt;Platform&gt;Win32&lt;/Platform&gt;
+    &lt;/ProjectConfiguration&gt;
+    &lt;ProjectConfiguration Include=&quot;Debug|x64&quot;&gt;
+      &lt;Configuration&gt;Debug&lt;/Configuration&gt;
+      &lt;Platform&gt;x64&lt;/Platform&gt;
+    &lt;/ProjectConfiguration&gt;
+    &lt;ProjectConfiguration Include=&quot;Release|Win32&quot;&gt;
+      &lt;Configuration&gt;Release&lt;/Configuration&gt;
+      &lt;Platform&gt;Win32&lt;/Platform&gt;
+    &lt;/ProjectConfiguration&gt;
+    &lt;ProjectConfiguration Include=&quot;Release|x64&quot;&gt;
+      &lt;Configuration&gt;Release&lt;/Configuration&gt;
+      &lt;Platform&gt;x64&lt;/Platform&gt;
+    &lt;/ProjectConfiguration&gt;
+  &lt;/ItemGroup&gt;
+  &lt;PropertyGroup Label=&quot;Globals&quot;&gt;
+    &lt;ProjectGuid&gt;{FBE32DF3-0FB0-4F2F-A424-2C21BD7BC325}&lt;/ProjectGuid&gt;
+    &lt;RootNamespace&gt;preprocessor&lt;/RootNamespace&gt;
+    &lt;Keyword&gt;Win32Proj&lt;/Keyword&gt;
+  &lt;/PropertyGroup&gt;
+  &lt;Import Project=&quot;$(VCTargetsPath)\Microsoft.Cpp.Default.props&quot; /&gt;
+  &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot; Label=&quot;Configuration&quot;&gt;
+    &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
+    &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
+    &lt;WholeProgramOptimization&gt;true&lt;/WholeProgramOptimization&gt;
+  &lt;/PropertyGroup&gt;
+  &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot; Label=&quot;Configuration&quot;&gt;
+    &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
+    &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
+  &lt;/PropertyGroup&gt;
+  &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
+    &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
+    &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
+    &lt;WholeProgramOptimization&gt;true&lt;/WholeProgramOptimization&gt;
+  &lt;/PropertyGroup&gt;
+  &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
+    &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
+    &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
+  &lt;/PropertyGroup&gt;
+  &lt;Import Project=&quot;$(VCTargetsPath)\Microsoft.Cpp.props&quot; /&gt;
+  &lt;ImportGroup Label=&quot;ExtensionSettings&quot;&gt;
+  &lt;/ImportGroup&gt;
+  &lt;ImportGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot; Label=&quot;PropertySheets&quot;&gt;
+    &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;
+  &lt;/ImportGroup&gt;
+  &lt;ImportGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot; Label=&quot;PropertySheets&quot;&gt;
+    &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;
+  &lt;/ImportGroup&gt;
+  &lt;ImportGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;PropertySheets&quot;&gt;
+    &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;
+  &lt;/ImportGroup&gt;
+  &lt;ImportGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;PropertySheets&quot;&gt;
+    &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;
+  &lt;/ImportGroup&gt;
+  &lt;PropertyGroup Label=&quot;UserMacros&quot; /&gt;
+  &lt;PropertyGroup&gt;
+    &lt;_ProjectFileVersion&gt;10.0.40219.1&lt;/_ProjectFileVersion&gt;
+    &lt;OutDir Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;$(SolutionDir)$(Configuration)\&lt;/OutDir&gt;
+    &lt;IntDir Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;$(Configuration)\&lt;/IntDir&gt;
+    &lt;OutDir Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;$(SolutionDir)$(Platform)\$(Configuration)\&lt;/OutDir&gt;
+    &lt;IntDir Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;$(Platform)\$(Configuration)\&lt;/IntDir&gt;
+    &lt;OutDir Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;$(SolutionDir)$(Configuration)\&lt;/OutDir&gt;
+    &lt;IntDir Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;$(Configuration)\&lt;/IntDir&gt;
+    &lt;OutDir Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;$(SolutionDir)$(Platform)\$(Configuration)\&lt;/OutDir&gt;
+    &lt;IntDir Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;$(Platform)\$(Configuration)\&lt;/IntDir&gt;
+  &lt;/PropertyGroup&gt;
+  &lt;ItemDefinitionGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;
+    &lt;ClCompile&gt;
+      &lt;Optimization&gt;Disabled&lt;/Optimization&gt;
+      &lt;PreprocessorDefinitions&gt;WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;
+      &lt;MinimalRebuild&gt;true&lt;/MinimalRebuild&gt;
+      &lt;BasicRuntimeChecks&gt;EnableFastChecks&lt;/BasicRuntimeChecks&gt;
+      &lt;RuntimeLibrary&gt;MultiThreadedDebug&lt;/RuntimeLibrary&gt;
+      &lt;PrecompiledHeader&gt;
+      &lt;/PrecompiledHeader&gt;
+      &lt;WarningLevel&gt;Level4&lt;/WarningLevel&gt;
+      &lt;TreatWarningAsError&gt;true&lt;/TreatWarningAsError&gt;
+      &lt;DebugInformationFormat&gt;EditAndContinue&lt;/DebugInformationFormat&gt;
+      &lt;DisableSpecificWarnings&gt;4100;4127;4189;4239;4244;4245;4512;4702;4267;%(DisableSpecificWarnings)&lt;/DisableSpecificWarnings&gt;
+    &lt;/ClCompile&gt;
+  &lt;/ItemDefinitionGroup&gt;
+  &lt;ItemDefinitionGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;
+    &lt;Midl&gt;
+      &lt;TargetEnvironment&gt;X64&lt;/TargetEnvironment&gt;
+    &lt;/Midl&gt;
+    &lt;ClCompile&gt;
+      &lt;Optimization&gt;Disabled&lt;/Optimization&gt;
+      &lt;PreprocessorDefinitions&gt;WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;
+      &lt;MinimalRebuild&gt;true&lt;/MinimalRebuild&gt;
+      &lt;BasicRuntimeChecks&gt;EnableFastChecks&lt;/BasicRuntimeChecks&gt;
+      &lt;RuntimeLibrary&gt;MultiThreadedDebug&lt;/RuntimeLibrary&gt;
+      &lt;PrecompiledHeader&gt;
+      &lt;/PrecompiledHeader&gt;
+      &lt;WarningLevel&gt;Level4&lt;/WarningLevel&gt;
+      &lt;TreatWarningAsError&gt;true&lt;/TreatWarningAsError&gt;
+      &lt;DebugInformationFormat&gt;ProgramDatabase&lt;/DebugInformationFormat&gt;
+      &lt;DisableSpecificWarnings&gt;4100;4127;4189;4239;4244;4245;4512;4702;4718;4267;%(DisableSpecificWarnings)&lt;/DisableSpecificWarnings&gt;
+    &lt;/ClCompile&gt;
+  &lt;/ItemDefinitionGroup&gt;
+  &lt;ItemDefinitionGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;
+    &lt;ClCompile&gt;
+      &lt;Optimization&gt;MaxSpeed&lt;/Optimization&gt;
+      &lt;InlineFunctionExpansion&gt;AnySuitable&lt;/InlineFunctionExpansion&gt;
+      &lt;PreprocessorDefinitions&gt;WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;_SECURE_SCL=0;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;
+      &lt;RuntimeLibrary&gt;MultiThreaded&lt;/RuntimeLibrary&gt;
+      &lt;PrecompiledHeader&gt;
+      &lt;/PrecompiledHeader&gt;
+      &lt;WarningLevel&gt;Level4&lt;/WarningLevel&gt;
+      &lt;TreatWarningAsError&gt;true&lt;/TreatWarningAsError&gt;
+      &lt;DebugInformationFormat&gt;ProgramDatabase&lt;/DebugInformationFormat&gt;
+      &lt;DisableSpecificWarnings&gt;4100;4127;4189;4239;4244;4245;4512;4702;4718;4267;%(DisableSpecificWarnings)&lt;/DisableSpecificWarnings&gt;
+    &lt;/ClCompile&gt;
+  &lt;/ItemDefinitionGroup&gt;
+  &lt;ItemDefinitionGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;
+    &lt;Midl&gt;
+      &lt;TargetEnvironment&gt;X64&lt;/TargetEnvironment&gt;
+    &lt;/Midl&gt;
+    &lt;ClCompile&gt;
+      &lt;Optimization&gt;MaxSpeed&lt;/Optimization&gt;
+      &lt;InlineFunctionExpansion&gt;AnySuitable&lt;/InlineFunctionExpansion&gt;
+      &lt;PreprocessorDefinitions&gt;WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;_SECURE_SCL=0;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;
+      &lt;RuntimeLibrary&gt;MultiThreaded&lt;/RuntimeLibrary&gt;
+      &lt;PrecompiledHeader&gt;
+      &lt;/PrecompiledHeader&gt;
+      &lt;WarningLevel&gt;Level4&lt;/WarningLevel&gt;
+      &lt;TreatWarningAsError&gt;true&lt;/TreatWarningAsError&gt;
+      &lt;DebugInformationFormat&gt;ProgramDatabase&lt;/DebugInformationFormat&gt;
+      &lt;DisableSpecificWarnings&gt;4100;4127;4189;4239;4244;4245;4512;4702;4718;4267;%(DisableSpecificWarnings)&lt;/DisableSpecificWarnings&gt;
+    &lt;/ClCompile&gt;
+  &lt;/ItemDefinitionGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;ClCompile Include=&quot;DiagnosticsBase.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;DirectiveHandlerBase.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;DirectiveParser.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;ExpressionParser.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;Input.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;Lexer.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;Macro.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;MacroExpander.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;Preprocessor.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;Token.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;Tokenizer.cpp&quot; /&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;ClInclude Include=&quot;length_limits.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;DiagnosticsBase.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;DirectiveHandlerBase.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;DirectiveParser.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;ExpressionParser.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;Input.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;Lexer.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;Macro.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;MacroExpander.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;numeric_lex.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;pp_utils.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;Preprocessor.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;SourceLocation.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;Token.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;Tokenizer.h&quot; /&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;None Include=&quot;Tokenizer.l&quot; /&gt;
+  &lt;/ItemGroup&gt;
+  &lt;Import Project=&quot;$(VCTargetsPath)\Microsoft.Cpp.targets&quot; /&gt;
+  &lt;ImportGroup Label=&quot;ExtensionTargets&quot;&gt;
+  &lt;/ImportGroup&gt;
+&lt;/Project&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerpreprocessorpreprocessorvcxprojfilters"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/preprocessor.vcxproj.filters (0 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/preprocessor.vcxproj.filters                                (rev 0)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/preprocessor/preprocessor.vcxproj.filters        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -0,0 +1,100 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;Project ToolsVersion=&quot;4.0&quot; xmlns=&quot;http://schemas.microsoft.com/developer/msbuild/2003&quot;&gt;
+  &lt;ItemGroup&gt;
+    &lt;Filter Include=&quot;Source Files&quot;&gt;
+      &lt;UniqueIdentifier&gt;{4FC737F1-C7A5-4376-A066-2A32D752A2FF}&lt;/UniqueIdentifier&gt;
+      &lt;Extensions&gt;cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx&lt;/Extensions&gt;
+    &lt;/Filter&gt;
+    &lt;Filter Include=&quot;Header Files&quot;&gt;
+      &lt;UniqueIdentifier&gt;{93995380-89BD-4b04-88EB-625FBE52EBFB}&lt;/UniqueIdentifier&gt;
+      &lt;Extensions&gt;h;hpp;hxx;hm;inl;inc;xsd&lt;/Extensions&gt;
+    &lt;/Filter&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;ClCompile Include=&quot;DirectiveParser.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;ExpressionParser.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Input.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Lexer.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Macro.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;MacroExpander.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Preprocessor.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Token.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Tokenizer.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;DiagnosticsBase.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;DirectiveHandlerBase.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;ClInclude Include=&quot;DirectiveParser.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;ExpressionParser.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;Input.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;Lexer.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;Macro.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;MacroExpander.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;numeric_lex.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;pp_utils.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;Preprocessor.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;SourceLocation.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;Token.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;Tokenizer.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;length_limits.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;DiagnosticsBase.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;DirectiveHandlerBase.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;None Include=&quot;Tokenizer.l&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/None&gt;
+  &lt;/ItemGroup&gt;
+&lt;/Project&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilertimingRestrictFragmentShaderTimingcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/timing/RestrictFragmentShaderTiming.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/timing/RestrictFragmentShaderTiming.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/timing/RestrictFragmentShaderTiming.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> //
</span><span class="cx"> 
</span><span class="cx"> #include &quot;compiler/InfoSink.h&quot;
</span><del>-#include &quot;compiler/ParseHelper.h&quot;
</del><ins>+#include &quot;compiler/ParseContext.h&quot;
</ins><span class="cx"> #include &quot;compiler/depgraph/DependencyGraphOutput.h&quot;
</span><span class="cx"> #include &quot;compiler/timing/RestrictFragmentShaderTiming.h&quot;
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilertranslatorvcxproj"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/translator.vcxproj (0 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/translator.vcxproj                                (rev 0)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/translator.vcxproj        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -0,0 +1,304 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;Project DefaultTargets=&quot;Build&quot; ToolsVersion=&quot;4.0&quot; xmlns=&quot;http://schemas.microsoft.com/developer/msbuild/2003&quot;&gt;
+  &lt;ItemGroup Label=&quot;ProjectConfigurations&quot;&gt;
+    &lt;ProjectConfiguration Include=&quot;Debug|Win32&quot;&gt;
+      &lt;Configuration&gt;Debug&lt;/Configuration&gt;
+      &lt;Platform&gt;Win32&lt;/Platform&gt;
+    &lt;/ProjectConfiguration&gt;
+    &lt;ProjectConfiguration Include=&quot;Debug|x64&quot;&gt;
+      &lt;Configuration&gt;Debug&lt;/Configuration&gt;
+      &lt;Platform&gt;x64&lt;/Platform&gt;
+    &lt;/ProjectConfiguration&gt;
+    &lt;ProjectConfiguration Include=&quot;Release|Win32&quot;&gt;
+      &lt;Configuration&gt;Release&lt;/Configuration&gt;
+      &lt;Platform&gt;Win32&lt;/Platform&gt;
+    &lt;/ProjectConfiguration&gt;
+    &lt;ProjectConfiguration Include=&quot;Release|x64&quot;&gt;
+      &lt;Configuration&gt;Release&lt;/Configuration&gt;
+      &lt;Platform&gt;x64&lt;/Platform&gt;
+    &lt;/ProjectConfiguration&gt;
+  &lt;/ItemGroup&gt;
+  &lt;PropertyGroup Label=&quot;Globals&quot;&gt;
+    &lt;ProjectGuid&gt;{5B3A6DB8-1E7E-40D7-92B9-DA8AAE619FAD}&lt;/ProjectGuid&gt;
+    &lt;RootNamespace&gt;compiler&lt;/RootNamespace&gt;
+    &lt;Keyword&gt;Win32Proj&lt;/Keyword&gt;
+    &lt;ProjectName&gt;translator&lt;/ProjectName&gt;
+  &lt;/PropertyGroup&gt;
+  &lt;Import Project=&quot;$(VCTargetsPath)\Microsoft.Cpp.Default.props&quot; /&gt;
+  &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot; Label=&quot;Configuration&quot;&gt;
+    &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
+    &lt;CharacterSet&gt;NotSet&lt;/CharacterSet&gt;
+    &lt;WholeProgramOptimization&gt;true&lt;/WholeProgramOptimization&gt;
+  &lt;/PropertyGroup&gt;
+  &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot; Label=&quot;Configuration&quot;&gt;
+    &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
+    &lt;CharacterSet&gt;NotSet&lt;/CharacterSet&gt;
+  &lt;/PropertyGroup&gt;
+  &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
+    &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
+    &lt;CharacterSet&gt;NotSet&lt;/CharacterSet&gt;
+    &lt;WholeProgramOptimization&gt;true&lt;/WholeProgramOptimization&gt;
+  &lt;/PropertyGroup&gt;
+  &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
+    &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;
+    &lt;CharacterSet&gt;NotSet&lt;/CharacterSet&gt;
+  &lt;/PropertyGroup&gt;
+  &lt;Import Project=&quot;$(VCTargetsPath)\Microsoft.Cpp.props&quot; /&gt;
+  &lt;ImportGroup Label=&quot;ExtensionSettings&quot;&gt;
+  &lt;/ImportGroup&gt;
+  &lt;ImportGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot; Label=&quot;PropertySheets&quot;&gt;
+    &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;
+  &lt;/ImportGroup&gt;
+  &lt;ImportGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot; Label=&quot;PropertySheets&quot;&gt;
+    &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;
+  &lt;/ImportGroup&gt;
+  &lt;ImportGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;PropertySheets&quot;&gt;
+    &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;
+  &lt;/ImportGroup&gt;
+  &lt;ImportGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;PropertySheets&quot;&gt;
+    &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;
+  &lt;/ImportGroup&gt;
+  &lt;PropertyGroup Label=&quot;UserMacros&quot; /&gt;
+  &lt;PropertyGroup&gt;
+    &lt;_ProjectFileVersion&gt;10.0.40219.1&lt;/_ProjectFileVersion&gt;
+    &lt;OutDir Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;$(SolutionDir)$(Configuration)\&lt;/OutDir&gt;
+    &lt;IntDir Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;$(Configuration)\common\&lt;/IntDir&gt;
+    &lt;OutDir Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;$(SolutionDir)$(Platform)\$(Configuration)\&lt;/OutDir&gt;
+    &lt;IntDir Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;$(Platform)\$(Configuration)\&lt;/IntDir&gt;
+    &lt;OutDir Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;$(SolutionDir)$(Configuration)\&lt;/OutDir&gt;
+    &lt;IntDir Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;$(Configuration)\common\&lt;/IntDir&gt;
+    &lt;OutDir Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;$(SolutionDir)$(Platform)\$(Configuration)\&lt;/OutDir&gt;
+    &lt;IntDir Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;$(Platform)\$(Configuration)\&lt;/IntDir&gt;
+  &lt;/PropertyGroup&gt;
+  &lt;ItemDefinitionGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;
+    &lt;ClCompile&gt;
+      &lt;Optimization&gt;Disabled&lt;/Optimization&gt;
+      &lt;AdditionalIncludeDirectories&gt;$(ProjectDir);$(ProjectDir)../;$(ProjectDir)../../include;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;
+      &lt;PreprocessorDefinitions&gt;WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;
+      &lt;MinimalRebuild&gt;true&lt;/MinimalRebuild&gt;
+      &lt;BasicRuntimeChecks&gt;EnableFastChecks&lt;/BasicRuntimeChecks&gt;
+      &lt;RuntimeLibrary&gt;MultiThreadedDebug&lt;/RuntimeLibrary&gt;
+      &lt;PrecompiledHeader&gt;
+      &lt;/PrecompiledHeader&gt;
+      &lt;WarningLevel&gt;Level4&lt;/WarningLevel&gt;
+      &lt;TreatWarningAsError&gt;true&lt;/TreatWarningAsError&gt;
+      &lt;DebugInformationFormat&gt;EditAndContinue&lt;/DebugInformationFormat&gt;
+      &lt;DisableSpecificWarnings&gt;4100;4127;4189;4239;4244;4245;4512;4702;4718;%(DisableSpecificWarnings)&lt;/DisableSpecificWarnings&gt;
+    &lt;/ClCompile&gt;
+  &lt;/ItemDefinitionGroup&gt;
+  &lt;ItemDefinitionGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;
+    &lt;Midl&gt;
+      &lt;TargetEnvironment&gt;X64&lt;/TargetEnvironment&gt;
+    &lt;/Midl&gt;
+    &lt;ClCompile&gt;
+      &lt;Optimization&gt;Disabled&lt;/Optimization&gt;
+      &lt;AdditionalIncludeDirectories&gt;$(ProjectDir);$(ProjectDir)../;$(ProjectDir)../../include;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;
+      &lt;PreprocessorDefinitions&gt;WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;
+      &lt;MinimalRebuild&gt;true&lt;/MinimalRebuild&gt;
+      &lt;BasicRuntimeChecks&gt;EnableFastChecks&lt;/BasicRuntimeChecks&gt;
+      &lt;RuntimeLibrary&gt;MultiThreadedDebug&lt;/RuntimeLibrary&gt;
+      &lt;PrecompiledHeader&gt;
+      &lt;/PrecompiledHeader&gt;
+      &lt;WarningLevel&gt;Level4&lt;/WarningLevel&gt;
+      &lt;TreatWarningAsError&gt;true&lt;/TreatWarningAsError&gt;
+      &lt;DebugInformationFormat&gt;ProgramDatabase&lt;/DebugInformationFormat&gt;
+      &lt;DisableSpecificWarnings&gt;4100;4127;4189;4239;4244;4245;4267;4512;4702;4718;%(DisableSpecificWarnings)&lt;/DisableSpecificWarnings&gt;
+    &lt;/ClCompile&gt;
+  &lt;/ItemDefinitionGroup&gt;
+  &lt;ItemDefinitionGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;
+    &lt;ClCompile&gt;
+      &lt;Optimization&gt;MaxSpeed&lt;/Optimization&gt;
+      &lt;InlineFunctionExpansion&gt;AnySuitable&lt;/InlineFunctionExpansion&gt;
+      &lt;AdditionalIncludeDirectories&gt;$(ProjectDir);$(ProjectDir)../;$(ProjectDir)../../include;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;
+      &lt;PreprocessorDefinitions&gt;WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;_SECURE_SCL=0;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;
+      &lt;RuntimeLibrary&gt;MultiThreaded&lt;/RuntimeLibrary&gt;
+      &lt;PrecompiledHeader&gt;
+      &lt;/PrecompiledHeader&gt;
+      &lt;WarningLevel&gt;Level4&lt;/WarningLevel&gt;
+      &lt;TreatWarningAsError&gt;true&lt;/TreatWarningAsError&gt;
+      &lt;DebugInformationFormat&gt;ProgramDatabase&lt;/DebugInformationFormat&gt;
+      &lt;DisableSpecificWarnings&gt;4100;4127;4189;4239;4244;4245;4512;4702;4718;%(DisableSpecificWarnings)&lt;/DisableSpecificWarnings&gt;
+    &lt;/ClCompile&gt;
+  &lt;/ItemDefinitionGroup&gt;
+  &lt;ItemDefinitionGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;
+    &lt;Midl&gt;
+      &lt;TargetEnvironment&gt;X64&lt;/TargetEnvironment&gt;
+    &lt;/Midl&gt;
+    &lt;ClCompile&gt;
+      &lt;Optimization&gt;MaxSpeed&lt;/Optimization&gt;
+      &lt;InlineFunctionExpansion&gt;AnySuitable&lt;/InlineFunctionExpansion&gt;
+      &lt;AdditionalIncludeDirectories&gt;$(ProjectDir);$(ProjectDir)../;$(ProjectDir)../../include;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;
+      &lt;PreprocessorDefinitions&gt;WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;_SECURE_SCL=0;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;
+      &lt;RuntimeLibrary&gt;MultiThreaded&lt;/RuntimeLibrary&gt;
+      &lt;PrecompiledHeader&gt;
+      &lt;/PrecompiledHeader&gt;
+      &lt;WarningLevel&gt;Level4&lt;/WarningLevel&gt;
+      &lt;TreatWarningAsError&gt;true&lt;/TreatWarningAsError&gt;
+      &lt;DebugInformationFormat&gt;ProgramDatabase&lt;/DebugInformationFormat&gt;
+      &lt;DisableSpecificWarnings&gt;4100;4127;4189;4239;4244;4245;4267;4512;4702;4718;%(DisableSpecificWarnings)&lt;/DisableSpecificWarnings&gt;
+    &lt;/ClCompile&gt;
+  &lt;/ItemDefinitionGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;ClCompile Include=&quot;BuiltInFunctionEmulator.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;CodeGen.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;Compiler.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;debug.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;DetectCallDepth.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;DetectDiscontinuity.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;Diagnostics.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;DirectiveHandler.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;ForLoopUnroll.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;InfoSink.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;Initialize.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;InitializeDll.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;InitializeGLPosition.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;InitializeParseContext.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;Intermediate.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;intermOut.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;IntermTraverse.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;MapLongVariableNames.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;ossource_win.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;OutputESSL.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;OutputGLSL.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;OutputGLSLBase.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;OutputHLSL.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;parseConst.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;ParseContext.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;PoolAlloc.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;QualifierAlive.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;RemoveTree.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;SearchSymbol.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;ShaderLang.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;SymbolTable.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;TranslatorESSL.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;TranslatorGLSL.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;TranslatorHLSL.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;UnfoldShortCircuit.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;UnfoldShortCircuitAST.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;Uniform.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;util.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;ValidateLimitations.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;VariableInfo.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;VariablePacker.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;glslang_lex.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;glslang_tab.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;depgraph\DependencyGraph.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;depgraph\DependencyGraphBuilder.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;depgraph\DependencyGraphOutput.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;depgraph\DependencyGraphTraverse.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;timing\RestrictFragmentShaderTiming.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;timing\RestrictVertexShaderTiming.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\third_party\compiler\ArrayBoundsClamper.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;VersionGLSL.cpp&quot; /&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;CustomBuild Include=&quot;glslang.l&quot;&gt;
+      &lt;Message Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;
+      &lt;/Message&gt;
+      &lt;Command Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;
+      &lt;/Command&gt;
+      &lt;AdditionalInputs Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;%(AdditionalInputs)&lt;/AdditionalInputs&gt;
+      &lt;Outputs Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;%(Outputs)&lt;/Outputs&gt;
+      &lt;Message Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;
+      &lt;/Message&gt;
+      &lt;Command Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;
+      &lt;/Command&gt;
+      &lt;AdditionalInputs Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;%(AdditionalInputs)&lt;/AdditionalInputs&gt;
+      &lt;Outputs Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;%(Outputs)&lt;/Outputs&gt;
+      &lt;Message Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;
+      &lt;/Message&gt;
+      &lt;Command Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;
+      &lt;/Command&gt;
+      &lt;AdditionalInputs Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;%(AdditionalInputs)&lt;/AdditionalInputs&gt;
+      &lt;Outputs Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;%(Outputs)&lt;/Outputs&gt;
+      &lt;Message Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;
+      &lt;/Message&gt;
+      &lt;Command Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;
+      &lt;/Command&gt;
+      &lt;AdditionalInputs Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;%(AdditionalInputs)&lt;/AdditionalInputs&gt;
+      &lt;Outputs Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;%(Outputs)&lt;/Outputs&gt;
+    &lt;/CustomBuild&gt;
+    &lt;CustomBuild Include=&quot;glslang.y&quot;&gt;
+      &lt;Message Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;
+      &lt;/Message&gt;
+      &lt;Command Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;
+      &lt;/Command&gt;
+      &lt;Outputs Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;%(Outputs)&lt;/Outputs&gt;
+      &lt;Message Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;
+      &lt;/Message&gt;
+      &lt;Command Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;
+      &lt;/Command&gt;
+      &lt;Outputs Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;%(Outputs)&lt;/Outputs&gt;
+      &lt;Message Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;
+      &lt;/Message&gt;
+      &lt;Command Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;
+      &lt;/Command&gt;
+      &lt;Outputs Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;%(Outputs)&lt;/Outputs&gt;
+      &lt;Message Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;
+      &lt;/Message&gt;
+      &lt;Command Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;
+      &lt;/Command&gt;
+      &lt;Outputs Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;%(Outputs)&lt;/Outputs&gt;
+    &lt;/CustomBuild&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;ClInclude Include=&quot;BaseTypes.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;BuiltInFunctionEmulator.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;Common.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;ConstantUnion.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;debug.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;DetectCallDepth.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;DetectDiscontinuity.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;Diagnostics.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;DirectiveHandler.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;ForLoopUnroll.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;HashNames.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;InfoSink.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;Initialize.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;InitializeDll.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;InitializeGlobals.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;InitializeGLPosition.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;InitializeParseContext.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;intermediate.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;localintermediate.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;MapLongVariableNames.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;MMap.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;NodeSearch.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;osinclude.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;OutputESSL.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;OutputGLSL.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;OutputGLSLBase.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;OutputHLSL.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;ParseContext.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;PoolAlloc.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;QualifierAlive.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;RemoveTree.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;RenameFunction.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\..\include\GLSLANG\ShaderLang.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;SearchSymbol.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;ShHandle.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;SymbolTable.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;TranslatorESSL.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;TranslatorGLSL.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;TranslatorHLSL.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;Types.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;UnfoldShortCircuit.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;UnfoldShortCircuitAST.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;Uniform.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;util.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;ValidateLimitations.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;VariableInfo.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;VariablePacker.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;glslang_tab.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;timing\RestrictFragmentShaderTiming.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;timing\RestrictVertexShaderTiming.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;depgraph\DependencyGraph.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;depgraph\DependencyGraphBuilder.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;depgraph\DependencyGraphOutput.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\third_party\compiler\ArrayBoundsClamper.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;VersionGLSL.h&quot; /&gt;
+  &lt;/ItemGroup&gt;
+  &lt;Import Project=&quot;$(VCTargetsPath)\Microsoft.Cpp.targets&quot; /&gt;
+  &lt;ImportGroup Label=&quot;ExtensionTargets&quot;&gt;
+  &lt;/ImportGroup&gt;
+&lt;/Project&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilertranslatorvcxprojfilters"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/translator.vcxproj.filters (0 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/translator.vcxproj.filters                                (rev 0)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/translator.vcxproj.filters        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -0,0 +1,361 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;Project ToolsVersion=&quot;4.0&quot; xmlns=&quot;http://schemas.microsoft.com/developer/msbuild/2003&quot;&gt;
+  &lt;ItemGroup&gt;
+    &lt;Filter Include=&quot;Source Files&quot;&gt;
+      &lt;UniqueIdentifier&gt;{4FC737F1-C7A5-4376-A066-2A32D752A2FF}&lt;/UniqueIdentifier&gt;
+      &lt;Extensions&gt;cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx&lt;/Extensions&gt;
+    &lt;/Filter&gt;
+    &lt;Filter Include=&quot;Source Files\generated&quot;&gt;
+      &lt;UniqueIdentifier&gt;{eb8da157-b29c-43c3-880d-54679e176dc5}&lt;/UniqueIdentifier&gt;
+    &lt;/Filter&gt;
+    &lt;Filter Include=&quot;Source Files\depgraph&quot;&gt;
+      &lt;UniqueIdentifier&gt;{b5410d3a-c3c8-4ae6-843a-b000d652632e}&lt;/UniqueIdentifier&gt;
+    &lt;/Filter&gt;
+    &lt;Filter Include=&quot;Source Files\timing&quot;&gt;
+      &lt;UniqueIdentifier&gt;{a9847611-dcd5-4c89-8262-a22b96c7c98d}&lt;/UniqueIdentifier&gt;
+    &lt;/Filter&gt;
+    &lt;Filter Include=&quot;Header Files&quot;&gt;
+      &lt;UniqueIdentifier&gt;{93995380-89BD-4b04-88EB-625FBE52EBFB}&lt;/UniqueIdentifier&gt;
+      &lt;Extensions&gt;h;hpp;hxx;hm;inl;inc;xsd&lt;/Extensions&gt;
+    &lt;/Filter&gt;
+    &lt;Filter Include=&quot;Header Files\generated&quot;&gt;
+      &lt;UniqueIdentifier&gt;{094f7115-35d3-4c63-870c-ab5f393dc2c2}&lt;/UniqueIdentifier&gt;
+    &lt;/Filter&gt;
+    &lt;Filter Include=&quot;Header Files\timing&quot;&gt;
+      &lt;UniqueIdentifier&gt;{5f5742e9-15e1-43b4-b1e7-0c118be14e04}&lt;/UniqueIdentifier&gt;
+    &lt;/Filter&gt;
+    &lt;Filter Include=&quot;Header Files\depgraph&quot;&gt;
+      &lt;UniqueIdentifier&gt;{c4007e35-3c11-44d6-95f7-bb81db528068}&lt;/UniqueIdentifier&gt;
+    &lt;/Filter&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;ClCompile Include=&quot;BuiltInFunctionEmulator.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Compiler.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;debug.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;DetectCallDepth.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Diagnostics.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;DirectiveHandler.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;ForLoopUnroll.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;InfoSink.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Initialize.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;InitializeDll.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;InitializeParseContext.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Intermediate.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;intermOut.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;IntermTraverse.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;MapLongVariableNames.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;ossource_win.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;parseConst.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;PoolAlloc.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;QualifierAlive.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;RemoveTree.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;ShaderLang.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;SymbolTable.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;util.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;ValidateLimitations.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;VariableInfo.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;VariablePacker.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;glslang_lex.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\generated&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;glslang_tab.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\generated&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;depgraph\DependencyGraph.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\depgraph&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;depgraph\DependencyGraphBuilder.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\depgraph&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;depgraph\DependencyGraphOutput.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\depgraph&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;depgraph\DependencyGraphTraverse.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\depgraph&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;timing\RestrictFragmentShaderTiming.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\timing&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;timing\RestrictVertexShaderTiming.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\timing&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;..\third_party\compiler\ArrayBoundsClamper.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;InitializeGLPosition.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;DetectDiscontinuity.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;OutputHLSL.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;SearchSymbol.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;TranslatorHLSL.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;UnfoldShortCircuit.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Uniform.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;CodeGen.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;TranslatorGLSL.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;TranslatorESSL.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;OutputESSL.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;OutputGLSL.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;OutputGLSLBase.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;VersionGLSL.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;UnfoldShortCircuitAST.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;ParseContext.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;ClInclude Include=&quot;BaseTypes.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;BuiltInFunctionEmulator.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;Common.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;ConstantUnion.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;debug.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;DetectCallDepth.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;Diagnostics.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;DirectiveHandler.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;ForLoopUnroll.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;InfoSink.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;Initialize.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;InitializeDll.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;InitializeGlobals.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;InitializeParseContext.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;intermediate.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;localintermediate.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;MapLongVariableNames.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;MMap.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;osinclude.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;PoolAlloc.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;QualifierAlive.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;RemoveTree.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;RenameFunction.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\..\include\GLSLANG\ShaderLang.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;ShHandle.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;SymbolTable.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;Types.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;util.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;ValidateLimitations.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;VariableInfo.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;VariablePacker.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;glslang_tab.h&quot;&gt;
+      &lt;Filter&gt;Header Files\generated&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;timing\RestrictFragmentShaderTiming.h&quot;&gt;
+      &lt;Filter&gt;Header Files\timing&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;timing\RestrictVertexShaderTiming.h&quot;&gt;
+      &lt;Filter&gt;Header Files\timing&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;depgraph\DependencyGraph.h&quot;&gt;
+      &lt;Filter&gt;Header Files\depgraph&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;depgraph\DependencyGraphBuilder.h&quot;&gt;
+      &lt;Filter&gt;Header Files\depgraph&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;depgraph\DependencyGraphOutput.h&quot;&gt;
+      &lt;Filter&gt;Header Files\depgraph&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;HashNames.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;InitializeGLPosition.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\third_party\compiler\ArrayBoundsClamper.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;DetectDiscontinuity.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;OutputHLSL.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;SearchSymbol.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;TranslatorHLSL.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;UnfoldShortCircuit.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;Uniform.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;TranslatorGLSL.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;TranslatorESSL.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;OutputESSL.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;OutputGLSL.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;OutputGLSLBase.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;VersionGLSL.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;UnfoldShortCircuitAST.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;ParseContext.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;NodeSearch.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;CustomBuild Include=&quot;glslang.l&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/CustomBuild&gt;
+    &lt;CustomBuild Include=&quot;glslang.y&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/CustomBuild&gt;
+  &lt;/ItemGroup&gt;
+&lt;/Project&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerutilcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/util.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/util.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/util.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -4,30 +4,25 @@
</span><span class="cx"> // found in the LICENSE file.
</span><span class="cx"> //
</span><span class="cx"> 
</span><del>-#include &lt;math.h&gt;
-#include &lt;stdlib.h&gt;
</del><ins>+#include &quot;compiler/util.h&quot;
</ins><span class="cx"> 
</span><del>-#include &quot;util.h&quot;
</del><ins>+#include &lt;limits&gt;
</ins><span class="cx"> 
</span><del>-#ifdef _MSC_VER
-    #include &lt;locale.h&gt;
-#else
-    #include &lt;sstream&gt;
-#endif
</del><ins>+#include &quot;compiler/preprocessor/numeric_lex.h&quot;
</ins><span class="cx"> 
</span><del>-double atof_dot(const char *str)
</del><ins>+bool atof_clamp(const char *str, float *value)
</ins><span class="cx"> {
</span><del>-#ifdef _MSC_VER
-    _locale_t l = _create_locale(LC_NUMERIC, &quot;C&quot;);
-    double result = _atof_l(str, l);
-    _free_locale(l);
-    return result;
-#else
-    double result;
-    std::istringstream s(str);
-    std::locale l(&quot;C&quot;);
-    s.imbue(l);
-    s &gt;&gt; result;
-    return result;
-#endif
</del><ins>+    bool success = pp::numeric_lex_float(str, value);
+    if (!success)
+        *value = std::numeric_limits&lt;float&gt;::max();
+    return success;
</ins><span class="cx"> }
</span><ins>+
+bool atoi_clamp(const char *str, int *value)
+{
+    bool success = pp::numeric_lex_int(str, value);
+    if (!success)
+        *value = std::numeric_limits&lt;int&gt;::max();
+    return success;
+}
+
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrccompilerutilh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/util.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/util.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/compiler/util.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -7,15 +7,14 @@
</span><span class="cx"> #ifndef COMPILER_UTIL_H
</span><span class="cx"> #define COMPILER_UTIL_H
</span><span class="cx"> 
</span><del>-#ifdef __cplusplus
-extern &quot;C&quot; {
-#endif
</del><ins>+// atof_clamp is like atof but
+//   1. it forces C locale, i.e. forcing '.' as decimal point.
+//   2. it clamps the value to -FLT_MAX or FLT_MAX if overflow happens.
+// Return false if overflow happens.
+extern bool atof_clamp(const char *str, float *value);
</ins><span class="cx"> 
</span><del>-// atof_dot is like atof but forcing C locale, i.e. forcing '.' as decimal point.
-double atof_dot(const char *str);
</del><ins>+// If overflow happens, clamp the value to INT_MIN or INT_MAX.
+// Return false if overflow happens.
+extern bool atoi_clamp(const char *str, int *value);
</ins><span class="cx"> 
</span><del>-#ifdef __cplusplus
-} // end extern &quot;C&quot;
-#endif
-
</del><span class="cx"> #endif // COMPILER_UTIL_H
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibEGLSurfacecpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libEGL/Surface.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libEGL/Surface.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libEGL/Surface.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -10,6 +10,8 @@
</span><span class="cx"> 
</span><span class="cx"> #include &lt;tchar.h&gt;
</span><span class="cx"> 
</span><ins>+#include &lt;algorithm&gt;
+
</ins><span class="cx"> #include &quot;libEGL/Surface.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;common/debug.h&quot;
</span><span class="lines">@@ -309,6 +311,13 @@
</span><span class="cx">     int clientHeight = client.bottom - client.top;
</span><span class="cx">     bool sizeDirty = clientWidth != getWidth() || clientHeight != getHeight();
</span><span class="cx"> 
</span><ins>+    if (IsIconic(getWindowHandle()))
+    {
+        // The window is automatically resized to 150x22 when it's minimized, but the swapchain shouldn't be resized
+        // because that's not a useful size to render to.
+        sizeDirty = false;
+    }
+
</ins><span class="cx">     if (mSwapIntervalDirty)
</span><span class="cx">     {
</span><span class="cx">         resetSwapChain(clientWidth, clientHeight);
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibEGLlibEGLcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libEGL/libEGL.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libEGL/libEGL.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libEGL/libEGL.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -819,13 +819,21 @@
</span><span class="cx">             return egl::error(EGL_BAD_CONFIG, EGL_NO_CONTEXT);
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        if (share_context &amp;&amp; static_cast&lt;gl::Context*&gt;(share_context)-&gt;isResetNotificationEnabled() != reset_notification)
</del><ins>+        gl::Context *sharedContextPtr = (share_context != EGL_NO_CONTEXT ? static_cast&lt;gl::Context*&gt;(share_context) : NULL);
+
+        if (sharedContextPtr != NULL &amp;&amp; sharedContextPtr-&gt;isResetNotificationEnabled() != reset_notification)
</ins><span class="cx">         {
</span><span class="cx">             return egl::error(EGL_BAD_MATCH, EGL_NO_CONTEXT);
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         egl::Display *display = static_cast&lt;egl::Display*&gt;(dpy);
</span><span class="cx"> 
</span><ins>+        // Can not share contexts between displays
+        if (sharedContextPtr != NULL &amp;&amp; sharedContextPtr-&gt;getRenderer() != display-&gt;getRenderer())
+        {
+            return egl::error(EGL_BAD_MATCH, EGL_NO_CONTEXT);
+        }
+
</ins><span class="cx">         if (!validateConfig(display, config))
</span><span class="cx">         {
</span><span class="cx">             return EGL_NO_CONTEXT;
</span><span class="lines">@@ -888,15 +896,18 @@
</span><span class="cx">             return EGL_FALSE;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        rx::Renderer *renderer = display-&gt;getRenderer();
-        if (renderer-&gt;testDeviceLost(true))
</del><ins>+        if (dpy != EGL_NO_DISPLAY)
</ins><span class="cx">         {
</span><del>-            return EGL_FALSE;
-        }
</del><ins>+            rx::Renderer *renderer = display-&gt;getRenderer();
+            if (renderer-&gt;testDeviceLost(true))
+            {
+                return EGL_FALSE;
+            }
</ins><span class="cx"> 
</span><del>-        if (renderer-&gt;isDeviceLost())
-        {
-            return egl::error(EGL_CONTEXT_LOST, EGL_FALSE);
</del><ins>+            if (renderer-&gt;isDeviceLost())
+            {
+                return egl::error(EGL_CONTEXT_LOST, EGL_FALSE);
+            }
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if ((draw != EGL_NO_SURFACE &amp;&amp; !validateSurface(display, static_cast&lt;egl::Surface*&gt;(draw))) ||
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibEGLlibEGLrc"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libEGL/libEGL.rc (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libEGL/libEGL.rc        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libEGL/libEGL.rc        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,102 +1,102 @@
</span><del>-// Microsoft Visual C++ generated resource script.
-//
-#include &quot;resource.h&quot;
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#include &lt;windows.h&gt;
-#include &quot;../common/version.h&quot;
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-// English (U.S.) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-#ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-#pragma code_page(1252)
-#endif //_WIN32
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE 
-BEGIN
-    &quot;resource.h\0&quot;
-END
-
-2 TEXTINCLUDE 
-BEGIN
-    &quot;#include &quot;&quot;afxres.h&quot;&quot;\r\n&quot;
-    &quot;#include &quot;&quot;../common/version.h&quot;&quot;\0&quot;
-END
-
-3 TEXTINCLUDE 
-BEGIN
-    &quot;\r\n&quot;
-    &quot;\0&quot;
-END
-
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Version
-//
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION MAJOR_VERSION,MINOR_VERSION,BUILD_VERSION,BUILD_REVISION
- PRODUCTVERSION MAJOR_VERSION,MINOR_VERSION,BUILD_VERSION,BUILD_REVISION
- FILEFLAGSMASK 0x17L
-#ifdef _DEBUG
- FILEFLAGS 0x1L
-#else
- FILEFLAGS 0x0L
-#endif
- FILEOS 0x4L
- FILETYPE 0x2L
- FILESUBTYPE 0x0L
-BEGIN
-    BLOCK &quot;StringFileInfo&quot;
-    BEGIN
-        BLOCK &quot;040904b0&quot;
-        BEGIN
-            VALUE &quot;FileDescription&quot;, &quot;ANGLE libEGL Dynamic Link Library&quot;
-            VALUE &quot;FileVersion&quot;, VERSION_STRING
-            VALUE &quot;InternalName&quot;, &quot;libEGL&quot;
-            VALUE &quot;LegalCopyright&quot;, &quot;Copyright (C) 2011 Google Inc.&quot;
-            VALUE &quot;OriginalFilename&quot;, &quot;libEGL.dll&quot;
-            VALUE &quot;PrivateBuild&quot;, VERSION_STRING
-            VALUE &quot;ProductName&quot;, &quot;ANGLE libEGL Dynamic Link Library&quot;
-            VALUE &quot;ProductVersion&quot;, VERSION_STRING
-        END
-    END
-    BLOCK &quot;VarFileInfo&quot;
-    BEGIN
-        VALUE &quot;Translation&quot;, 0x409, 1200
-    END
-END
-
-#endif    // English (U.S.) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif    // not APSTUDIO_INVOKED
</del><ins>+// Microsoft Visual C++ generated resource script.
+//
+#include &quot;resource.h&quot;
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include &lt;windows.h&gt;
+#include &quot;../common/version.h&quot;
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE 
+BEGIN
+    &quot;resource.h\0&quot;
+END
+
+2 TEXTINCLUDE 
+BEGIN
+    &quot;#include &quot;&quot;afxres.h&quot;&quot;\r\n&quot;
+    &quot;#include &quot;&quot;../common/version.h&quot;&quot;\0&quot;
+END
+
+3 TEXTINCLUDE 
+BEGIN
+    &quot;\r\n&quot;
+    &quot;\0&quot;
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION MAJOR_VERSION,MINOR_VERSION,BUILD_VERSION,BUILD_REVISION
+ PRODUCTVERSION MAJOR_VERSION,MINOR_VERSION,BUILD_VERSION,BUILD_REVISION
+ FILEFLAGSMASK 0x17L
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK &quot;StringFileInfo&quot;
+    BEGIN
+        BLOCK &quot;040904b0&quot;
+        BEGIN
+            VALUE &quot;FileDescription&quot;, &quot;ANGLE libEGL Dynamic Link Library&quot;
+            VALUE &quot;FileVersion&quot;, VERSION_STRING
+            VALUE &quot;InternalName&quot;, &quot;libEGL&quot;
+            VALUE &quot;LegalCopyright&quot;, &quot;Copyright (C) 2011 Google Inc.&quot;
+            VALUE &quot;OriginalFilename&quot;, &quot;libEGL.dll&quot;
+            VALUE &quot;PrivateBuild&quot;, VERSION_STRING
+            VALUE &quot;ProductName&quot;, &quot;ANGLE libEGL Dynamic Link Library&quot;
+            VALUE &quot;ProductVersion&quot;, VERSION_STRING
+        END
+    END
+    BLOCK &quot;VarFileInfo&quot;
+    BEGIN
+        VALUE &quot;Translation&quot;, 0x409, 1200
+    END
+END
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibEGLlibEGLvcxproj"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libEGL/libEGL.vcxproj (0 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libEGL/libEGL.vcxproj                                (rev 0)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libEGL/libEGL.vcxproj        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -0,0 +1,258 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;Project DefaultTargets=&quot;Build&quot; ToolsVersion=&quot;4.0&quot; xmlns=&quot;http://schemas.microsoft.com/developer/msbuild/2003&quot;&gt;
+  &lt;ItemGroup Label=&quot;ProjectConfigurations&quot;&gt;
+    &lt;ProjectConfiguration Include=&quot;Debug|Win32&quot;&gt;
+      &lt;Configuration&gt;Debug&lt;/Configuration&gt;
+      &lt;Platform&gt;Win32&lt;/Platform&gt;
+    &lt;/ProjectConfiguration&gt;
+    &lt;ProjectConfiguration Include=&quot;Debug|x64&quot;&gt;
+      &lt;Configuration&gt;Debug&lt;/Configuration&gt;
+      &lt;Platform&gt;x64&lt;/Platform&gt;
+    &lt;/ProjectConfiguration&gt;
+    &lt;ProjectConfiguration Include=&quot;Release|Win32&quot;&gt;
+      &lt;Configuration&gt;Release&lt;/Configuration&gt;
+      &lt;Platform&gt;Win32&lt;/Platform&gt;
+    &lt;/ProjectConfiguration&gt;
+    &lt;ProjectConfiguration Include=&quot;Release|x64&quot;&gt;
+      &lt;Configuration&gt;Release&lt;/Configuration&gt;
+      &lt;Platform&gt;x64&lt;/Platform&gt;
+    &lt;/ProjectConfiguration&gt;
+  &lt;/ItemGroup&gt;
+  &lt;PropertyGroup Label=&quot;Globals&quot;&gt;
+    &lt;ProjectGuid&gt;{E746FCA9-64C3-433E-85E8-9A5A67AB7ED6}&lt;/ProjectGuid&gt;
+    &lt;RootNamespace&gt;libEGL&lt;/RootNamespace&gt;
+    &lt;Keyword&gt;Win32Proj&lt;/Keyword&gt;
+  &lt;/PropertyGroup&gt;
+  &lt;Import Project=&quot;$(VCTargetsPath)\Microsoft.Cpp.Default.props&quot; /&gt;
+  &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot; Label=&quot;Configuration&quot;&gt;
+    &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
+    &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
+    &lt;WholeProgramOptimization&gt;true&lt;/WholeProgramOptimization&gt;
+  &lt;/PropertyGroup&gt;
+  &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot; Label=&quot;Configuration&quot;&gt;
+    &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
+    &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
+  &lt;/PropertyGroup&gt;
+  &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
+    &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
+    &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
+    &lt;WholeProgramOptimization&gt;true&lt;/WholeProgramOptimization&gt;
+  &lt;/PropertyGroup&gt;
+  &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
+    &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
+    &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
+  &lt;/PropertyGroup&gt;
+  &lt;Import Project=&quot;$(VCTargetsPath)\Microsoft.Cpp.props&quot; /&gt;
+  &lt;ImportGroup Label=&quot;ExtensionSettings&quot;&gt;
+  &lt;/ImportGroup&gt;
+  &lt;ImportGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot; Label=&quot;PropertySheets&quot;&gt;
+    &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;
+  &lt;/ImportGroup&gt;
+  &lt;ImportGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot; Label=&quot;PropertySheets&quot;&gt;
+    &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;
+  &lt;/ImportGroup&gt;
+  &lt;ImportGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;PropertySheets&quot;&gt;
+    &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;
+  &lt;/ImportGroup&gt;
+  &lt;ImportGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;PropertySheets&quot;&gt;
+    &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;
+  &lt;/ImportGroup&gt;
+  &lt;PropertyGroup Label=&quot;UserMacros&quot; /&gt;
+  &lt;PropertyGroup&gt;
+    &lt;_ProjectFileVersion&gt;10.0.40219.1&lt;/_ProjectFileVersion&gt;
+    &lt;OutDir Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;$(SolutionDir)$(Configuration)\&lt;/OutDir&gt;
+    &lt;IntDir Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;$(Configuration)\&lt;/IntDir&gt;
+    &lt;LinkIncremental Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;true&lt;/LinkIncremental&gt;
+    &lt;OutDir Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;$(SolutionDir)$(Configuration)\&lt;/OutDir&gt;
+    &lt;IntDir Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;$(Configuration)\&lt;/IntDir&gt;
+    &lt;LinkIncremental Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;false&lt;/LinkIncremental&gt;
+    &lt;OutDir Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;$(SolutionDir)$(Platform)\$(Configuration)\&lt;/OutDir&gt;
+    &lt;IntDir Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;$(Platform)\$(Configuration)\&lt;/IntDir&gt;
+    &lt;LinkIncremental Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;true&lt;/LinkIncremental&gt;
+    &lt;OutDir Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;$(SolutionDir)$(Platform)\$(Configuration)\&lt;/OutDir&gt;
+    &lt;IntDir Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;$(Platform)\$(Configuration)\&lt;/IntDir&gt;
+    &lt;LinkIncremental Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;false&lt;/LinkIncremental&gt;
+    &lt;LibraryPath Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;$(LibraryPath)&lt;/LibraryPath&gt;
+    &lt;LibraryPath Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;$(DXSDK_DIR)\lib\x86;$(LibraryPath)&lt;/LibraryPath&gt;
+    &lt;LibraryPath Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;$(LibraryPath)&lt;/LibraryPath&gt;
+    &lt;LibraryPath Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;$(LibraryPath)&lt;/LibraryPath&gt;
+    &lt;IncludePath Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;$(DXSDK_DIR)\include;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include;&lt;/IncludePath&gt;
+  &lt;/PropertyGroup&gt;
+  &lt;ItemDefinitionGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;
+    &lt;ClCompile&gt;
+      &lt;Optimization&gt;Disabled&lt;/Optimization&gt;
+      &lt;AdditionalIncludeDirectories&gt;$(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;
+      &lt;PreprocessorDefinitions&gt;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBEGL_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;
+      &lt;MinimalRebuild&gt;true&lt;/MinimalRebuild&gt;
+      &lt;BasicRuntimeChecks&gt;EnableFastChecks&lt;/BasicRuntimeChecks&gt;
+      &lt;RuntimeLibrary&gt;MultiThreadedDebug&lt;/RuntimeLibrary&gt;
+      &lt;PrecompiledHeader&gt;
+      &lt;/PrecompiledHeader&gt;
+      &lt;WarningLevel&gt;Level4&lt;/WarningLevel&gt;
+      &lt;TreatWarningAsError&gt;true&lt;/TreatWarningAsError&gt;
+      &lt;DebugInformationFormat&gt;EditAndContinue&lt;/DebugInformationFormat&gt;
+      &lt;DisableSpecificWarnings&gt;4100;4127;4189;4239;4244;4245;4512;4702;4996;%(DisableSpecificWarnings)&lt;/DisableSpecificWarnings&gt;
+    &lt;/ClCompile&gt;
+    &lt;Link&gt;
+      &lt;AdditionalDependencies&gt;d3d9.lib;%(AdditionalDependencies)&lt;/AdditionalDependencies&gt;
+      &lt;ModuleDefinitionFile&gt;libEGL.def&lt;/ModuleDefinitionFile&gt;
+      &lt;DelayLoadDLLs&gt;%(DelayLoadDLLs)&lt;/DelayLoadDLLs&gt;
+      &lt;GenerateDebugInformation&gt;true&lt;/GenerateDebugInformation&gt;
+      &lt;SubSystem&gt;Windows&lt;/SubSystem&gt;
+      &lt;DataExecutionPrevention&gt;
+      &lt;/DataExecutionPrevention&gt;
+      &lt;TargetMachine&gt;MachineX86&lt;/TargetMachine&gt;
+    &lt;/Link&gt;
+    &lt;PostBuildEvent&gt;
+      &lt;Command&gt;%40echo on
+mkdir &quot;$(ProjectDir)..\..\lib\$(Configuration)\&quot;
+copy &quot;$(OutDir)libEGL.dll&quot; &quot;$(ProjectDir)..\..\lib\$(Configuration)\&quot;
+copy &quot;$(OutDir)libEGL.lib&quot; &quot;$(ProjectDir)..\..\lib\$(Configuration)\&quot;
+%40echo off
+&lt;/Command&gt;
+    &lt;/PostBuildEvent&gt;
+  &lt;/ItemDefinitionGroup&gt;
+  &lt;ItemDefinitionGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;
+    &lt;ClCompile&gt;
+      &lt;Optimization&gt;MaxSpeed&lt;/Optimization&gt;
+      &lt;InlineFunctionExpansion&gt;AnySuitable&lt;/InlineFunctionExpansion&gt;
+      &lt;AdditionalIncludeDirectories&gt;$(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;
+      &lt;PreprocessorDefinitions&gt;ANGLE_DISABLE_TRACE;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBEGL_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;_SECURE_SCL=0;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;
+      &lt;RuntimeLibrary&gt;MultiThreaded&lt;/RuntimeLibrary&gt;
+      &lt;PrecompiledHeader&gt;
+      &lt;/PrecompiledHeader&gt;
+      &lt;WarningLevel&gt;Level4&lt;/WarningLevel&gt;
+      &lt;TreatWarningAsError&gt;true&lt;/TreatWarningAsError&gt;
+      &lt;DebugInformationFormat&gt;ProgramDatabase&lt;/DebugInformationFormat&gt;
+      &lt;DisableSpecificWarnings&gt;4100;4127;4189;4239;4244;4245;4512;4702;4996;%(DisableSpecificWarnings)&lt;/DisableSpecificWarnings&gt;
+    &lt;/ClCompile&gt;
+    &lt;Link&gt;
+      &lt;AdditionalDependencies&gt;d3d9.lib;%(AdditionalDependencies)&lt;/AdditionalDependencies&gt;
+      &lt;ModuleDefinitionFile&gt;libEGL.def&lt;/ModuleDefinitionFile&gt;
+      &lt;DelayLoadDLLs&gt;%(DelayLoadDLLs)&lt;/DelayLoadDLLs&gt;
+      &lt;GenerateDebugInformation&gt;true&lt;/GenerateDebugInformation&gt;
+      &lt;SubSystem&gt;Windows&lt;/SubSystem&gt;
+      &lt;OptimizeReferences&gt;true&lt;/OptimizeReferences&gt;
+      &lt;EnableCOMDATFolding&gt;true&lt;/EnableCOMDATFolding&gt;
+      &lt;DataExecutionPrevention&gt;
+      &lt;/DataExecutionPrevention&gt;
+      &lt;TargetMachine&gt;MachineX86&lt;/TargetMachine&gt;
+    &lt;/Link&gt;
+    &lt;PostBuildEvent&gt;
+      &lt;Command&gt;%40echo on
+mkdir &quot;$(ProjectDir)..\..\lib\$(Configuration)\&quot;
+copy &quot;$(OutDir)libEGL.dll&quot; &quot;$(ProjectDir)..\..\lib\$(Configuration)\&quot;
+copy &quot;$(OutDir)libEGL.lib&quot; &quot;$(ProjectDir)..\..\lib\$(Configuration)\&quot;
+%40echo off
+&lt;/Command&gt;
+    &lt;/PostBuildEvent&gt;
+  &lt;/ItemDefinitionGroup&gt;
+  &lt;ItemDefinitionGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;
+    &lt;Midl&gt;
+      &lt;TargetEnvironment&gt;X64&lt;/TargetEnvironment&gt;
+    &lt;/Midl&gt;
+    &lt;ClCompile&gt;
+      &lt;Optimization&gt;Disabled&lt;/Optimization&gt;
+      &lt;AdditionalIncludeDirectories&gt;$(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;
+      &lt;PreprocessorDefinitions&gt;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBEGL_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;
+      &lt;MinimalRebuild&gt;true&lt;/MinimalRebuild&gt;
+      &lt;BasicRuntimeChecks&gt;EnableFastChecks&lt;/BasicRuntimeChecks&gt;
+      &lt;RuntimeLibrary&gt;MultiThreadedDebug&lt;/RuntimeLibrary&gt;
+      &lt;PrecompiledHeader&gt;
+      &lt;/PrecompiledHeader&gt;
+      &lt;WarningLevel&gt;Level4&lt;/WarningLevel&gt;
+      &lt;DisableSpecificWarnings&gt;4100;4127;4189;4239;4244;4245;4512;4702;4996;%(DisableSpecificWarnings)&lt;/DisableSpecificWarnings&gt;
+      &lt;DebugInformationFormat&gt;ProgramDatabase&lt;/DebugInformationFormat&gt;
+      &lt;TreatWarningAsError&gt;true&lt;/TreatWarningAsError&gt;
+    &lt;/ClCompile&gt;
+    &lt;Link&gt;
+      &lt;AdditionalDependencies&gt;d3d9.lib;%(AdditionalDependencies)&lt;/AdditionalDependencies&gt;
+      &lt;ModuleDefinitionFile&gt;libEGL.def&lt;/ModuleDefinitionFile&gt;
+      &lt;DelayLoadDLLs&gt;%(DelayLoadDLLs)&lt;/DelayLoadDLLs&gt;
+      &lt;GenerateDebugInformation&gt;true&lt;/GenerateDebugInformation&gt;
+      &lt;SubSystem&gt;Windows&lt;/SubSystem&gt;
+      &lt;DataExecutionPrevention&gt;
+      &lt;/DataExecutionPrevention&gt;
+      &lt;TargetMachine&gt;MachineX64&lt;/TargetMachine&gt;
+    &lt;/Link&gt;
+    &lt;PostBuildEvent&gt;
+      &lt;Command&gt;%40echo on
+mkdir &quot;$(ProjectDir)..\..\lib\$(Configuration)\&quot;
+copy &quot;$(OutDir)libEGL.dll&quot; &quot;$(ProjectDir)..\..\lib\$(Configuration)\&quot;
+copy &quot;$(OutDir)libEGL.lib&quot; &quot;$(ProjectDir)..\..\lib\$(Configuration)\&quot;
+%40echo off
+&lt;/Command&gt;
+    &lt;/PostBuildEvent&gt;
+  &lt;/ItemDefinitionGroup&gt;
+  &lt;ItemDefinitionGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;
+    &lt;Midl&gt;
+      &lt;TargetEnvironment&gt;X64&lt;/TargetEnvironment&gt;
+    &lt;/Midl&gt;
+    &lt;ClCompile&gt;
+      &lt;Optimization&gt;MaxSpeed&lt;/Optimization&gt;
+      &lt;InlineFunctionExpansion&gt;AnySuitable&lt;/InlineFunctionExpansion&gt;
+      &lt;AdditionalIncludeDirectories&gt;$(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;
+      &lt;PreprocessorDefinitions&gt;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBEGL_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;_SECURE_SCL=0;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;
+      &lt;RuntimeLibrary&gt;MultiThreaded&lt;/RuntimeLibrary&gt;
+      &lt;PrecompiledHeader&gt;
+      &lt;/PrecompiledHeader&gt;
+      &lt;WarningLevel&gt;Level4&lt;/WarningLevel&gt;
+      &lt;DisableSpecificWarnings&gt;4100;4127;4189;4239;4244;4245;4512;4702;4996;%(DisableSpecificWarnings)&lt;/DisableSpecificWarnings&gt;
+      &lt;DebugInformationFormat&gt;ProgramDatabase&lt;/DebugInformationFormat&gt;
+      &lt;TreatWarningAsError&gt;true&lt;/TreatWarningAsError&gt;
+    &lt;/ClCompile&gt;
+    &lt;Link&gt;
+      &lt;AdditionalDependencies&gt;d3d9.lib;%(AdditionalDependencies)&lt;/AdditionalDependencies&gt;
+      &lt;ModuleDefinitionFile&gt;libEGL.def&lt;/ModuleDefinitionFile&gt;
+      &lt;DelayLoadDLLs&gt;%(DelayLoadDLLs)&lt;/DelayLoadDLLs&gt;
+      &lt;GenerateDebugInformation&gt;true&lt;/GenerateDebugInformation&gt;
+      &lt;SubSystem&gt;Windows&lt;/SubSystem&gt;
+      &lt;OptimizeReferences&gt;true&lt;/OptimizeReferences&gt;
+      &lt;EnableCOMDATFolding&gt;true&lt;/EnableCOMDATFolding&gt;
+      &lt;DataExecutionPrevention&gt;
+      &lt;/DataExecutionPrevention&gt;
+      &lt;TargetMachine&gt;MachineX64&lt;/TargetMachine&gt;
+    &lt;/Link&gt;
+    &lt;PostBuildEvent&gt;
+      &lt;Command&gt;%40echo on
+mkdir &quot;$(ProjectDir)..\..\lib\$(Configuration)\&quot;
+copy &quot;$(OutDir)libEGL.dll&quot; &quot;$(ProjectDir)..\..\lib\$(Configuration)\&quot;
+copy &quot;$(OutDir)libEGL.lib&quot; &quot;$(ProjectDir)..\..\lib\$(Configuration)\&quot;
+%40echo off
+&lt;/Command&gt;
+    &lt;/PostBuildEvent&gt;
+  &lt;/ItemDefinitionGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;ClCompile Include=&quot;Config.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\Common\debug.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;Display.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;libEGL.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;main.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;Surface.cpp&quot; /&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;ClInclude Include=&quot;Config.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;Display.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\..\include\EGL\egl.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\..\include\EGL\eglext.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\..\include\EGL\eglplatform.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;main.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;resource.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;Surface.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\common\version.h&quot; /&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;None Include=&quot;libEGL.def&quot; /&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;ResourceCompile Include=&quot;libEGL.rc&quot; /&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;ProjectReference Include=&quot;..\libGLESv2\libGLESv2.vcxproj&quot;&gt;
+      &lt;Project&gt;{b5871a7a-968c-42e3-a33b-981e6f448e78}&lt;/Project&gt;
+    &lt;/ProjectReference&gt;
+  &lt;/ItemGroup&gt;
+  &lt;Import Project=&quot;$(VCTargetsPath)\Microsoft.Cpp.targets&quot; /&gt;
+  &lt;ImportGroup Label=&quot;ExtensionTargets&quot;&gt;
+  &lt;/ImportGroup&gt;
+&lt;/Project&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibEGLlibEGLvcxprojfilters"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libEGL/libEGL.vcxproj.filters (0 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libEGL/libEGL.vcxproj.filters                                (rev 0)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libEGL/libEGL.vcxproj.filters        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -0,0 +1,68 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;Project ToolsVersion=&quot;4.0&quot; xmlns=&quot;http://schemas.microsoft.com/developer/msbuild/2003&quot;&gt;
+  &lt;ItemGroup&gt;
+    &lt;Filter Include=&quot;Source Files&quot;&gt;
+      &lt;UniqueIdentifier&gt;{4FC737F1-C7A5-4376-A066-2A32D752A2FF}&lt;/UniqueIdentifier&gt;
+      &lt;Extensions&gt;cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx&lt;/Extensions&gt;
+    &lt;/Filter&gt;
+    &lt;Filter Include=&quot;Header Files&quot;&gt;
+      &lt;UniqueIdentifier&gt;{93995380-89BD-4b04-88EB-625FBE52EBFB}&lt;/UniqueIdentifier&gt;
+      &lt;Extensions&gt;h;hpp;hxx;hm;inl;inc;xsd&lt;/Extensions&gt;
+    &lt;/Filter&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;ClCompile Include=&quot;Config.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;..\Common\debug.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Display.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;libEGL.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;main.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Surface.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;ClInclude Include=&quot;Config.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;Display.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\..\include\EGL\egl.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\..\include\EGL\eglext.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\..\include\EGL\eglplatform.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;main.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;resource.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;Surface.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\common\version.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;ResourceCompile Include=&quot;libEGL.rc&quot; /&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;None Include=&quot;libEGL.def&quot; /&gt;
+  &lt;/ItemGroup&gt;
+&lt;/Project&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2Buffercpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Buffer.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Buffer.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Buffer.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -40,6 +40,7 @@
</span><span class="cx"> void Buffer::bufferData(const void *data, GLsizeiptr size, GLenum usage)
</span><span class="cx"> {
</span><span class="cx">     mBufferStorage-&gt;clear();
</span><ins>+    mIndexRangeCache.clear();
</ins><span class="cx">     mBufferStorage-&gt;setData(data, size, 0);
</span><span class="cx"> 
</span><span class="cx">     mUsage = usage;
</span><span class="lines">@@ -56,6 +57,7 @@
</span><span class="cx"> void Buffer::bufferSubData(const void *data, GLsizeiptr size, GLintptr offset)
</span><span class="cx"> {
</span><span class="cx">     mBufferStorage-&gt;setData(data, size, offset);
</span><ins>+    mIndexRangeCache.invalidateRange(offset, size);
</ins><span class="cx"> 
</span><span class="cx">     if ((mStaticVertexBuffer &amp;&amp; mStaticVertexBuffer-&gt;getBufferSize() != 0) || (mStaticIndexBuffer &amp;&amp; mStaticIndexBuffer-&gt;getBufferSize() != 0))
</span><span class="cx">     {
</span><span class="lines">@@ -70,7 +72,7 @@
</span><span class="cx">     return mBufferStorage;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-unsigned int Buffer::size()
</del><ins>+unsigned int Buffer::size() const
</ins><span class="cx"> {
</span><span class="cx">     return mBufferStorage-&gt;getSize();
</span><span class="cx"> }
</span><span class="lines">@@ -116,4 +118,9 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+rx::IndexRangeCache *Buffer::getIndexRangeCache()
+{
+    return &amp;mIndexRangeCache;
</ins><span class="cx"> }
</span><ins>+
+}
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2Bufferh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Buffer.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Buffer.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Buffer.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -13,6 +13,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;common/angleutils.h&quot;
</span><span class="cx"> #include &quot;common/RefCountObject.h&quot;
</span><ins>+#include &quot;libGLESv2/renderer/IndexRangeCache.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace rx
</span><span class="cx"> {
</span><span class="lines">@@ -38,13 +39,15 @@
</span><span class="cx">     GLenum usage() const;
</span><span class="cx"> 
</span><span class="cx">     rx::BufferStorage *getStorage() const;
</span><del>-    unsigned int size();
</del><ins>+    unsigned int size() const;
</ins><span class="cx"> 
</span><span class="cx">     rx::StaticVertexBufferInterface *getStaticVertexBuffer();
</span><span class="cx">     rx::StaticIndexBufferInterface *getStaticIndexBuffer();
</span><span class="cx">     void invalidateStaticData();
</span><span class="cx">     void promoteStaticUsage(int dataSize);
</span><span class="cx"> 
</span><ins>+    rx::IndexRangeCache *getIndexRangeCache();
+
</ins><span class="cx">   private:
</span><span class="cx">     DISALLOW_COPY_AND_ASSIGN(Buffer);
</span><span class="cx"> 
</span><span class="lines">@@ -53,6 +56,8 @@
</span><span class="cx"> 
</span><span class="cx">     rx::BufferStorage *mBufferStorage;
</span><span class="cx"> 
</span><ins>+    rx::IndexRangeCache mIndexRangeCache;
+
</ins><span class="cx">     rx::StaticVertexBufferInterface *mStaticVertexBuffer;
</span><span class="cx">     rx::StaticIndexBufferInterface *mStaticIndexBuffer;
</span><span class="cx">     unsigned int mUnmodifiedDataUse;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2Contextcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Context.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Context.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Context.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1812,6 +1812,8 @@
</span><span class="cx"> {
</span><span class="cx">     ProgramBinary *programBinary = getCurrentProgramBinary();
</span><span class="cx"> 
</span><ins>+    FramebufferTextureSerialSet boundFramebufferTextures = getBoundFramebufferTextureSerials();
+
</ins><span class="cx">     // Range of Direct3D samplers of given sampler type
</span><span class="cx">     int samplerCount = (type == SAMPLER_PIXEL) ? MAX_TEXTURE_IMAGE_UNITS : mRenderer-&gt;getMaxVertexTextureImageUnits();
</span><span class="cx">     int samplerRange = programBinary-&gt;getUsedSamplerRange(type);
</span><span class="lines">@@ -1825,7 +1827,8 @@
</span><span class="cx">             TextureType textureType = programBinary-&gt;getSamplerTextureType(type, samplerIndex);
</span><span class="cx">             Texture *texture = getSamplerTexture(textureUnit, textureType);
</span><span class="cx"> 
</span><del>-            if (texture-&gt;isSamplerComplete())
</del><ins>+            if (texture-&gt;isSamplerComplete() &amp;&amp;
+                boundFramebufferTextures.find(texture-&gt;getTextureSerial()) == boundFramebufferTextures.end())
</ins><span class="cx">             {
</span><span class="cx">                 SamplerState samplerState;
</span><span class="cx">                 texture-&gt;getSamplerState(&amp;samplerState);
</span><span class="lines">@@ -2655,6 +2658,29 @@
</span><span class="cx">     return mRendererString;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+Context::FramebufferTextureSerialSet Context::getBoundFramebufferTextureSerials()
+{
+    FramebufferTextureSerialSet set;
+
+    Framebuffer *drawFramebuffer = getDrawFramebuffer();
+    for (unsigned int i = 0; i &lt; IMPLEMENTATION_MAX_DRAW_BUFFERS; i++)
+    {
+        Renderbuffer *renderBuffer = drawFramebuffer-&gt;getColorbuffer(i);
+        if (renderBuffer &amp;&amp; renderBuffer-&gt;getTextureSerial() != 0)
+        {
+            set.insert(renderBuffer-&gt;getTextureSerial());
+        }
+    }
+
+    Renderbuffer *depthStencilBuffer = drawFramebuffer-&gt;getDepthOrStencilbuffer();
+    if (depthStencilBuffer &amp;&amp; depthStencilBuffer-&gt;getTextureSerial() != 0)
+    {
+        set.insert(depthStencilBuffer-&gt;getTextureSerial());
+    }
+
+    return set;
+}
+
</ins><span class="cx"> void Context::blitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, 
</span><span class="cx">                               GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
</span><span class="cx">                               GLbitfield mask)
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2Contexth"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Context.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Context.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Context.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -18,6 +18,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &lt;string&gt;
</span><span class="cx"> #include &lt;map&gt;
</span><ins>+#include &lt;set&gt;
</ins><span class="cx"> #ifdef _MSC_VER
</span><span class="cx"> #include &lt;hash_map&gt;
</span><span class="cx"> #else
</span><span class="lines">@@ -37,7 +38,6 @@
</span><span class="cx"> 
</span><span class="cx"> namespace egl
</span><span class="cx"> {
</span><del>-class Display;
</del><span class="cx"> class Surface;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -398,6 +398,8 @@
</span><span class="cx">                          GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
</span><span class="cx">                          GLbitfield mask);
</span><span class="cx"> 
</span><ins>+    rx::Renderer *getRenderer() { return mRenderer; }
+
</ins><span class="cx">   private:
</span><span class="cx">     DISALLOW_COPY_AND_ASSIGN(Context);
</span><span class="cx"> 
</span><span class="lines">@@ -419,6 +421,9 @@
</span><span class="cx">     void initExtensionString();
</span><span class="cx">     void initRendererString();
</span><span class="cx"> 
</span><ins>+    typedef std::set&lt;unsigned&gt; FramebufferTextureSerialSet;
+    FramebufferTextureSerialSet getBoundFramebufferTextureSerials();
+
</ins><span class="cx">     rx::Renderer *const mRenderer;
</span><span class="cx"> 
</span><span class="cx">     State mState;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2Framebufferh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Framebuffer.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Framebuffer.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Framebuffer.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -12,7 +12,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;common/angleutils.h&quot;
</span><span class="cx"> #include &quot;common/RefCountObject.h&quot;
</span><del>-#include &quot;constants.h&quot;
</del><ins>+#include &quot;Constants.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace rx
</span><span class="cx"> {
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2ProgramBinarycpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/ProgramBinary.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/ProgramBinary.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/ProgramBinary.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -34,6 +34,11 @@
</span><span class="cx">     return buffer;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static rx::D3DWorkaroundType DiscardWorkaround(bool usesDiscard)
+{
+    return (usesDiscard ? rx::ANGLE_D3D_WORKAROUND_SM3_OPTIMIZER : rx::ANGLE_D3D_WORKAROUND_NONE);
+}
+
</ins><span class="cx"> UniformLocation::UniformLocation(const std::string &amp;name, unsigned int element, unsigned int index) 
</span><span class="cx">     : name(name), element(element), index(index)
</span><span class="cx"> {
</span><span class="lines">@@ -1647,6 +1652,8 @@
</span><span class="cx">         stream.read(&amp;mSemanticIndex[i]);
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    initAttributesByLayout();
+
</ins><span class="cx">     for (unsigned int i = 0; i &lt; MAX_TEXTURE_IMAGE_UNITS; ++i)
</span><span class="cx">     {
</span><span class="cx">         stream.read(&amp;mSamplersPS[i].active);
</span><span class="lines">@@ -1960,13 +1967,13 @@
</span><span class="cx"> 
</span><span class="cx">     if (success)
</span><span class="cx">     {
</span><del>-        mVertexExecutable = mRenderer-&gt;compileToExecutable(infoLog, vertexHLSL.c_str(), rx::SHADER_VERTEX);
-        mPixelExecutable = mRenderer-&gt;compileToExecutable(infoLog, pixelHLSL.c_str(), rx::SHADER_PIXEL);
</del><ins>+        mVertexExecutable = mRenderer-&gt;compileToExecutable(infoLog, vertexHLSL.c_str(), rx::SHADER_VERTEX, DiscardWorkaround(vertexShader-&gt;mUsesDiscardRewriting));
+        mPixelExecutable = mRenderer-&gt;compileToExecutable(infoLog, pixelHLSL.c_str(), rx::SHADER_PIXEL, DiscardWorkaround(fragmentShader-&gt;mUsesDiscardRewriting));
</ins><span class="cx"> 
</span><span class="cx">         if (usesGeometryShader())
</span><span class="cx">         {
</span><span class="cx">             std::string geometryHLSL = generateGeometryShaderHLSL(registers, packing, fragmentShader, vertexShader);
</span><del>-            mGeometryExecutable = mRenderer-&gt;compileToExecutable(infoLog, geometryHLSL.c_str(), rx::SHADER_GEOMETRY);
</del><ins>+            mGeometryExecutable = mRenderer-&gt;compileToExecutable(infoLog, geometryHLSL.c_str(), rx::SHADER_GEOMETRY, rx::ANGLE_D3D_WORKAROUND_NONE);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (!mVertexExecutable || !mPixelExecutable || (usesGeometryShader() &amp;&amp; !mGeometryExecutable))
</span><span class="lines">@@ -2053,6 +2060,8 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    initAttributesByLayout();
+
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2579,12 +2588,6 @@
</span><span class="cx">     AttributeSorter(const int (&amp;semanticIndices)[MAX_VERTEX_ATTRIBS])
</span><span class="cx">         : originalIndices(semanticIndices)
</span><span class="cx">     {
</span><del>-        for (int i = 0; i &lt; MAX_VERTEX_ATTRIBS; i++)
-        {
-            indices[i] = i;
-        }
-
-        std::sort(&amp;indices[0], &amp;indices[MAX_VERTEX_ATTRIBS], *this);
</del><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     bool operator()(int a, int b)
</span><span class="lines">@@ -2592,27 +2595,32 @@
</span><span class="cx">         return originalIndices[a] == -1 ? false : originalIndices[a] &lt; originalIndices[b];
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    int indices[MAX_VERTEX_ATTRIBS];
</del><span class="cx">     const int (&amp;originalIndices)[MAX_VERTEX_ATTRIBS];
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+void ProgramBinary::initAttributesByLayout()
+{
+    for (int i = 0; i &lt; MAX_VERTEX_ATTRIBS; i++)
+    {
+        mAttributesByLayout[i] = i;
+    }
+
+    std::sort(&amp;mAttributesByLayout[0], &amp;mAttributesByLayout[MAX_VERTEX_ATTRIBS], AttributeSorter(mSemanticIndex));
+}
+
</ins><span class="cx"> void ProgramBinary::sortAttributesByLayout(rx::TranslatedAttribute attributes[MAX_VERTEX_ATTRIBS], int sortedSemanticIndices[MAX_VERTEX_ATTRIBS]) const
</span><span class="cx"> {
</span><del>-    AttributeSorter sorter(mSemanticIndex);
-
-    int oldIndices[MAX_VERTEX_ATTRIBS];
</del><span class="cx">     rx::TranslatedAttribute oldTranslatedAttributes[MAX_VERTEX_ATTRIBS];
</span><span class="cx"> 
</span><span class="cx">     for (int i = 0; i &lt; MAX_VERTEX_ATTRIBS; i++)
</span><span class="cx">     {
</span><del>-        oldIndices[i] = mSemanticIndex[i];
</del><span class="cx">         oldTranslatedAttributes[i] = attributes[i];
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     for (int i = 0; i &lt; MAX_VERTEX_ATTRIBS; i++)
</span><span class="cx">     {
</span><del>-        int oldIndex = sorter.indices[i];
-        sortedSemanticIndices[i] = oldIndices[oldIndex];
</del><ins>+        int oldIndex = mAttributesByLayout[i];
+        sortedSemanticIndices[i] = mSemanticIndex[oldIndex];
</ins><span class="cx">         attributes[i] = oldTranslatedAttributes[oldIndex];
</span><span class="cx">     }
</span><span class="cx"> }
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2ProgramBinaryh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/ProgramBinary.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/ProgramBinary.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/ProgramBinary.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -114,6 +114,7 @@
</span><span class="cx"> 
</span><span class="cx">     unsigned int getSerial() const;
</span><span class="cx"> 
</span><ins>+    void initAttributesByLayout();
</ins><span class="cx">     void sortAttributesByLayout(rx::TranslatedAttribute attributes[gl::MAX_VERTEX_ATTRIBS], int sortedSemanticIndices[MAX_VERTEX_ATTRIBS]) const;
</span><span class="cx"> 
</span><span class="cx">     static std::string decorateAttribute(const std::string &amp;name);    // Prepend an underscore
</span><span class="lines">@@ -142,6 +143,7 @@
</span><span class="cx"> 
</span><span class="cx">     Attribute mLinkedAttribute[MAX_VERTEX_ATTRIBS];
</span><span class="cx">     int mSemanticIndex[MAX_VERTEX_ATTRIBS];
</span><ins>+    int mAttributesByLayout[MAX_VERTEX_ATTRIBS];
</ins><span class="cx"> 
</span><span class="cx">     struct Sampler
</span><span class="cx">     {
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2Renderbuffercpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Renderbuffer.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Renderbuffer.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Renderbuffer.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -129,6 +129,11 @@
</span><span class="cx">     return mTexture2D-&gt;getRenderTargetSerial(mTarget);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+unsigned int RenderbufferTexture2D::getTextureSerial() const
+{
+    return mTexture2D-&gt;getTextureSerial();
+}
+
</ins><span class="cx"> ///// RenderbufferTextureCubeMap Implementation ////////
</span><span class="cx"> 
</span><span class="cx"> RenderbufferTextureCubeMap::RenderbufferTextureCubeMap(TextureCubeMap *texture, GLenum target) : mTarget(target)
</span><span class="lines">@@ -193,6 +198,11 @@
</span><span class="cx">     return mTextureCubeMap-&gt;getRenderTargetSerial(mTarget);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+unsigned int RenderbufferTextureCubeMap::getTextureSerial() const
+{
+    return mTextureCubeMap-&gt;getTextureSerial();
+}
+
</ins><span class="cx"> ////// Renderbuffer Implementation //////
</span><span class="cx"> 
</span><span class="cx"> Renderbuffer::Renderbuffer(rx::Renderer *renderer, GLuint id, RenderbufferInterface *instance) : RefCountObject(id)
</span><span class="lines">@@ -292,6 +302,11 @@
</span><span class="cx">     return mInstance-&gt;getSerial();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+unsigned int Renderbuffer::getTextureSerial() const
+{
+    return mInstance-&gt;getTextureSerial();
+}
+
</ins><span class="cx"> void Renderbuffer::setStorage(RenderbufferStorage *newStorage)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(newStorage != NULL);
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2Renderbufferh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Renderbuffer.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Renderbuffer.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Renderbuffer.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -60,6 +60,7 @@
</span><span class="cx">     GLuint getStencilSize() const;
</span><span class="cx"> 
</span><span class="cx">     virtual unsigned int getSerial() const = 0;
</span><ins>+    virtual unsigned int getTextureSerial() const = 0;
</ins><span class="cx"> 
</span><span class="cx">   private:
</span><span class="cx">     DISALLOW_COPY_AND_ASSIGN(RenderbufferInterface);
</span><span class="lines">@@ -85,6 +86,7 @@
</span><span class="cx">     virtual GLsizei getSamples() const;
</span><span class="cx"> 
</span><span class="cx">     virtual unsigned int getSerial() const;
</span><ins>+    virtual unsigned int getTextureSerial() const;
</ins><span class="cx"> 
</span><span class="cx">   private:
</span><span class="cx">     DISALLOW_COPY_AND_ASSIGN(RenderbufferTexture2D);
</span><span class="lines">@@ -113,6 +115,7 @@
</span><span class="cx">     virtual GLsizei getSamples() const;
</span><span class="cx"> 
</span><span class="cx">     virtual unsigned int getSerial() const;
</span><ins>+    virtual unsigned int getTextureSerial() const;
</ins><span class="cx"> 
</span><span class="cx">   private:
</span><span class="cx">     DISALLOW_COPY_AND_ASSIGN(RenderbufferTextureCubeMap);
</span><span class="lines">@@ -141,6 +144,7 @@
</span><span class="cx">     virtual GLsizei getSamples() const;
</span><span class="cx"> 
</span><span class="cx">     virtual unsigned int getSerial() const;
</span><ins>+    virtual unsigned int getTextureSerial() const { return 0; }
</ins><span class="cx"> 
</span><span class="cx">     static unsigned int issueSerial();
</span><span class="cx">     static unsigned int issueCubeSerials();
</span><span class="lines">@@ -193,6 +197,7 @@
</span><span class="cx">     GLsizei getSamples() const;
</span><span class="cx"> 
</span><span class="cx">     unsigned int getSerial() const;
</span><ins>+    unsigned int getTextureSerial() const;
</ins><span class="cx"> 
</span><span class="cx">     void setStorage(RenderbufferStorage *newStorage);
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2Shadercpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Shader.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Shader.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Shader.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -307,6 +307,7 @@
</span><span class="cx">         mUsesPointCoord = strstr(mHlsl, &quot;GL_USES_POINT_COORD&quot;) != NULL;
</span><span class="cx">         mUsesDepthRange = strstr(mHlsl, &quot;GL_USES_DEPTH_RANGE&quot;) != NULL;
</span><span class="cx">         mUsesFragDepth = strstr(mHlsl, &quot;GL_USES_FRAG_DEPTH&quot;) != NULL;
</span><ins>+        mUsesDiscardRewriting = strstr(mHlsl, &quot;ANGLE_USES_DISCARD_REWRITING&quot;) != NULL;
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -340,6 +341,7 @@
</span><span class="cx">     mUsesPointCoord = false;
</span><span class="cx">     mUsesDepthRange = false;
</span><span class="cx">     mUsesFragDepth = false;
</span><ins>+    mUsesDiscardRewriting = false;
</ins><span class="cx"> 
</span><span class="cx">     mActiveUniforms.clear();
</span><span class="cx"> }
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2Shaderh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Shader.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Shader.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Shader.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -107,6 +107,7 @@
</span><span class="cx">     bool mUsesPointCoord;
</span><span class="cx">     bool mUsesDepthRange;
</span><span class="cx">     bool mUsesFragDepth;
</span><ins>+    bool mUsesDiscardRewriting;
</ins><span class="cx"> 
</span><span class="cx">     static void *mFragmentCompiler;
</span><span class="cx">     static void *mVertexCompiler;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2Texturecpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Texture.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Texture.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Texture.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1358,10 +1358,10 @@
</span><span class="cx"> 
</span><span class="cx">     for (int level = 0; level &lt; levels; level++)
</span><span class="cx">     {
</span><ins>+        GLsizei mipSize = std::max(1, size &gt;&gt; level);
</ins><span class="cx">         for (int face = 0; face &lt; 6; face++)
</span><span class="cx">         {
</span><del>-            mImageArray[face][level]-&gt;redefine(mRenderer, internalformat, size, size, true);
-            size = std::max(1, size &gt;&gt; 1);
</del><ins>+            mImageArray[face][level]-&gt;redefine(mRenderer, internalformat, mipSize, mipSize, true);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2Uniformcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Uniform.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Uniform.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Uniform.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,43 +1,43 @@
</span><span class="cx"> #include &quot;precompiled.h&quot;
</span><del>-//
-// Copyright (c) 2010-2013 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-
-#include &quot;libGLESv2/Uniform.h&quot;
-
-#include &quot;libGLESv2/utilities.h&quot;
-
-namespace gl
-{
-
-Uniform::Uniform(GLenum type, GLenum precision, const std::string &amp;name, unsigned int arraySize)
-    : type(type), precision(precision), name(name), arraySize(arraySize)
-{
-    int bytes = gl::UniformInternalSize(type) * elementCount();
-    data = new unsigned char[bytes];
-    memset(data, 0, bytes);
-    dirty = true;
-
-    psRegisterIndex = -1;
-    vsRegisterIndex = -1;
-    registerCount = VariableRowCount(type) * elementCount();
-}
-
-Uniform::~Uniform()
-{
-    delete[] data;
-}
-
-bool Uniform::isArray() const
-{
-    return arraySize &gt; 0;
-}
-
-unsigned int Uniform::elementCount() const
-{
-    return arraySize &gt; 0 ? arraySize : 1;
-}
-
-}
</del><ins>+//
+// Copyright (c) 2010-2013 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+#include &quot;libGLESv2/Uniform.h&quot;
+
+#include &quot;libGLESv2/utilities.h&quot;
+
+namespace gl
+{
+
+Uniform::Uniform(GLenum type, GLenum precision, const std::string &amp;name, unsigned int arraySize)
+    : type(type), precision(precision), name(name), arraySize(arraySize)
+{
+    int bytes = gl::UniformInternalSize(type) * elementCount();
+    data = new unsigned char[bytes];
+    memset(data, 0, bytes);
+    dirty = true;
+
+    psRegisterIndex = -1;
+    vsRegisterIndex = -1;
+    registerCount = VariableRowCount(type) * elementCount();
+}
+
+Uniform::~Uniform()
+{
+    delete[] data;
+}
+
+bool Uniform::isArray() const
+{
+    return arraySize &gt; 0;
+}
+
+unsigned int Uniform::elementCount() const
+{
+    return arraySize &gt; 0 ? arraySize : 1;
+}
+
+}
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2Uniformh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Uniform.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Uniform.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/Uniform.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,48 +1,48 @@
</span><del>-//
-// Copyright (c) 2010-2013 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-
-#ifndef LIBGLESV2_UNIFORM_H_
-#define LIBGLESV2_UNIFORM_H_
-
-#include &lt;string&gt;
-#include &lt;vector&gt;
-
-#define GL_APICALL
-#include &lt;GLES2/gl2.h&gt;
-
-#include &quot;common/debug.h&quot;
-
-namespace gl
-{
-
-// Helper struct representing a single shader uniform
-struct Uniform
-{
-    Uniform(GLenum type, GLenum precision, const std::string &amp;name, unsigned int arraySize);
-
-    ~Uniform();
-
-    bool isArray() const;
-    unsigned int elementCount() const;
-
-    const GLenum type;
-    const GLenum precision;
-    const std::string name;
-    const unsigned int arraySize;
-
-    unsigned char *data;
-    bool dirty;
-
-    int psRegisterIndex;
-    int vsRegisterIndex;
-    unsigned int registerCount;
-};
-
-typedef std::vector&lt;Uniform*&gt; UniformArray;
-
-}
-
-#endif   // LIBGLESV2_UNIFORM_H_
</del><ins>+//
+// Copyright (c) 2010-2013 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+#ifndef LIBGLESV2_UNIFORM_H_
+#define LIBGLESV2_UNIFORM_H_
+
+#include &lt;string&gt;
+#include &lt;vector&gt;
+
+#define GL_APICALL
+#include &lt;GLES2/gl2.h&gt;
+
+#include &quot;common/debug.h&quot;
+
+namespace gl
+{
+
+// Helper struct representing a single shader uniform
+struct Uniform
+{
+    Uniform(GLenum type, GLenum precision, const std::string &amp;name, unsigned int arraySize);
+
+    ~Uniform();
+
+    bool isArray() const;
+    unsigned int elementCount() const;
+
+    const GLenum type;
+    const GLenum precision;
+    const std::string name;
+    const unsigned int arraySize;
+
+    unsigned char *data;
+    bool dirty;
+
+    int psRegisterIndex;
+    int vsRegisterIndex;
+    unsigned int registerCount;
+};
+
+typedef std::vector&lt;Uniform*&gt; UniformArray;
+
+}
+
+#endif   // LIBGLESV2_UNIFORM_H_
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2constantsh"></a>
<div class="delfile"><h4>Deleted: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/constants.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/constants.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/constants.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,34 +0,0 @@
</span><del>-//
-// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-
-// Contants.h: Defines some implementation specific and gl constants
-
-#ifndef LIBGLESV2_CONSTANTS_H_
-#define LIBGLESV2_CONSTANTS_H_
-
-namespace gl
-{
-
-enum
-{
-    MAX_VERTEX_ATTRIBS = 16,
-    MAX_TEXTURE_IMAGE_UNITS = 16,
-
-    // Implementation upper limits, real maximums depend on the hardware
-    IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 16,
-    IMPLEMENTATION_MAX_COMBINED_TEXTURE_IMAGE_UNITS = MAX_TEXTURE_IMAGE_UNITS + IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS,    
-
-    IMPLEMENTATION_MAX_VARYING_VECTORS = 32,
-    IMPLEMENTATION_MAX_DRAW_BUFFERS = 8
-};
-
-const float ALIASED_LINE_WIDTH_RANGE_MIN = 1.0f;
-const float ALIASED_LINE_WIDTH_RANGE_MAX = 1.0f;
-const float ALIASED_POINT_SIZE_RANGE_MIN = 1.0f;
-
-}
-
-#endif // LIBGLESV2_CONSTANTS_H_
</del></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2libGLESv2def"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.def (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.def        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.def        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -182,4 +182,7 @@
</span><span class="cx">     glGetProcAddress                @148 NONAME
</span><span class="cx">     glBindTexImage                  @158 NONAME
</span><span class="cx">     glCreateRenderer                @177 NONAME
</span><del>-    glDestroyRenderer               @178 NONAME
</del><span class="cx">\ No newline at end of file
</span><ins>+    glDestroyRenderer               @178 NONAME
+
+    ; Setting up TRACE macro callbacks
+    SetTraceFunctionPointers        @180
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2libGLESv2rc"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.rc (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.rc        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.rc        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,102 +1,102 @@
</span><del>-// Microsoft Visual C++ generated resource script.
-//
-#include &quot;resource.h&quot;
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#include &lt;windows.h&gt;
-#include &quot;../common/version.h&quot;
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-// English (U.S.) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-#ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-#pragma code_page(1252)
-#endif //_WIN32
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE 
-BEGIN
-    &quot;resource.h\0&quot;
-END
-
-2 TEXTINCLUDE 
-BEGIN
-    &quot;#include &quot;&quot;afxres.h&quot;&quot;\r\n&quot;
-    &quot;#include &quot;&quot;../common/version.h&quot;&quot;\0&quot;
-END
-
-3 TEXTINCLUDE 
-BEGIN
-    &quot;\r\n&quot;
-    &quot;\0&quot;
-END
-
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Version
-//
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION MAJOR_VERSION,MINOR_VERSION,BUILD_VERSION,BUILD_REVISION
- PRODUCTVERSION MAJOR_VERSION,MINOR_VERSION,BUILD_VERSION,BUILD_REVISION
- FILEFLAGSMASK 0x17L
-#ifdef _DEBUG
- FILEFLAGS 0x1L
-#else
- FILEFLAGS 0x0L
-#endif
- FILEOS 0x4L
- FILETYPE 0x2L
- FILESUBTYPE 0x0L
-BEGIN
-    BLOCK &quot;StringFileInfo&quot;
-    BEGIN
-        BLOCK &quot;040904b0&quot;
-        BEGIN
-            VALUE &quot;FileDescription&quot;, &quot;ANGLE libGLESv2 Dynamic Link Library&quot;
-            VALUE &quot;FileVersion&quot;, VERSION_STRING
-            VALUE &quot;InternalName&quot;, &quot;libGLESv2&quot;
-            VALUE &quot;LegalCopyright&quot;, &quot;Copyright (C) 2011 Google Inc.&quot;
-            VALUE &quot;OriginalFilename&quot;, &quot;libGLESv2.dll&quot;
-            VALUE &quot;PrivateBuild&quot;, VERSION_STRING
-            VALUE &quot;ProductName&quot;, &quot;ANGLE libGLESv2 Dynamic Link Library&quot;
-            VALUE &quot;ProductVersion&quot;, VERSION_STRING
-        END
-    END
-    BLOCK &quot;VarFileInfo&quot;
-    BEGIN
-        VALUE &quot;Translation&quot;, 0x409, 1200
-    END
-END
-
-#endif    // English (U.S.) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif    // not APSTUDIO_INVOKED
</del><ins>+// Microsoft Visual C++ generated resource script.
+//
+#include &quot;resource.h&quot;
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include &lt;windows.h&gt;
+#include &quot;../common/version.h&quot;
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE 
+BEGIN
+    &quot;resource.h\0&quot;
+END
+
+2 TEXTINCLUDE 
+BEGIN
+    &quot;#include &quot;&quot;afxres.h&quot;&quot;\r\n&quot;
+    &quot;#include &quot;&quot;../common/version.h&quot;&quot;\0&quot;
+END
+
+3 TEXTINCLUDE 
+BEGIN
+    &quot;\r\n&quot;
+    &quot;\0&quot;
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION MAJOR_VERSION,MINOR_VERSION,BUILD_VERSION,BUILD_REVISION
+ PRODUCTVERSION MAJOR_VERSION,MINOR_VERSION,BUILD_VERSION,BUILD_REVISION
+ FILEFLAGSMASK 0x17L
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK &quot;StringFileInfo&quot;
+    BEGIN
+        BLOCK &quot;040904b0&quot;
+        BEGIN
+            VALUE &quot;FileDescription&quot;, &quot;ANGLE libGLESv2 Dynamic Link Library&quot;
+            VALUE &quot;FileVersion&quot;, VERSION_STRING
+            VALUE &quot;InternalName&quot;, &quot;libGLESv2&quot;
+            VALUE &quot;LegalCopyright&quot;, &quot;Copyright (C) 2011 Google Inc.&quot;
+            VALUE &quot;OriginalFilename&quot;, &quot;libGLESv2.dll&quot;
+            VALUE &quot;PrivateBuild&quot;, VERSION_STRING
+            VALUE &quot;ProductName&quot;, &quot;ANGLE libGLESv2 Dynamic Link Library&quot;
+            VALUE &quot;ProductVersion&quot;, VERSION_STRING
+        END
+    END
+    BLOCK &quot;VarFileInfo&quot;
+    BEGIN
+        VALUE &quot;Translation&quot;, 0x409, 1200
+    END
+END
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2libGLESv2vcxproj"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.vcxproj (0 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.vcxproj                                (rev 0)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.vcxproj        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -0,0 +1,425 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;Project DefaultTargets=&quot;Build&quot; ToolsVersion=&quot;4.0&quot; xmlns=&quot;http://schemas.microsoft.com/developer/msbuild/2003&quot;&gt;
+  &lt;ItemGroup Label=&quot;ProjectConfigurations&quot;&gt;
+    &lt;ProjectConfiguration Include=&quot;Debug|Win32&quot;&gt;
+      &lt;Configuration&gt;Debug&lt;/Configuration&gt;
+      &lt;Platform&gt;Win32&lt;/Platform&gt;
+    &lt;/ProjectConfiguration&gt;
+    &lt;ProjectConfiguration Include=&quot;Debug|x64&quot;&gt;
+      &lt;Configuration&gt;Debug&lt;/Configuration&gt;
+      &lt;Platform&gt;x64&lt;/Platform&gt;
+    &lt;/ProjectConfiguration&gt;
+    &lt;ProjectConfiguration Include=&quot;Release|Win32&quot;&gt;
+      &lt;Configuration&gt;Release&lt;/Configuration&gt;
+      &lt;Platform&gt;Win32&lt;/Platform&gt;
+    &lt;/ProjectConfiguration&gt;
+    &lt;ProjectConfiguration Include=&quot;Release|x64&quot;&gt;
+      &lt;Configuration&gt;Release&lt;/Configuration&gt;
+      &lt;Platform&gt;x64&lt;/Platform&gt;
+    &lt;/ProjectConfiguration&gt;
+  &lt;/ItemGroup&gt;
+  &lt;PropertyGroup Label=&quot;Globals&quot;&gt;
+    &lt;ProjectGuid&gt;{B5871A7A-968C-42E3-A33B-981E6F448E78}&lt;/ProjectGuid&gt;
+    &lt;RootNamespace&gt;libGLESv2&lt;/RootNamespace&gt;
+    &lt;Keyword&gt;Win32Proj&lt;/Keyword&gt;
+  &lt;/PropertyGroup&gt;
+  &lt;Import Project=&quot;$(VCTargetsPath)\Microsoft.Cpp.Default.props&quot; /&gt;
+  &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot; Label=&quot;Configuration&quot;&gt;
+    &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
+    &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
+    &lt;WholeProgramOptimization&gt;true&lt;/WholeProgramOptimization&gt;
+  &lt;/PropertyGroup&gt;
+  &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot; Label=&quot;Configuration&quot;&gt;
+    &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
+    &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
+  &lt;/PropertyGroup&gt;
+  &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;Configuration&quot;&gt;
+    &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
+    &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
+    &lt;WholeProgramOptimization&gt;true&lt;/WholeProgramOptimization&gt;
+  &lt;/PropertyGroup&gt;
+  &lt;PropertyGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;Configuration&quot;&gt;
+    &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
+    &lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
+  &lt;/PropertyGroup&gt;
+  &lt;Import Project=&quot;$(VCTargetsPath)\Microsoft.Cpp.props&quot; /&gt;
+  &lt;ImportGroup Label=&quot;ExtensionSettings&quot;&gt;
+  &lt;/ImportGroup&gt;
+  &lt;ImportGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot; Label=&quot;PropertySheets&quot;&gt;
+    &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;
+  &lt;/ImportGroup&gt;
+  &lt;ImportGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot; Label=&quot;PropertySheets&quot;&gt;
+    &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;
+  &lt;/ImportGroup&gt;
+  &lt;ImportGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot; Label=&quot;PropertySheets&quot;&gt;
+    &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;
+  &lt;/ImportGroup&gt;
+  &lt;ImportGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot; Label=&quot;PropertySheets&quot;&gt;
+    &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;
+  &lt;/ImportGroup&gt;
+  &lt;PropertyGroup Label=&quot;UserMacros&quot; /&gt;
+  &lt;PropertyGroup&gt;
+    &lt;_ProjectFileVersion&gt;10.0.40219.1&lt;/_ProjectFileVersion&gt;
+    &lt;OutDir Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;$(SolutionDir)$(Configuration)\&lt;/OutDir&gt;
+    &lt;IntDir Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;$(Configuration)\&lt;/IntDir&gt;
+    &lt;LinkIncremental Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;true&lt;/LinkIncremental&gt;
+    &lt;OutDir Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;$(SolutionDir)$(Configuration)\&lt;/OutDir&gt;
+    &lt;IntDir Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;$(Configuration)\&lt;/IntDir&gt;
+    &lt;LinkIncremental Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;false&lt;/LinkIncremental&gt;
+    &lt;OutDir Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;$(SolutionDir)$(Platform)\$(Configuration)\&lt;/OutDir&gt;
+    &lt;IntDir Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;$(Platform)\$(Configuration)\&lt;/IntDir&gt;
+    &lt;LinkIncremental Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;true&lt;/LinkIncremental&gt;
+    &lt;OutDir Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;$(SolutionDir)$(Platform)\$(Configuration)\&lt;/OutDir&gt;
+    &lt;IntDir Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;$(Platform)\$(Configuration)\&lt;/IntDir&gt;
+    &lt;LinkIncremental Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;false&lt;/LinkIncremental&gt;
+    &lt;IncludePath Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;$(IncludePath)&lt;/IncludePath&gt;
+    &lt;LibraryPath Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;$(LibraryPath)&lt;/LibraryPath&gt;
+    &lt;IncludePath Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;$(IncludePath)&lt;/IncludePath&gt;
+    &lt;LibraryPath Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;$(LibraryPath)&lt;/LibraryPath&gt;
+    &lt;IncludePath Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;$(IncludePath)&lt;/IncludePath&gt;
+    &lt;IncludePath Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;$(IncludePath)&lt;/IncludePath&gt;
+    &lt;LibraryPath Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;$(LibraryPath)&lt;/LibraryPath&gt;
+    &lt;LibraryPath Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;$(LibraryPath)&lt;/LibraryPath&gt;
+  &lt;/PropertyGroup&gt;
+  &lt;ItemDefinitionGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;
+    &lt;ClCompile&gt;
+      &lt;Optimization&gt;Disabled&lt;/Optimization&gt;
+      &lt;AdditionalIncludeDirectories&gt;$(ProjectDir);$(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;
+      &lt;PreprocessorDefinitions&gt;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBGLESV2_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;
+      &lt;MinimalRebuild&gt;true&lt;/MinimalRebuild&gt;
+      &lt;BasicRuntimeChecks&gt;EnableFastChecks&lt;/BasicRuntimeChecks&gt;
+      &lt;RuntimeLibrary&gt;MultiThreadedDebug&lt;/RuntimeLibrary&gt;
+      &lt;PrecompiledHeader&gt;Use&lt;/PrecompiledHeader&gt;
+      &lt;WarningLevel&gt;Level4&lt;/WarningLevel&gt;
+      &lt;TreatWarningAsError&gt;true&lt;/TreatWarningAsError&gt;
+      &lt;DebugInformationFormat&gt;EditAndContinue&lt;/DebugInformationFormat&gt;
+      &lt;DisableSpecificWarnings&gt;4100;4127;4189;4239;4244;4245;4512;4702;4996;%(DisableSpecificWarnings)&lt;/DisableSpecificWarnings&gt;
+      &lt;PrecompiledHeaderFile&gt;precompiled.h&lt;/PrecompiledHeaderFile&gt;
+      &lt;AdditionalOptions&gt;$(ExternalCompilerOptions) %(AdditionalOptions)&lt;/AdditionalOptions&gt;
+    &lt;/ClCompile&gt;
+    &lt;Link&gt;
+      &lt;AdditionalDependencies&gt;d3d9.lib;dxguid.lib;%(AdditionalDependencies)&lt;/AdditionalDependencies&gt;
+      &lt;ModuleDefinitionFile&gt;libGLESv2.def&lt;/ModuleDefinitionFile&gt;
+      &lt;GenerateDebugInformation&gt;true&lt;/GenerateDebugInformation&gt;
+      &lt;SubSystem&gt;Windows&lt;/SubSystem&gt;
+      &lt;DataExecutionPrevention&gt;
+      &lt;/DataExecutionPrevention&gt;
+      &lt;TargetMachine&gt;MachineX86&lt;/TargetMachine&gt;
+    &lt;/Link&gt;
+    &lt;PostBuildEvent&gt;
+      &lt;Command&gt;%40echo on
+mkdir &quot;$(ProjectDir)..\..\lib\$(Configuration)\&quot;
+copy &quot;$(OutDir)libGLESv2.dll&quot; &quot;$(ProjectDir)..\..\lib\$(Configuration)\&quot;
+copy &quot;$(OutDir)libGLESv2.lib&quot; &quot;$(ProjectDir)..\..\lib\$(Configuration)\&quot;
+%40echo off
+&lt;/Command&gt;
+    &lt;/PostBuildEvent&gt;
+  &lt;/ItemDefinitionGroup&gt;
+  &lt;ItemDefinitionGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;
+    &lt;ClCompile&gt;
+      &lt;Optimization&gt;MaxSpeed&lt;/Optimization&gt;
+      &lt;InlineFunctionExpansion&gt;AnySuitable&lt;/InlineFunctionExpansion&gt;
+      &lt;AdditionalIncludeDirectories&gt;$(ProjectDir);$(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;
+      &lt;PreprocessorDefinitions&gt;ANGLE_DISABLE_TRACE;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBGLESV2_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;_SECURE_SCL=0;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;
+      &lt;RuntimeLibrary&gt;MultiThreaded&lt;/RuntimeLibrary&gt;
+      &lt;PrecompiledHeader&gt;Use&lt;/PrecompiledHeader&gt;
+      &lt;WarningLevel&gt;Level4&lt;/WarningLevel&gt;
+      &lt;TreatWarningAsError&gt;true&lt;/TreatWarningAsError&gt;
+      &lt;DebugInformationFormat&gt;ProgramDatabase&lt;/DebugInformationFormat&gt;
+      &lt;DisableSpecificWarnings&gt;4100;4127;4189;4239;4244;4245;4512;4702;4718;4996;%(DisableSpecificWarnings)&lt;/DisableSpecificWarnings&gt;
+      &lt;PrecompiledHeaderFile&gt;precompiled.h&lt;/PrecompiledHeaderFile&gt;
+      &lt;AdditionalOptions&gt;$(ExternalCompilerOptions) %(AdditionalOptions)&lt;/AdditionalOptions&gt;
+    &lt;/ClCompile&gt;
+    &lt;Link&gt;
+      &lt;AdditionalDependencies&gt;d3d9.lib;dxguid.lib;%(AdditionalDependencies)&lt;/AdditionalDependencies&gt;
+      &lt;IgnoreAllDefaultLibraries&gt;false&lt;/IgnoreAllDefaultLibraries&gt;
+      &lt;ModuleDefinitionFile&gt;libGLESv2.def&lt;/ModuleDefinitionFile&gt;
+      &lt;GenerateDebugInformation&gt;true&lt;/GenerateDebugInformation&gt;
+      &lt;SubSystem&gt;Windows&lt;/SubSystem&gt;
+      &lt;OptimizeReferences&gt;true&lt;/OptimizeReferences&gt;
+      &lt;EnableCOMDATFolding&gt;true&lt;/EnableCOMDATFolding&gt;
+      &lt;DataExecutionPrevention&gt;
+      &lt;/DataExecutionPrevention&gt;
+      &lt;TargetMachine&gt;MachineX86&lt;/TargetMachine&gt;
+    &lt;/Link&gt;
+    &lt;PostBuildEvent&gt;
+      &lt;Command&gt;%40echo on
+mkdir &quot;$(ProjectDir)..\..\lib\$(Configuration)\&quot;
+copy &quot;$(OutDir)libGLESv2.dll&quot; &quot;$(ProjectDir)..\..\lib\$(Configuration)\&quot;
+copy &quot;$(OutDir)libGLESv2.lib&quot; &quot;$(ProjectDir)..\..\lib\$(Configuration)\&quot;
+%40echo off
+&lt;/Command&gt;
+    &lt;/PostBuildEvent&gt;
+  &lt;/ItemDefinitionGroup&gt;
+  &lt;ItemDefinitionGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;
+    &lt;Midl&gt;
+      &lt;TargetEnvironment&gt;X64&lt;/TargetEnvironment&gt;
+    &lt;/Midl&gt;
+    &lt;ClCompile&gt;
+      &lt;Optimization&gt;Disabled&lt;/Optimization&gt;
+      &lt;AdditionalIncludeDirectories&gt;$(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;
+      &lt;PreprocessorDefinitions&gt;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBGLESV2_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;
+      &lt;MinimalRebuild&gt;true&lt;/MinimalRebuild&gt;
+      &lt;BasicRuntimeChecks&gt;EnableFastChecks&lt;/BasicRuntimeChecks&gt;
+      &lt;RuntimeLibrary&gt;MultiThreadedDebug&lt;/RuntimeLibrary&gt;
+      &lt;PrecompiledHeader&gt;Use&lt;/PrecompiledHeader&gt;
+      &lt;WarningLevel&gt;Level4&lt;/WarningLevel&gt;
+      &lt;DisableSpecificWarnings&gt;4100;4127;4189;4239;4244;4245;4512;4702;4718;4996;%(DisableSpecificWarnings)&lt;/DisableSpecificWarnings&gt;
+      &lt;DebugInformationFormat&gt;ProgramDatabase&lt;/DebugInformationFormat&gt;
+      &lt;TreatWarningAsError&gt;true&lt;/TreatWarningAsError&gt;
+      &lt;PrecompiledHeaderFile&gt;precompiled.h&lt;/PrecompiledHeaderFile&gt;
+      &lt;AdditionalOptions&gt;$(ExternalCompilerOptions) %(AdditionalOptions)&lt;/AdditionalOptions&gt;
+    &lt;/ClCompile&gt;
+    &lt;Link&gt;
+      &lt;AdditionalDependencies&gt;d3d9.lib;dxguid.lib;%(AdditionalDependencies)&lt;/AdditionalDependencies&gt;
+      &lt;ModuleDefinitionFile&gt;libGLESv2.def&lt;/ModuleDefinitionFile&gt;
+      &lt;GenerateDebugInformation&gt;true&lt;/GenerateDebugInformation&gt;
+      &lt;SubSystem&gt;Windows&lt;/SubSystem&gt;
+      &lt;DataExecutionPrevention&gt;
+      &lt;/DataExecutionPrevention&gt;
+      &lt;TargetMachine&gt;MachineX64&lt;/TargetMachine&gt;
+    &lt;/Link&gt;
+    &lt;PostBuildEvent&gt;
+      &lt;Command&gt;%40echo on
+mkdir &quot;$(ProjectDir)..\..\lib\$(Configuration)\&quot;
+copy &quot;$(OutDir)libGLESv2.dll&quot; &quot;$(ProjectDir)..\..\lib\$(Configuration)\&quot;
+copy &quot;$(OutDir)libGLESv2.lib&quot; &quot;$(ProjectDir)..\..\lib\$(Configuration)\&quot;
+%40echo off
+&lt;/Command&gt;
+    &lt;/PostBuildEvent&gt;
+  &lt;/ItemDefinitionGroup&gt;
+  &lt;ItemDefinitionGroup Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;
+    &lt;Midl&gt;
+      &lt;TargetEnvironment&gt;X64&lt;/TargetEnvironment&gt;
+    &lt;/Midl&gt;
+    &lt;ClCompile&gt;
+      &lt;Optimization&gt;MaxSpeed&lt;/Optimization&gt;
+      &lt;InlineFunctionExpansion&gt;AnySuitable&lt;/InlineFunctionExpansion&gt;
+      &lt;AdditionalIncludeDirectories&gt;$(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;
+      &lt;PreprocessorDefinitions&gt;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBGLESV2_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;_SECURE_SCL=0;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;
+      &lt;RuntimeLibrary&gt;MultiThreaded&lt;/RuntimeLibrary&gt;
+      &lt;PrecompiledHeader&gt;Use&lt;/PrecompiledHeader&gt;
+      &lt;WarningLevel&gt;Level4&lt;/WarningLevel&gt;
+      &lt;DisableSpecificWarnings&gt;4100;4127;4189;4239;4244;4245;4512;4702;4718;4996;%(DisableSpecificWarnings)&lt;/DisableSpecificWarnings&gt;
+      &lt;DebugInformationFormat&gt;ProgramDatabase&lt;/DebugInformationFormat&gt;
+      &lt;TreatWarningAsError&gt;true&lt;/TreatWarningAsError&gt;
+      &lt;PrecompiledHeaderFile&gt;precompiled.h&lt;/PrecompiledHeaderFile&gt;
+      &lt;AdditionalOptions&gt;$(ExternalCompilerOptions) %(AdditionalOptions)&lt;/AdditionalOptions&gt;
+    &lt;/ClCompile&gt;
+    &lt;Link&gt;
+      &lt;AdditionalDependencies&gt;d3d9.lib;dxguid.lib;%(AdditionalDependencies)&lt;/AdditionalDependencies&gt;
+      &lt;IgnoreAllDefaultLibraries&gt;false&lt;/IgnoreAllDefaultLibraries&gt;
+      &lt;ModuleDefinitionFile&gt;libGLESv2.def&lt;/ModuleDefinitionFile&gt;
+      &lt;GenerateDebugInformation&gt;true&lt;/GenerateDebugInformation&gt;
+      &lt;SubSystem&gt;Windows&lt;/SubSystem&gt;
+      &lt;OptimizeReferences&gt;true&lt;/OptimizeReferences&gt;
+      &lt;EnableCOMDATFolding&gt;true&lt;/EnableCOMDATFolding&gt;
+      &lt;DataExecutionPrevention&gt;
+      &lt;/DataExecutionPrevention&gt;
+      &lt;TargetMachine&gt;MachineX64&lt;/TargetMachine&gt;
+    &lt;/Link&gt;
+    &lt;PostBuildEvent&gt;
+      &lt;Command&gt;%40echo on
+mkdir &quot;$(ProjectDir)..\..\lib\$(Configuration)\&quot;
+copy &quot;$(OutDir)libGLESv2.dll&quot; &quot;$(ProjectDir)..\..\lib\$(Configuration)\&quot;
+copy &quot;$(OutDir)libGLESv2.lib&quot; &quot;$(ProjectDir)..\..\lib\$(Configuration)\&quot;
+%40echo off
+&lt;/Command&gt;
+    &lt;/PostBuildEvent&gt;
+  &lt;/ItemDefinitionGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;ClCompile Include=&quot;..\third_party\murmurhash\MurmurHash3.cpp&quot;&gt;
+      &lt;PrecompiledHeader Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;NotUsing&lt;/PrecompiledHeader&gt;
+      &lt;PrecompiledHeader Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;NotUsing&lt;/PrecompiledHeader&gt;
+      &lt;PrecompiledHeader Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;NotUsing&lt;/PrecompiledHeader&gt;
+      &lt;PrecompiledHeader Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;NotUsing&lt;/PrecompiledHeader&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Buffer.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;Context.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\common\debug.cpp&quot;&gt;
+      &lt;PrecompiledHeader Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;NotUsing&lt;/PrecompiledHeader&gt;
+      &lt;PrecompiledHeader Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;NotUsing&lt;/PrecompiledHeader&gt;
+      &lt;PrecompiledHeader Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;NotUsing&lt;/PrecompiledHeader&gt;
+      &lt;PrecompiledHeader Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;NotUsing&lt;/PrecompiledHeader&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;..\common\event_tracer.cpp&quot;&gt;
+      &lt;PrecompiledHeader Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;NotUsing&lt;/PrecompiledHeader&gt;
+      &lt;PrecompiledHeader Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;NotUsing&lt;/PrecompiledHeader&gt;
+      &lt;PrecompiledHeader Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;NotUsing&lt;/PrecompiledHeader&gt;
+      &lt;PrecompiledHeader Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;NotUsing&lt;/PrecompiledHeader&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Fence.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;Float16ToFloat32.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;Framebuffer.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;HandleAllocator.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;libGLESv2.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;main.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;precompiled.cpp&quot;&gt;
+      &lt;PrecompiledHeader Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;Create&lt;/PrecompiledHeader&gt;
+      &lt;PrecompiledHeader Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;Create&lt;/PrecompiledHeader&gt;
+      &lt;PrecompiledHeader Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;Create&lt;/PrecompiledHeader&gt;
+      &lt;PrecompiledHeader Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;Create&lt;/PrecompiledHeader&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Program.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;ProgramBinary.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;Query.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\common\RefCountObject.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;Renderbuffer.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\Blit.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\Fence11.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\Fence9.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\BufferStorage.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\BufferStorage11.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\BufferStorage9.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\Image.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\Image9.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\IndexBuffer.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\IndexBuffer11.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\IndexBuffer9.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\IndexDataManager.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\ImageSSE2.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\Image11.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\IndexRangeCache.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\InputLayoutCache.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\Query11.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\Query9.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\Renderer.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\Renderer11.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\renderer11_utils.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\Renderer9.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\renderer9_utils.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\RenderTarget11.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\RenderTarget9.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\RenderStateCache.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\ShaderExecutable11.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\ShaderExecutable9.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\SwapChain11.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\SwapChain9.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\TextureStorage.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\TextureStorage11.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\TextureStorage9.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\VertexBuffer.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\VertexBuffer11.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\VertexBuffer9.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\VertexDataManager.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;renderer\VertexDeclarationCache.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;ResourceManager.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;Shader.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;Texture.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;Uniform.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;utilities.cpp&quot; /&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;ClInclude Include=&quot;..\common\debug.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\common\event_tracer.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\common\system.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\third_party\murmurhash\MurmurHash3.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\third_party\trace_event\trace_event.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;angletypes.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;BinaryStream.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;Buffer.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;constants.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;Context.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;Fence.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;Framebuffer.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\..\include\GLES2\gl2.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\..\include\GLES2\gl2ext.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\..\include\GLES2\gl2platform.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;HandleAllocator.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;main.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;mathutil.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;precompiled.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;Program.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;ProgramBinary.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;Query.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\common\RefCountObject.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;Renderbuffer.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\Blit.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\Fence11.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\Fence9.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\FenceImpl.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\BufferStorage.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\BufferStorage11.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\BufferStorage9.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\generatemip.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\Image.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\Image11.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\Image9.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\IndexBuffer.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\IndexBuffer11.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\IndexBuffer9.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\IndexDataManager.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\IndexRangeCache.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\InputLayoutCache.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\Query11.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\QueryImpl.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\Query9.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\Renderer.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\Renderer11.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\renderer11_utils.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\Renderer9.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\renderer9_utils.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\RenderTarget.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\RenderTarget11.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\RenderTarget9.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\RenderStateCache.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\ShaderCache.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\ShaderExecutable.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\ShaderExecutable11.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\ShaderExecutable9.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\clear11vs.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\clearmultiple11ps.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\clearsingle11ps.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\componentmaskps.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\flipyvs.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\luminanceps.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\passthrough11vs.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\passthroughlum11ps.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\passthroughlumalpha11ps.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\passthroughps.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\passthroughrgb11ps.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\passthroughrgba11ps.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\standardvs.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\SwapChain.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\SwapChain11.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\SwapChain9.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\TextureStorage.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\TextureStorage11.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\TextureStorage9.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\VertexBuffer.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\VertexBuffer11.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\VertexBuffer9.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\vertexconversion.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\VertexDataManager.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;renderer\VertexDeclarationCache.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;resource.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;ResourceManager.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;Shader.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;Texture.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;Uniform.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;utilities.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\common\version.h&quot; /&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;None Include=&quot;libGLESv2.def&quot; /&gt;
+    &lt;None Include=&quot;renderer\shaders\Blit.ps&quot; /&gt;
+    &lt;None Include=&quot;renderer\shaders\Blit.vs&quot; /&gt;
+    &lt;None Include=&quot;renderer\shaders\Clear11.hlsl&quot; /&gt;
+    &lt;None Include=&quot;renderer\shaders\generate_shaders.bat&quot; /&gt;
+    &lt;None Include=&quot;renderer\shaders\Passthrough11.hlsl&quot; /&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;ResourceCompile Include=&quot;libGLESv2.rc&quot; /&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;ProjectReference Include=&quot;..\compiler\preprocessor\preprocessor.vcxproj&quot;&gt;
+      &lt;Project&gt;{fbe32df3-0fb0-4f2f-a424-2c21bd7bc325}&lt;/Project&gt;
+    &lt;/ProjectReference&gt;
+    &lt;ProjectReference Include=&quot;..\compiler\translator.vcxproj&quot;&gt;
+      &lt;Project&gt;{5b3a6db8-1e7e-40d7-92b9-da8aae619fad}&lt;/Project&gt;
+    &lt;/ProjectReference&gt;
+  &lt;/ItemGroup&gt;
+  &lt;Import Project=&quot;$(VCTargetsPath)\Microsoft.Cpp.targets&quot; /&gt;
+  &lt;ImportGroup Label=&quot;ExtensionTargets&quot;&gt;
+  &lt;/ImportGroup&gt;
+&lt;/Project&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2libGLESv2vcxprojfilters"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.vcxproj.filters (0 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.vcxproj.filters                                (rev 0)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.vcxproj.filters        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -0,0 +1,527 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;Project ToolsVersion=&quot;4.0&quot; xmlns=&quot;http://schemas.microsoft.com/developer/msbuild/2003&quot;&gt;
+  &lt;ItemGroup&gt;
+    &lt;Filter Include=&quot;Source Files&quot;&gt;
+      &lt;UniqueIdentifier&gt;{4FC737F1-C7A5-4376-A066-2A32D752A2FF}&lt;/UniqueIdentifier&gt;
+      &lt;Extensions&gt;cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx&lt;/Extensions&gt;
+    &lt;/Filter&gt;
+    &lt;Filter Include=&quot;Header Files&quot;&gt;
+      &lt;UniqueIdentifier&gt;{93995380-89BD-4b04-88EB-625FBE52EBFB}&lt;/UniqueIdentifier&gt;
+      &lt;Extensions&gt;h;hpp;hxx;hm;inl;inc;xsd&lt;/Extensions&gt;
+    &lt;/Filter&gt;
+    &lt;Filter Include=&quot;Third Party&quot;&gt;
+      &lt;UniqueIdentifier&gt;{dc1dac40-3563-41be-9e2d-c2588d8670fb}&lt;/UniqueIdentifier&gt;
+    &lt;/Filter&gt;
+    &lt;Filter Include=&quot;Third Party\MurmurHash&quot;&gt;
+      &lt;UniqueIdentifier&gt;{b0005d2f-9b4a-4659-a270-138811174f73}&lt;/UniqueIdentifier&gt;
+    &lt;/Filter&gt;
+    &lt;Filter Include=&quot;Header Files\Renderer&quot;&gt;
+      &lt;UniqueIdentifier&gt;{562e469d-1abb-44bc-b7fa-55eefbf75acc}&lt;/UniqueIdentifier&gt;
+    &lt;/Filter&gt;
+    &lt;Filter Include=&quot;Shaders&quot;&gt;
+      &lt;UniqueIdentifier&gt;{6dc0306f-6396-4e80-9ef9-09b58aa53c4d}&lt;/UniqueIdentifier&gt;
+    &lt;/Filter&gt;
+    &lt;Filter Include=&quot;Shaders\Compiled&quot;&gt;
+      &lt;UniqueIdentifier&gt;{6332705b-1999-4292-a38b-dd47329734aa}&lt;/UniqueIdentifier&gt;
+    &lt;/Filter&gt;
+    &lt;Filter Include=&quot;Source Files\Renderer&quot;&gt;
+      &lt;UniqueIdentifier&gt;{93a76964-77a3-4b20-a6f5-e14e762d4e14}&lt;/UniqueIdentifier&gt;
+    &lt;/Filter&gt;
+    &lt;Filter Include=&quot;Header Files\Renderer9&quot;&gt;
+      &lt;UniqueIdentifier&gt;{3877f35e-845c-4e95-b9a5-c7d8b9f307c5}&lt;/UniqueIdentifier&gt;
+    &lt;/Filter&gt;
+    &lt;Filter Include=&quot;Header Files\Renderer11&quot;&gt;
+      &lt;UniqueIdentifier&gt;{2d70fd60-6dea-489f-ac09-16890d325669}&lt;/UniqueIdentifier&gt;
+    &lt;/Filter&gt;
+    &lt;Filter Include=&quot;Source Files\Renderer9&quot;&gt;
+      &lt;UniqueIdentifier&gt;{60e14f04-2cf2-4a07-b3ef-7c68a82ba2d9}&lt;/UniqueIdentifier&gt;
+    &lt;/Filter&gt;
+    &lt;Filter Include=&quot;Source Files\Renderer11&quot;&gt;
+      &lt;UniqueIdentifier&gt;{72db61d3-e081-4b58-bc63-a04a8a70585f}&lt;/UniqueIdentifier&gt;
+    &lt;/Filter&gt;
+    &lt;Filter Include=&quot;Third Party\trace_event&quot;&gt;
+      &lt;UniqueIdentifier&gt;{ebfc1614-8f0b-48c7-b6bd-295bf91ef85c}&lt;/UniqueIdentifier&gt;
+    &lt;/Filter&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;ClCompile Include=&quot;Buffer.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Context.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;..\common\debug.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Fence.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Float16ToFloat32.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Framebuffer.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;HandleAllocator.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;libGLESv2.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;main.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Program.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;ProgramBinary.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Query.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;..\common\RefCountObject.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Renderbuffer.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;ResourceManager.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Shader.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Texture.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;utilities.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\Image.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\TextureStorage.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\Renderer.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;..\third_party\murmurhash\MurmurHash3.cpp&quot;&gt;
+      &lt;Filter&gt;Third Party\MurmurHash&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\IndexDataManager.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\VertexDataManager.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\Image.cpp&quot;&gt;
+      &lt;Filter&gt;Renderer&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\ImageSSE2.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\VertexBuffer.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\IndexBuffer.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;Uniform.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\BufferStorage.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\BufferStorage11.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\Fence11.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\Image11.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\IndexBuffer11.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\Query11.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\Renderer11.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\renderer11_utils.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\RenderTarget11.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\ShaderExecutable11.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\SwapChain11.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\TextureStorage11.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\VertexBuffer11.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\BufferStorage9.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\Fence9.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\Image9.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\IndexBuffer9.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\Query9.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\Renderer9.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\renderer9_utils.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\RenderTarget9.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\ShaderExecutable9.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\SwapChain9.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\TextureStorage9.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\VertexBuffer9.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\Blit.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\InputLayoutCache.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\RenderStateCache.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\VertexDeclarationCache.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;precompiled.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;renderer\IndexRangeCache.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files\Renderer&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;..\common\event_tracer.cpp&quot;&gt;
+      &lt;Filter&gt;Source Files&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;ClInclude Include=&quot;BinaryStream.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;Buffer.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;Context.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;Fence.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;Framebuffer.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\..\include\GLES2\gl2.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\..\include\GLES2\gl2ext.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\..\include\GLES2\gl2platform.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;HandleAllocator.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;main.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;mathutil.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;Program.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;ProgramBinary.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;Query.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\common\RefCountObject.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;Renderbuffer.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;resource.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;ResourceManager.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;Shader.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;Texture.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;utilities.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\common\version.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;angletypes.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\third_party\murmurhash\MurmurHash3.h&quot;&gt;
+      &lt;Filter&gt;Third Party\MurmurHash&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;Uniform.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\passthrough11vs.h&quot;&gt;
+      &lt;Filter&gt;Shaders\Compiled&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\passthroughps.h&quot;&gt;
+      &lt;Filter&gt;Shaders\Compiled&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\standardvs.h&quot;&gt;
+      &lt;Filter&gt;Shaders\Compiled&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\componentmaskps.h&quot;&gt;
+      &lt;Filter&gt;Shaders\Compiled&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\flipyvs.h&quot;&gt;
+      &lt;Filter&gt;Shaders\Compiled&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\luminanceps.h&quot;&gt;
+      &lt;Filter&gt;Shaders\Compiled&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\passthroughrgba11ps.h&quot;&gt;
+      &lt;Filter&gt;Shaders\Compiled&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\passthroughrgb11ps.h&quot;&gt;
+      &lt;Filter&gt;Shaders\Compiled&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\passthroughlum11ps.h&quot;&gt;
+      &lt;Filter&gt;Shaders\Compiled&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\passthroughlumalpha11ps.h&quot;&gt;
+      &lt;Filter&gt;Shaders\Compiled&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\clear11vs.h&quot;&gt;
+      &lt;Filter&gt;Shaders\Compiled&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\clearmultiple11ps.h&quot;&gt;
+      &lt;Filter&gt;Shaders\Compiled&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\shaders\compiled\clearsingle11ps.h&quot;&gt;
+      &lt;Filter&gt;Shaders\Compiled&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\common\system.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\common\debug.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\BufferStorage.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\FenceImpl.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\generatemip.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\Image.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\IndexBuffer.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\IndexDataManager.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\QueryImpl.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\Renderer.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\RenderTarget.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\ShaderExecutable.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\SwapChain.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\TextureStorage.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\VertexBuffer.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\vertexconversion.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\VertexDataManager.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\BufferStorage11.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\IndexBuffer11.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\Query11.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\Renderer11.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\RenderTarget11.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\ShaderExecutable11.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\SwapChain11.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\TextureStorage11.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\VertexBuffer11.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\BufferStorage9.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\Fence9.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\Image9.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\IndexBuffer9.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\Query9.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\Renderer9.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\renderer9_utils.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\RenderTarget9.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\ShaderExecutable9.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\SwapChain9.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\TextureStorage9.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\VertexBuffer9.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\Fence11.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\Image11.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\renderer11_utils.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\Fence9.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer\Renderer9&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\Query11.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer\Renderer11&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\Blit.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\ShaderCache.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\InputLayoutCache.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\RenderStateCache.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer11&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\VertexDeclarationCache.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer9&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;constants.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;precompiled.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;renderer\IndexRangeCache.h&quot;&gt;
+      &lt;Filter&gt;Header Files\Renderer&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\common\event_tracer.h&quot;&gt;
+      &lt;Filter&gt;Header Files&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\third_party\trace_event\trace_event.h&quot;&gt;
+      &lt;Filter&gt;Third Party\trace_event&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;None Include=&quot;renderer\shaders\Blit.ps&quot;&gt;
+      &lt;Filter&gt;Shaders&lt;/Filter&gt;
+    &lt;/None&gt;
+    &lt;None Include=&quot;renderer\shaders\Blit.vs&quot;&gt;
+      &lt;Filter&gt;Shaders&lt;/Filter&gt;
+    &lt;/None&gt;
+    &lt;None Include=&quot;renderer\shaders\generate_shaders.bat&quot;&gt;
+      &lt;Filter&gt;Shaders&lt;/Filter&gt;
+    &lt;/None&gt;
+    &lt;None Include=&quot;renderer\shaders\Passthrough11.hlsl&quot;&gt;
+      &lt;Filter&gt;Shaders&lt;/Filter&gt;
+    &lt;/None&gt;
+    &lt;None Include=&quot;renderer\shaders\Clear11.hlsl&quot;&gt;
+      &lt;Filter&gt;Shaders&lt;/Filter&gt;
+    &lt;/None&gt;
+    &lt;None Include=&quot;libGLESv2.def&quot; /&gt;
+  &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;ResourceCompile Include=&quot;libGLESv2.rc&quot; /&gt;
+  &lt;/ItemGroup&gt;
+&lt;/Project&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2precompiledh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/precompiled.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/precompiled.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/precompiled.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -33,9 +33,9 @@
</span><span class="cx"> #include &lt;vector&gt;
</span><span class="cx"> 
</span><span class="cx"> #include &lt;d3d9.h&gt;
</span><del>-#include &lt;D3D11.h&gt;
</del><ins>+#include &lt;d3d11.h&gt;
</ins><span class="cx"> #include &lt;dxgi.h&gt;
</span><del>-#include &lt;D3Dcompiler.h&gt;
</del><ins>+#include &lt;d3dcompiler.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> #ifdef _MSC_VER
</span><span class="cx"> #include &lt;hash_map&gt;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererImage11cpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image11.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image11.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image11.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -50,8 +50,8 @@
</span><span class="cx">     ASSERT(src-&gt;getHeight() == 1 || src-&gt;getHeight() / 2 == dest-&gt;getHeight());
</span><span class="cx"> 
</span><span class="cx">     D3D11_MAPPED_SUBRESOURCE destMapped, srcMapped;
</span><del>-    dest-&gt;map(&amp;destMapped);
-    src-&gt;map(&amp;srcMapped);
</del><ins>+    dest-&gt;map(D3D11_MAP_WRITE, &amp;destMapped);
+    src-&gt;map(D3D11_MAP_READ, &amp;srcMapped);
</ins><span class="cx"> 
</span><span class="cx">     const unsigned char *sourceData = reinterpret_cast&lt;const unsigned char*&gt;(srcMapped.pData);
</span><span class="cx">     unsigned char *destData = reinterpret_cast&lt;unsigned char*&gt;(destMapped.pData);
</span><span class="lines">@@ -171,7 +171,7 @@
</span><span class="cx">                        GLint unpackAlignment, const void *input)
</span><span class="cx"> {
</span><span class="cx">     D3D11_MAPPED_SUBRESOURCE mappedImage;
</span><del>-    HRESULT result = map(&amp;mappedImage);
</del><ins>+    HRESULT result = map(D3D11_MAP_WRITE, &amp;mappedImage);
</ins><span class="cx">     if (FAILED(result))
</span><span class="cx">     {
</span><span class="cx">         ERR(&quot;Could not map image for loading.&quot;);
</span><span class="lines">@@ -194,7 +194,7 @@
</span><span class="cx">         loadAlphaFloatDataToRGBA(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData);
</span><span class="cx">         break;
</span><span class="cx">       case GL_LUMINANCE32F_EXT:
</span><del>-        loadLuminanceFloatDataToRGB(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData);
</del><ins>+        loadLuminanceFloatDataToRGBA(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData);
</ins><span class="cx">         break;
</span><span class="cx">       case GL_ALPHA16F_EXT:
</span><span class="cx">         loadAlphaHalfFloatDataToRGBA(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData);
</span><span class="lines">@@ -230,7 +230,7 @@
</span><span class="cx">         loadBGRADataToBGRA(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData);
</span><span class="cx">         break;
</span><span class="cx">       case GL_RGB32F_EXT:
</span><del>-        loadRGBFloatDataToNative(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData);
</del><ins>+        loadRGBFloatDataToRGBA(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData);
</ins><span class="cx">         break;
</span><span class="cx">       case GL_RGB16F_EXT:
</span><span class="cx">         loadRGBHalfFloatDataToRGBA(width, height, inputPitch, input, mappedImage.RowPitch, offsetMappedData);
</span><span class="lines">@@ -254,7 +254,7 @@
</span><span class="cx">     ASSERT(yoffset % 4 == 0);
</span><span class="cx"> 
</span><span class="cx">     D3D11_MAPPED_SUBRESOURCE mappedImage;
</span><del>-    HRESULT result = map(&amp;mappedImage);
</del><ins>+    HRESULT result = map(D3D11_MAP_WRITE, &amp;mappedImage);
</ins><span class="cx">     if (FAILED(result))
</span><span class="cx">     {
</span><span class="cx">         ERR(&quot;Could not map image for loading.&quot;);
</span><span class="lines">@@ -344,8 +344,8 @@
</span><span class="cx">     {
</span><span class="cx">         // This format requires conversion, so we must copy the texture to staging and manually convert via readPixels
</span><span class="cx">         D3D11_MAPPED_SUBRESOURCE mappedImage;
</span><del>-        HRESULT result = map(&amp;mappedImage);
-            
</del><ins>+        HRESULT result = map(D3D11_MAP_WRITE, &amp;mappedImage);
+
</ins><span class="cx">         // determine the offset coordinate into the destination buffer
</span><span class="cx">         GLsizei rowOffset = gl::ComputePixelSize(mActualFormat) * xoffset;
</span><span class="cx">         void *dataOffset = static_cast&lt;unsigned char*&gt;(mappedImage.pData) + mappedImage.RowPitch * yoffset + rowOffset;
</span><span class="lines">@@ -402,7 +402,7 @@
</span><span class="cx">         desc.SampleDesc.Quality = 0;
</span><span class="cx">         desc.Usage = D3D11_USAGE_STAGING;
</span><span class="cx">         desc.BindFlags = 0;
</span><del>-        desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
</del><ins>+        desc.CPUAccessFlags = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;
</ins><span class="cx">         desc.MiscFlags = 0;
</span><span class="cx"> 
</span><span class="cx">         HRESULT result = device-&gt;CreateTexture2D(&amp;desc, NULL, &amp;newTexture);
</span><span class="lines">@@ -420,7 +420,7 @@
</span><span class="cx">     mDirty = false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-HRESULT Image11::map(D3D11_MAPPED_SUBRESOURCE *map)
</del><ins>+HRESULT Image11::map(D3D11_MAP mapType, D3D11_MAPPED_SUBRESOURCE *map)
</ins><span class="cx"> {
</span><span class="cx">     createStagingTexture();
</span><span class="cx"> 
</span><span class="lines">@@ -429,7 +429,7 @@
</span><span class="cx">     if (mStagingTexture)
</span><span class="cx">     {
</span><span class="cx">         ID3D11DeviceContext *deviceContext = mRenderer-&gt;getDeviceContext();
</span><del>-        result = deviceContext-&gt;Map(mStagingTexture, mStagingSubresource, D3D11_MAP_WRITE, 0, map);
</del><ins>+        result = deviceContext-&gt;Map(mStagingTexture, mStagingSubresource, mapType, 0, map);
</ins><span class="cx"> 
</span><span class="cx">         // this can fail if the device is removed (from TDR)
</span><span class="cx">         if (d3d11::isDeviceLostError(result))
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererImage11h"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image11.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image11.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Image11.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx">     virtual void copy(GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source);
</span><span class="cx"> 
</span><span class="cx">   protected:
</span><del>-    HRESULT map(D3D11_MAPPED_SUBRESOURCE *map);
</del><ins>+    HRESULT map(D3D11_MAP mapType, D3D11_MAPPED_SUBRESOURCE *map);
</ins><span class="cx">     void unmap();
</span><span class="cx"> 
</span><span class="cx">   private:
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererIndexBuffercpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -67,18 +67,30 @@
</span><span class="cx">     return mIndexBuffer-&gt;getSerial();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-int IndexBufferInterface::mapBuffer(unsigned int size, void** outMappedMemory)
</del><ins>+bool IndexBufferInterface::mapBuffer(unsigned int size, void** outMappedMemory, unsigned int *streamOffset)
</ins><span class="cx"> {
</span><ins>+    // Protect against integer overflow
+    if (mWritePosition + size &lt; mWritePosition)
+    {
+        return false;
+    }
+
</ins><span class="cx">     if (!mIndexBuffer-&gt;mapBuffer(mWritePosition, size, outMappedMemory))
</span><span class="cx">     {
</span><del>-        *outMappedMemory = NULL;
-        return -1;
</del><ins>+        if (outMappedMemory)
+        {
+            *outMappedMemory = NULL;
+        }
+        return false;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    int oldWritePos = static_cast&lt;int&gt;(mWritePosition);
-    mWritePosition += size;
</del><ins>+    if (streamOffset)
+    {
+        *streamOffset = mWritePosition;
+    }
</ins><span class="cx"> 
</span><del>-    return oldWritePos;
</del><ins>+    mWritePosition += size;
+    return true;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool IndexBufferInterface::unmapBuffer()
</span><span class="lines">@@ -176,28 +188,10 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-unsigned int StaticIndexBufferInterface::lookupRange(intptr_t offset, GLsizei count, unsigned int *minIndex, unsigned int *maxIndex)
</del><ins>+IndexRangeCache *StaticIndexBufferInterface::getIndexRangeCache()
</ins><span class="cx"> {
</span><del>-    IndexRange range = {offset, count};
-
-    std::map&lt;IndexRange, IndexResult&gt;::iterator res = mCache.find(range);
-
-    if (res == mCache.end())
-    {
-        return -1;
-    }
-
-    *minIndex = res-&gt;second.minIndex;
-    *maxIndex = res-&gt;second.maxIndex;
-    return res-&gt;second.streamOffset;
</del><ins>+    return &amp;mIndexRangeCache;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void StaticIndexBufferInterface::addRange(intptr_t offset, GLsizei count, unsigned int minIndex, unsigned int maxIndex, unsigned int streamOffset)
-{
-    IndexRange indexRange = {offset, count};
-    IndexResult indexResult = {minIndex, maxIndex, streamOffset};
-    mCache[indexRange] = indexResult;
</del><span class="cx"> }
</span><span class="cx"> 
</span><del>-}
-
</del></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererIndexBufferh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -11,6 +11,7 @@
</span><span class="cx"> #define LIBGLESV2_RENDERER_INDEXBUFFER_H_
</span><span class="cx"> 
</span><span class="cx"> #include &quot;common/angleutils.h&quot;
</span><ins>+#include &quot;libGLESv2/renderer/IndexRangeCache.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace rx
</span><span class="cx"> {
</span><span class="lines">@@ -58,7 +59,7 @@
</span><span class="cx"> 
</span><span class="cx">     unsigned int getSerial() const;
</span><span class="cx"> 
</span><del>-    int mapBuffer(unsigned int size, void** outMappedMemory);
</del><ins>+    bool mapBuffer(unsigned int size, void** outMappedMemory, unsigned int *streamOffset);
</ins><span class="cx">     bool unmapBuffer();
</span><span class="cx"> 
</span><span class="cx">     IndexBuffer *getIndexBuffer() const;
</span><span class="lines">@@ -99,37 +100,10 @@
</span><span class="cx"> 
</span><span class="cx">     virtual bool reserveBufferSpace(unsigned int size, GLenum indexType);
</span><span class="cx"> 
</span><del>-    unsigned int lookupRange(intptr_t offset, GLsizei count, unsigned int *minIndex, unsigned int *maxIndex);   // Returns the offset into the index buffer, or -1 if not found
-    void addRange(intptr_t offset, GLsizei count, unsigned int minIndex, unsigned int maxIndex, unsigned int streamOffset);
</del><ins>+    IndexRangeCache *getIndexRangeCache();
</ins><span class="cx"> 
</span><span class="cx">   private:
</span><del>-    struct IndexRange
-    {
-        intptr_t offset;
-        GLsizei count;
-
-        bool operator&lt;(const IndexRange&amp; rhs) const
-        {
-            if (offset != rhs.offset)
-            {
-                return offset &lt; rhs.offset;
-            }
-            if (count != rhs.count)
-            {
-                return count &lt; rhs.count;
-            }
-            return false;
-        }
-    };
-
-    struct IndexResult
-    {
-        unsigned int minIndex;
-        unsigned int maxIndex;
-        unsigned int streamOffset;
-    };
-
-    std::map&lt;IndexRange, IndexResult&gt; mCache;
</del><ins>+    IndexRangeCache mIndexRangeCache;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererIndexBuffer11cpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer11.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer11.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexBuffer11.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -75,7 +75,8 @@
</span><span class="cx"> {
</span><span class="cx">     if (mBuffer)
</span><span class="cx">     {
</span><del>-        if (offset + size &gt; mBufferSize)
</del><ins>+        // Check for integer overflows and out-out-bounds map requests
+        if (offset + size &lt; offset || offset + size &gt; mBufferSize)
</ins><span class="cx">         {
</span><span class="cx">             ERR(&quot;Index buffer map range is not inside the buffer.&quot;);
</span><span class="cx">             return false;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererIndexDataManagercpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexDataManager.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexDataManager.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexDataManager.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -13,6 +13,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;libGLESv2/Buffer.h&quot;
</span><span class="cx"> #include &quot;libGLESv2/main.h&quot;
</span><ins>+#include &quot;libGLESv2/utilities.h&quot;
</ins><span class="cx"> #include &quot;libGLESv2/renderer/IndexBuffer.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace rx
</span><span class="lines">@@ -53,17 +54,6 @@
</span><span class="cx">     delete mCountingBuffer;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static unsigned int indexTypeSize(GLenum type)
-{
-    switch (type)
-    {
-      case GL_UNSIGNED_INT:   return sizeof(GLuint);
-      case GL_UNSIGNED_SHORT: return sizeof(GLushort);
-      case GL_UNSIGNED_BYTE:  return sizeof(GLubyte);
-      default: UNREACHABLE(); return sizeof(GLushort);
-    }
-}
-
</del><span class="cx"> static void convertIndices(GLenum type, const void *input, GLsizei count, void *output)
</span><span class="cx"> {
</span><span class="cx">     if (type == GL_UNSIGNED_BYTE)
</span><span class="lines">@@ -125,13 +115,19 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     GLenum destinationIndexType = (type == GL_UNSIGNED_INT) ? GL_UNSIGNED_INT : GL_UNSIGNED_SHORT;
</span><del>-    intptr_t offset = reinterpret_cast&lt;intptr_t&gt;(indices);
</del><ins>+    unsigned int offset = 0;
</ins><span class="cx">     bool alignedOffset = false;
</span><span class="cx"> 
</span><span class="cx">     BufferStorage *storage = NULL;
</span><span class="cx"> 
</span><span class="cx">     if (buffer != NULL)
</span><span class="cx">     {
</span><ins>+        if (reinterpret_cast&lt;uintptr_t&gt;(indices) &gt; std::numeric_limits&lt;unsigned int&gt;::max())
+        {
+            return GL_OUT_OF_MEMORY;
+        }
+        offset = static_cast&lt;unsigned int&gt;(reinterpret_cast&lt;uintptr_t&gt;(indices));
+
</ins><span class="cx">         storage = buffer-&gt;getStorage();
</span><span class="cx"> 
</span><span class="cx">         switch (type)
</span><span class="lines">@@ -142,8 +138,17 @@
</span><span class="cx">           default: UNREACHABLE(); alignedOffset = false;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        if (indexTypeSize(type) * count + offset &gt; storage-&gt;getSize())
</del><ins>+        unsigned int typeSize = gl::ComputeTypeSize(type);
+
+        // check for integer overflows
+        if (static_cast&lt;unsigned int&gt;(count) &gt; (std::numeric_limits&lt;unsigned int&gt;::max() / typeSize) ||
+            typeSize * static_cast&lt;unsigned int&gt;(count) + offset &lt; offset)
</ins><span class="cx">         {
</span><ins>+            return GL_OUT_OF_MEMORY;
+        }
+
+        if (typeSize * static_cast&lt;unsigned int&gt;(count) + offset &gt; storage-&gt;getSize())
+        {
</ins><span class="cx">             return GL_INVALID_OPERATION;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -156,37 +161,44 @@
</span><span class="cx">     IndexBufferInterface *indexBuffer = streamingBuffer;
</span><span class="cx">     bool directStorage = alignedOffset &amp;&amp; storage &amp;&amp; storage-&gt;supportsDirectBinding() &amp;&amp;
</span><span class="cx">                          destinationIndexType == type;
</span><del>-    UINT streamOffset = 0;
</del><ins>+    unsigned int streamOffset = 0;
</ins><span class="cx"> 
</span><span class="cx">     if (directStorage)
</span><span class="cx">     {
</span><span class="cx">         indexBuffer = streamingBuffer;
</span><span class="cx">         streamOffset = offset;
</span><span class="cx">         storage-&gt;markBufferUsage();
</span><del>-        computeRange(type, indices, count, &amp;translated-&gt;minIndex, &amp;translated-&gt;maxIndex);
</del><ins>+
+        if (!buffer-&gt;getIndexRangeCache()-&gt;findRange(type, offset, count, &amp;translated-&gt;minIndex,
+                                                     &amp;translated-&gt;maxIndex, NULL))
+        {
+            computeRange(type, indices, count, &amp;translated-&gt;minIndex, &amp;translated-&gt;maxIndex);
+            buffer-&gt;getIndexRangeCache()-&gt;addRange(type, offset, count, translated-&gt;minIndex,
+                                                   translated-&gt;maxIndex, offset);
+        }
</ins><span class="cx">     }
</span><span class="cx">     else if (staticBuffer &amp;&amp; staticBuffer-&gt;getBufferSize() != 0 &amp;&amp; staticBuffer-&gt;getIndexType() == type &amp;&amp; alignedOffset)
</span><span class="cx">     {
</span><span class="cx">         indexBuffer = staticBuffer;
</span><del>-        streamOffset = staticBuffer-&gt;lookupRange(offset, count, &amp;translated-&gt;minIndex, &amp;translated-&gt;maxIndex);
-
-        if (streamOffset == -1)
</del><ins>+        if (!staticBuffer-&gt;getIndexRangeCache()-&gt;findRange(type, offset, count, &amp;translated-&gt;minIndex,
+                                                           &amp;translated-&gt;maxIndex, &amp;streamOffset))
</ins><span class="cx">         {
</span><del>-            streamOffset = (offset / indexTypeSize(type)) * indexTypeSize(destinationIndexType);
</del><ins>+            streamOffset = (offset / gl::ComputeTypeSize(type)) * gl::ComputeTypeSize(destinationIndexType);
</ins><span class="cx">             computeRange(type, indices, count, &amp;translated-&gt;minIndex, &amp;translated-&gt;maxIndex);
</span><del>-            staticBuffer-&gt;addRange(offset, count, translated-&gt;minIndex, translated-&gt;maxIndex, streamOffset);
</del><ins>+            staticBuffer-&gt;getIndexRangeCache()-&gt;addRange(type, offset, count, translated-&gt;minIndex,
+                                                         translated-&gt;maxIndex, streamOffset);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx">     else
</span><span class="cx">     {
</span><del>-        int convertCount = count;
</del><ins>+        unsigned int convertCount = count;
</ins><span class="cx"> 
</span><span class="cx">         if (staticBuffer)
</span><span class="cx">         {
</span><span class="cx">             if (staticBuffer-&gt;getBufferSize() == 0 &amp;&amp; alignedOffset)
</span><span class="cx">             {
</span><span class="cx">                 indexBuffer = staticBuffer;
</span><del>-                convertCount = storage-&gt;getSize() / indexTypeSize(type);
</del><ins>+                convertCount = storage-&gt;getSize() / gl::ComputeTypeSize(type);
</ins><span class="cx">             }
</span><span class="cx">             else
</span><span class="cx">             {
</span><span class="lines">@@ -201,12 +213,22 @@
</span><span class="cx">             return GL_INVALID_OPERATION;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        unsigned int bufferSizeRequired = convertCount * indexTypeSize(destinationIndexType);
-        indexBuffer-&gt;reserveBufferSpace(bufferSizeRequired, type);
</del><ins>+        unsigned int indexTypeSize = gl::ComputeTypeSize(destinationIndexType);
+        if (convertCount &gt; std::numeric_limits&lt;unsigned int&gt;::max() / indexTypeSize)
+        {
+            ERR(&quot;Reserving %u indicies of %u bytes each exceeds the maximum buffer size.&quot;, convertCount, indexTypeSize);
+            return GL_OUT_OF_MEMORY;
+        }
</ins><span class="cx"> 
</span><ins>+        unsigned int bufferSizeRequired = convertCount * indexTypeSize;
+        if (!indexBuffer-&gt;reserveBufferSpace(bufferSizeRequired, type))
+        {
+            ERR(&quot;Failed to reserve %u bytes in an index buffer.&quot;, bufferSizeRequired);
+            return GL_OUT_OF_MEMORY;
+        }
+
</ins><span class="cx">         void* output = NULL;
</span><del>-        streamOffset = indexBuffer-&gt;mapBuffer(bufferSizeRequired, &amp;output);
-        if (streamOffset == -1 || output == NULL)
</del><ins>+        if (!indexBuffer-&gt;mapBuffer(bufferSizeRequired, &amp;output, &amp;streamOffset))
</ins><span class="cx">         {
</span><span class="cx">             ERR(&quot;Failed to map index buffer.&quot;);
</span><span class="cx">             return GL_OUT_OF_MEMORY;
</span><span class="lines">@@ -224,20 +246,21 @@
</span><span class="cx"> 
</span><span class="cx">         if (staticBuffer)
</span><span class="cx">         {
</span><del>-            streamOffset = (offset / indexTypeSize(type)) * indexTypeSize(destinationIndexType);
-            staticBuffer-&gt;addRange(offset, count, translated-&gt;minIndex, translated-&gt;maxIndex, streamOffset);
</del><ins>+            streamOffset = (offset / gl::ComputeTypeSize(type)) * gl::ComputeTypeSize(destinationIndexType);
+            staticBuffer-&gt;getIndexRangeCache()-&gt;addRange(type, offset, count, translated-&gt;minIndex,
+                                                         translated-&gt;maxIndex, streamOffset);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     translated-&gt;storage = directStorage ? storage : NULL;
</span><span class="cx">     translated-&gt;indexBuffer = indexBuffer-&gt;getIndexBuffer();
</span><span class="cx">     translated-&gt;serial = directStorage ? storage-&gt;getSerial() : indexBuffer-&gt;getSerial();
</span><del>-    translated-&gt;startIndex = streamOffset / indexTypeSize(destinationIndexType);
</del><ins>+    translated-&gt;startIndex = streamOffset / gl::ComputeTypeSize(destinationIndexType);
</ins><span class="cx">     translated-&gt;startOffset = streamOffset;
</span><span class="cx"> 
</span><span class="cx">     if (buffer)
</span><span class="cx">     {
</span><del>-        buffer-&gt;promoteStaticUsage(count * indexTypeSize(type));
</del><ins>+        buffer-&gt;promoteStaticUsage(count * gl::ComputeTypeSize(type));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return GL_NO_ERROR;
</span><span class="lines">@@ -256,7 +279,7 @@
</span><span class="cx">             mCountingBuffer-&gt;reserveBufferSpace(spaceNeeded, GL_UNSIGNED_SHORT);
</span><span class="cx"> 
</span><span class="cx">             void* mappedMemory = NULL;
</span><del>-            if (mCountingBuffer-&gt;mapBuffer(spaceNeeded, &amp;mappedMemory) == -1 || mappedMemory == NULL)
</del><ins>+            if (!mCountingBuffer-&gt;mapBuffer(spaceNeeded, &amp;mappedMemory, NULL))
</ins><span class="cx">             {
</span><span class="cx">                 ERR(&quot;Failed to map counting buffer.&quot;);
</span><span class="cx">                 return NULL;
</span><span class="lines">@@ -286,7 +309,7 @@
</span><span class="cx">             mCountingBuffer-&gt;reserveBufferSpace(spaceNeeded, GL_UNSIGNED_INT);
</span><span class="cx"> 
</span><span class="cx">             void* mappedMemory = NULL;
</span><del>-            if (mCountingBuffer-&gt;mapBuffer(spaceNeeded, &amp;mappedMemory) == -1 || mappedMemory == NULL)
</del><ins>+            if (!mCountingBuffer-&gt;mapBuffer(spaceNeeded, &amp;mappedMemory, NULL))
</ins><span class="cx">             {
</span><span class="cx">                 ERR(&quot;Failed to map counting buffer.&quot;);
</span><span class="cx">                 return NULL;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererIndexRangeCachecpp"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexRangeCache.cpp (0 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexRangeCache.cpp                                (rev 0)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexRangeCache.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -0,0 +1,97 @@
</span><ins>+#include &quot;precompiled.h&quot;
+//
+// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+// IndexRangeCache.cpp: Defines the rx::IndexRangeCache class which stores information about
+// ranges of indices.
+
+#include &quot;libGLESv2/renderer/IndexRangeCache.h&quot;
+#include &quot;common/debug.h&quot;
+#include &quot;libGLESv2/utilities.h&quot;
+#include &lt;tuple&gt;
+
+namespace rx
+{
+
+void IndexRangeCache::addRange(GLenum type, unsigned int offset, GLsizei count, unsigned int minIdx, unsigned int maxIdx,
+                               unsigned int streamOffset)
+{
+    mIndexRangeCache[IndexRange(type, offset, count)] = IndexBounds(minIdx, maxIdx, streamOffset);
+}
+
+void IndexRangeCache::invalidateRange(unsigned int offset, unsigned int size)
+{
+    unsigned int invalidateStart = offset;
+    unsigned int invalidateEnd = offset + size;
+
+    IndexRangeMap::iterator i = mIndexRangeCache.begin();
+    while (i != mIndexRangeCache.end())
+    {
+        unsigned int rangeStart = i-&gt;second.streamOffset;
+        unsigned int rangeEnd = i-&gt;second.streamOffset + (gl::ComputeTypeSize(i-&gt;first.type) * i-&gt;first.count);
+
+        if (invalidateEnd &lt; rangeStart || invalidateStart &gt; rangeEnd)
+        {
+            ++i;
+        }
+        else
+        {
+            i = mIndexRangeCache.erase(i);
+        }
+    }
+}
+
+bool IndexRangeCache::findRange(GLenum type, unsigned int offset, GLsizei count, unsigned int *outMinIndex,
+                                unsigned int *outMaxIndex, unsigned int *outStreamOffset) const
+{
+    IndexRangeMap::const_iterator i = mIndexRangeCache.find(IndexRange(type, offset, count));
+    if (i != mIndexRangeCache.end())
+    {
+        if (outMinIndex)     *outMinIndex = i-&gt;second.minIndex;
+        if (outMaxIndex)     *outMaxIndex = i-&gt;second.maxIndex;
+        if (outStreamOffset) *outStreamOffset = i-&gt;second.streamOffset;
+        return true;
+    }
+    else
+    {
+        if (outMinIndex)     *outMinIndex = 0;
+        if (outMaxIndex)     *outMaxIndex = 0;
+        if (outStreamOffset) *outStreamOffset = 0;
+        return false;
+    }
+}
+
+void IndexRangeCache::clear()
+{
+    mIndexRangeCache.clear();
+}
+
+IndexRangeCache::IndexRange::IndexRange()
+    : type(GL_NONE), offset(0), count(0)
+{
+}
+
+IndexRangeCache::IndexRange::IndexRange(GLenum typ, intptr_t off, GLsizei c)
+    : type(typ), offset(off), count(c)
+{
+}
+
+bool IndexRangeCache::IndexRange::operator&lt;(const IndexRange&amp; rhs) const
+{
+    return std::make_tuple(type, offset, count) &lt; std::make_tuple(rhs.type, rhs.offset, rhs.count);
+}
+
+IndexRangeCache::IndexBounds::IndexBounds()
+    : minIndex(0), maxIndex(0), streamOffset(0)
+{
+}
+
+IndexRangeCache::IndexBounds::IndexBounds(unsigned int minIdx, unsigned int maxIdx, unsigned int offset)
+    : minIndex(minIdx), maxIndex(maxIdx), streamOffset(offset)
+{
+}
+
+}
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererIndexRangeCacheh"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexRangeCache.h (0 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexRangeCache.h                                (rev 0)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/IndexRangeCache.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -0,0 +1,58 @@
</span><ins>+//
+// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+// IndexRangeCache.h: Defines the rx::IndexRangeCache class which stores information about
+// ranges of indices.
+
+#ifndef LIBGLESV2_RENDERER_INDEXRANGECACHE_H_
+#define LIBGLESV2_RENDERER_INDEXRANGECACHE_H_
+
+#include &quot;common/angleutils.h&quot;
+
+namespace rx
+{
+
+class IndexRangeCache
+{
+  public:
+    void addRange(GLenum type, unsigned int offset, GLsizei count, unsigned int minIdx, unsigned int maxIdx,
+                  unsigned int streamOffset);
+    bool findRange(GLenum type, unsigned int offset, GLsizei count, unsigned int *outMinIndex,
+                   unsigned int *outMaxIndex, unsigned int *outStreamOffset) const;
+
+    void invalidateRange(unsigned int offset, unsigned int size);
+    void clear();
+
+  private:
+    struct IndexRange
+    {
+        GLenum type;
+        unsigned int offset;
+        GLsizei count;
+
+        IndexRange();
+        IndexRange(GLenum type, intptr_t offset, GLsizei count);
+
+        bool operator&lt;(const IndexRange&amp; rhs) const;
+    };
+
+    struct IndexBounds
+    {
+        unsigned int minIndex;
+        unsigned int maxIndex;
+        unsigned int streamOffset;
+
+        IndexBounds();
+        IndexBounds(unsigned int minIdx, unsigned int maxIdx, unsigned int offset);
+    };
+
+    typedef std::map&lt;IndexRange, IndexBounds&gt; IndexRangeMap;
+    IndexRangeMap mIndexRangeCache;
+};
+
+}
+
+#endif LIBGLESV2_RENDERER_INDEXRANGECACHE_H
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererInputLayoutCachecpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/InputLayoutCache.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/InputLayoutCache.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/InputLayoutCache.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -28,6 +28,13 @@
</span><span class="cx">     mCounter = 0;
</span><span class="cx">     mDevice = NULL;
</span><span class="cx">     mDeviceContext = NULL;
</span><ins>+    mCurrentIL = NULL;
+    for (unsigned int i = 0; i &lt; gl::MAX_VERTEX_ATTRIBS; i++)
+    {
+        mCurrentBuffers[i] = -1;
+        mCurrentVertexStrides[i] = -1;
+        mCurrentVertexOffsets[i] = -1;
+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> InputLayoutCache::~InputLayoutCache()
</span><span class="lines">@@ -49,8 +56,20 @@
</span><span class="cx">         i-&gt;second.inputLayout-&gt;Release();
</span><span class="cx">     }
</span><span class="cx">     mInputLayoutMap.clear();
</span><ins>+    markDirty();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void InputLayoutCache::markDirty()
+{
+    mCurrentIL = NULL;
+    for (unsigned int i = 0; i &lt; gl::MAX_VERTEX_ATTRIBS; i++)
+    {
+        mCurrentBuffers[i] = -1;
+        mCurrentVertexStrides[i] = -1;
+        mCurrentVertexOffsets[i] = -1;
+    }
+}
+
</ins><span class="cx"> GLenum InputLayoutCache::applyVertexBuffers(TranslatedAttribute attributes[gl::MAX_VERTEX_ATTRIBS],
</span><span class="cx">                                             gl::ProgramBinary *programBinary)
</span><span class="cx"> {
</span><span class="lines">@@ -66,6 +85,7 @@
</span><span class="cx">     InputLayoutKey ilKey = { 0 };
</span><span class="cx"> 
</span><span class="cx">     ID3D11Buffer *vertexBuffers[gl::MAX_VERTEX_ATTRIBS] = { NULL };
</span><ins>+    unsigned int vertexBufferSerials[gl::MAX_VERTEX_ATTRIBS] = { 0 };
</ins><span class="cx">     UINT vertexStrides[gl::MAX_VERTEX_ATTRIBS] = { 0 };
</span><span class="cx">     UINT vertexOffsets[gl::MAX_VERTEX_ATTRIBS] = { 0 };
</span><span class="cx"> 
</span><span class="lines">@@ -83,18 +103,19 @@
</span><span class="cx">             // Record the type of the associated vertex shader vector in our key
</span><span class="cx">             // This will prevent mismatched vertex shaders from using the same input layout
</span><span class="cx">             GLint attributeSize;
</span><del>-            programBinary-&gt;getActiveAttribute(ilKey.elementCount, 0, NULL, &amp;attributeSize, &amp;ilKey.glslElementType[ilKey.elementCount], NULL);
</del><ins>+            programBinary-&gt;getActiveAttribute(ilKey.elementCount, 0, NULL, &amp;attributeSize, &amp;ilKey.elements[ilKey.elementCount].glslElementType, NULL);
</ins><span class="cx"> 
</span><del>-            ilKey.elements[ilKey.elementCount].SemanticName = semanticName;
-            ilKey.elements[ilKey.elementCount].SemanticIndex = sortedSemanticIndices[i];
-            ilKey.elements[ilKey.elementCount].Format = attributes[i].attribute-&gt;mArrayEnabled ? vertexBuffer-&gt;getDXGIFormat(*attributes[i].attribute) : DXGI_FORMAT_R32G32B32A32_FLOAT;
-            ilKey.elements[ilKey.elementCount].InputSlot = i;
-            ilKey.elements[ilKey.elementCount].AlignedByteOffset = 0;
-            ilKey.elements[ilKey.elementCount].InputSlotClass = inputClass;
-            ilKey.elements[ilKey.elementCount].InstanceDataStepRate = attributes[i].divisor;
</del><ins>+            ilKey.elements[ilKey.elementCount].desc.SemanticName = semanticName;
+            ilKey.elements[ilKey.elementCount].desc.SemanticIndex = sortedSemanticIndices[i];
+            ilKey.elements[ilKey.elementCount].desc.Format = attributes[i].attribute-&gt;mArrayEnabled ? vertexBuffer-&gt;getDXGIFormat(*attributes[i].attribute) : DXGI_FORMAT_R32G32B32A32_FLOAT;
+            ilKey.elements[ilKey.elementCount].desc.InputSlot = i;
+            ilKey.elements[ilKey.elementCount].desc.AlignedByteOffset = 0;
+            ilKey.elements[ilKey.elementCount].desc.InputSlotClass = inputClass;
+            ilKey.elements[ilKey.elementCount].desc.InstanceDataStepRate = attributes[i].divisor;
</ins><span class="cx">             ilKey.elementCount++;
</span><span class="cx"> 
</span><span class="cx">             vertexBuffers[i] = bufferStorage ? bufferStorage-&gt;getBuffer() : vertexBuffer-&gt;getBuffer();
</span><ins>+            vertexBufferSerials[i] = bufferStorage ? bufferStorage-&gt;getSerial() : vertexBuffer-&gt;getSerial();
</ins><span class="cx">             vertexStrides[i] = attributes[i].stride;
</span><span class="cx">             vertexOffsets[i] = attributes[i].offset;
</span><span class="cx">         }
</span><span class="lines">@@ -112,7 +133,13 @@
</span><span class="cx">     {
</span><span class="cx">         ShaderExecutable11 *shader = ShaderExecutable11::makeShaderExecutable11(programBinary-&gt;getVertexExecutable());
</span><span class="cx"> 
</span><del>-        HRESULT result = mDevice-&gt;CreateInputLayout(ilKey.elements, ilKey.elementCount, shader-&gt;getFunction(), shader-&gt;getLength(), &amp;inputLayout);
</del><ins>+        D3D11_INPUT_ELEMENT_DESC descs[gl::MAX_VERTEX_ATTRIBS];
+        for (unsigned int j = 0; j &lt; ilKey.elementCount; ++j)
+        {
+            descs[j] = ilKey.elements[j].desc;
+        }
+
+        HRESULT result = mDevice-&gt;CreateInputLayout(descs, ilKey.elementCount, shader-&gt;getFunction(), shader-&gt;getLength(), &amp;inputLayout);
</ins><span class="cx">         if (FAILED(result))
</span><span class="cx">         {
</span><span class="cx">             ERR(&quot;Failed to crate input layout, result: 0x%08x&quot;, result);
</span><span class="lines">@@ -143,9 +170,24 @@
</span><span class="cx">         mInputLayoutMap.insert(std::make_pair(ilKey, inputCounterPair));
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    mDeviceContext-&gt;IASetInputLayout(inputLayout);
-    mDeviceContext-&gt;IASetVertexBuffers(0, gl::MAX_VERTEX_ATTRIBS, vertexBuffers, vertexStrides, vertexOffsets);
</del><ins>+    if (inputLayout != mCurrentIL)
+    {
+        mDeviceContext-&gt;IASetInputLayout(inputLayout);
+        mCurrentIL = inputLayout;
+    }
</ins><span class="cx"> 
</span><ins>+    for (unsigned int i = 0; i &lt; gl::MAX_VERTEX_ATTRIBS; i++)
+    {
+        if (vertexBufferSerials[i] != mCurrentBuffers[i] || vertexStrides[i] != mCurrentVertexStrides[i] ||
+            vertexOffsets[i] != mCurrentVertexOffsets[i])
+        {
+            mDeviceContext-&gt;IASetVertexBuffers(i, 1, &amp;vertexBuffers[i], &amp;vertexStrides[i], &amp;vertexOffsets[i]);
+            mCurrentBuffers[i] = vertexBufferSerials[i];
+            mCurrentVertexStrides[i] = vertexStrides[i];
+            mCurrentVertexOffsets[i] = vertexOffsets[i];
+        }
+    }
+
</ins><span class="cx">     return GL_NO_ERROR;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -154,13 +196,18 @@
</span><span class="cx">     static const unsigned int seed = 0xDEADBEEF;
</span><span class="cx"> 
</span><span class="cx">     std::size_t hash = 0;
</span><del>-    MurmurHash3_x86_32(&amp;inputLayout, sizeof(InputLayoutKey), seed, &amp;hash);
</del><ins>+    MurmurHash3_x86_32(inputLayout.begin(), inputLayout.end() - inputLayout.begin(), seed, &amp;hash);
</ins><span class="cx">     return hash;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool InputLayoutCache::compareInputLayouts(const InputLayoutKey &amp;a, const InputLayoutKey &amp;b)
</span><span class="cx"> {
</span><del>-    return memcmp(&amp;a, &amp;b, sizeof(InputLayoutKey)) == 0;
</del><ins>+    if (a.elementCount != b.elementCount)
+    {
+        return false;
+    }
+
+    return std::equal(a.begin(), a.end(), b.begin());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererInputLayoutCacheh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/InputLayoutCache.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/InputLayoutCache.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/InputLayoutCache.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -30,6 +30,7 @@
</span><span class="cx"> 
</span><span class="cx">     void initialize(ID3D11Device *device, ID3D11DeviceContext *context);
</span><span class="cx">     void clear();
</span><ins>+    void markDirty();
</ins><span class="cx"> 
</span><span class="cx">     GLenum applyVertexBuffers(TranslatedAttribute attributes[gl::MAX_VERTEX_ATTRIBS],
</span><span class="cx">                               gl::ProgramBinary *programBinary);
</span><span class="lines">@@ -37,11 +38,26 @@
</span><span class="cx">   private:
</span><span class="cx">     DISALLOW_COPY_AND_ASSIGN(InputLayoutCache);
</span><span class="cx"> 
</span><ins>+    struct InputLayoutElement
+    {
+        D3D11_INPUT_ELEMENT_DESC desc;
+        GLenum glslElementType;
+    };
+
</ins><span class="cx">     struct InputLayoutKey
</span><span class="cx">     {
</span><span class="cx">         unsigned int elementCount;
</span><del>-        D3D11_INPUT_ELEMENT_DESC elements[gl::MAX_VERTEX_ATTRIBS];
-        GLenum glslElementType[gl::MAX_VERTEX_ATTRIBS];
</del><ins>+        InputLayoutElement elements[gl::MAX_VERTEX_ATTRIBS];
+
+        const char *begin() const
+        {
+            return reinterpret_cast&lt;const char*&gt;(&amp;elementCount);
+        }
+
+        const char *end() const
+        {
+            return reinterpret_cast&lt;const char*&gt;(&amp;elements[elementCount]);
+        }
</ins><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     struct InputLayoutCounterPair
</span><span class="lines">@@ -50,6 +66,11 @@
</span><span class="cx">         unsigned long long lastUsedTime;
</span><span class="cx">     };
</span><span class="cx"> 
</span><ins>+    ID3D11InputLayout *mCurrentIL;
+    unsigned int mCurrentBuffers[gl::MAX_VERTEX_ATTRIBS];
+    UINT mCurrentVertexStrides[gl::MAX_VERTEX_ATTRIBS];
+    UINT mCurrentVertexOffsets[gl::MAX_VERTEX_ATTRIBS];
+
</ins><span class="cx">     static std::size_t hashInputLayout(const InputLayoutKey &amp;inputLayout);
</span><span class="cx">     static bool compareInputLayouts(const InputLayoutKey &amp;a, const InputLayoutKey &amp;b);
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererRenderTarget11cpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderTarget11.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderTarget11.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderTarget11.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -329,44 +329,21 @@
</span><span class="cx"> 
</span><span class="cx"> ID3D11Texture2D *RenderTarget11::getTexture() const
</span><span class="cx"> {
</span><del>-    if (mTexture)
-    {
-        mTexture-&gt;AddRef();
-    }
-
</del><span class="cx">     return mTexture;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-// Adds reference, caller must call Release
</del><span class="cx"> ID3D11RenderTargetView *RenderTarget11::getRenderTargetView() const
</span><span class="cx"> {
</span><del>-    if (mRenderTarget)
-    {
-        mRenderTarget-&gt;AddRef();
-    }
-
</del><span class="cx">     return mRenderTarget;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-// Adds reference, caller must call Release
</del><span class="cx"> ID3D11DepthStencilView *RenderTarget11::getDepthStencilView() const
</span><span class="cx"> {
</span><del>-    if (mDepthStencil)
-    {
-        mDepthStencil-&gt;AddRef();
-    }
-
</del><span class="cx">     return mDepthStencil;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-// Adds reference, caller must call Release
</del><span class="cx"> ID3D11ShaderResourceView *RenderTarget11::getShaderResourceView() const
</span><span class="cx"> {
</span><del>-    if (mShaderResource)
-    {
-        mShaderResource-&gt;AddRef();
-    }
-
</del><span class="cx">     return mShaderResource;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererRenderTarget11h"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderTarget11.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderTarget11.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/RenderTarget11.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -27,16 +27,9 @@
</span><span class="cx"> 
</span><span class="cx">     static RenderTarget11 *makeRenderTarget11(RenderTarget *renderTarget);
</span><span class="cx"> 
</span><del>-    // Adds reference, caller must call Release
</del><span class="cx">     ID3D11Texture2D *getTexture() const;
</span><del>-
-    // Adds reference, caller must call Release
</del><span class="cx">     ID3D11RenderTargetView *getRenderTargetView() const;
</span><del>-
-    // Adds reference, caller must call Release
</del><span class="cx">     ID3D11DepthStencilView *getDepthStencilView() const;
</span><del>-
-    // Adds reference, caller must call Release
</del><span class="cx">     ID3D11ShaderResourceView *getShaderResourceView() const;
</span><span class="cx"> 
</span><span class="cx">     unsigned int getSubresourceIndex() const;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererRenderercpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -14,6 +14,7 @@
</span><span class="cx"> #include &quot;libGLESv2/renderer/Renderer9.h&quot;
</span><span class="cx"> #include &quot;libGLESv2/renderer/Renderer11.h&quot;
</span><span class="cx"> #include &quot;libGLESv2/utilities.h&quot;
</span><ins>+#include &quot;third_party/trace_event/trace_event.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> #if !defined(ANGLE_ENABLE_D3D11)
</span><span class="cx"> // Enables use of the Direct3D 11 API for a default display, when available
</span><span class="lines">@@ -40,6 +41,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool Renderer::initializeCompiler()
</span><span class="cx"> {
</span><ins>+    TRACE_EVENT0(&quot;gpu&quot;, &quot;initializeCompiler&quot;);
</ins><span class="cx"> #if defined(ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES)
</span><span class="cx">     // Find a D3DCompiler module that had already been loaded based on a predefined list of versions.
</span><span class="cx">     static TCHAR* d3dCompilerNames[] = ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES;
</span><span class="lines">@@ -51,13 +53,16 @@
</span><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">     }
</span><del>-#else
-    // Load the version of the D3DCompiler DLL associated with the Direct3D version ANGLE was built with.
-    mD3dCompilerModule = LoadLibrary(D3DCOMPILER_DLL);
</del><span class="cx"> #endif  // ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES
</span><span class="cx"> 
</span><span class="cx">     if (!mD3dCompilerModule)
</span><span class="cx">     {
</span><ins>+        // Load the version of the D3DCompiler DLL associated with the Direct3D version ANGLE was built with.
+        mD3dCompilerModule = LoadLibrary(D3DCOMPILER_DLL);
+    }
+
+    if (!mD3dCompilerModule)
+    {
</ins><span class="cx">         ERR(&quot;No D3D compiler module found - aborting!\n&quot;);
</span><span class="cx">         return false;
</span><span class="cx">     }
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererRendererh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -93,6 +93,12 @@
</span><span class="cx">     SHADER_GEOMETRY
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+enum D3DWorkaroundType
+{
+    ANGLE_D3D_WORKAROUND_NONE,
+    ANGLE_D3D_WORKAROUND_SM3_OPTIMIZER
+};
+
</ins><span class="cx"> class Renderer
</span><span class="cx"> {
</span><span class="cx">   public:
</span><span class="lines">@@ -207,7 +213,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Shader operations
</span><span class="cx">     virtual ShaderExecutable *loadExecutable(const void *function, size_t length, rx::ShaderType type) = 0;
</span><del>-    virtual ShaderExecutable *compileToExecutable(gl::InfoLog &amp;infoLog, const char *shaderHLSL, rx::ShaderType type) = 0;
</del><ins>+    virtual ShaderExecutable *compileToExecutable(gl::InfoLog &amp;infoLog, const char *shaderHLSL, rx::ShaderType type, D3DWorkaroundType workaround) = 0;
</ins><span class="cx"> 
</span><span class="cx">     // Image operations
</span><span class="cx">     virtual Image *createImage() = 0;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererRenderer11cpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer11.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer11.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer11.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -12,7 +12,7 @@
</span><span class="cx"> #include &quot;libGLESv2/Buffer.h&quot;
</span><span class="cx"> #include &quot;libGLESv2/ProgramBinary.h&quot;
</span><span class="cx"> #include &quot;libGLESv2/Framebuffer.h&quot;
</span><del>-#include &quot;libGLESv2/RenderBuffer.h&quot;
</del><ins>+#include &quot;libGLESv2/Renderbuffer.h&quot;
</ins><span class="cx"> #include &quot;libGLESv2/renderer/Renderer11.h&quot;
</span><span class="cx"> #include &quot;libGLESv2/renderer/RenderTarget11.h&quot;
</span><span class="cx"> #include &quot;libGLESv2/renderer/renderer11_utils.h&quot;
</span><span class="lines">@@ -243,8 +243,6 @@
</span><span class="cx">     {
</span><span class="cx">         D3D11_MESSAGE_ID hideMessages[] =
</span><span class="cx">         {
</span><del>-            D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETS_HAZARD,
-            D3D11_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_HAZARD,
</del><span class="cx">             D3D11_MESSAGE_ID_DEVICE_DRAW_RENDERTARGETVIEW_NOT_SET
</span><span class="cx">         };
</span><span class="cx"> 
</span><span class="lines">@@ -322,7 +320,6 @@
</span><span class="cx">     {
</span><span class="cx">         DXGI_FORMAT_R32_FLOAT,
</span><span class="cx">         DXGI_FORMAT_R32G32_FLOAT,
</span><del>-        DXGI_FORMAT_R32G32B32_FLOAT,
</del><span class="cx">         DXGI_FORMAT_R32G32B32A32_FLOAT,
</span><span class="cx">     };
</span><span class="cx"> 
</span><span class="lines">@@ -835,23 +832,29 @@
</span><span class="cx"> {
</span><span class="cx">     D3D11_PRIMITIVE_TOPOLOGY primitiveTopology = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED;
</span><span class="cx"> 
</span><ins>+    GLsizei minCount = 0;
+
</ins><span class="cx">     switch (mode)
</span><span class="cx">     {
</span><del>-      case GL_POINTS:         primitiveTopology = D3D11_PRIMITIVE_TOPOLOGY_POINTLIST;   break;
-      case GL_LINES:          primitiveTopology = D3D_PRIMITIVE_TOPOLOGY_LINELIST;      break;
-      case GL_LINE_LOOP:      primitiveTopology = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP;     break;
-      case GL_LINE_STRIP:     primitiveTopology = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP;     break;
-      case GL_TRIANGLES:      primitiveTopology = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST;  break;
-      case GL_TRIANGLE_STRIP: primitiveTopology = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP; break;
</del><ins>+      case GL_POINTS:         primitiveTopology = D3D11_PRIMITIVE_TOPOLOGY_POINTLIST;   minCount = 1; break;
+      case GL_LINES:          primitiveTopology = D3D_PRIMITIVE_TOPOLOGY_LINELIST;      minCount = 2; break;
+      case GL_LINE_LOOP:      primitiveTopology = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP;     minCount = 2; break;
+      case GL_LINE_STRIP:     primitiveTopology = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP;     minCount = 2; break;
+      case GL_TRIANGLES:      primitiveTopology = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST;  minCount = 3; break;
+      case GL_TRIANGLE_STRIP: primitiveTopology = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP; minCount = 3; break;
</ins><span class="cx">           // emulate fans via rewriting index buffer
</span><del>-      case GL_TRIANGLE_FAN:   primitiveTopology = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST;  break;
</del><ins>+      case GL_TRIANGLE_FAN:   primitiveTopology = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST;  minCount = 3; break;
</ins><span class="cx">       default:
</span><span class="cx">         return gl::error(GL_INVALID_ENUM, false);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    mDeviceContext-&gt;IASetPrimitiveTopology(primitiveTopology);
</del><ins>+    if (primitiveTopology != mCurrentPrimitiveTopology)
+    {
+        mDeviceContext-&gt;IASetPrimitiveTopology(primitiveTopology);
+        mCurrentPrimitiveTopology = primitiveTopology;
+    }
</ins><span class="cx"> 
</span><del>-    return count &gt; 0;
</del><ins>+    return count &gt;= minCount;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool Renderer11::applyRenderTarget(gl::Framebuffer *framebuffer)
</span><span class="lines">@@ -914,6 +917,25 @@
</span><span class="cx">                 renderTargetFormat = colorbuffer-&gt;getActualFormat();
</span><span class="cx">                 missingColorRenderTarget = false;
</span><span class="cx">             }
</span><ins>+
+#ifdef _DEBUG
+            // Workaround for Debug SETSHADERRESOURCES_HAZARD D3D11 warnings
+            for (unsigned int vertexSerialIndex = 0; vertexSerialIndex &lt; gl::IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS; vertexSerialIndex++)
+            {
+                if (colorbuffer-&gt;getTextureSerial() != 0 &amp;&amp; mCurVertexTextureSerials[vertexSerialIndex] == colorbuffer-&gt;getTextureSerial())
+                {
+                    setTexture(gl::SAMPLER_VERTEX, vertexSerialIndex, NULL);
+                }
+            }
+
+            for (unsigned int pixelSerialIndex = 0; pixelSerialIndex &lt; gl::MAX_TEXTURE_IMAGE_UNITS; pixelSerialIndex++)
+            {
+                if (colorbuffer-&gt;getTextureSerial() != 0 &amp;&amp; mCurPixelTextureSerials[pixelSerialIndex] == colorbuffer-&gt;getTextureSerial())
+                {
+                    setTexture(gl::SAMPLER_PIXEL, pixelSerialIndex, NULL);
+                }
+            }
+#endif
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1013,9 +1035,6 @@
</span><span class="cx">         mDepthStencilInitialized = true;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SafeRelease(framebufferRTVs);
-    SafeRelease(framebufferDSV);
-
</del><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1130,13 +1149,16 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (static_cast&lt;unsigned int&gt;(count + 1) &gt; (std::numeric_limits&lt;unsigned int&gt;::max() / sizeof(unsigned int)))
</del><ins>+    // Checked by Renderer11::applyPrimitiveType
+    ASSERT(count &gt;= 0);
+
+    if (static_cast&lt;unsigned int&gt;(count) + 1 &gt; (std::numeric_limits&lt;unsigned int&gt;::max() / sizeof(unsigned int)))
</ins><span class="cx">     {
</span><span class="cx">         ERR(&quot;Could not create a 32-bit looping index buffer for GL_LINE_LOOP, too many indices required.&quot;);
</span><span class="cx">         return gl::error(GL_OUT_OF_MEMORY);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    const unsigned int spaceNeeded = (count + 1) * sizeof(unsigned int);
</del><ins>+    const unsigned int spaceNeeded = (static_cast&lt;unsigned int&gt;(count) + 1) * sizeof(unsigned int);
</ins><span class="cx">     if (!mLineLoopIB-&gt;reserveBufferSpace(spaceNeeded, GL_UNSIGNED_INT))
</span><span class="cx">     {
</span><span class="cx">         ERR(&quot;Could not reserve enough space in looping index buffer for GL_LINE_LOOP.&quot;);
</span><span class="lines">@@ -1144,15 +1166,15 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void* mappedMemory = NULL;
</span><del>-    int offset = mLineLoopIB-&gt;mapBuffer(spaceNeeded, &amp;mappedMemory);
-    if (offset == -1 || mappedMemory == NULL)
</del><ins>+    unsigned int offset;
+    if (!mLineLoopIB-&gt;mapBuffer(spaceNeeded, &amp;mappedMemory, &amp;offset))
</ins><span class="cx">     {
</span><span class="cx">         ERR(&quot;Could not map index buffer for GL_LINE_LOOP.&quot;);
</span><span class="cx">         return gl::error(GL_OUT_OF_MEMORY);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     unsigned int *data = reinterpret_cast&lt;unsigned int*&gt;(mappedMemory);
</span><del>-    unsigned int indexBufferOffset = static_cast&lt;unsigned int&gt;(offset);
</del><ins>+    unsigned int indexBufferOffset = offset;
</ins><span class="cx"> 
</span><span class="cx">     switch (type)
</span><span class="cx">     {
</span><span class="lines">@@ -1230,9 +1252,12 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    // Checked by Renderer11::applyPrimitiveType
+    ASSERT(count &gt;= 3);
+
</ins><span class="cx">     const unsigned int numTris = count - 2;
</span><span class="cx"> 
</span><del>-    if (numTris * 3 &gt; (std::numeric_limits&lt;unsigned int&gt;::max() / sizeof(unsigned int)))
</del><ins>+    if (numTris &gt; (std::numeric_limits&lt;unsigned int&gt;::max() / (sizeof(unsigned int) * 3)))
</ins><span class="cx">     {
</span><span class="cx">         ERR(&quot;Could not create a scratch index buffer for GL_TRIANGLE_FAN, too many indices required.&quot;);
</span><span class="cx">         return gl::error(GL_OUT_OF_MEMORY);
</span><span class="lines">@@ -1246,15 +1271,15 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void* mappedMemory = NULL;
</span><del>-    int offset = mTriangleFanIB-&gt;mapBuffer(spaceNeeded, &amp;mappedMemory);
-    if (offset == -1 || mappedMemory == NULL)
</del><ins>+    unsigned int offset;
+    if (!mTriangleFanIB-&gt;mapBuffer(spaceNeeded, &amp;mappedMemory, &amp;offset))
</ins><span class="cx">     {
</span><span class="cx">         ERR(&quot;Could not map scratch index buffer for GL_TRIANGLE_FAN.&quot;);
</span><span class="cx">         return gl::error(GL_OUT_OF_MEMORY);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     unsigned int *data = reinterpret_cast&lt;unsigned int*&gt;(mappedMemory);
</span><del>-    unsigned int indexBufferOffset = static_cast&lt;unsigned int&gt;(offset);
</del><ins>+    unsigned int indexBufferOffset = offset;
</ins><span class="cx"> 
</span><span class="cx">     switch (type)
</span><span class="cx">     {
</span><span class="lines">@@ -1442,10 +1467,19 @@
</span><span class="cx">     {
</span><span class="cx">         mDeviceContext-&gt;Unmap(pixelConstantBuffer, 0);
</span><span class="cx">     }
</span><del>-    
-    mDeviceContext-&gt;VSSetConstantBuffers(0, 1, &amp;vertexConstantBuffer);
-    mDeviceContext-&gt;PSSetConstantBuffers(0, 1, &amp;pixelConstantBuffer);
</del><span class="cx"> 
</span><ins>+    if (mCurrentVertexConstantBuffer != vertexConstantBuffer)
+    {
+        mDeviceContext-&gt;VSSetConstantBuffers(0, 1, &amp;vertexConstantBuffer);
+        mCurrentVertexConstantBuffer = vertexConstantBuffer;
+    }
+
+    if (mCurrentPixelConstantBuffer != pixelConstantBuffer)
+    {
+        mDeviceContext-&gt;PSSetConstantBuffers(0, 1, &amp;pixelConstantBuffer);
+        mCurrentPixelConstantBuffer = pixelConstantBuffer;
+    }
+
</ins><span class="cx">     // Driver uniforms
</span><span class="cx">     if (!mDriverConstantBufferVS)
</span><span class="cx">     {
</span><span class="lines">@@ -1492,7 +1526,11 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // needed for the point sprite geometry shader
</span><del>-    mDeviceContext-&gt;GSSetConstantBuffers(0, 1, &amp;mDriverConstantBufferPS);
</del><ins>+    if (mCurrentGeometryConstantBuffer != mDriverConstantBufferPS)
+    {
+        mDeviceContext-&gt;GSSetConstantBuffers(0, 1, &amp;mDriverConstantBufferPS);
+        mCurrentGeometryConstantBuffer = mDriverConstantBufferPS;
+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Renderer11::clear(const gl::ClearParameters &amp;clearParams, gl::Framebuffer *frameBuffer)
</span><span class="lines">@@ -1549,8 +1587,6 @@
</span><span class="cx">                                                        clearParams.colorClearValue.blue,
</span><span class="cx">                                                        clearParams.colorClearValue.alpha };
</span><span class="cx">                         mDeviceContext-&gt;ClearRenderTargetView(framebufferRTV, clearValues);
</span><del>-
-                        framebufferRTV-&gt;Release();
</del><span class="cx">                     }
</span><span class="cx">                  }
</span><span class="cx">              }
</span><span class="lines">@@ -1588,8 +1624,6 @@
</span><span class="cx">                 UINT8 stencilClear = clearParams.stencilClearValue &amp; 0x000000FF;
</span><span class="cx"> 
</span><span class="cx">                 mDeviceContext-&gt;ClearDepthStencilView(framebufferDSV, clearFlags, depthClear, stencilClear);
</span><del>-
-                framebufferDSV-&gt;Release();
</del><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="lines">@@ -1797,6 +1831,14 @@
</span><span class="cx">     mAppliedProgramBinarySerial = 0;
</span><span class="cx">     memset(&amp;mAppliedVertexConstants, 0, sizeof(dx_VertexConstants));
</span><span class="cx">     memset(&amp;mAppliedPixelConstants, 0, sizeof(dx_PixelConstants));
</span><ins>+
+    mInputLayoutCache.markDirty();
+
+    mCurrentVertexConstantBuffer = NULL;
+    mCurrentPixelConstantBuffer = NULL;
+    mCurrentGeometryConstantBuffer = NULL;
+
+    mCurrentPrimitiveTopology = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Renderer11::releaseDeviceResources()
</span><span class="lines">@@ -2424,7 +2466,6 @@
</span><span class="cx">     TextureStorage11_2D *storage11 = TextureStorage11_2D::makeTextureStorage11_2D(storage-&gt;getStorageInstance());
</span><span class="cx">     if (!storage11)
</span><span class="cx">     {
</span><del>-        source-&gt;Release();
</del><span class="cx">         ERR(&quot;Failed to retrieve the texture storage from the destination.&quot;);
</span><span class="cx">         return gl::error(GL_OUT_OF_MEMORY, false);
</span><span class="cx">     }
</span><span class="lines">@@ -2432,7 +2473,6 @@
</span><span class="cx">     RenderTarget11 *destRenderTarget = RenderTarget11::makeRenderTarget11(storage11-&gt;getRenderTarget(level));
</span><span class="cx">     if (!destRenderTarget)
</span><span class="cx">     {
</span><del>-        source-&gt;Release();
</del><span class="cx">         ERR(&quot;Failed to retrieve the render target from the destination storage.&quot;);
</span><span class="cx">         return gl::error(GL_OUT_OF_MEMORY, false);
</span><span class="cx">     }
</span><span class="lines">@@ -2440,7 +2480,6 @@
</span><span class="cx">     ID3D11RenderTargetView *dest = destRenderTarget-&gt;getRenderTargetView();
</span><span class="cx">     if (!dest)
</span><span class="cx">     {
</span><del>-        source-&gt;Release();
</del><span class="cx">         ERR(&quot;Failed to retrieve the render target view from the destination render target.&quot;);
</span><span class="cx">         return gl::error(GL_OUT_OF_MEMORY, false);
</span><span class="cx">     }
</span><span class="lines">@@ -2454,9 +2493,6 @@
</span><span class="cx">     bool ret = copyTexture(source, sourceRect, sourceRenderTarget-&gt;getWidth(), sourceRenderTarget-&gt;getHeight(),
</span><span class="cx">                            dest, destRect, destRenderTarget-&gt;getWidth(), destRenderTarget-&gt;getHeight(), destFormat);
</span><span class="cx"> 
</span><del>-    source-&gt;Release();
-    dest-&gt;Release();
-
</del><span class="cx">     return ret;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2487,7 +2523,6 @@
</span><span class="cx">     TextureStorage11_Cube *storage11 = TextureStorage11_Cube::makeTextureStorage11_Cube(storage-&gt;getStorageInstance());
</span><span class="cx">     if (!storage11)
</span><span class="cx">     {
</span><del>-        source-&gt;Release();
</del><span class="cx">         ERR(&quot;Failed to retrieve the texture storage from the destination.&quot;);
</span><span class="cx">         return gl::error(GL_OUT_OF_MEMORY, false);
</span><span class="cx">     }
</span><span class="lines">@@ -2495,7 +2530,6 @@
</span><span class="cx">     RenderTarget11 *destRenderTarget = RenderTarget11::makeRenderTarget11(storage11-&gt;getRenderTarget(target, level));
</span><span class="cx">     if (!destRenderTarget)
</span><span class="cx">     {
</span><del>-        source-&gt;Release();
</del><span class="cx">         ERR(&quot;Failed to retrieve the render target from the destination storage.&quot;);
</span><span class="cx">         return gl::error(GL_OUT_OF_MEMORY, false);
</span><span class="cx">     }
</span><span class="lines">@@ -2503,7 +2537,6 @@
</span><span class="cx">     ID3D11RenderTargetView *dest = destRenderTarget-&gt;getRenderTargetView();
</span><span class="cx">     if (!dest)
</span><span class="cx">     {
</span><del>-        source-&gt;Release();
</del><span class="cx">         ERR(&quot;Failed to retrieve the render target view from the destination render target.&quot;);
</span><span class="cx">         return gl::error(GL_OUT_OF_MEMORY, false);
</span><span class="cx">     }
</span><span class="lines">@@ -2517,9 +2550,6 @@
</span><span class="cx">     bool ret = copyTexture(source, sourceRect, sourceRenderTarget-&gt;getWidth(), sourceRenderTarget-&gt;getHeight(),
</span><span class="cx">                            dest, destRect, destRenderTarget-&gt;getWidth(), destRenderTarget-&gt;getHeight(), destFormat);
</span><span class="cx"> 
</span><del>-    source-&gt;Release();
-    dest-&gt;Release();
-
</del><span class="cx">     return ret;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2800,7 +2830,7 @@
</span><span class="cx">     return executable;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ShaderExecutable *Renderer11::compileToExecutable(gl::InfoLog &amp;infoLog, const char *shaderHLSL, rx::ShaderType type)
</del><ins>+ShaderExecutable *Renderer11::compileToExecutable(gl::InfoLog &amp;infoLog, const char *shaderHLSL, rx::ShaderType type, D3DWorkaroundType workaround)
</ins><span class="cx"> {
</span><span class="cx">     const char *profile = NULL;
</span><span class="cx"> 
</span><span class="lines">@@ -2869,7 +2899,6 @@
</span><span class="cx">         {
</span><span class="cx">             ID3D11Resource *textureResource = NULL;
</span><span class="cx">             colorBufferRTV-&gt;GetResource(&amp;textureResource);
</span><del>-            colorBufferRTV-&gt;Release();
</del><span class="cx"> 
</span><span class="cx">             if (textureResource)
</span><span class="cx">             {
</span><span class="lines">@@ -3404,6 +3433,16 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(readRect.width == drawRect.width &amp;&amp; readRect.height == drawRect.height);
</span><span class="cx"> 
</span><ins>+    RenderTarget11 *drawRenderTarget11 = RenderTarget11::makeRenderTarget11(drawRenderTarget);
+    if (!drawRenderTarget)
+    {
+        ERR(&quot;Failed to retrieve the draw render target from the draw framebuffer.&quot;);
+        return gl::error(GL_OUT_OF_MEMORY, false);
+    }
+
+    ID3D11Texture2D *drawTexture = drawRenderTarget11-&gt;getTexture();
+    unsigned int drawSubresource = drawRenderTarget11-&gt;getSubresourceIndex();
+
</ins><span class="cx">     RenderTarget11 *readRenderTarget11 = RenderTarget11::makeRenderTarget11(readRenderTarget);
</span><span class="cx">     if (!readRenderTarget)
</span><span class="cx">     {
</span><span class="lines">@@ -3415,16 +3454,13 @@
</span><span class="cx">     unsigned int readSubresource = 0;
</span><span class="cx">     if (readRenderTarget-&gt;getSamples() &gt; 0)
</span><span class="cx">     {
</span><del>-        ID3D11Texture2D *unresolvedTexture = readRenderTarget11-&gt;getTexture();
-
-        readTexture = resolveMultisampledTexture(unresolvedTexture, readRenderTarget11-&gt;getSubresourceIndex());
</del><ins>+        readTexture = resolveMultisampledTexture(readRenderTarget11-&gt;getTexture(), readRenderTarget11-&gt;getSubresourceIndex());
</ins><span class="cx">         readSubresource = 0;
</span><del>-
-        unresolvedTexture-&gt;Release();
</del><span class="cx">     }
</span><span class="cx">     else
</span><span class="cx">     {
</span><span class="cx">         readTexture = readRenderTarget11-&gt;getTexture();
</span><ins>+        readTexture-&gt;AddRef();
</ins><span class="cx">         readSubresource = readRenderTarget11-&gt;getSubresourceIndex();
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -3434,17 +3470,6 @@
</span><span class="cx">         return gl::error(GL_OUT_OF_MEMORY, false);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    RenderTarget11 *drawRenderTarget11 = RenderTarget11::makeRenderTarget11(drawRenderTarget);
-    if (!drawRenderTarget)
-    {
-        readTexture-&gt;Release();
-        ERR(&quot;Failed to retrieve the draw render target from the draw framebuffer.&quot;);
-        return gl::error(GL_OUT_OF_MEMORY, false);
-    }
-
-    ID3D11Texture2D *drawTexture = drawRenderTarget11-&gt;getTexture();
-    unsigned int drawSubresource = drawRenderTarget11-&gt;getSubresourceIndex();
-
</del><span class="cx">     D3D11_BOX readBox;
</span><span class="cx">     readBox.left = readRect.x;
</span><span class="cx">     readBox.right = readRect.x + readRect.width;
</span><span class="lines">@@ -3460,8 +3485,7 @@
</span><span class="cx">     mDeviceContext-&gt;CopySubresourceRegion(drawTexture, drawSubresource, drawRect.x, drawRect.y, 0,
</span><span class="cx">                                           readTexture, readSubresource, pSrcBox);
</span><span class="cx"> 
</span><del>-    readTexture-&gt;Release();
-    drawTexture-&gt;Release();
</del><ins>+    SafeRelease(readTexture);
</ins><span class="cx"> 
</span><span class="cx">     return true;
</span><span class="cx"> }
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererRenderer11h"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer11.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer11.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer11.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -155,7 +155,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Shader operations
</span><span class="cx">     virtual ShaderExecutable *loadExecutable(const void *function, size_t length, rx::ShaderType type);
</span><del>-    virtual ShaderExecutable *compileToExecutable(gl::InfoLog &amp;infoLog, const char *shaderHLSL, rx::ShaderType type);
</del><ins>+    virtual ShaderExecutable *compileToExecutable(gl::InfoLog &amp;infoLog, const char *shaderHLSL, rx::ShaderType type, D3DWorkaroundType workaround);
</ins><span class="cx"> 
</span><span class="cx">     // Image operations
</span><span class="cx">     virtual Image *createImage();
</span><span class="lines">@@ -235,7 +235,7 @@
</span><span class="cx">         unsigned int qualityLevels[D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT];
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    typedef std::unordered_map&lt;DXGI_FORMAT, MultisampleSupportInfo&gt; MultisampleSupportMap;
</del><ins>+    typedef std::unordered_map&lt;DXGI_FORMAT, MultisampleSupportInfo, std::hash&lt;int&gt; &gt; MultisampleSupportMap;
</ins><span class="cx">     MultisampleSupportMap mMultisampleSupportMap;
</span><span class="cx"> 
</span><span class="cx">     unsigned int mMaxSupportedSamples;
</span><span class="lines">@@ -288,6 +288,9 @@
</span><span class="cx">     float mCurNear;
</span><span class="cx">     float mCurFar;
</span><span class="cx"> 
</span><ins>+    // Currently applied primitive topology
+    D3D11_PRIMITIVE_TOPOLOGY mCurrentPrimitiveTopology;
+
</ins><span class="cx">     unsigned int mAppliedIBSerial;
</span><span class="cx">     unsigned int mAppliedStorageIBSerial;
</span><span class="cx">     unsigned int mAppliedIBOffset;
</span><span class="lines">@@ -298,11 +301,15 @@
</span><span class="cx">     dx_VertexConstants mVertexConstants;
</span><span class="cx">     dx_VertexConstants mAppliedVertexConstants;
</span><span class="cx">     ID3D11Buffer *mDriverConstantBufferVS;
</span><ins>+    ID3D11Buffer *mCurrentVertexConstantBuffer;
</ins><span class="cx"> 
</span><span class="cx">     dx_PixelConstants mPixelConstants;
</span><span class="cx">     dx_PixelConstants mAppliedPixelConstants;
</span><span class="cx">     ID3D11Buffer *mDriverConstantBufferPS;
</span><ins>+    ID3D11Buffer *mCurrentPixelConstantBuffer;
</ins><span class="cx"> 
</span><ins>+    ID3D11Buffer *mCurrentGeometryConstantBuffer;
+
</ins><span class="cx">     // Vertex, index and input layouts
</span><span class="cx">     VertexDataManager *mVertexDataManager;
</span><span class="cx">     IndexDataManager *mIndexDataManager;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererRenderer9cpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer9.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer9.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer9.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -30,6 +30,8 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;libEGL/Display.h&quot;
</span><span class="cx"> 
</span><ins>+#include &quot;third_party/trace_event/trace_event.h&quot;
+
</ins><span class="cx"> // Can also be enabled by defining FORCE_REF_RAST in the project's predefined macros
</span><span class="cx"> #define REF_RAST 0
</span><span class="cx"> 
</span><span class="lines">@@ -184,10 +186,12 @@
</span><span class="cx"> 
</span><span class="cx">     if (mSoftwareDevice)
</span><span class="cx">     {
</span><ins>+        TRACE_EVENT0(&quot;gpu&quot;, &quot;GetModuleHandle_swiftshader&quot;);
</ins><span class="cx">         mD3d9Module = GetModuleHandle(TEXT(&quot;swiftshader_d3d9.dll&quot;));
</span><span class="cx">     }
</span><span class="cx">     else
</span><span class="cx">     {
</span><ins>+        TRACE_EVENT0(&quot;gpu&quot;, &quot;GetModuleHandle_d3d9&quot;);
</ins><span class="cx">         mD3d9Module = GetModuleHandle(TEXT(&quot;d3d9.dll&quot;));
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -205,12 +209,14 @@
</span><span class="cx">     // desktop. Direct3D9Ex is available in Windows Vista and later if suitable drivers are available.
</span><span class="cx">     if (ANGLE_ENABLE_D3D9EX &amp;&amp; Direct3DCreate9ExPtr &amp;&amp; SUCCEEDED(Direct3DCreate9ExPtr(D3D_SDK_VERSION, &amp;mD3d9Ex)))
</span><span class="cx">     {
</span><ins>+        TRACE_EVENT0(&quot;gpu&quot;, &quot;D3d9Ex_QueryInterface&quot;);
</ins><span class="cx">         ASSERT(mD3d9Ex);
</span><span class="cx">         mD3d9Ex-&gt;QueryInterface(IID_IDirect3D9, reinterpret_cast&lt;void**&gt;(&amp;mD3d9));
</span><span class="cx">         ASSERT(mD3d9);
</span><span class="cx">     }
</span><span class="cx">     else
</span><span class="cx">     {
</span><ins>+        TRACE_EVENT0(&quot;gpu&quot;, &quot;Direct3DCreate9&quot;);
</ins><span class="cx">         mD3d9 = Direct3DCreate9(D3D_SDK_VERSION);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -228,22 +234,25 @@
</span><span class="cx">     HRESULT result;
</span><span class="cx"> 
</span><span class="cx">     // Give up on getting device caps after about one second.
</span><del>-    for (int i = 0; i &lt; 10; ++i)
</del><span class="cx">     {
</span><del>-        result = mD3d9-&gt;GetDeviceCaps(mAdapter, mDeviceType, &amp;mDeviceCaps);
-        if (SUCCEEDED(result))
</del><ins>+        TRACE_EVENT0(&quot;gpu&quot;, &quot;GetDeviceCaps&quot;);
+        for (int i = 0; i &lt; 10; ++i)
</ins><span class="cx">         {
</span><del>-            break;
</del><ins>+            result = mD3d9-&gt;GetDeviceCaps(mAdapter, mDeviceType, &amp;mDeviceCaps);
+            if (SUCCEEDED(result))
+            {
+                break;
+            }
+            else if (result == D3DERR_NOTAVAILABLE)
+            {
+                Sleep(100);   // Give the driver some time to initialize/recover
+            }
+            else if (FAILED(result))   // D3DERR_OUTOFVIDEOMEMORY, E_OUTOFMEMORY, D3DERR_INVALIDDEVICE, or another error we can't recover from
+            {
+                ERR(&quot;failed to get device caps (0x%x)\n&quot;, result);
+                return EGL_NOT_INITIALIZED;
+            }
</ins><span class="cx">         }
</span><del>-        else if (result == D3DERR_NOTAVAILABLE)
-        {
-            Sleep(100);   // Give the driver some time to initialize/recover
-        }
-        else if (FAILED(result))   // D3DERR_OUTOFVIDEOMEMORY, E_OUTOFMEMORY, D3DERR_INVALIDDEVICE, or another error we can't recover from
-        {
-            ERR(&quot;failed to get device caps (0x%x)\n&quot;, result);
-            return EGL_NOT_INITIALIZED;
-        }
</del><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (mDeviceCaps.PixelShaderVersion &lt; D3DPS_VERSION(2, 0))
</span><span class="lines">@@ -260,7 +269,10 @@
</span><span class="cx">         return EGL_NOT_INITIALIZED;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    mD3d9-&gt;GetAdapterIdentifier(mAdapter, 0, &amp;mAdapterIdentifier);
</del><ins>+    {
+        TRACE_EVENT0(&quot;gpu&quot;, &quot;GetAdapterIdentifier&quot;);
+        mD3d9-&gt;GetAdapterIdentifier(mAdapter, 0, &amp;mAdapterIdentifier);
+    }
</ins><span class="cx"> 
</span><span class="cx">     // ATI cards on XP have problems with non-power-of-two textures.
</span><span class="cx">     mSupportsNonPower2Textures = !(mDeviceCaps.TextureCaps &amp; D3DPTEXTURECAPS_POW2) &amp;&amp;
</span><span class="lines">@@ -301,35 +313,41 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     int max = 0;
</span><del>-    for (unsigned int i = 0; i &lt; ArraySize(RenderTargetFormats); ++i)
</del><span class="cx">     {
</span><del>-        bool *multisampleArray = new bool[D3DMULTISAMPLE_16_SAMPLES + 1];
-        getMultiSampleSupport(RenderTargetFormats[i], multisampleArray);
-        mMultiSampleSupport[RenderTargetFormats[i]] = multisampleArray;
</del><ins>+        TRACE_EVENT0(&quot;gpu&quot;, &quot;getMultiSampleSupport&quot;);
+        for (unsigned int i = 0; i &lt; ArraySize(RenderTargetFormats); ++i)
+        {
+            bool *multisampleArray = new bool[D3DMULTISAMPLE_16_SAMPLES + 1];
+            getMultiSampleSupport(RenderTargetFormats[i], multisampleArray);
+            mMultiSampleSupport[RenderTargetFormats[i]] = multisampleArray;
</ins><span class="cx"> 
</span><del>-        for (int j = D3DMULTISAMPLE_16_SAMPLES; j &gt;= 0; --j)
-        {
-            if (multisampleArray[j] &amp;&amp; j != D3DMULTISAMPLE_NONMASKABLE &amp;&amp; j &gt; max)
</del><ins>+            for (int j = D3DMULTISAMPLE_16_SAMPLES; j &gt;= 0; --j)
</ins><span class="cx">             {
</span><del>-                max = j;
</del><ins>+                if (multisampleArray[j] &amp;&amp; j != D3DMULTISAMPLE_NONMASKABLE &amp;&amp; j &gt; max)
+                {
+                    max = j;
+                }
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    for (unsigned int i = 0; i &lt; ArraySize(DepthStencilFormats); ++i)
</del><span class="cx">     {
</span><del>-        if (DepthStencilFormats[i] == D3DFMT_UNKNOWN)
-            continue;
</del><ins>+        TRACE_EVENT0(&quot;gpu&quot;, &quot;getMultiSampleSupport2&quot;);
+        for (unsigned int i = 0; i &lt; ArraySize(DepthStencilFormats); ++i)
+        {
+            if (DepthStencilFormats[i] == D3DFMT_UNKNOWN)
+                continue;
</ins><span class="cx"> 
</span><del>-        bool *multisampleArray = new bool[D3DMULTISAMPLE_16_SAMPLES + 1];
-        getMultiSampleSupport(DepthStencilFormats[i], multisampleArray);
-        mMultiSampleSupport[DepthStencilFormats[i]] = multisampleArray;
</del><ins>+            bool *multisampleArray = new bool[D3DMULTISAMPLE_16_SAMPLES + 1];
+            getMultiSampleSupport(DepthStencilFormats[i], multisampleArray);
+            mMultiSampleSupport[DepthStencilFormats[i]] = multisampleArray;
</ins><span class="cx"> 
</span><del>-        for (int j = D3DMULTISAMPLE_16_SAMPLES; j &gt;= 0; --j)
-        {
-            if (multisampleArray[j] &amp;&amp; j != D3DMULTISAMPLE_NONMASKABLE &amp;&amp; j &gt; max)
</del><ins>+            for (int j = D3DMULTISAMPLE_16_SAMPLES; j &gt;= 0; --j)
</ins><span class="cx">             {
</span><del>-                max = j;
</del><ins>+                if (multisampleArray[j] &amp;&amp; j != D3DMULTISAMPLE_NONMASKABLE &amp;&amp; j &gt; max)
+                {
+                    max = j;
+                }
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="lines">@@ -339,12 +357,18 @@
</span><span class="cx">     static const TCHAR windowName[] = TEXT(&quot;AngleHiddenWindow&quot;);
</span><span class="cx">     static const TCHAR className[] = TEXT(&quot;STATIC&quot;);
</span><span class="cx"> 
</span><del>-    mDeviceWindow = CreateWindowEx(WS_EX_NOACTIVATE, className, windowName, WS_DISABLED | WS_POPUP, 0, 0, 1, 1, HWND_MESSAGE, NULL, GetModuleHandle(NULL), NULL);
</del><ins>+    {
+        TRACE_EVENT0(&quot;gpu&quot;, &quot;CreateWindowEx&quot;);
+        mDeviceWindow = CreateWindowEx(WS_EX_NOACTIVATE, className, windowName, WS_DISABLED | WS_POPUP, 0, 0, 1, 1, HWND_MESSAGE, NULL, GetModuleHandle(NULL), NULL);
+    }
</ins><span class="cx"> 
</span><span class="cx">     D3DPRESENT_PARAMETERS presentParameters = getDefaultPresentParameters();
</span><span class="cx">     DWORD behaviorFlags = D3DCREATE_FPU_PRESERVE | D3DCREATE_NOWINDOWCHANGES;
</span><span class="cx"> 
</span><del>-    result = mD3d9-&gt;CreateDevice(mAdapter, mDeviceType, mDeviceWindow, behaviorFlags | D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_PUREDEVICE, &amp;presentParameters, &amp;mDevice);
</del><ins>+    {
+        TRACE_EVENT0(&quot;gpu&quot;, &quot;D3d9_CreateDevice&quot;);
+        result = mD3d9-&gt;CreateDevice(mAdapter, mDeviceType, mDeviceWindow, behaviorFlags | D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_PUREDEVICE, &amp;presentParameters, &amp;mDevice);
+    }
</ins><span class="cx">     if (result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY || result == D3DERR_DEVICELOST)
</span><span class="cx">     {
</span><span class="cx">         return EGL_BAD_ALLOC;
</span><span class="lines">@@ -352,6 +376,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (FAILED(result))
</span><span class="cx">     {
</span><ins>+        TRACE_EVENT0(&quot;gpu&quot;, &quot;D3d9_CreateDevice2&quot;);
</ins><span class="cx">         result = mD3d9-&gt;CreateDevice(mAdapter, mDeviceType, mDeviceWindow, behaviorFlags | D3DCREATE_SOFTWARE_VERTEXPROCESSING, &amp;presentParameters, &amp;mDevice);
</span><span class="cx"> 
</span><span class="cx">         if (FAILED(result))
</span><span class="lines">@@ -363,36 +388,46 @@
</span><span class="cx"> 
</span><span class="cx">     if (mD3d9Ex)
</span><span class="cx">     {
</span><ins>+        TRACE_EVENT0(&quot;gpu&quot;, &quot;mDevice_QueryInterface&quot;);
</ins><span class="cx">         result = mDevice-&gt;QueryInterface(IID_IDirect3DDevice9Ex, (void**) &amp;mDeviceEx);
</span><span class="cx">         ASSERT(SUCCEEDED(result));
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    mVertexShaderCache.initialize(mDevice);
-    mPixelShaderCache.initialize(mDevice);
</del><ins>+    {
+        TRACE_EVENT0(&quot;gpu&quot;, &quot;ShaderCache initialize&quot;);
+        mVertexShaderCache.initialize(mDevice);
+        mPixelShaderCache.initialize(mDevice);
+    }
</ins><span class="cx"> 
</span><span class="cx">     // Check occlusion query support
</span><span class="cx">     IDirect3DQuery9 *occlusionQuery = NULL;
</span><del>-    if (SUCCEEDED(mDevice-&gt;CreateQuery(D3DQUERYTYPE_OCCLUSION, &amp;occlusionQuery)) &amp;&amp; occlusionQuery)
</del><span class="cx">     {
</span><del>-        occlusionQuery-&gt;Release();
-        mOcclusionQuerySupport = true;
</del><ins>+        TRACE_EVENT0(&quot;gpu&quot;, &quot;device_CreateQuery&quot;);
+        if (SUCCEEDED(mDevice-&gt;CreateQuery(D3DQUERYTYPE_OCCLUSION, &amp;occlusionQuery)) &amp;&amp; occlusionQuery)
+        {
+            occlusionQuery-&gt;Release();
+            mOcclusionQuerySupport = true;
+        }
+        else
+        {
+            mOcclusionQuerySupport = false;
+        }
</ins><span class="cx">     }
</span><del>-    else
-    {
-        mOcclusionQuerySupport = false;
-    }
</del><span class="cx"> 
</span><span class="cx">     // Check event query support
</span><span class="cx">     IDirect3DQuery9 *eventQuery = NULL;
</span><del>-    if (SUCCEEDED(mDevice-&gt;CreateQuery(D3DQUERYTYPE_EVENT, &amp;eventQuery)) &amp;&amp; eventQuery)
</del><span class="cx">     {
</span><del>-        eventQuery-&gt;Release();
-        mEventQuerySupport = true;
</del><ins>+        TRACE_EVENT0(&quot;gpu&quot;, &quot;device_CreateQuery2&quot;);
+        if (SUCCEEDED(mDevice-&gt;CreateQuery(D3DQUERYTYPE_EVENT, &amp;eventQuery)) &amp;&amp; eventQuery)
+        {
+            eventQuery-&gt;Release();
+            mEventQuerySupport = true;
+        }
+        else
+        {
+            mEventQuerySupport = false;
+        }
</ins><span class="cx">     }
</span><del>-    else
-    {
-        mEventQuerySupport = false;
-    }
</del><span class="cx"> 
</span><span class="cx">     D3DDISPLAYMODE currentDisplayMode;
</span><span class="cx">     mD3d9-&gt;GetAdapterDisplayMode(mAdapter, &amp;currentDisplayMode);
</span><span class="lines">@@ -1076,8 +1111,10 @@
</span><span class="cx">         return false;   // Nothing to render
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    float depthFront = !gl::IsTriangleMode(drawMode) ? 0.0f : (frontFace == GL_CCW ? 1.0f : -1.0f);
+
</ins><span class="cx">     bool viewportChanged = mForceSetViewport || memcmp(&amp;actualViewport, &amp;mCurViewport, sizeof(gl::Rectangle)) != 0 ||
</span><del>-                           actualZNear != mCurNear || actualZFar != mCurFar;
</del><ins>+                           actualZNear != mCurNear || actualZFar != mCurFar || mCurDepthFront != depthFront;
</ins><span class="cx">     if (viewportChanged)
</span><span class="cx">     {
</span><span class="cx">         mDevice-&gt;SetViewport(&amp;dxViewport);
</span><span class="lines">@@ -1085,6 +1122,7 @@
</span><span class="cx">         mCurViewport = actualViewport;
</span><span class="cx">         mCurNear = actualZNear;
</span><span class="cx">         mCurFar = actualZFar;
</span><ins>+        mCurDepthFront = depthFront;
</ins><span class="cx"> 
</span><span class="cx">         dx_VertexConstants vc = {0};
</span><span class="cx">         dx_PixelConstants pc = {0};
</span><span class="lines">@@ -1101,7 +1139,7 @@
</span><span class="cx"> 
</span><span class="cx">         pc.depthFront[0] = (actualZFar - actualZNear) * 0.5f;
</span><span class="cx">         pc.depthFront[1] = (actualZNear + actualZFar) * 0.5f;
</span><del>-        pc.depthFront[2] = !gl::IsTriangleMode(drawMode) ? 0.0f : (frontFace == GL_CCW ? 1.0f : -1.0f);;
</del><ins>+        pc.depthFront[2] = depthFront;
</ins><span class="cx"> 
</span><span class="cx">         vc.depthRange[0] = actualZNear;
</span><span class="cx">         vc.depthRange[1] = actualZFar;
</span><span class="lines">@@ -1454,7 +1492,7 @@
</span><span class="cx">         indices = static_cast&lt;const GLubyte*&gt;(storage-&gt;getData()) + offset;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    UINT startIndex = 0;
</del><ins>+    unsigned int startIndex = 0;
</ins><span class="cx"> 
</span><span class="cx">     if (get32BitIndexSupport())
</span><span class="cx">     {
</span><span class="lines">@@ -1471,13 +1509,16 @@
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        if (static_cast&lt;unsigned int&gt;(count + 1) &gt; (std::numeric_limits&lt;unsigned int&gt;::max() / sizeof(unsigned int)))
</del><ins>+        if (static_cast&lt;unsigned int&gt;(count) + 1 &gt; (std::numeric_limits&lt;unsigned int&gt;::max() / sizeof(unsigned int)))
</ins><span class="cx">         {
</span><span class="cx">             ERR(&quot;Could not create a 32-bit looping index buffer for GL_LINE_LOOP, too many indices required.&quot;);
</span><span class="cx">             return gl::error(GL_OUT_OF_MEMORY);
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        const unsigned int spaceNeeded = (count + 1) * sizeof(unsigned int);
</del><ins>+        // Checked by Renderer9::applyPrimitiveType
+        ASSERT(count &gt;= 0);
+
+        const unsigned int spaceNeeded = (static_cast&lt;unsigned int&gt;(count) + 1) * sizeof(unsigned int);
</ins><span class="cx">         if (!mLineLoopIB-&gt;reserveBufferSpace(spaceNeeded, GL_UNSIGNED_INT))
</span><span class="cx">         {
</span><span class="cx">             ERR(&quot;Could not reserve enough space in looping index buffer for GL_LINE_LOOP.&quot;);
</span><span class="lines">@@ -1485,14 +1526,14 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         void* mappedMemory = NULL;
</span><del>-        int offset = mLineLoopIB-&gt;mapBuffer(spaceNeeded, &amp;mappedMemory);
-        if (offset == -1 || mappedMemory == NULL)
</del><ins>+        unsigned int offset = 0;
+        if (!mLineLoopIB-&gt;mapBuffer(spaceNeeded, &amp;mappedMemory, &amp;offset))
</ins><span class="cx">         {
</span><span class="cx">             ERR(&quot;Could not map index buffer for GL_LINE_LOOP.&quot;);
</span><span class="cx">             return gl::error(GL_OUT_OF_MEMORY);
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        startIndex = static_cast&lt;UINT&gt;(offset) / 4;
</del><ins>+        startIndex = static_cast&lt;unsigned int&gt;(offset) / 4;
</ins><span class="cx">         unsigned int *data = reinterpret_cast&lt;unsigned int*&gt;(mappedMemory);
</span><span class="cx"> 
</span><span class="cx">         switch (type)
</span><span class="lines">@@ -1549,13 +1590,16 @@
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        if (static_cast&lt;unsigned int&gt;(count + 1) &gt; (std::numeric_limits&lt;unsigned short&gt;::max() / sizeof(unsigned short)))
</del><ins>+        // Checked by Renderer9::applyPrimitiveType
+        ASSERT(count &gt;= 0);
+
+        if (static_cast&lt;unsigned int&gt;(count) + 1 &gt; (std::numeric_limits&lt;unsigned short&gt;::max() / sizeof(unsigned short)))
</ins><span class="cx">         {
</span><span class="cx">             ERR(&quot;Could not create a 16-bit looping index buffer for GL_LINE_LOOP, too many indices required.&quot;);
</span><span class="cx">             return gl::error(GL_OUT_OF_MEMORY);
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        const int spaceNeeded = (count + 1) * sizeof(unsigned short);
</del><ins>+        const unsigned int spaceNeeded = (static_cast&lt;unsigned int&gt;(count) + 1) * sizeof(unsigned short);
</ins><span class="cx">         if (!mLineLoopIB-&gt;reserveBufferSpace(spaceNeeded, GL_UNSIGNED_SHORT))
</span><span class="cx">         {
</span><span class="cx">             ERR(&quot;Could not reserve enough space in looping index buffer for GL_LINE_LOOP.&quot;);
</span><span class="lines">@@ -1563,14 +1607,14 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         void* mappedMemory = NULL;
</span><del>-        int offset = mLineLoopIB-&gt;mapBuffer(spaceNeeded, &amp;mappedMemory);
-        if (offset == -1 || mappedMemory == NULL)
</del><ins>+        unsigned int offset;
+        if (mLineLoopIB-&gt;mapBuffer(spaceNeeded, &amp;mappedMemory, &amp;offset))
</ins><span class="cx">         {
</span><span class="cx">             ERR(&quot;Could not map index buffer for GL_LINE_LOOP.&quot;);
</span><span class="cx">             return gl::error(GL_OUT_OF_MEMORY);
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        startIndex = static_cast&lt;UINT&gt;(offset) / 2;
</del><ins>+        startIndex = static_cast&lt;unsigned int&gt;(offset) / 2;
</ins><span class="cx">         unsigned short *data = reinterpret_cast&lt;unsigned short*&gt;(mappedMemory);
</span><span class="cx"> 
</span><span class="cx">         switch (type)
</span><span class="lines">@@ -3085,7 +3129,7 @@
</span><span class="cx">     return executable;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ShaderExecutable *Renderer9::compileToExecutable(gl::InfoLog &amp;infoLog, const char *shaderHLSL, rx::ShaderType type)
</del><ins>+ShaderExecutable *Renderer9::compileToExecutable(gl::InfoLog &amp;infoLog, const char *shaderHLSL, rx::ShaderType type, D3DWorkaroundType workaround)
</ins><span class="cx"> {
</span><span class="cx">     const char *profile = NULL;
</span><span class="cx"> 
</span><span class="lines">@@ -3102,7 +3146,11 @@
</span><span class="cx">         return NULL;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ID3DBlob *binary = (ID3DBlob*)compileToBinary(infoLog, shaderHLSL, profile, ANGLE_COMPILE_OPTIMIZATION_LEVEL, true);
</del><ins>+    // ANGLE issue 486:
+    // Work-around a D3D9 compiler bug that presents itself when using conditional discard, by disabling optimization
+    UINT optimizationFlags = (workaround == ANGLE_D3D_WORKAROUND_SM3_OPTIMIZER ? D3DCOMPILE_SKIP_OPTIMIZATION : ANGLE_COMPILE_OPTIMIZATION_LEVEL);
+
+    ID3DBlob *binary = (ID3DBlob*)compileToBinary(infoLog, shaderHLSL, profile, optimizationFlags, true);
</ins><span class="cx">     if (!binary)
</span><span class="cx">         return NULL;
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererRenderer9h"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer9.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer9.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/Renderer9.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -170,7 +170,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Shader operations
</span><span class="cx">     virtual ShaderExecutable *loadExecutable(const void *function, size_t length, rx::ShaderType type);
</span><del>-    virtual ShaderExecutable *compileToExecutable(gl::InfoLog &amp;infoLog, const char *shaderHLSL, rx::ShaderType type);
</del><ins>+    virtual ShaderExecutable *compileToExecutable(gl::InfoLog &amp;infoLog, const char *shaderHLSL, rx::ShaderType type, D3DWorkaroundType workaround);
</ins><span class="cx"> 
</span><span class="cx">     // Image operations
</span><span class="cx">     virtual Image *createImage();
</span><span class="lines">@@ -298,6 +298,7 @@
</span><span class="cx">     gl::Rectangle mCurViewport;
</span><span class="cx">     float mCurNear;
</span><span class="cx">     float mCurFar;
</span><ins>+    float mCurDepthFront;
</ins><span class="cx"> 
</span><span class="cx">     bool mForceSetBlendState;
</span><span class="cx">     gl::BlendState mCurBlendState;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererSwapChainh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -12,6 +12,10 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;common/angleutils.h&quot;
</span><span class="cx"> 
</span><ins>+#if !defined(ANGLE_FORCE_VSYNC_OFF)
+#define ANGLE_FORCE_VSYNC_OFF 0
+#endif
+
</ins><span class="cx"> namespace rx
</span><span class="cx"> {
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererSwapChain11cpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain11.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain11.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain11.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -275,6 +275,7 @@
</span><span class="cx">             else
</span><span class="cx">             {
</span><span class="cx">                 result = offscreenTextureResource-&gt;GetSharedHandle(&amp;mShareHandle);
</span><ins>+                offscreenTextureResource-&gt;Release();
</ins><span class="cx"> 
</span><span class="cx">                 if (FAILED(result))
</span><span class="cx">                 {
</span><span class="lines">@@ -464,18 +465,6 @@
</span><span class="cx"> 
</span><span class="cx">     if (mWindow)
</span><span class="cx">     {
</span><del>-        // We cannot create a swap chain for an HWND that is owned by a different process
-        DWORD currentProcessId = GetCurrentProcessId();
-        DWORD wndProcessId;
-        GetWindowThreadProcessId(mWindow, &amp;wndProcessId);
-
-        if (currentProcessId != wndProcessId)
-        {
-            ERR(&quot;Could not create swap chain, window owned by different process&quot;);
-            release();
-            return EGL_BAD_NATIVE_WINDOW;
-        }
-
</del><span class="cx">         IDXGIFactory *factory = mRenderer-&gt;getDxgiFactory();
</span><span class="cx"> 
</span><span class="cx">         DXGI_SWAP_CHAIN_DESC swapChainDesc = {0};
</span><span class="lines">@@ -507,7 +496,21 @@
</span><span class="cx">             }
</span><span class="cx">             else
</span><span class="cx">             {
</span><del>-                return EGL_BAD_ALLOC;
</del><ins>+                // We cannot create a swap chain for an HWND that is owned by a different process on some versions of
+                // windows
+                DWORD currentProcessId = GetCurrentProcessId();
+                DWORD wndProcessId;
+                GetWindowThreadProcessId(mWindow, &amp;wndProcessId);
+
+                if (currentProcessId != wndProcessId)
+                {
+                    ERR(&quot;Could not create swap chain, window owned by different process&quot;);
+                    return EGL_BAD_NATIVE_WINDOW;
+                }
+                else
+                {
+                    return EGL_BAD_ALLOC;
+                }
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -667,7 +670,12 @@
</span><span class="cx"> 
</span><span class="cx">     // Draw
</span><span class="cx">     deviceContext-&gt;Draw(4, 0);
</span><ins>+
+#if ANGLE_FORCE_VSYNC_OFF
+    result = mSwapChain-&gt;Present(0, 0);
+#else
</ins><span class="cx">     result = mSwapChain-&gt;Present(mSwapInterval, 0);
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx">     if (result == DXGI_ERROR_DEVICE_REMOVED)
</span><span class="cx">     {
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererSwapChain9cpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain9.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain9.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/SwapChain9.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -71,6 +71,9 @@
</span><span class="cx"> 
</span><span class="cx"> static DWORD convertInterval(EGLint interval)
</span><span class="cx"> {
</span><ins>+#if ANGLE_FORCE_VSYNC_OFF
+    return D3DPRESENT_INTERVAL_IMMEDIATE;
+#else
</ins><span class="cx">     switch(interval)
</span><span class="cx">     {
</span><span class="cx">       case 0: return D3DPRESENT_INTERVAL_IMMEDIATE;
</span><span class="lines">@@ -82,6 +85,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return D3DPRESENT_INTERVAL_DEFAULT;
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> EGLint SwapChain9::resize(int backbufferWidth, int backbufferHeight)
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererTextureStorage11cpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/TextureStorage11.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/TextureStorage11.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/TextureStorage11.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -69,7 +69,6 @@
</span><span class="cx">       case DXGI_FORMAT_R8G8B8A8_UNORM:
</span><span class="cx">       case DXGI_FORMAT_A8_UNORM:
</span><span class="cx">       case DXGI_FORMAT_R32G32B32A32_FLOAT:
</span><del>-      case DXGI_FORMAT_R32G32B32_FLOAT:
</del><span class="cx">       case DXGI_FORMAT_R16G16B16A16_FLOAT:
</span><span class="cx">       case DXGI_FORMAT_B8G8R8A8_UNORM:
</span><span class="cx">       case DXGI_FORMAT_R8_UNORM:
</span><span class="lines">@@ -80,6 +79,7 @@
</span><span class="cx">       case DXGI_FORMAT_BC1_UNORM:
</span><span class="cx">       case DXGI_FORMAT_BC2_UNORM: 
</span><span class="cx">       case DXGI_FORMAT_BC3_UNORM:
</span><ins>+      case DXGI_FORMAT_R32G32B32_FLOAT: // not renderable on all devices
</ins><span class="cx">         return false;
</span><span class="cx">       default:
</span><span class="cx">         UNREACHABLE();
</span><span class="lines">@@ -187,15 +187,6 @@
</span><span class="cx">                                    destRTV, destArea, dest-&gt;getWidth(), dest-&gt;getHeight(),
</span><span class="cx">                                    GL_RGBA);
</span><span class="cx">         }
</span><del>-
-        if (sourceSRV)
-        {
-            sourceSRV-&gt;Release();
-        }
-        if (destRTV)
-        {
-            destRTV-&gt;Release();
-        }
</del><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -558,7 +549,7 @@
</span><span class="cx"> 
</span><span class="cx">             D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;
</span><span class="cx">             srvDesc.Format = mShaderResourceFormat;
</span><del>-            srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURECUBE;
</del><ins>+            srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2DARRAY; // Will be used with Texture2D sampler, not TextureCube
</ins><span class="cx">             srvDesc.Texture2DArray.MostDetailedMip = level;
</span><span class="cx">             srvDesc.Texture2DArray.MipLevels = 1;
</span><span class="cx">             srvDesc.Texture2DArray.FirstArraySlice = faceIdx;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererVertexBuffercpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -87,47 +87,76 @@
</span><span class="cx">     return mVertexBuffer-&gt;discard();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-int VertexBufferInterface::storeVertexAttributes(const gl::VertexAttribute &amp;attrib, GLint start, GLsizei count, GLsizei instances)
</del><ins>+bool VertexBufferInterface::storeVertexAttributes(const gl::VertexAttribute &amp;attrib,  GLint start, GLsizei count, GLsizei instances,
+                                                  unsigned int *outStreamOffset)
</ins><span class="cx"> {
</span><ins>+    unsigned int spaceRequired;
+    if (!mVertexBuffer-&gt;getSpaceRequired(attrib, count, instances, &amp;spaceRequired))
+    {
+        return false;
+    }
+
+    if (mWritePosition + spaceRequired &lt; mWritePosition)
+    {
+        return false;
+    }
+
</ins><span class="cx">     if (!reserveSpace(mReservedSpace))
</span><span class="cx">     {
</span><del>-        return -1;
</del><ins>+        return false;
</ins><span class="cx">     }
</span><span class="cx">     mReservedSpace = 0;
</span><span class="cx"> 
</span><span class="cx">     if (!mVertexBuffer-&gt;storeVertexAttributes(attrib, start, count, instances, mWritePosition))
</span><span class="cx">     {
</span><del>-        return -1;
</del><ins>+        return false;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    int oldWritePos = static_cast&lt;int&gt;(mWritePosition);
-    mWritePosition += mVertexBuffer-&gt;getSpaceRequired(attrib, count, instances);
</del><ins>+    if (outStreamOffset)
+    {
+        *outStreamOffset = mWritePosition;
+    }
</ins><span class="cx"> 
</span><del>-    return oldWritePos;
</del><ins>+    mWritePosition += spaceRequired;
+
+    return true;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-int VertexBufferInterface::storeRawData(const void* data, unsigned int size)
</del><ins>+bool VertexBufferInterface::storeRawData(const void* data, unsigned int size, unsigned int *outStreamOffset)
</ins><span class="cx"> {
</span><ins>+    if (mWritePosition + size &lt; mWritePosition)
+    {
+        return false;
+    }
+
</ins><span class="cx">     if (!reserveSpace(mReservedSpace))
</span><span class="cx">     {
</span><del>-        return -1;
</del><ins>+        return false;
</ins><span class="cx">     }
</span><span class="cx">     mReservedSpace = 0;
</span><span class="cx"> 
</span><span class="cx">     if (!mVertexBuffer-&gt;storeRawData(data, size, mWritePosition))
</span><span class="cx">     {
</span><del>-        return -1;
</del><ins>+        return false;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    int oldWritePos = static_cast&lt;int&gt;(mWritePosition);
</del><ins>+    if (outStreamOffset)
+    {
+        *outStreamOffset = mWritePosition;
+    }
+
</ins><span class="cx">     mWritePosition += size;
</span><span class="cx"> 
</span><del>-    return oldWritePos;
</del><ins>+    return true;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool VertexBufferInterface::reserveVertexSpace(const gl::VertexAttribute &amp;attribute, GLsizei count, GLsizei instances)
</span><span class="cx"> {
</span><del>-    unsigned int requiredSpace = mVertexBuffer-&gt;getSpaceRequired(attribute, count, instances);
</del><ins>+    unsigned int requiredSpace;
+    if (!mVertexBuffer-&gt;getSpaceRequired(attribute, count, instances, &amp;requiredSpace))
+    {
+        return false;
+    }
</ins><span class="cx"> 
</span><span class="cx">     // Protect against integer overflow
</span><span class="cx">     if (mReservedSpace + requiredSpace &lt; mReservedSpace)
</span><span class="lines">@@ -195,7 +224,7 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-int StaticVertexBufferInterface::lookupAttribute(const gl::VertexAttribute &amp;attribute)
</del><ins>+bool StaticVertexBufferInterface::lookupAttribute(const gl::VertexAttribute &amp;attribute, unsigned int *outStreamOffset)
</ins><span class="cx"> {
</span><span class="cx">     for (unsigned int element = 0; element &lt; mCache.size(); element++)
</span><span class="cx">     {
</span><span class="lines">@@ -206,12 +235,16 @@
</span><span class="cx">         {
</span><span class="cx">             if (mCache[element].attributeOffset == attribute.mOffset % attribute.stride())
</span><span class="cx">             {
</span><del>-                return mCache[element].streamOffset;
</del><ins>+                if (outStreamOffset)
+                {
+                    *outStreamOffset = mCache[element].streamOffset;
+                }
+                return true;
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return -1;
</del><ins>+    return false;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool StaticVertexBufferInterface::reserveSpace(unsigned int size)
</span><span class="lines">@@ -233,13 +266,27 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-int StaticVertexBufferInterface::storeVertexAttributes(const gl::VertexAttribute &amp;attrib, GLint start, GLsizei count, GLsizei instances)
</del><ins>+bool StaticVertexBufferInterface::storeVertexAttributes(const gl::VertexAttribute &amp;attrib, GLint start, GLsizei count, GLsizei instances,
+                                                        unsigned int *outStreamOffset)
</ins><span class="cx"> {
</span><del>-    int attributeOffset = attrib.mOffset % attrib.stride();
-    VertexElement element = { attrib.mType, attrib.mSize, attrib.stride(), attrib.mNormalized, attributeOffset, getWritePosition() };
-    mCache.push_back(element);
</del><ins>+    unsigned int streamOffset;
+    if (VertexBufferInterface::storeVertexAttributes(attrib, start, count, instances, &amp;streamOffset))
+    {
+        int attributeOffset = attrib.mOffset % attrib.stride();
+        VertexElement element = { attrib.mType, attrib.mSize, attrib.stride(), attrib.mNormalized, attributeOffset, streamOffset };
+        mCache.push_back(element);
</ins><span class="cx"> 
</span><del>-    return VertexBufferInterface::storeVertexAttributes(attrib, start, count, instances);
</del><ins>+        if (outStreamOffset)
+        {
+            *outStreamOffset = streamOffset;
+        }
+
+        return true;
+    }
+    else
+    {
+        return false;
+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererVertexBufferh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -33,8 +33,8 @@
</span><span class="cx">                                        GLsizei instances, unsigned int offset) = 0;
</span><span class="cx">     virtual bool storeRawData(const void* data, unsigned int size, unsigned int offset) = 0;
</span><span class="cx"> 
</span><del>-    virtual unsigned int getSpaceRequired(const gl::VertexAttribute &amp;attrib, GLsizei count,
-                                          GLsizei instances) const = 0;
</del><ins>+    virtual bool getSpaceRequired(const gl::VertexAttribute &amp;attrib, GLsizei count, GLsizei instances,
+                                  unsigned int *outSpaceRequired) const = 0;
</ins><span class="cx"> 
</span><span class="cx">     virtual bool requiresConversion(const gl::VertexAttribute &amp;attrib) const = 0;
</span><span class="cx"> 
</span><span class="lines">@@ -67,8 +67,9 @@
</span><span class="cx"> 
</span><span class="cx">     unsigned int getSerial() const;
</span><span class="cx"> 
</span><del>-    virtual int storeVertexAttributes(const gl::VertexAttribute &amp;attrib, GLint start, GLsizei count, GLsizei instances);
-    virtual int storeRawData(const void* data, unsigned int size);
</del><ins>+    virtual bool storeVertexAttributes(const gl::VertexAttribute &amp;attrib, GLint start, GLsizei count, GLsizei instances,
+                                      unsigned int *outStreamOffset);
+    virtual bool storeRawData(const void* data, unsigned int size, unsigned int *outStreamOffset);
</ins><span class="cx"> 
</span><span class="cx">     VertexBuffer* getVertexBuffer() const;
</span><span class="cx"> 
</span><span class="lines">@@ -110,10 +111,10 @@
</span><span class="cx">     explicit StaticVertexBufferInterface(rx::Renderer *renderer);
</span><span class="cx">     ~StaticVertexBufferInterface();
</span><span class="cx"> 
</span><del>-    int storeVertexAttributes(const gl::VertexAttribute &amp;attrib, GLint start, GLsizei count, GLsizei instances);
</del><ins>+    bool storeVertexAttributes(const gl::VertexAttribute &amp;attrib, GLint start, GLsizei count, GLsizei instances,
+                               unsigned int *outStreamOffset);
</ins><span class="cx"> 
</span><del>-    // Returns the offset into the vertex buffer, or -1 if not found
-    int lookupAttribute(const gl::VertexAttribute &amp;attribute);
</del><ins>+    bool lookupAttribute(const gl::VertexAttribute &amp;attribute, unsigned int* outStreamOffset);
</ins><span class="cx"> 
</span><span class="cx">   protected:
</span><span class="cx">     bool reserveSpace(unsigned int size);
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererVertexBuffer11cpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer11.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer11.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer11.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -152,19 +152,41 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-unsigned int VertexBuffer11::getSpaceRequired(const gl::VertexAttribute &amp;attrib, GLsizei count,
-                                              GLsizei instances) const
</del><ins>+bool VertexBuffer11::getSpaceRequired(const gl::VertexAttribute &amp;attrib, GLsizei count,
+                                      GLsizei instances, unsigned int *outSpaceRequired) const
</ins><span class="cx"> {
</span><span class="cx">     unsigned int elementSize = getVertexConversion(attrib).outputElementSize;
</span><span class="cx"> 
</span><ins>+    unsigned int elementCount = 0;
</ins><span class="cx">     if (instances == 0 || attrib.mDivisor == 0)
</span><span class="cx">     {
</span><del>-        return elementSize * count;
</del><ins>+        elementCount = count;
</ins><span class="cx">     }
</span><span class="cx">     else
</span><span class="cx">     {
</span><del>-        return elementSize * ((instances + attrib.mDivisor - 1) / attrib.mDivisor);
</del><ins>+        if (static_cast&lt;unsigned int&gt;(instances) &lt; std::numeric_limits&lt;unsigned int&gt;::max() - (attrib.mDivisor - 1))
+        {
+            // Round up
+            elementCount = (static_cast&lt;unsigned int&gt;(instances) + (attrib.mDivisor - 1)) / attrib.mDivisor;
+        }
+        else
+        {
+            elementCount = instances / attrib.mDivisor;
+        }
</ins><span class="cx">     }
</span><ins>+
+    if (elementSize &lt;= std::numeric_limits&lt;unsigned int&gt;::max() / elementCount)
+    {
+        if (outSpaceRequired)
+        {
+            *outSpaceRequired = elementSize * elementCount;
+        }
+        return true;
+    }
+    else
+    {
+        return false;
+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool VertexBuffer11::requiresConversion(const gl::VertexAttribute &amp;attrib) const
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererVertexBuffer11h"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer11.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer11.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer11.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -26,10 +26,11 @@
</span><span class="cx">     static VertexBuffer11 *makeVertexBuffer11(VertexBuffer *vetexBuffer);
</span><span class="cx"> 
</span><span class="cx">     virtual bool storeVertexAttributes(const gl::VertexAttribute &amp;attrib, GLint start, GLsizei count, GLsizei instances,
</span><del>-                                 unsigned int offset);
</del><ins>+                                       unsigned int offset);
</ins><span class="cx">     virtual bool storeRawData(const void* data, unsigned int size, unsigned int offset);
</span><span class="cx"> 
</span><del>-    virtual unsigned int getSpaceRequired(const gl::VertexAttribute &amp;attrib, GLsizei count, GLsizei instances) const;
</del><ins>+    virtual bool getSpaceRequired(const gl::VertexAttribute &amp;attrib, GLsizei count, GLsizei instances,
+                                  unsigned int *outSpaceRequired) const;
</ins><span class="cx"> 
</span><span class="cx">     virtual bool requiresConversion(const gl::VertexAttribute &amp;attrib) const;
</span><span class="cx"> 
</span><span class="lines">@@ -70,4 +71,4 @@
</span><span class="cx"> 
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#endif // LIBGLESV2_RENDERER_VERTEXBUFFER11_H_
</del><span class="cx">\ No newline at end of file
</span><ins>+#endif // LIBGLESV2_RENDERER_VERTEXBUFFER11_H_
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererVertexBuffer9cpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer9.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer9.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer9.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -95,8 +95,15 @@
</span><span class="cx">         DWORD lockFlags = mDynamicUsage ? D3DLOCK_NOOVERWRITE : 0;
</span><span class="cx"> 
</span><span class="cx">         void *mapPtr = NULL;
</span><del>-        HRESULT result = mVertexBuffer-&gt;Lock(offset, spaceRequired(attrib, count, instances), &amp;mapPtr, lockFlags);
</del><span class="cx"> 
</span><ins>+        unsigned int mapSize;
+        if (!spaceRequired(attrib, count, instances, &amp;mapSize))
+        {
+            return false;
+        }
+
+        HRESULT result = mVertexBuffer-&gt;Lock(offset, mapSize, &amp;mapPtr, lockFlags);
+
</ins><span class="cx">         if (FAILED(result))
</span><span class="cx">         {
</span><span class="cx">             ERR(&quot;Lock failed with error 0x%08x&quot;, result);
</span><span class="lines">@@ -167,19 +174,21 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-unsigned int VertexBuffer9::getSpaceRequired(const gl::VertexAttribute &amp;attrib, GLsizei count, GLsizei instances) const
</del><ins>+bool VertexBuffer9::getSpaceRequired(const gl::VertexAttribute &amp;attrib, GLsizei count, GLsizei instances,
+                                     unsigned int *outSpaceRequired) const
</ins><span class="cx"> {
</span><del>-    return spaceRequired(attrib, count, instances);
</del><ins>+    return spaceRequired(attrib, count, instances, outSpaceRequired);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool VertexBuffer9::requiresConversion(const gl::VertexAttribute &amp;attrib) const
</span><span class="cx"> {
</span><del>-    return formatConverter(attrib).identity;
</del><ins>+    return !formatConverter(attrib).identity;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> unsigned int VertexBuffer9::getVertexSize(const gl::VertexAttribute &amp;attrib) const
</span><span class="cx"> {
</span><del>-    return spaceRequired(attrib, 1, 0);
</del><ins>+    unsigned int spaceRequired;
+    return getSpaceRequired(attrib, 1, 0, &amp;spaceRequired) ? spaceRequired : 0;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> D3DDECLTYPE VertexBuffer9::getDeclType(const gl::VertexAttribute &amp;attrib) const
</span><span class="lines">@@ -469,17 +478,52 @@
</span><span class="cx">     return mFormatConverters[typeIndex(attribute.mType)][attribute.mNormalized][attribute.mSize - 1];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-unsigned int VertexBuffer9::spaceRequired(const gl::VertexAttribute &amp;attrib, std::size_t count, GLsizei instances)
</del><ins>+bool VertexBuffer9::spaceRequired(const gl::VertexAttribute &amp;attrib, std::size_t count, GLsizei instances,
+                                  unsigned int *outSpaceRequired)
</ins><span class="cx"> {
</span><span class="cx">     unsigned int elementSize = formatConverter(attrib).outputElementSize;
</span><span class="cx"> 
</span><del>-    if (instances == 0 || attrib.mDivisor == 0)
</del><ins>+    if (attrib.mArrayEnabled)
</ins><span class="cx">     {
</span><del>-        return elementSize * count;
</del><ins>+        unsigned int elementCount = 0;
+        if (instances == 0 || attrib.mDivisor == 0)
+        {
+            elementCount = count;
+        }
+        else
+        {
+            if (static_cast&lt;unsigned int&gt;(instances) &lt; std::numeric_limits&lt;unsigned int&gt;::max() - (attrib.mDivisor - 1))
+            {
+                // Round up
+                elementCount = (static_cast&lt;unsigned int&gt;(instances) + (attrib.mDivisor - 1)) / attrib.mDivisor;
+            }
+            else
+            {
+                elementCount = static_cast&lt;unsigned int&gt;(instances) / attrib.mDivisor;
+            }
+        }
+
+        if (elementSize &lt;= std::numeric_limits&lt;unsigned int&gt;::max() / elementCount)
+        {
+            if (outSpaceRequired)
+            {
+                *outSpaceRequired = elementSize * elementCount;
+            }
+            return true;
+        }
+        else
+        {
+            return false;
+        }
</ins><span class="cx">     }
</span><span class="cx">     else
</span><span class="cx">     {
</span><del>-        return elementSize * ((instances + attrib.mDivisor - 1) / attrib.mDivisor);
</del><ins>+        const unsigned int elementSize = 4;
+        if (outSpaceRequired)
+        {
+            *outSpaceRequired = elementSize * 4;
+        }
+        return true;
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererVertexBuffer9h"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer9.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer9.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexBuffer9.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx">                                        unsigned int offset);
</span><span class="cx">     virtual bool storeRawData(const void* data, unsigned int size, unsigned int offset);
</span><span class="cx"> 
</span><del>-    virtual unsigned int getSpaceRequired(const gl::VertexAttribute &amp;attrib, GLsizei count, GLsizei instances) const;
</del><ins>+    virtual bool getSpaceRequired(const gl::VertexAttribute &amp;attrib, GLsizei count, GLsizei instances, unsigned int *outSpaceRequired) const;
</ins><span class="cx"> 
</span><span class="cx">     virtual bool requiresConversion(const gl::VertexAttribute &amp;attrib) const;
</span><span class="cx"> 
</span><span class="lines">@@ -82,7 +82,8 @@
</span><span class="cx">     static unsigned int typeIndex(GLenum type);
</span><span class="cx">     static const FormatConverter &amp;formatConverter(const gl::VertexAttribute &amp;attribute);
</span><span class="cx"> 
</span><del>-    static unsigned int spaceRequired(const gl::VertexAttribute &amp;attrib, std::size_t count, GLsizei instances);
</del><ins>+    static bool spaceRequired(const gl::VertexAttribute &amp;attrib, std::size_t count, GLsizei instances,
+                              unsigned int *outSpaceRequired);
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererVertexDataManagercpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexDataManager.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexDataManager.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexDataManager.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -26,12 +26,32 @@
</span><span class="cx"> namespace rx
</span><span class="cx"> {
</span><span class="cx"> 
</span><del>-static int elementsInBuffer(const gl::VertexAttribute &amp;attribute, int size)
</del><ins>+static int elementsInBuffer(const gl::VertexAttribute &amp;attribute, unsigned int size)
</ins><span class="cx"> {
</span><del>-    int stride = attribute.stride();
</del><ins>+    // Size cannot be larger than a GLsizei
+    if (size &gt; static_cast&lt;unsigned int&gt;(std::numeric_limits&lt;int&gt;::max()))
+    {
+        size = static_cast&lt;unsigned int&gt;(std::numeric_limits&lt;int&gt;::max());
+    }
+
+    GLsizei stride = attribute.stride();
</ins><span class="cx">     return (size - attribute.mOffset % stride + (stride - attribute.typeSize())) / stride;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static int StreamingBufferElementCount(const gl::VertexAttribute &amp;attribute, int vertexDrawCount, int instanceDrawCount)
+{
+    // For instanced rendering, we draw &quot;instanceDrawCount&quot; sets of &quot;vertexDrawCount&quot; vertices.
+    //
+    // A vertex attribute with a positive divisor loads one instanced vertex for every set of
+    // non-instanced vertices, and the instanced vertex index advances once every &quot;mDivisor&quot; instances.
+    if (instanceDrawCount &gt; 0 &amp;&amp; attribute.mDivisor &gt; 0)
+    {
+        return instanceDrawCount / attribute.mDivisor;
+    }
+
+    return vertexDrawCount;
+}
+
</ins><span class="cx"> VertexDataManager::VertexDataManager(Renderer *renderer) : mRenderer(renderer)
</span><span class="cx"> {
</span><span class="cx">     for (int i = 0; i &lt; gl::MAX_VERTEX_ATTRIBS; i++)
</span><span class="lines">@@ -92,7 +112,7 @@
</span><span class="cx">             gl::Buffer *buffer = attribs[i].mBoundBuffer.get();
</span><span class="cx">             StaticVertexBufferInterface *staticBuffer = buffer ? buffer-&gt;getStaticVertexBuffer() : NULL;
</span><span class="cx"> 
</span><del>-            if (staticBuffer &amp;&amp; staticBuffer-&gt;getBufferSize() &gt; 0 &amp;&amp; staticBuffer-&gt;lookupAttribute(attribs[i]) == -1 &amp;&amp;
</del><ins>+            if (staticBuffer &amp;&amp; staticBuffer-&gt;getBufferSize() &gt; 0 &amp;&amp; !staticBuffer-&gt;lookupAttribute(attribs[i], NULL) &amp;&amp;
</ins><span class="cx">                 !directStoragePossible(staticBuffer, attribs[i]))
</span><span class="cx">             {
</span><span class="cx">                 buffer-&gt;invalidateStaticData();
</span><span class="lines">@@ -124,8 +144,17 @@
</span><span class="cx">                 }
</span><span class="cx">                 else
</span><span class="cx">                 {
</span><del>-                    if (!mStreamingBuffer-&gt;reserveVertexSpace(attribs[i], count, instances))
</del><ins>+                    int totalCount = StreamingBufferElementCount(attribs[i], count, instances);
+
+                    // Undefined behaviour:
+                    // We can return INVALID_OPERATION if our vertex attribute does not have enough backing data.
+                    if (buffer &amp;&amp; elementsInBuffer(attribs[i], buffer-&gt;size()) &lt; totalCount)
</ins><span class="cx">                     {
</span><ins>+                        return GL_INVALID_OPERATION;
+                    }
+
+                    if (!mStreamingBuffer-&gt;reserveVertexSpace(attribs[i], totalCount, instances))
+                    {
</ins><span class="cx">                         return GL_OUT_OF_MEMORY;
</span><span class="cx">                     }
</span><span class="cx">                 }
</span><span class="lines">@@ -155,7 +184,7 @@
</span><span class="cx">                 BufferStorage *storage = buffer ? buffer-&gt;getStorage() : NULL;
</span><span class="cx">                 bool directStorage = directStoragePossible(vertexBuffer, attribs[i]);
</span><span class="cx"> 
</span><del>-                std::size_t streamOffset = -1;
</del><ins>+                unsigned int streamOffset = 0;
</ins><span class="cx">                 unsigned int outputElementSize = 0;
</span><span class="cx"> 
</span><span class="cx">                 if (directStorage)
</span><span class="lines">@@ -166,39 +195,42 @@
</span><span class="cx">                 }
</span><span class="cx">                 else if (staticBuffer)
</span><span class="cx">                 {
</span><del>-                    streamOffset = staticBuffer-&gt;lookupAttribute(attribs[i]);
-                    outputElementSize = staticBuffer-&gt;getVertexBuffer()-&gt;getSpaceRequired(attribs[i], 1, 0);
</del><ins>+                    if (!staticBuffer-&gt;getVertexBuffer()-&gt;getSpaceRequired(attribs[i], 1, 0, &amp;outputElementSize))
+                    {
+                        return GL_OUT_OF_MEMORY;
+                    }
</ins><span class="cx"> 
</span><del>-                    if (streamOffset == -1)
</del><ins>+                    if (!staticBuffer-&gt;lookupAttribute(attribs[i], &amp;streamOffset))
</ins><span class="cx">                     {
</span><span class="cx">                         // Convert the entire buffer
</span><span class="cx">                         int totalCount = elementsInBuffer(attribs[i], storage-&gt;getSize());
</span><span class="cx">                         int startIndex = attribs[i].mOffset / attribs[i].stride();
</span><span class="cx"> 
</span><del>-                        streamOffset = staticBuffer-&gt;storeVertexAttributes(attribs[i], -startIndex, totalCount, 0);
</del><ins>+                        if (!staticBuffer-&gt;storeVertexAttributes(attribs[i], -startIndex, totalCount, 0, &amp;streamOffset))
+                        {
+                            return GL_OUT_OF_MEMORY;
+                        }
</ins><span class="cx">                     }
</span><span class="cx"> 
</span><del>-                    if (streamOffset != -1)
</del><ins>+                    unsigned int firstElementOffset = (attribs[i].mOffset / attribs[i].stride()) * outputElementSize;
+                    unsigned int startOffset = (instances == 0 || attribs[i].mDivisor == 0) ? start * outputElementSize : 0;
+                    if (streamOffset + firstElementOffset + startOffset &lt; streamOffset)
</ins><span class="cx">                     {
</span><del>-                        streamOffset += (attribs[i].mOffset / attribs[i].stride()) * outputElementSize;
</del><ins>+                        return GL_OUT_OF_MEMORY;
+                    }
</ins><span class="cx"> 
</span><del>-                        if (instances == 0 || attribs[i].mDivisor == 0)
-                        {
-                            streamOffset += start * outputElementSize;
-                        }
-                    }
</del><ins>+                    streamOffset += firstElementOffset + startOffset;
</ins><span class="cx">                 }
</span><span class="cx">                 else
</span><span class="cx">                 {
</span><del>-                    outputElementSize = mStreamingBuffer-&gt;getVertexBuffer()-&gt;getSpaceRequired(attribs[i], 1, 0);
-                    streamOffset = mStreamingBuffer-&gt;storeVertexAttributes(attribs[i], start, count, instances);
</del><ins>+                    int totalCount = StreamingBufferElementCount(attribs[i], count, instances);
+                    if (!mStreamingBuffer-&gt;getVertexBuffer()-&gt;getSpaceRequired(attribs[i], 1, 0, &amp;outputElementSize) ||
+                        !mStreamingBuffer-&gt;storeVertexAttributes(attribs[i], start, totalCount, instances, &amp;streamOffset))
+                    {
+                        return GL_OUT_OF_MEMORY;
+                    }
</ins><span class="cx">                 }
</span><span class="cx"> 
</span><del>-                if (streamOffset == -1)
-                {
-                    return GL_OUT_OF_MEMORY;
-                }
-
</del><span class="cx">                 translated[i].storage = directStorage ? storage : NULL;
</span><span class="cx">                 translated[i].vertexBuffer = vertexBuffer-&gt;getVertexBuffer();
</span><span class="cx">                 translated[i].serial = directStorage ? storage-&gt;getSerial() : vertexBuffer-&gt;getSerial();
</span><span class="lines">@@ -227,12 +259,17 @@
</span><span class="cx">                     {
</span><span class="cx">                         return GL_OUT_OF_MEMORY;
</span><span class="cx">                     }
</span><del>-                    int streamOffset = buffer-&gt;storeRawData(attribs[i].mCurrentValue, requiredSpace);
-                    if (streamOffset == -1)
</del><ins>+
+                    unsigned int streamOffset;
+                    if (!buffer-&gt;storeRawData(attribs[i].mCurrentValue, requiredSpace, &amp;streamOffset))
</ins><span class="cx">                     {
</span><span class="cx">                         return GL_OUT_OF_MEMORY;
</span><span class="cx">                     }
</span><span class="cx"> 
</span><ins>+                    mCurrentValue[i][0] = attribs[i].mCurrentValue[0];
+                    mCurrentValue[i][1] = attribs[i].mCurrentValue[1];
+                    mCurrentValue[i][2] = attribs[i].mCurrentValue[2];
+                    mCurrentValue[i][3] = attribs[i].mCurrentValue[3];
</ins><span class="cx">                     mCurrentValueOffsets[i] = streamOffset;
</span><span class="cx">                 }
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererVertexDataManagerh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexDataManager.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexDataManager.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/VertexDataManager.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -31,8 +31,8 @@
</span><span class="cx">     bool active;
</span><span class="cx"> 
</span><span class="cx">     const gl::VertexAttribute *attribute;
</span><del>-    UINT offset;
-    UINT stride;   // 0 means not to advance the read pointer at all
</del><ins>+    unsigned int offset;
+    unsigned int stride;   // 0 means not to advance the read pointer at all
</ins><span class="cx"> 
</span><span class="cx">     VertexBuffer *vertexBuffer;
</span><span class="cx">     BufferStorage *storage;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2rendererrenderer11_utilscpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/renderer11_utils.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/renderer11_utils.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/renderer11_utils.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -356,7 +356,7 @@
</span><span class="cx">         return DXGI_FORMAT_R32G32B32A32_FLOAT;
</span><span class="cx">       case GL_RGB32F_EXT:
</span><span class="cx">       case GL_LUMINANCE32F_EXT:
</span><del>-        return DXGI_FORMAT_R32G32B32_FLOAT;
</del><ins>+        return DXGI_FORMAT_R32G32B32A32_FLOAT;
</ins><span class="cx">       case GL_RGBA16F_EXT:
</span><span class="cx">       case GL_ALPHA16F_EXT:
</span><span class="cx">       case GL_LUMINANCE_ALPHA16F_EXT:
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledclear11vsh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/clear11vs.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/clear11vs.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/clear11vs.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,26 +1,24 @@
</span><span class="cx"> #if 0
</span><span class="cx"> //
</span><del>-// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
</del><ins>+// Generated by Microsoft (R) HLSL Shader Compiler 9.30.9200.16384
</ins><span class="cx"> //
</span><span class="cx"> //
</span><del>-//   fxc /E VS_Clear /T vs_4_0 /Fh compiled/clear11vs.h Clear11.hlsl
</del><ins>+///
</ins><span class="cx"> //
</span><del>-//
-//
</del><span class="cx"> // Input signature:
</span><span class="cx"> //
</span><del>-// Name                 Index   Mask Register SysValue Format   Used
-// -------------------- ----- ------ -------- -------- ------ ------
-// POSITION                 0   xyz         0     NONE  float   xyz 
-// COLOR                    0   xyzw        1     NONE  float   xyzw
</del><ins>+// Name                 Index   Mask Register SysValue  Format   Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// POSITION                 0   xyz         0     NONE   float   xyz 
+// COLOR                    0   xyzw        1     NONE   float   xyzw
</ins><span class="cx"> //
</span><span class="cx"> //
</span><span class="cx"> // Output signature:
</span><span class="cx"> //
</span><del>-// Name                 Index   Mask Register SysValue Format   Used
-// -------------------- ----- ------ -------- -------- ------ ------
-// SV_POSITION              0   xyzw        0      POS  float   xyzw
-// COLOR                    0   xyzw        1     NONE  float   xyzw
</del><ins>+// Name                 Index   Mask Register SysValue  Format   Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// SV_POSITION              0   xyzw        0      POS   float   xyzw
+// COLOR                    0   xyzw        1     NONE   float   xyzw
</ins><span class="cx"> //
</span><span class="cx"> vs_4_0
</span><span class="cx"> dcl_input v0.xyz
</span><span class="lines">@@ -36,10 +34,10 @@
</span><span class="cx"> 
</span><span class="cx"> const BYTE g_VS_Clear[] =
</span><span class="cx"> {
</span><del>-     68,  88,  66,  67, 109, 138, 
-    105,  83,  86, 190,  83, 125, 
-     72, 102, 194, 136,  46,  69, 
-     17, 121,   1,   0,   0,   0, 
</del><ins>+     68,  88,  66,  67,  97,   5, 
+     13, 163, 160, 254,  95, 127, 
+     30, 194, 121, 144, 236, 185, 
+     59,  29,   1,   0,   0,   0, 
</ins><span class="cx">      48,   2,   0,   0,   5,   0, 
</span><span class="cx">       0,   0,  52,   0,   0,   0, 
</span><span class="cx">     140,   0,   0,   0, 220,   0, 
</span><span class="lines">@@ -56,10 +54,10 @@
</span><span class="cx">      72,  76,  83,  76,  32,  83, 
</span><span class="cx">     104,  97, 100, 101, 114,  32, 
</span><span class="cx">      67, 111, 109, 112, 105, 108, 
</span><del>-    101, 114,  32,  57,  46,  50, 
-     57,  46,  57,  53,  50,  46, 
-     51,  49,  49,  49,   0, 171, 
-    171, 171,  73,  83,  71,  78, 
</del><ins>+    101, 114,  32,  57,  46,  51, 
+     48,  46,  57,  50,  48,  48, 
+     46,  49,  54,  51,  56,  52, 
+      0, 171,  73,  83,  71,  78, 
</ins><span class="cx">      72,   0,   0,   0,   2,   0, 
</span><span class="cx">       0,   0,   8,   0,   0,   0, 
</span><span class="cx">      56,   0,   0,   0,   0,   0, 
</span><span class="lines">@@ -122,7 +120,7 @@
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><del>-      0,   0,   0,   0,   3,   0, 
</del><ins>+      0,   0,   0,   0,   4,   0, 
</ins><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledclearmultiple11psh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/clearmultiple11ps.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/clearmultiple11ps.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/clearmultiple11ps.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,33 +1,30 @@
</span><span class="cx"> #if 0
</span><span class="cx"> //
</span><del>-// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
</del><ins>+// Generated by Microsoft (R) HLSL Shader Compiler 9.30.9200.16384
</ins><span class="cx"> //
</span><span class="cx"> //
</span><del>-//   fxc /E PS_ClearMultiple /T ps_4_0 /Fh compiled/clearmultiple11ps.h
-//    Clear11.hlsl
</del><ins>+///
</ins><span class="cx"> //
</span><del>-//
-//
</del><span class="cx"> // Input signature:
</span><span class="cx"> //
</span><del>-// Name                 Index   Mask Register SysValue Format   Used
-// -------------------- ----- ------ -------- -------- ------ ------
-// SV_POSITION              0   xyzw        0      POS  float       
-// COLOR                    0   xyzw        1     NONE  float   xyzw
</del><ins>+// Name                 Index   Mask Register SysValue  Format   Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// SV_POSITION              0   xyzw        0      POS   float       
+// COLOR                    0   xyzw        1     NONE   float   xyzw
</ins><span class="cx"> //
</span><span class="cx"> //
</span><span class="cx"> // Output signature:
</span><span class="cx"> //
</span><del>-// Name                 Index   Mask Register SysValue Format   Used
-// -------------------- ----- ------ -------- -------- ------ ------
-// SV_TARGET                0   xyzw        0   TARGET  float   xyzw
-// SV_TARGET                1   xyzw        1   TARGET  float   xyzw
-// SV_TARGET                2   xyzw        2   TARGET  float   xyzw
-// SV_TARGET                3   xyzw        3   TARGET  float   xyzw
-// SV_TARGET                4   xyzw        4   TARGET  float   xyzw
-// SV_TARGET                5   xyzw        5   TARGET  float   xyzw
-// SV_TARGET                6   xyzw        6   TARGET  float   xyzw
-// SV_TARGET                7   xyzw        7   TARGET  float   xyzw
</del><ins>+// Name                 Index   Mask Register SysValue  Format   Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// SV_TARGET                0   xyzw        0   TARGET   float   xyzw
+// SV_TARGET                1   xyzw        1   TARGET   float   xyzw
+// SV_TARGET                2   xyzw        2   TARGET   float   xyzw
+// SV_TARGET                3   xyzw        3   TARGET   float   xyzw
+// SV_TARGET                4   xyzw        4   TARGET   float   xyzw
+// SV_TARGET                5   xyzw        5   TARGET   float   xyzw
+// SV_TARGET                6   xyzw        6   TARGET   float   xyzw
+// SV_TARGET                7   xyzw        7   TARGET   float   xyzw
</ins><span class="cx"> //
</span><span class="cx"> ps_4_0
</span><span class="cx"> dcl_input_ps linear v1.xyzw
</span><span class="lines">@@ -53,10 +50,10 @@
</span><span class="cx"> 
</span><span class="cx"> const BYTE g_PS_ClearMultiple[] =
</span><span class="cx"> {
</span><del>-     68,  88,  66,  67, 146, 246, 
-    236, 240,  50,  40,  87,  55, 
-     73, 140, 251, 200,   8,  22, 
-    173, 117,   1,   0,   0,   0, 
</del><ins>+     68,  88,  66,  67,  92,  54, 
+    120, 105, 166, 196, 132, 158, 
+    209,  33, 185, 122,   8, 189, 
+    145, 114,   1,   0,   0,   0, 
</ins><span class="cx">      88,   3,   0,   0,   5,   0, 
</span><span class="cx">       0,   0,  52,   0,   0,   0, 
</span><span class="cx">     140,   0,   0,   0, 224,   0, 
</span><span class="lines">@@ -73,10 +70,10 @@
</span><span class="cx">      72,  76,  83,  76,  32,  83, 
</span><span class="cx">     104,  97, 100, 101, 114,  32, 
</span><span class="cx">      67, 111, 109, 112, 105, 108, 
</span><del>-    101, 114,  32,  57,  46,  50, 
-     57,  46,  57,  53,  50,  46, 
-     51,  49,  49,  49,   0, 171, 
-    171, 171,  73,  83,  71,  78, 
</del><ins>+    101, 114,  32,  57,  46,  51, 
+     48,  46,  57,  50,  48,  48, 
+     46,  49,  54,  51,  56,  52, 
+      0, 171,  73,  83,  71,  78, 
</ins><span class="cx">      76,   0,   0,   0,   2,   0, 
</span><span class="cx">       0,   0,   8,   0,   0,   0, 
</span><span class="cx">      56,   0,   0,   0,   0,   0, 
</span><span class="lines">@@ -189,7 +186,7 @@
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><del>-      8,   0,   0,   0,   0,   0, 
</del><ins>+      9,   0,   0,   0,   0,   0, 
</ins><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledclearsingle11psh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/clearsingle11ps.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/clearsingle11ps.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/clearsingle11ps.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,26 +1,23 @@
</span><span class="cx"> #if 0
</span><span class="cx"> //
</span><del>-// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
</del><ins>+// Generated by Microsoft (R) HLSL Shader Compiler 9.30.9200.16384
</ins><span class="cx"> //
</span><span class="cx"> //
</span><del>-//   fxc /E PS_ClearSingle /T ps_4_0 /Fh compiled/clearsingle11ps.h
-//    Clear11.hlsl
</del><ins>+///
</ins><span class="cx"> //
</span><del>-//
-//
</del><span class="cx"> // Input signature:
</span><span class="cx"> //
</span><del>-// Name                 Index   Mask Register SysValue Format   Used
-// -------------------- ----- ------ -------- -------- ------ ------
-// SV_Position              0   xyzw        0      POS  float       
-// COLOR                    0   xyzw        1     NONE  float   xyzw
</del><ins>+// Name                 Index   Mask Register SysValue  Format   Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// SV_Position              0   xyzw        0      POS   float       
+// COLOR                    0   xyzw        1     NONE   float   xyzw
</ins><span class="cx"> //
</span><span class="cx"> //
</span><span class="cx"> // Output signature:
</span><span class="cx"> //
</span><del>-// Name                 Index   Mask Register SysValue Format   Used
-// -------------------- ----- ------ -------- -------- ------ ------
-// SV_Target                0   xyzw        0   TARGET  float   xyzw
</del><ins>+// Name                 Index   Mask Register SysValue  Format   Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// SV_Target                0   xyzw        0   TARGET   float   xyzw
</ins><span class="cx"> //
</span><span class="cx"> ps_4_0
</span><span class="cx"> dcl_input_ps linear v1.xyzw
</span><span class="lines">@@ -32,10 +29,10 @@
</span><span class="cx"> 
</span><span class="cx"> const BYTE g_PS_ClearSingle[] =
</span><span class="cx"> {
</span><del>-     68,  88,  66,  67,  11,  49, 
-    220, 157,  35, 106, 175, 161, 
-    180, 178, 147, 150, 134, 162, 
-    222,  79,   1,   0,   0,   0, 
</del><ins>+     68,  88,  66,  67,  13, 152, 
+     32,  49, 222, 236,  92,  20, 
+    188,  71,  88,  46, 163, 241, 
+    188, 238,   1,   0,   0,   0, 
</ins><span class="cx">     208,   1,   0,   0,   5,   0, 
</span><span class="cx">       0,   0,  52,   0,   0,   0, 
</span><span class="cx">     140,   0,   0,   0, 224,   0, 
</span><span class="lines">@@ -52,10 +49,10 @@
</span><span class="cx">      72,  76,  83,  76,  32,  83, 
</span><span class="cx">     104,  97, 100, 101, 114,  32, 
</span><span class="cx">      67, 111, 109, 112, 105, 108, 
</span><del>-    101, 114,  32,  57,  46,  50, 
-     57,  46,  57,  53,  50,  46, 
-     51,  49,  49,  49,   0, 171, 
-    171, 171,  73,  83,  71,  78, 
</del><ins>+    101, 114,  32,  57,  46,  51, 
+     48,  46,  57,  50,  48,  48, 
+     46,  49,  54,  51,  56,  52, 
+      0, 171,  73,  83,  71,  78, 
</ins><span class="cx">      76,   0,   0,   0,   2,   0, 
</span><span class="cx">       0,   0,   8,   0,   0,   0, 
</span><span class="cx">      56,   0,   0,   0,   0,   0, 
</span><span class="lines">@@ -102,7 +99,7 @@
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><del>-      0,   0,   0,   0,   1,   0, 
</del><ins>+      0,   0,   0,   0,   2,   0, 
</ins><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledcomponentmaskpsh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/componentmaskps.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/componentmaskps.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/componentmaskps.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,10 +1,8 @@
</span><span class="cx"> #if 0
</span><span class="cx"> //
</span><del>-// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
</del><ins>+// Generated by Microsoft (R) HLSL Shader Compiler 9.30.9200.16384
</ins><span class="cx"> //
</span><del>-//   fxc /E componentmaskps /T ps_2_0 /Fh compiled/componentmaskps.h Blit.ps
-//
-//
</del><ins>+///
</ins><span class="cx"> // Parameters:
</span><span class="cx"> //
</span><span class="cx"> //   float4 mode;
</span><span class="lines">@@ -33,7 +31,7 @@
</span><span class="cx"> const BYTE g_ps20_componentmaskps[] =
</span><span class="cx"> {
</span><span class="cx">       0,   2, 255, 255, 254, 255, 
</span><del>-     43,   0,  67,  84,  65,  66, 
</del><ins>+     44,   0,  67,  84,  65,  66, 
</ins><span class="cx">      28,   0,   0,   0, 119,   0, 
</span><span class="cx">       0,   0,   0,   2, 255, 255, 
</span><span class="cx">       2,   0,   0,   0,  28,   0, 
</span><span class="lines">@@ -60,22 +58,22 @@
</span><span class="cx">      83, 104,  97, 100, 101, 114, 
</span><span class="cx">      32,  67, 111, 109, 112, 105, 
</span><span class="cx">     108, 101, 114,  32,  57,  46, 
</span><del>-     50,  57,  46,  57,  53,  50, 
-     46,  51,  49,  49,  49,   0, 
-     31,   0,   0,   2,   0,   0, 
-      0, 128,   0,   0,   3, 176, 
-     31,   0,   0,   2,   0,   0, 
-      0, 144,   0,   8,  15, 160, 
-     66,   0,   0,   3,   0,   0, 
-     15, 128,   0,   0, 228, 176, 
-      0,   8, 228, 160,   5,   0, 
-      0,   3,   1,   0,   7, 128, 
-      0,   0, 228, 128,   0,   0, 
-      0, 160,   4,   0,   0,   4, 
-      1,   0,   8, 128,   0,   0, 
-    255, 128,   0,   0, 170, 160, 
-      0,   0, 255, 160,   1,   0, 
-      0,   2,   0,   8,  15, 128, 
-      1,   0, 228, 128, 255, 255, 
-      0,   0
</del><ins>+     51,  48,  46,  57,  50,  48, 
+     48,  46,  49,  54,  51,  56, 
+     52,   0, 171, 171,  31,   0, 
+      0,   2,   0,   0,   0, 128, 
+      0,   0,   3, 176,  31,   0, 
+      0,   2,   0,   0,   0, 144, 
+      0,   8,  15, 160,  66,   0, 
+      0,   3,   0,   0,  15, 128, 
+      0,   0, 228, 176,   0,   8, 
+    228, 160,   5,   0,   0,   3, 
+      1,   0,   7, 128,   0,   0, 
+    228, 128,   0,   0,   0, 160, 
+      4,   0,   0,   4,   1,   0, 
+      8, 128,   0,   0, 255, 128, 
+      0,   0, 170, 160,   0,   0, 
+    255, 160,   1,   0,   0,   2, 
+      0,   8,  15, 128,   1,   0, 
+    228, 128, 255, 255,   0,   0
</ins><span class="cx"> };
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledflipyvsh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/flipyvs.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/flipyvs.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/flipyvs.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,10 +1,8 @@
</span><span class="cx"> #if 0
</span><span class="cx"> //
</span><del>-// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
</del><ins>+// Generated by Microsoft (R) HLSL Shader Compiler 9.30.9200.16384
</ins><span class="cx"> //
</span><del>-//   fxc /E flipyvs /T vs_2_0 /Fh compiled/flipyvs.h Blit.vs
-//
-//
</del><ins>+///
</ins><span class="cx"> // Parameters:
</span><span class="cx"> //
</span><span class="cx"> //   float4 halfPixelSize;
</span><span class="lines">@@ -29,7 +27,7 @@
</span><span class="cx"> const BYTE g_vs20_flipyvs[] =
</span><span class="cx"> {
</span><span class="cx">       0,   2, 254, 255, 254, 255, 
</span><del>-     35,   0,  67,  84,  65,  66, 
</del><ins>+     36,   0,  67,  84,  65,  66, 
</ins><span class="cx">      28,   0,   0,   0,  87,   0, 
</span><span class="cx">       0,   0,   0,   2, 254, 255, 
</span><span class="cx">       1,   0,   0,   0,  28,   0, 
</span><span class="lines">@@ -50,20 +48,20 @@
</span><span class="cx">      76,  83,  76,  32,  83, 104, 
</span><span class="cx">      97, 100, 101, 114,  32,  67, 
</span><span class="cx">     111, 109, 112, 105, 108, 101, 
</span><del>-    114,  32,  57,  46,  50,  57, 
-     46,  57,  53,  50,  46,  51, 
-     49,  49,  49,   0,  81,   0, 
-      0,   5,   1,   0,  15, 160, 
-      0,   0,   0,  63,   0,   0, 
-    128,  63,   0,   0,   0,   0, 
-      0,   0,   0,   0,  31,   0, 
-      0,   2,   0,   0,   0, 128, 
-      0,   0,  15, 144,   2,   0, 
-      0,   3,   0,   0,  15, 192, 
-      0,   0, 228, 144,   0,   0, 
-    228, 160,   4,   0,   0,   4, 
-      0,   0,  15, 224,   0,   0, 
-    228, 144,   1,   0,  80, 160, 
-      1,   0, 160, 160, 255, 255, 
-      0,   0
</del><ins>+    114,  32,  57,  46,  51,  48, 
+     46,  57,  50,  48,  48,  46, 
+     49,  54,  51,  56,  52,   0, 
+    171, 171,  81,   0,   0,   5, 
+      1,   0,  15, 160,   0,   0, 
+      0,  63,   0,   0, 128,  63, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,  31,   0,   0,   2, 
+      0,   0,   0, 128,   0,   0, 
+     15, 144,   2,   0,   0,   3, 
+      0,   0,  15, 192,   0,   0, 
+    228, 144,   0,   0, 228, 160, 
+      4,   0,   0,   4,   0,   0, 
+     15, 224,   0,   0, 228, 144, 
+      1,   0,  80, 160,   1,   0, 
+    160, 160, 255, 255,   0,   0
</ins><span class="cx"> };
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledluminancepsh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/luminanceps.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/luminanceps.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/luminanceps.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,10 +1,8 @@
</span><span class="cx"> #if 0
</span><span class="cx"> //
</span><del>-// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
</del><ins>+// Generated by Microsoft (R) HLSL Shader Compiler 9.30.9200.16384
</ins><span class="cx"> //
</span><del>-//   fxc /E luminanceps /T ps_2_0 /Fh compiled/luminanceps.h Blit.ps
-//
-//
</del><ins>+///
</ins><span class="cx"> // Parameters:
</span><span class="cx"> //
</span><span class="cx"> //   float4 mode;
</span><span class="lines">@@ -33,7 +31,7 @@
</span><span class="cx"> const BYTE g_ps20_luminanceps[] =
</span><span class="cx"> {
</span><span class="cx">       0,   2, 255, 255, 254, 255, 
</span><del>-     43,   0,  67,  84,  65,  66, 
</del><ins>+     44,   0,  67,  84,  65,  66, 
</ins><span class="cx">      28,   0,   0,   0, 119,   0, 
</span><span class="cx">       0,   0,   0,   2, 255, 255, 
</span><span class="cx">       2,   0,   0,   0,  28,   0, 
</span><span class="lines">@@ -60,21 +58,22 @@
</span><span class="cx">      83, 104,  97, 100, 101, 114, 
</span><span class="cx">      32,  67, 111, 109, 112, 105, 
</span><span class="cx">     108, 101, 114,  32,  57,  46, 
</span><del>-     50,  57,  46,  57,  53,  50, 
-     46,  51,  49,  49,  49,   0, 
-     31,   0,   0,   2,   0,   0, 
-      0, 128,   0,   0,   3, 176, 
-     31,   0,   0,   2,   0,   0, 
-      0, 144,   0,   8,  15, 160, 
-     66,   0,   0,   3,   0,   0, 
-     15, 128,   0,   0, 228, 176, 
-      0,   8, 228, 160,   4,   0, 
-      0,   4,   1,   0,   8, 128, 
-      0,   0, 255, 128,   0,   0, 
-      0, 160,   0,   0,  85, 160, 
-      1,   0,   0,   2,   1,   0, 
-      7, 128,   0,   0,   0, 128, 
-      1,   0,   0,   2,   0,   8, 
-     15, 128,   1,   0, 228, 128, 
-    255, 255,   0,   0
</del><ins>+     51,  48,  46,  57,  50,  48, 
+     48,  46,  49,  54,  51,  56, 
+     52,   0, 171, 171,  31,   0, 
+      0,   2,   0,   0,   0, 128, 
+      0,   0,   3, 176,  31,   0, 
+      0,   2,   0,   0,   0, 144, 
+      0,   8,  15, 160,  66,   0, 
+      0,   3,   0,   0,  15, 128, 
+      0,   0, 228, 176,   0,   8, 
+    228, 160,   4,   0,   0,   4, 
+      1,   0,   8, 128,   0,   0, 
+    255, 128,   0,   0,   0, 160, 
+      0,   0,  85, 160,   1,   0, 
+      0,   2,   1,   0,   7, 128, 
+      0,   0,   0, 128,   1,   0, 
+      0,   2,   0,   8,  15, 128, 
+      1,   0, 228, 128, 255, 255, 
+      0,   0
</ins><span class="cx"> };
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledpassthrough11vsh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthrough11vs.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthrough11vs.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthrough11vs.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,27 +1,24 @@
</span><span class="cx"> #if 0
</span><span class="cx"> //
</span><del>-// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
</del><ins>+// Generated by Microsoft (R) HLSL Shader Compiler 9.30.9200.16384
</ins><span class="cx"> //
</span><span class="cx"> //
</span><del>-//   fxc /E VS_Passthrough /T vs_4_0 /Fh compiled/passthrough11vs.h
-//    Passthrough11.hlsl
</del><ins>+///
</ins><span class="cx"> //
</span><del>-//
-//
</del><span class="cx"> // Input signature:
</span><span class="cx"> //
</span><del>-// Name                 Index   Mask Register SysValue Format   Used
-// -------------------- ----- ------ -------- -------- ------ ------
-// POSITION                 0   xy          0     NONE  float   xy  
-// TEXCOORD                 0   xy          1     NONE  float   xy  
</del><ins>+// Name                 Index   Mask Register SysValue  Format   Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// POSITION                 0   xy          0     NONE   float   xy  
+// TEXCOORD                 0   xy          1     NONE   float   xy  
</ins><span class="cx"> //
</span><span class="cx"> //
</span><span class="cx"> // Output signature:
</span><span class="cx"> //
</span><del>-// Name                 Index   Mask Register SysValue Format   Used
-// -------------------- ----- ------ -------- -------- ------ ------
-// SV_POSITION              0   xyzw        0      POS  float   xyzw
-// TEXCOORD                 0   xy          1     NONE  float   xy  
</del><ins>+// Name                 Index   Mask Register SysValue  Format   Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// SV_POSITION              0   xyzw        0      POS   float   xyzw
+// TEXCOORD                 0   xy          1     NONE   float   xy  
</ins><span class="cx"> //
</span><span class="cx"> vs_4_0
</span><span class="cx"> dcl_input v0.xy
</span><span class="lines">@@ -37,10 +34,10 @@
</span><span class="cx"> 
</span><span class="cx"> const BYTE g_VS_Passthrough[] =
</span><span class="cx"> {
</span><del>-     68,  88,  66,  67, 117,  74, 
-     34,  79, 174, 226, 170,  74, 
-    110,  16, 237,  14,  67, 185, 
-    119, 167,   1,   0,   0,   0, 
</del><ins>+     68,  88,  66,  67, 197, 214, 
+    184,  85, 240,  94,  71,  48, 
+    165,  34, 142, 233,   0, 135, 
+    193, 178,   1,   0,   0,   0, 
</ins><span class="cx">      68,   2,   0,   0,   5,   0, 
</span><span class="cx">       0,   0,  52,   0,   0,   0, 
</span><span class="cx">     140,   0,   0,   0, 224,   0, 
</span><span class="lines">@@ -57,10 +54,10 @@
</span><span class="cx">      72,  76,  83,  76,  32,  83, 
</span><span class="cx">     104,  97, 100, 101, 114,  32, 
</span><span class="cx">      67, 111, 109, 112, 105, 108, 
</span><del>-    101, 114,  32,  57,  46,  50, 
-     57,  46,  57,  53,  50,  46, 
-     51,  49,  49,  49,   0, 171, 
-    171, 171,  73,  83,  71,  78, 
</del><ins>+    101, 114,  32,  57,  46,  51, 
+     48,  46,  57,  50,  48,  48, 
+     46,  49,  54,  51,  56,  52, 
+      0, 171,  73,  83,  71,  78, 
</ins><span class="cx">      76,   0,   0,   0,   2,   0, 
</span><span class="cx">       0,   0,   8,   0,   0,   0, 
</span><span class="cx">      56,   0,   0,   0,   0,   0, 
</span><span class="lines">@@ -127,7 +124,7 @@
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><del>-      3,   0,   0,   0,   0,   0, 
</del><ins>+      4,   0,   0,   0,   0,   0, 
</ins><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledpassthroughlum11psh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughlum11ps.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughlum11ps.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughlum11ps.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,12 +1,9 @@
</span><span class="cx"> #if 0
</span><span class="cx"> //
</span><del>-// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
</del><ins>+// Generated by Microsoft (R) HLSL Shader Compiler 9.30.9200.16384
</ins><span class="cx"> //
</span><span class="cx"> //
</span><del>-//   fxc /E PS_PassthroughLum /T ps_4_0 /Fh compiled/passthroughlum11ps.h
-//    Passthrough11.hlsl
-//
-//
</del><ins>+///
</ins><span class="cx"> // Resource Bindings:
</span><span class="cx"> //
</span><span class="cx"> // Name                                 Type  Format         Dim Slot Elements
</span><span class="lines">@@ -18,17 +15,17 @@
</span><span class="cx"> //
</span><span class="cx"> // Input signature:
</span><span class="cx"> //
</span><del>-// Name                 Index   Mask Register SysValue Format   Used
-// -------------------- ----- ------ -------- -------- ------ ------
-// SV_POSITION              0   xyzw        0      POS  float       
-// TEXCOORD                 0   xy          1     NONE  float   xy  
</del><ins>+// Name                 Index   Mask Register SysValue  Format   Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// SV_POSITION              0   xyzw        0      POS   float       
+// TEXCOORD                 0   xy          1     NONE   float   xy  
</ins><span class="cx"> //
</span><span class="cx"> //
</span><span class="cx"> // Output signature:
</span><span class="cx"> //
</span><del>-// Name                 Index   Mask Register SysValue Format   Used
-// -------------------- ----- ------ -------- -------- ------ ------
-// SV_TARGET                0   xyzw        0   TARGET  float   xyzw
</del><ins>+// Name                 Index   Mask Register SysValue  Format   Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// SV_TARGET                0   xyzw        0   TARGET   float   xyzw
</ins><span class="cx"> //
</span><span class="cx"> ps_4_0
</span><span class="cx"> dcl_sampler s0, mode_default
</span><span class="lines">@@ -45,10 +42,10 @@
</span><span class="cx"> 
</span><span class="cx"> const BYTE g_PS_PassthroughLum[] =
</span><span class="cx"> {
</span><del>-     68,  88,  66,  67,  97,  41, 
-     37, 154,   0, 174, 137, 157, 
-     76, 219, 230,  26, 227, 174, 
-    187,  66,   1,   0,   0,   0, 
</del><ins>+     68,  88,  66,  67, 244,   9, 
+    213, 147,  19, 249,  70, 111, 
+    157,  92, 243, 160,  40, 144, 
+    238, 221,   1,   0,   0,   0, 
</ins><span class="cx">     128,   2,   0,   0,   5,   0, 
</span><span class="cx">       0,   0,  52,   0,   0,   0, 
</span><span class="cx">     220,   0,   0,   0,  52,   1, 
</span><span class="lines">@@ -79,9 +76,9 @@
</span><span class="cx">      32,  83, 104,  97, 100, 101, 
</span><span class="cx">     114,  32,  67, 111, 109, 112, 
</span><span class="cx">     105, 108, 101, 114,  32,  57, 
</span><del>-     46,  50,  57,  46,  57,  53, 
-     50,  46,  51,  49,  49,  49, 
-      0, 171, 171, 171,  73,  83, 
</del><ins>+     46,  51,  48,  46,  57,  50, 
+     48,  48,  46,  49,  54,  51, 
+     56,  52,   0, 171,  73,  83, 
</ins><span class="cx">      71,  78,  80,   0,   0,   0, 
</span><span class="cx">       2,   0,   0,   0,   8,   0, 
</span><span class="cx">       0,   0,  56,   0,   0,   0, 
</span><span class="lines">@@ -145,7 +142,7 @@
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><del>-      2,   0,   0,   0,   0,   0, 
</del><ins>+      3,   0,   0,   0,   0,   0, 
</ins><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledpassthroughlumalpha11psh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughlumalpha11ps.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughlumalpha11ps.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughlumalpha11ps.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,12 +1,9 @@
</span><span class="cx"> #if 0
</span><span class="cx"> //
</span><del>-// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
</del><ins>+// Generated by Microsoft (R) HLSL Shader Compiler 9.30.9200.16384
</ins><span class="cx"> //
</span><span class="cx"> //
</span><del>-//   fxc /E PS_PassthroughLumAlpha /T ps_4_0 /Fh
-//    compiled/passthroughlumalpha11ps.h Passthrough11.hlsl
-//
-//
</del><ins>+///
</ins><span class="cx"> // Resource Bindings:
</span><span class="cx"> //
</span><span class="cx"> // Name                                 Type  Format         Dim Slot Elements
</span><span class="lines">@@ -18,17 +15,17 @@
</span><span class="cx"> //
</span><span class="cx"> // Input signature:
</span><span class="cx"> //
</span><del>-// Name                 Index   Mask Register SysValue Format   Used
-// -------------------- ----- ------ -------- -------- ------ ------
-// SV_POSITION              0   xyzw        0      POS  float       
-// TEXCOORD                 0   xy          1     NONE  float   xy  
</del><ins>+// Name                 Index   Mask Register SysValue  Format   Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// SV_POSITION              0   xyzw        0      POS   float       
+// TEXCOORD                 0   xy          1     NONE   float   xy  
</ins><span class="cx"> //
</span><span class="cx"> //
</span><span class="cx"> // Output signature:
</span><span class="cx"> //
</span><del>-// Name                 Index   Mask Register SysValue Format   Used
-// -------------------- ----- ------ -------- -------- ------ ------
-// SV_TARGET                0   xyzw        0   TARGET  float   xyzw
</del><ins>+// Name                 Index   Mask Register SysValue  Format   Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// SV_TARGET                0   xyzw        0   TARGET   float   xyzw
</ins><span class="cx"> //
</span><span class="cx"> ps_4_0
</span><span class="cx"> dcl_sampler s0, mode_default
</span><span class="lines">@@ -44,10 +41,10 @@
</span><span class="cx"> 
</span><span class="cx"> const BYTE g_PS_PassthroughLumAlpha[] =
</span><span class="cx"> {
</span><del>-     68,  88,  66,  67, 197,  72, 
-    251, 236,  53, 107, 182, 146, 
-    196, 219, 130, 187, 140, 159, 
-    211, 123,   1,   0,   0,   0, 
</del><ins>+     68,  88,  66,  67, 185,  14, 
+     84, 223, 192,  42,  16, 133, 
+     46, 100,  95, 221, 183,  97, 
+    192,  23,   1,   0,   0,   0, 
</ins><span class="cx">     108,   2,   0,   0,   5,   0, 
</span><span class="cx">       0,   0,  52,   0,   0,   0, 
</span><span class="cx">     220,   0,   0,   0,  52,   1, 
</span><span class="lines">@@ -78,9 +75,9 @@
</span><span class="cx">      32,  83, 104,  97, 100, 101, 
</span><span class="cx">     114,  32,  67, 111, 109, 112, 
</span><span class="cx">     105, 108, 101, 114,  32,  57, 
</span><del>-     46,  50,  57,  46,  57,  53, 
-     50,  46,  51,  49,  49,  49, 
-      0, 171, 171, 171,  73,  83, 
</del><ins>+     46,  51,  48,  46,  57,  50, 
+     48,  48,  46,  49,  54,  51, 
+     56,  52,   0, 171,  73,  83, 
</ins><span class="cx">      71,  78,  80,   0,   0,   0, 
</span><span class="cx">       2,   0,   0,   0,   8,   0, 
</span><span class="cx">       0,   0,  56,   0,   0,   0, 
</span><span class="lines">@@ -140,7 +137,7 @@
</span><span class="cx">       0,   0,   1,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><del>-      0,   0,   0,   0,   1,   0, 
</del><ins>+      0,   0,   0,   0,   2,   0, 
</ins><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledpassthroughpsh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughps.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughps.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughps.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,10 +1,8 @@
</span><span class="cx"> #if 0
</span><span class="cx"> //
</span><del>-// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
</del><ins>+// Generated by Microsoft (R) HLSL Shader Compiler 9.30.9200.16384
</ins><span class="cx"> //
</span><del>-//   fxc /E passthroughps /T ps_2_0 /Fh compiled/passthroughps.h Blit.ps
-//
-//
</del><ins>+///
</ins><span class="cx"> // Parameters:
</span><span class="cx"> //
</span><span class="cx"> //   sampler2D tex;
</span><span class="lines">@@ -29,7 +27,7 @@
</span><span class="cx"> const BYTE g_ps20_passthroughps[] =
</span><span class="cx"> {
</span><span class="cx">       0,   2, 255, 255, 254, 255, 
</span><del>-     32,   0,  67,  84,  65,  66, 
</del><ins>+     33,   0,  67,  84,  65,  66, 
</ins><span class="cx">      28,   0,   0,   0,  75,   0, 
</span><span class="cx">       0,   0,   0,   2, 255, 255, 
</span><span class="cx">       1,   0,   0,   0,  28,   0, 
</span><span class="lines">@@ -48,16 +46,17 @@
</span><span class="cx">      76,  83,  76,  32,  83, 104, 
</span><span class="cx">      97, 100, 101, 114,  32,  67, 
</span><span class="cx">     111, 109, 112, 105, 108, 101, 
</span><del>-    114,  32,  57,  46,  50,  57, 
-     46,  57,  53,  50,  46,  51, 
-     49,  49,  49,   0,  31,   0, 
-      0,   2,   0,   0,   0, 128, 
-      0,   0,   3, 176,  31,   0, 
-      0,   2,   0,   0,   0, 144, 
-      0,   8,  15, 160,  66,   0, 
-      0,   3,   0,   0,  15, 128, 
-      0,   0, 228, 176,   0,   8, 
-    228, 160,   1,   0,   0,   2, 
-      0,   8,  15, 128,   0,   0, 
-    228, 128, 255, 255,   0,   0
</del><ins>+    114,  32,  57,  46,  51,  48, 
+     46,  57,  50,  48,  48,  46, 
+     49,  54,  51,  56,  52,   0, 
+    171, 171,  31,   0,   0,   2, 
+      0,   0,   0, 128,   0,   0, 
+      3, 176,  31,   0,   0,   2, 
+      0,   0,   0, 144,   0,   8, 
+     15, 160,  66,   0,   0,   3, 
+      0,   0,  15, 128,   0,   0, 
+    228, 176,   0,   8, 228, 160, 
+      1,   0,   0,   2,   0,   8, 
+     15, 128,   0,   0, 228, 128, 
+    255, 255,   0,   0
</ins><span class="cx"> };
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledpassthroughrgb11psh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughrgb11ps.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughrgb11ps.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughrgb11ps.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,12 +1,9 @@
</span><span class="cx"> #if 0
</span><span class="cx"> //
</span><del>-// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
</del><ins>+// Generated by Microsoft (R) HLSL Shader Compiler 9.30.9200.16384
</ins><span class="cx"> //
</span><span class="cx"> //
</span><del>-//   fxc /E PS_PassthroughRGB /T ps_4_0 /Fh compiled/passthroughrgb11ps.h
-//    Passthrough11.hlsl
-//
-//
</del><ins>+///
</ins><span class="cx"> // Resource Bindings:
</span><span class="cx"> //
</span><span class="cx"> // Name                                 Type  Format         Dim Slot Elements
</span><span class="lines">@@ -18,17 +15,17 @@
</span><span class="cx"> //
</span><span class="cx"> // Input signature:
</span><span class="cx"> //
</span><del>-// Name                 Index   Mask Register SysValue Format   Used
-// -------------------- ----- ------ -------- -------- ------ ------
-// SV_POSITION              0   xyzw        0      POS  float       
-// TEXCOORD                 0   xy          1     NONE  float   xy  
</del><ins>+// Name                 Index   Mask Register SysValue  Format   Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// SV_POSITION              0   xyzw        0      POS   float       
+// TEXCOORD                 0   xy          1     NONE   float   xy  
</ins><span class="cx"> //
</span><span class="cx"> //
</span><span class="cx"> // Output signature:
</span><span class="cx"> //
</span><del>-// Name                 Index   Mask Register SysValue Format   Used
-// -------------------- ----- ------ -------- -------- ------ ------
-// SV_TARGET                0   xyzw        0   TARGET  float   xyzw
</del><ins>+// Name                 Index   Mask Register SysValue  Format   Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// SV_TARGET                0   xyzw        0   TARGET   float   xyzw
</ins><span class="cx"> //
</span><span class="cx"> ps_4_0
</span><span class="cx"> dcl_sampler s0, mode_default
</span><span class="lines">@@ -45,10 +42,10 @@
</span><span class="cx"> 
</span><span class="cx"> const BYTE g_PS_PassthroughRGB[] =
</span><span class="cx"> {
</span><del>-     68,  88,  66,  67, 253,  45, 
-     13,  34, 125, 194,  95, 149, 
-      1,  95, 194, 252, 118, 228, 
-    178, 200,   1,   0,   0,   0, 
</del><ins>+     68,  88,  66,  67, 125, 186, 
+    250, 242, 113, 255,  59, 239, 
+    119, 158, 237,  78, 220,  43, 
+    160,  46,   1,   0,   0,   0, 
</ins><span class="cx">     128,   2,   0,   0,   5,   0, 
</span><span class="cx">       0,   0,  52,   0,   0,   0, 
</span><span class="cx">     220,   0,   0,   0,  52,   1, 
</span><span class="lines">@@ -79,9 +76,9 @@
</span><span class="cx">      32,  83, 104,  97, 100, 101, 
</span><span class="cx">     114,  32,  67, 111, 109, 112, 
</span><span class="cx">     105, 108, 101, 114,  32,  57, 
</span><del>-     46,  50,  57,  46,  57,  53, 
-     50,  46,  51,  49,  49,  49, 
-      0, 171, 171, 171,  73,  83, 
</del><ins>+     46,  51,  48,  46,  57,  50, 
+     48,  48,  46,  49,  54,  51, 
+     56,  52,   0, 171,  73,  83, 
</ins><span class="cx">      71,  78,  80,   0,   0,   0, 
</span><span class="cx">       2,   0,   0,   0,   8,   0, 
</span><span class="cx">       0,   0,  56,   0,   0,   0, 
</span><span class="lines">@@ -145,7 +142,7 @@
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><del>-      2,   0,   0,   0,   0,   0, 
</del><ins>+      3,   0,   0,   0,   0,   0, 
</ins><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledpassthroughrgba11psh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughrgba11ps.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughrgba11ps.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/passthroughrgba11ps.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,12 +1,9 @@
</span><span class="cx"> #if 0
</span><span class="cx"> //
</span><del>-// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
</del><ins>+// Generated by Microsoft (R) HLSL Shader Compiler 9.30.9200.16384
</ins><span class="cx"> //
</span><span class="cx"> //
</span><del>-//   fxc /E PS_PassthroughRGBA /T ps_4_0 /Fh compiled/passthroughrgba11ps.h
-//    Passthrough11.hlsl
-//
-//
</del><ins>+///
</ins><span class="cx"> // Resource Bindings:
</span><span class="cx"> //
</span><span class="cx"> // Name                                 Type  Format         Dim Slot Elements
</span><span class="lines">@@ -18,17 +15,17 @@
</span><span class="cx"> //
</span><span class="cx"> // Input signature:
</span><span class="cx"> //
</span><del>-// Name                 Index   Mask Register SysValue Format   Used
-// -------------------- ----- ------ -------- -------- ------ ------
-// SV_POSITION              0   xyzw        0      POS  float       
-// TEXCOORD                 0   xy          1     NONE  float   xy  
</del><ins>+// Name                 Index   Mask Register SysValue  Format   Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// SV_POSITION              0   xyzw        0      POS   float       
+// TEXCOORD                 0   xy          1     NONE   float   xy  
</ins><span class="cx"> //
</span><span class="cx"> //
</span><span class="cx"> // Output signature:
</span><span class="cx"> //
</span><del>-// Name                 Index   Mask Register SysValue Format   Used
-// -------------------- ----- ------ -------- -------- ------ ------
-// SV_TARGET                0   xyzw        0   TARGET  float   xyzw
</del><ins>+// Name                 Index   Mask Register SysValue  Format   Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// SV_TARGET                0   xyzw        0   TARGET   float   xyzw
</ins><span class="cx"> //
</span><span class="cx"> ps_4_0
</span><span class="cx"> dcl_sampler s0, mode_default
</span><span class="lines">@@ -42,10 +39,10 @@
</span><span class="cx"> 
</span><span class="cx"> const BYTE g_PS_PassthroughRGBA[] =
</span><span class="cx"> {
</span><del>-     68,  88,  66,  67, 152,  86, 
-    225, 107, 155,  83, 216,  13, 
-    154, 212, 144,   5,  82,  74, 
-     90,  98,   1,   0,   0,   0, 
</del><ins>+     68,  88,  66,  67, 151, 152, 
+      8, 102, 174, 135,  76,  57, 
+    100, 146,  59,  74, 205,  35, 
+    206,  21,   1,   0,   0,   0, 
</ins><span class="cx">      80,   2,   0,   0,   5,   0, 
</span><span class="cx">       0,   0,  52,   0,   0,   0, 
</span><span class="cx">     220,   0,   0,   0,  52,   1, 
</span><span class="lines">@@ -76,9 +73,9 @@
</span><span class="cx">      32,  83, 104,  97, 100, 101, 
</span><span class="cx">     114,  32,  67, 111, 109, 112, 
</span><span class="cx">     105, 108, 101, 114,  32,  57, 
</span><del>-     46,  50,  57,  46,  57,  53, 
-     50,  46,  51,  49,  49,  49, 
-      0, 171, 171, 171,  73,  83, 
</del><ins>+     46,  51,  48,  46,  57,  50, 
+     48,  48,  46,  49,  54,  51, 
+     56,  52,   0, 171,  73,  83, 
</ins><span class="cx">      71,  78,  80,   0,   0,   0, 
</span><span class="cx">       2,   0,   0,   0,   8,   0, 
</span><span class="cx">       0,   0,  56,   0,   0,   0, 
</span><span class="lines">@@ -134,11 +131,11 @@
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><ins>+      1,   0,   0,   0,   0,   0, 
</ins><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><span class="cx">       0,   0,   0,   0,   0,   0, 
</span><del>-      0,   0,   0,   0,   0,   0, 
</del><span class="cx">       0,   0,   0,   0
</span><span class="cx"> };
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershaderscompiledstandardvsh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/standardvs.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/standardvs.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/compiled/standardvs.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,10 +1,8 @@
</span><span class="cx"> #if 0
</span><span class="cx"> //
</span><del>-// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
</del><ins>+// Generated by Microsoft (R) HLSL Shader Compiler 9.30.9200.16384
</ins><span class="cx"> //
</span><del>-//   fxc /E standardvs /T vs_2_0 /Fh compiled/standardvs.h Blit.vs
-//
-//
</del><ins>+///
</ins><span class="cx"> // Parameters:
</span><span class="cx"> //
</span><span class="cx"> //   float4 halfPixelSize;
</span><span class="lines">@@ -29,7 +27,7 @@
</span><span class="cx"> const BYTE g_vs20_standardvs[] =
</span><span class="cx"> {
</span><span class="cx">       0,   2, 254, 255, 254, 255, 
</span><del>-     35,   0,  67,  84,  65,  66, 
</del><ins>+     36,   0,  67,  84,  65,  66, 
</ins><span class="cx">      28,   0,   0,   0,  87,   0, 
</span><span class="cx">       0,   0,   0,   2, 254, 255, 
</span><span class="cx">       1,   0,   0,   0,  28,   0, 
</span><span class="lines">@@ -50,20 +48,20 @@
</span><span class="cx">      76,  83,  76,  32,  83, 104, 
</span><span class="cx">      97, 100, 101, 114,  32,  67, 
</span><span class="cx">     111, 109, 112, 105, 108, 101, 
</span><del>-    114,  32,  57,  46,  50,  57, 
-     46,  57,  53,  50,  46,  51, 
-     49,  49,  49,   0,  81,   0, 
-      0,   5,   1,   0,  15, 160, 
-      0,   0,   0,  63,   0,   0, 
-      0, 191,   0,   0, 128,  63, 
-      0,   0,   0,   0,  31,   0, 
-      0,   2,   0,   0,   0, 128, 
-      0,   0,  15, 144,   2,   0, 
-      0,   3,   0,   0,  15, 192, 
-      0,   0, 228, 144,   0,   0, 
-    228, 160,   4,   0,   0,   4, 
-      0,   0,  15, 224,   0,   0, 
-    228, 144,   1,   0, 164, 160, 
-      1,   0, 240, 160, 255, 255, 
-      0,   0
</del><ins>+    114,  32,  57,  46,  51,  48, 
+     46,  57,  50,  48,  48,  46, 
+     49,  54,  51,  56,  52,   0, 
+    171, 171,  81,   0,   0,   5, 
+      1,   0,  15, 160,   0,   0, 
+      0,  63,   0,   0,   0, 191, 
+      0,   0, 128,  63,   0,   0, 
+      0,   0,  31,   0,   0,   2, 
+      0,   0,   0, 128,   0,   0, 
+     15, 144,   2,   0,   0,   3, 
+      0,   0,  15, 192,   0,   0, 
+    228, 144,   0,   0, 228, 160, 
+      4,   0,   0,   4,   0,   0, 
+     15, 224,   0,   0, 228, 144, 
+      1,   0, 164, 160,   1,   0, 
+    240, 160, 255, 255,   0,   0
</ins><span class="cx"> };
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2renderershadersgenerate_shadersbat"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/generate_shaders.bat (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/generate_shaders.bat        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/renderer/shaders/generate_shaders.bat        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> REM found in the LICENSE file.
</span><span class="cx"> REM
</span><span class="cx"> 
</span><del>-PATH %PATH%;%DXSDK_DIR%\Utilities\bin\x86
</del><ins>+PATH %PATH%;%ProgramFiles(x86)%\Windows Kits\8.0\bin\x86;%DXSDK_DIR%\Utilities\bin\x86
</ins><span class="cx"> 
</span><span class="cx"> fxc /E standardvs /T vs_2_0 /Fh compiled/standardvs.h Blit.vs
</span><span class="cx"> fxc /E flipyvs /T vs_2_0 /Fh compiled/flipyvs.h Blit.vs
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2utilitiescpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/utilities.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/utilities.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/utilities.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -218,6 +218,29 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+GLsizei ComputeTypeSize(GLenum type)
+{
+    switch (type)
+    {
+      case GL_BYTE:                            return 1;
+      case GL_UNSIGNED_BYTE:                   return 1;
+      case GL_SHORT:                           return 2;
+      case GL_UNSIGNED_SHORT:                  return 2;
+      case GL_INT:                             return 4;
+      case GL_UNSIGNED_INT:                    return 4;
+      case GL_FLOAT:                           return 4;
+      case GL_HALF_FLOAT_OES:                  return 2;
+      case GL_UNSIGNED_SHORT_5_6_5:            return 2;
+      case GL_UNSIGNED_SHORT_4_4_4_4:          return 2;
+      case GL_UNSIGNED_SHORT_5_5_5_1:          return 2;
+      case GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT:  return 2;
+      case GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT:  return 2;
+      case GL_UNSIGNED_INT_2_10_10_10_REV_EXT: return 4;
+      case GL_UNSIGNED_INT_24_8_OES:           return 4;
+      default: UNREACHABLE();                  return 0;
+    }
+}
+
</ins><span class="cx"> bool IsCompressed(GLenum format)
</span><span class="cx"> {
</span><span class="cx">     if(format == GL_COMPRESSED_RGB_S3TC_DXT1_EXT ||
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrclibGLESv2utilitiesh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/utilities.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/utilities.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/libGLESv2/utilities.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -34,6 +34,7 @@
</span><span class="cx"> GLsizei ComputePitch(GLsizei width, GLint internalformat, GLint alignment);
</span><span class="cx"> GLsizei ComputeCompressedPitch(GLsizei width, GLenum format);
</span><span class="cx"> GLsizei ComputeCompressedSize(GLsizei width, GLsizei height, GLenum format);
</span><ins>+GLsizei ComputeTypeSize(GLenum type);
</ins><span class="cx"> bool IsCompressed(GLenum format);
</span><span class="cx"> bool IsDepthTexture(GLenum format);
</span><span class="cx"> bool IsStencilTexture(GLenum format);
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrcthird_partymurmurhashMurmurHash3cpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/third_party/murmurhash/MurmurHash3.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/third_party/murmurhash/MurmurHash3.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/third_party/murmurhash/MurmurHash3.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,334 +1,334 @@
</span><del>-//-----------------------------------------------------------------------------
-// MurmurHash3 was written by Austin Appleby, and is placed in the public
-// domain. The author hereby disclaims copyright to this source code.
-
-// Note - The x86 and x64 versions do _not_ produce the same results, as the
-// algorithms are optimized for their respective platforms. You can still
-// compile and run any of them on any platform, but your performance with the
-// non-native version will be less than optimal.
-
-#include &quot;MurmurHash3.h&quot;
-
-//-----------------------------------------------------------------------------
-// Platform-specific functions and macros
-
-// Microsoft Visual Studio
-
-#if defined(_MSC_VER)
-
-#define FORCE_INLINE    __forceinline
-
-#include &lt;stdlib.h&gt;
-
-#define ROTL32(x,y) _rotl(x,y)
-#define ROTL64(x,y) _rotl64(x,y)
-
-#define BIG_CONSTANT(x) (x)
-
-// Other compilers
-
-#else   // defined(_MSC_VER)
-
-#define FORCE_INLINE __attribute__((always_inline))
-
-inline uint32_t rotl32 ( uint32_t x, int8_t r )
-{
-  return (x &lt;&lt; r) | (x &gt;&gt; (32 - r));
-}
-
-inline uint64_t rotl64 ( uint64_t x, int8_t r )
-{
-  return (x &lt;&lt; r) | (x &gt;&gt; (64 - r));
-}
-
-#define ROTL32(x,y) rotl32(x,y)
-#define ROTL64(x,y) rotl64(x,y)
-
-#define BIG_CONSTANT(x) (x##LLU)
-
-#endif // !defined(_MSC_VER)
-
-//-----------------------------------------------------------------------------
-// Block read - if your platform needs to do endian-swapping or can only
-// handle aligned reads, do the conversion here
-
-FORCE_INLINE uint32_t getblock ( const uint32_t * p, int i )
-{
-  return p[i];
-}
-
-FORCE_INLINE uint64_t getblock ( const uint64_t * p, int i )
-{
-  return p[i];
-}
-
-//-----------------------------------------------------------------------------
-// Finalization mix - force all bits of a hash block to avalanche
-
-FORCE_INLINE uint32_t fmix ( uint32_t h )
-{
-  h ^= h &gt;&gt; 16;
-  h *= 0x85ebca6b;
-  h ^= h &gt;&gt; 13;
-  h *= 0xc2b2ae35;
-  h ^= h &gt;&gt; 16;
-
-  return h;
-}
-
-//----------
-
-FORCE_INLINE uint64_t fmix ( uint64_t k )
-{
-  k ^= k &gt;&gt; 33;
-  k *= BIG_CONSTANT(0xff51afd7ed558ccd);
-  k ^= k &gt;&gt; 33;
-  k *= BIG_CONSTANT(0xc4ceb9fe1a85ec53);
-  k ^= k &gt;&gt; 33;
-
-  return k;
-}
-
-//-----------------------------------------------------------------------------
-
-void MurmurHash3_x86_32 ( const void * key, int len,
-                          uint32_t seed, void * out )
-{
-  const uint8_t * data = (const uint8_t*)key;
-  const int nblocks = len / 4;
-
-  uint32_t h1 = seed;
-
-  const uint32_t c1 = 0xcc9e2d51;
-  const uint32_t c2 = 0x1b873593;
-
-  //----------
-  // body
-
-  const uint32_t * blocks = (const uint32_t *)(data + nblocks*4);
-
-  for(int i = -nblocks; i; i++)
-  {
-    uint32_t k1 = getblock(blocks,i);
-
-    k1 *= c1;
-    k1 = ROTL32(k1,15);
-    k1 *= c2;
-    
-    h1 ^= k1;
-    h1 = ROTL32(h1,13); 
-    h1 = h1*5+0xe6546b64;
-  }
-
-  //----------
-  // tail
-
-  const uint8_t * tail = (const uint8_t*)(data + nblocks*4);
-
-  uint32_t k1 = 0;
-
-  switch(len &amp; 3)
-  {
-  case 3: k1 ^= tail[2] &lt;&lt; 16;
-  case 2: k1 ^= tail[1] &lt;&lt; 8;
-  case 1: k1 ^= tail[0];
-          k1 *= c1; k1 = ROTL32(k1,15); k1 *= c2; h1 ^= k1;
-  };
-
-  //----------
-  // finalization
-
-  h1 ^= len;
-
-  h1 = fmix(h1);
-
-  *(uint32_t*)out = h1;
-} 
-
-//-----------------------------------------------------------------------------
-
-void MurmurHash3_x86_128 ( const void * key, const int len,
-                           uint32_t seed, void * out )
-{
-  const uint8_t * data = (const uint8_t*)key;
-  const int nblocks = len / 16;
-
-  uint32_t h1 = seed;
-  uint32_t h2 = seed;
-  uint32_t h3 = seed;
-  uint32_t h4 = seed;
-
-  const uint32_t c1 = 0x239b961b; 
-  const uint32_t c2 = 0xab0e9789;
-  const uint32_t c3 = 0x38b34ae5; 
-  const uint32_t c4 = 0xa1e38b93;
-
-  //----------
-  // body
-
-  const uint32_t * blocks = (const uint32_t *)(data + nblocks*16);
-
-  for(int i = -nblocks; i; i++)
-  {
-    uint32_t k1 = getblock(blocks,i*4+0);
-    uint32_t k2 = getblock(blocks,i*4+1);
-    uint32_t k3 = getblock(blocks,i*4+2);
-    uint32_t k4 = getblock(blocks,i*4+3);
-
-    k1 *= c1; k1  = ROTL32(k1,15); k1 *= c2; h1 ^= k1;
-
-    h1 = ROTL32(h1,19); h1 += h2; h1 = h1*5+0x561ccd1b;
-
-    k2 *= c2; k2  = ROTL32(k2,16); k2 *= c3; h2 ^= k2;
-
-    h2 = ROTL32(h2,17); h2 += h3; h2 = h2*5+0x0bcaa747;
-
-    k3 *= c3; k3  = ROTL32(k3,17); k3 *= c4; h3 ^= k3;
-
-    h3 = ROTL32(h3,15); h3 += h4; h3 = h3*5+0x96cd1c35;
-
-    k4 *= c4; k4  = ROTL32(k4,18); k4 *= c1; h4 ^= k4;
-
-    h4 = ROTL32(h4,13); h4 += h1; h4 = h4*5+0x32ac3b17;
-  }
-
-  //----------
-  // tail
-
-  const uint8_t * tail = (const uint8_t*)(data + nblocks*16);
-
-  uint32_t k1 = 0;
-  uint32_t k2 = 0;
-  uint32_t k3 = 0;
-  uint32_t k4 = 0;
-
-  switch(len &amp; 15)
-  {
-  case 15: k4 ^= tail[14] &lt;&lt; 16;
-  case 14: k4 ^= tail[13] &lt;&lt; 8;
-  case 13: k4 ^= tail[12] &lt;&lt; 0;
-           k4 *= c4; k4  = ROTL32(k4,18); k4 *= c1; h4 ^= k4;
-
-  case 12: k3 ^= tail[11] &lt;&lt; 24;
-  case 11: k3 ^= tail[10] &lt;&lt; 16;
-  case 10: k3 ^= tail[ 9] &lt;&lt; 8;
-  case  9: k3 ^= tail[ 8] &lt;&lt; 0;
-           k3 *= c3; k3  = ROTL32(k3,17); k3 *= c4; h3 ^= k3;
-
-  case  8: k2 ^= tail[ 7] &lt;&lt; 24;
-  case  7: k2 ^= tail[ 6] &lt;&lt; 16;
-  case  6: k2 ^= tail[ 5] &lt;&lt; 8;
-  case  5: k2 ^= tail[ 4] &lt;&lt; 0;
-           k2 *= c2; k2  = ROTL32(k2,16); k2 *= c3; h2 ^= k2;
-
-  case  4: k1 ^= tail[ 3] &lt;&lt; 24;
-  case  3: k1 ^= tail[ 2] &lt;&lt; 16;
-  case  2: k1 ^= tail[ 1] &lt;&lt; 8;
-  case  1: k1 ^= tail[ 0] &lt;&lt; 0;
-           k1 *= c1; k1  = ROTL32(k1,15); k1 *= c2; h1 ^= k1;
-  };
-
-  //----------
-  // finalization
-
-  h1 ^= len; h2 ^= len; h3 ^= len; h4 ^= len;
-
-  h1 += h2; h1 += h3; h1 += h4;
-  h2 += h1; h3 += h1; h4 += h1;
-
-  h1 = fmix(h1);
-  h2 = fmix(h2);
-  h3 = fmix(h3);
-  h4 = fmix(h4);
-
-  h1 += h2; h1 += h3; h1 += h4;
-  h2 += h1; h3 += h1; h4 += h1;
-
-  ((uint32_t*)out)[0] = h1;
-  ((uint32_t*)out)[1] = h2;
-  ((uint32_t*)out)[2] = h3;
-  ((uint32_t*)out)[3] = h4;
-}
-
-//-----------------------------------------------------------------------------
-
-void MurmurHash3_x64_128 ( const void * key, const int len,
-                           const uint32_t seed, void * out )
-{
-  const uint8_t * data = (const uint8_t*)key;
-  const int nblocks = len / 16;
-
-  uint64_t h1 = seed;
-  uint64_t h2 = seed;
-
-  const uint64_t c1 = BIG_CONSTANT(0x87c37b91114253d5);
-  const uint64_t c2 = BIG_CONSTANT(0x4cf5ad432745937f);
-
-  //----------
-  // body
-
-  const uint64_t * blocks = (const uint64_t *)(data);
-
-  for(int i = 0; i &lt; nblocks; i++)
-  {
-    uint64_t k1 = getblock(blocks,i*2+0);
-    uint64_t k2 = getblock(blocks,i*2+1);
-
-    k1 *= c1; k1  = ROTL64(k1,31); k1 *= c2; h1 ^= k1;
-
-    h1 = ROTL64(h1,27); h1 += h2; h1 = h1*5+0x52dce729;
-
-    k2 *= c2; k2  = ROTL64(k2,33); k2 *= c1; h2 ^= k2;
-
-    h2 = ROTL64(h2,31); h2 += h1; h2 = h2*5+0x38495ab5;
-  }
-
-  //----------
-  // tail
-
-  const uint8_t * tail = (const uint8_t*)(data + nblocks*16);
-
-  uint64_t k1 = 0;
-  uint64_t k2 = 0;
-
-  switch(len &amp; 15)
-  {
-  case 15: k2 ^= uint64_t(tail[14]) &lt;&lt; 48;
-  case 14: k2 ^= uint64_t(tail[13]) &lt;&lt; 40;
-  case 13: k2 ^= uint64_t(tail[12]) &lt;&lt; 32;
-  case 12: k2 ^= uint64_t(tail[11]) &lt;&lt; 24;
-  case 11: k2 ^= uint64_t(tail[10]) &lt;&lt; 16;
-  case 10: k2 ^= uint64_t(tail[ 9]) &lt;&lt; 8;
-  case  9: k2 ^= uint64_t(tail[ 8]) &lt;&lt; 0;
-           k2 *= c2; k2  = ROTL64(k2,33); k2 *= c1; h2 ^= k2;
-
-  case  8: k1 ^= uint64_t(tail[ 7]) &lt;&lt; 56;
-  case  7: k1 ^= uint64_t(tail[ 6]) &lt;&lt; 48;
-  case  6: k1 ^= uint64_t(tail[ 5]) &lt;&lt; 40;
-  case  5: k1 ^= uint64_t(tail[ 4]) &lt;&lt; 32;
-  case  4: k1 ^= uint64_t(tail[ 3]) &lt;&lt; 24;
-  case  3: k1 ^= uint64_t(tail[ 2]) &lt;&lt; 16;
-  case  2: k1 ^= uint64_t(tail[ 1]) &lt;&lt; 8;
-  case  1: k1 ^= uint64_t(tail[ 0]) &lt;&lt; 0;
-           k1 *= c1; k1  = ROTL64(k1,31); k1 *= c2; h1 ^= k1;
-  };
-
-  //----------
-  // finalization
-
-  h1 ^= len; h2 ^= len;
-
-  h1 += h2;
-  h2 += h1;
-
-  h1 = fmix(h1);
-  h2 = fmix(h2);
-
-  h1 += h2;
-  h2 += h1;
-
-  ((uint64_t*)out)[0] = h1;
-  ((uint64_t*)out)[1] = h2;
-}
-
-//-----------------------------------------------------------------------------
</del><ins>+//-----------------------------------------------------------------------------
+// MurmurHash3 was written by Austin Appleby, and is placed in the public
+// domain. The author hereby disclaims copyright to this source code.
+
+// Note - The x86 and x64 versions do _not_ produce the same results, as the
+// algorithms are optimized for their respective platforms. You can still
+// compile and run any of them on any platform, but your performance with the
+// non-native version will be less than optimal.
+
+#include &quot;MurmurHash3.h&quot;
+
+//-----------------------------------------------------------------------------
+// Platform-specific functions and macros
+
+// Microsoft Visual Studio
+
+#if defined(_MSC_VER)
+
+#define FORCE_INLINE    __forceinline
+
+#include &lt;stdlib.h&gt;
+
+#define ROTL32(x,y)    _rotl(x,y)
+#define ROTL64(x,y)    _rotl64(x,y)
+
+#define BIG_CONSTANT(x) (x)
+
+// Other compilers
+
+#else    // defined(_MSC_VER)
+
+#define    FORCE_INLINE __attribute__((always_inline))
+
+inline uint32_t rotl32 ( uint32_t x, int8_t r )
+{
+  return (x &lt;&lt; r) | (x &gt;&gt; (32 - r));
+}
+
+inline uint64_t rotl64 ( uint64_t x, int8_t r )
+{
+  return (x &lt;&lt; r) | (x &gt;&gt; (64 - r));
+}
+
+#define    ROTL32(x,y)    rotl32(x,y)
+#define ROTL64(x,y)    rotl64(x,y)
+
+#define BIG_CONSTANT(x) (x##LLU)
+
+#endif // !defined(_MSC_VER)
+
+//-----------------------------------------------------------------------------
+// Block read - if your platform needs to do endian-swapping or can only
+// handle aligned reads, do the conversion here
+
+FORCE_INLINE uint32_t getblock ( const uint32_t * p, int i )
+{
+  return p[i];
+}
+
+FORCE_INLINE uint64_t getblock ( const uint64_t * p, int i )
+{
+  return p[i];
+}
+
+//-----------------------------------------------------------------------------
+// Finalization mix - force all bits of a hash block to avalanche
+
+FORCE_INLINE uint32_t fmix ( uint32_t h )
+{
+  h ^= h &gt;&gt; 16;
+  h *= 0x85ebca6b;
+  h ^= h &gt;&gt; 13;
+  h *= 0xc2b2ae35;
+  h ^= h &gt;&gt; 16;
+
+  return h;
+}
+
+//----------
+
+FORCE_INLINE uint64_t fmix ( uint64_t k )
+{
+  k ^= k &gt;&gt; 33;
+  k *= BIG_CONSTANT(0xff51afd7ed558ccd);
+  k ^= k &gt;&gt; 33;
+  k *= BIG_CONSTANT(0xc4ceb9fe1a85ec53);
+  k ^= k &gt;&gt; 33;
+
+  return k;
+}
+
+//-----------------------------------------------------------------------------
+
+void MurmurHash3_x86_32 ( const void * key, int len,
+                          uint32_t seed, void * out )
+{
+  const uint8_t * data = (const uint8_t*)key;
+  const int nblocks = len / 4;
+
+  uint32_t h1 = seed;
+
+  const uint32_t c1 = 0xcc9e2d51;
+  const uint32_t c2 = 0x1b873593;
+
+  //----------
+  // body
+
+  const uint32_t * blocks = (const uint32_t *)(data + nblocks*4);
+
+  for(int i = -nblocks; i; i++)
+  {
+    uint32_t k1 = getblock(blocks,i);
+
+    k1 *= c1;
+    k1 = ROTL32(k1,15);
+    k1 *= c2;
+    
+    h1 ^= k1;
+    h1 = ROTL32(h1,13); 
+    h1 = h1*5+0xe6546b64;
+  }
+
+  //----------
+  // tail
+
+  const uint8_t * tail = (const uint8_t*)(data + nblocks*4);
+
+  uint32_t k1 = 0;
+
+  switch(len &amp; 3)
+  {
+  case 3: k1 ^= tail[2] &lt;&lt; 16;
+  case 2: k1 ^= tail[1] &lt;&lt; 8;
+  case 1: k1 ^= tail[0];
+          k1 *= c1; k1 = ROTL32(k1,15); k1 *= c2; h1 ^= k1;
+  };
+
+  //----------
+  // finalization
+
+  h1 ^= len;
+
+  h1 = fmix(h1);
+
+  *(uint32_t*)out = h1;
+} 
+
+//-----------------------------------------------------------------------------
+
+void MurmurHash3_x86_128 ( const void * key, const int len,
+                           uint32_t seed, void * out )
+{
+  const uint8_t * data = (const uint8_t*)key;
+  const int nblocks = len / 16;
+
+  uint32_t h1 = seed;
+  uint32_t h2 = seed;
+  uint32_t h3 = seed;
+  uint32_t h4 = seed;
+
+  const uint32_t c1 = 0x239b961b; 
+  const uint32_t c2 = 0xab0e9789;
+  const uint32_t c3 = 0x38b34ae5; 
+  const uint32_t c4 = 0xa1e38b93;
+
+  //----------
+  // body
+
+  const uint32_t * blocks = (const uint32_t *)(data + nblocks*16);
+
+  for(int i = -nblocks; i; i++)
+  {
+    uint32_t k1 = getblock(blocks,i*4+0);
+    uint32_t k2 = getblock(blocks,i*4+1);
+    uint32_t k3 = getblock(blocks,i*4+2);
+    uint32_t k4 = getblock(blocks,i*4+3);
+
+    k1 *= c1; k1  = ROTL32(k1,15); k1 *= c2; h1 ^= k1;
+
+    h1 = ROTL32(h1,19); h1 += h2; h1 = h1*5+0x561ccd1b;
+
+    k2 *= c2; k2  = ROTL32(k2,16); k2 *= c3; h2 ^= k2;
+
+    h2 = ROTL32(h2,17); h2 += h3; h2 = h2*5+0x0bcaa747;
+
+    k3 *= c3; k3  = ROTL32(k3,17); k3 *= c4; h3 ^= k3;
+
+    h3 = ROTL32(h3,15); h3 += h4; h3 = h3*5+0x96cd1c35;
+
+    k4 *= c4; k4  = ROTL32(k4,18); k4 *= c1; h4 ^= k4;
+
+    h4 = ROTL32(h4,13); h4 += h1; h4 = h4*5+0x32ac3b17;
+  }
+
+  //----------
+  // tail
+
+  const uint8_t * tail = (const uint8_t*)(data + nblocks*16);
+
+  uint32_t k1 = 0;
+  uint32_t k2 = 0;
+  uint32_t k3 = 0;
+  uint32_t k4 = 0;
+
+  switch(len &amp; 15)
+  {
+  case 15: k4 ^= tail[14] &lt;&lt; 16;
+  case 14: k4 ^= tail[13] &lt;&lt; 8;
+  case 13: k4 ^= tail[12] &lt;&lt; 0;
+           k4 *= c4; k4  = ROTL32(k4,18); k4 *= c1; h4 ^= k4;
+
+  case 12: k3 ^= tail[11] &lt;&lt; 24;
+  case 11: k3 ^= tail[10] &lt;&lt; 16;
+  case 10: k3 ^= tail[ 9] &lt;&lt; 8;
+  case  9: k3 ^= tail[ 8] &lt;&lt; 0;
+           k3 *= c3; k3  = ROTL32(k3,17); k3 *= c4; h3 ^= k3;
+
+  case  8: k2 ^= tail[ 7] &lt;&lt; 24;
+  case  7: k2 ^= tail[ 6] &lt;&lt; 16;
+  case  6: k2 ^= tail[ 5] &lt;&lt; 8;
+  case  5: k2 ^= tail[ 4] &lt;&lt; 0;
+           k2 *= c2; k2  = ROTL32(k2,16); k2 *= c3; h2 ^= k2;
+
+  case  4: k1 ^= tail[ 3] &lt;&lt; 24;
+  case  3: k1 ^= tail[ 2] &lt;&lt; 16;
+  case  2: k1 ^= tail[ 1] &lt;&lt; 8;
+  case  1: k1 ^= tail[ 0] &lt;&lt; 0;
+           k1 *= c1; k1  = ROTL32(k1,15); k1 *= c2; h1 ^= k1;
+  };
+
+  //----------
+  // finalization
+
+  h1 ^= len; h2 ^= len; h3 ^= len; h4 ^= len;
+
+  h1 += h2; h1 += h3; h1 += h4;
+  h2 += h1; h3 += h1; h4 += h1;
+
+  h1 = fmix(h1);
+  h2 = fmix(h2);
+  h3 = fmix(h3);
+  h4 = fmix(h4);
+
+  h1 += h2; h1 += h3; h1 += h4;
+  h2 += h1; h3 += h1; h4 += h1;
+
+  ((uint32_t*)out)[0] = h1;
+  ((uint32_t*)out)[1] = h2;
+  ((uint32_t*)out)[2] = h3;
+  ((uint32_t*)out)[3] = h4;
+}
+
+//-----------------------------------------------------------------------------
+
+void MurmurHash3_x64_128 ( const void * key, const int len,
+                           const uint32_t seed, void * out )
+{
+  const uint8_t * data = (const uint8_t*)key;
+  const int nblocks = len / 16;
+
+  uint64_t h1 = seed;
+  uint64_t h2 = seed;
+
+  const uint64_t c1 = BIG_CONSTANT(0x87c37b91114253d5);
+  const uint64_t c2 = BIG_CONSTANT(0x4cf5ad432745937f);
+
+  //----------
+  // body
+
+  const uint64_t * blocks = (const uint64_t *)(data);
+
+  for(int i = 0; i &lt; nblocks; i++)
+  {
+    uint64_t k1 = getblock(blocks,i*2+0);
+    uint64_t k2 = getblock(blocks,i*2+1);
+
+    k1 *= c1; k1  = ROTL64(k1,31); k1 *= c2; h1 ^= k1;
+
+    h1 = ROTL64(h1,27); h1 += h2; h1 = h1*5+0x52dce729;
+
+    k2 *= c2; k2  = ROTL64(k2,33); k2 *= c1; h2 ^= k2;
+
+    h2 = ROTL64(h2,31); h2 += h1; h2 = h2*5+0x38495ab5;
+  }
+
+  //----------
+  // tail
+
+  const uint8_t * tail = (const uint8_t*)(data + nblocks*16);
+
+  uint64_t k1 = 0;
+  uint64_t k2 = 0;
+
+  switch(len &amp; 15)
+  {
+  case 15: k2 ^= uint64_t(tail[14]) &lt;&lt; 48;
+  case 14: k2 ^= uint64_t(tail[13]) &lt;&lt; 40;
+  case 13: k2 ^= uint64_t(tail[12]) &lt;&lt; 32;
+  case 12: k2 ^= uint64_t(tail[11]) &lt;&lt; 24;
+  case 11: k2 ^= uint64_t(tail[10]) &lt;&lt; 16;
+  case 10: k2 ^= uint64_t(tail[ 9]) &lt;&lt; 8;
+  case  9: k2 ^= uint64_t(tail[ 8]) &lt;&lt; 0;
+           k2 *= c2; k2  = ROTL64(k2,33); k2 *= c1; h2 ^= k2;
+
+  case  8: k1 ^= uint64_t(tail[ 7]) &lt;&lt; 56;
+  case  7: k1 ^= uint64_t(tail[ 6]) &lt;&lt; 48;
+  case  6: k1 ^= uint64_t(tail[ 5]) &lt;&lt; 40;
+  case  5: k1 ^= uint64_t(tail[ 4]) &lt;&lt; 32;
+  case  4: k1 ^= uint64_t(tail[ 3]) &lt;&lt; 24;
+  case  3: k1 ^= uint64_t(tail[ 2]) &lt;&lt; 16;
+  case  2: k1 ^= uint64_t(tail[ 1]) &lt;&lt; 8;
+  case  1: k1 ^= uint64_t(tail[ 0]) &lt;&lt; 0;
+           k1 *= c1; k1  = ROTL64(k1,31); k1 *= c2; h1 ^= k1;
+  };
+
+  //----------
+  // finalization
+
+  h1 ^= len; h2 ^= len;
+
+  h1 += h2;
+  h2 += h1;
+
+  h1 = fmix(h1);
+  h2 = fmix(h2);
+
+  h1 += h2;
+  h2 += h1;
+
+  ((uint64_t*)out)[0] = h1;
+  ((uint64_t*)out)[1] = h2;
+}
+
+//-----------------------------------------------------------------------------
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrcthird_partymurmurhashMurmurHash3h"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/third_party/murmurhash/MurmurHash3.h (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/third_party/murmurhash/MurmurHash3.h        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/third_party/murmurhash/MurmurHash3.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,37 +1,37 @@
</span><del>-//-----------------------------------------------------------------------------
-// MurmurHash3 was written by Austin Appleby, and is placed in the public
-// domain. The author hereby disclaims copyright to this source code.
-
-#ifndef _MURMURHASH3_H_
-#define _MURMURHASH3_H_
-
-//-----------------------------------------------------------------------------
-// Platform-specific functions and macros
-
-// Microsoft Visual Studio
-
-#if defined(_MSC_VER)
-
-typedef unsigned char uint8_t;
-typedef unsigned long uint32_t;
-typedef unsigned __int64 uint64_t;
-
-// Other compilers
-
-#else   // defined(_MSC_VER)
-
-#include &lt;stdint.h&gt;
-
-#endif // !defined(_MSC_VER)
-
-//-----------------------------------------------------------------------------
-
-void MurmurHash3_x86_32  ( const void * key, int len, uint32_t seed, void * out );
-
-void MurmurHash3_x86_128 ( const void * key, int len, uint32_t seed, void * out );
-
-void MurmurHash3_x64_128 ( const void * key, int len, uint32_t seed, void * out );
-
-//-----------------------------------------------------------------------------
-
</del><ins>+//-----------------------------------------------------------------------------
+// MurmurHash3 was written by Austin Appleby, and is placed in the public
+// domain. The author hereby disclaims copyright to this source code.
+
+#ifndef _MURMURHASH3_H_
+#define _MURMURHASH3_H_
+
+//-----------------------------------------------------------------------------
+// Platform-specific functions and macros
+
+// Microsoft Visual Studio
+
+#if defined(_MSC_VER)
+
+typedef unsigned char uint8_t;
+typedef unsigned long uint32_t;
+typedef unsigned __int64 uint64_t;
+
+// Other compilers
+
+#else    // defined(_MSC_VER)
+
+#include &lt;stdint.h&gt;
+
+#endif // !defined(_MSC_VER)
+
+//-----------------------------------------------------------------------------
+
+void MurmurHash3_x86_32  ( const void * key, int len, uint32_t seed, void * out );
+
+void MurmurHash3_x86_128 ( const void * key, int len, uint32_t seed, void * out );
+
+void MurmurHash3_x64_128 ( const void * key, int len, uint32_t seed, void * out );
+
+//-----------------------------------------------------------------------------
+
</ins><span class="cx"> #endif // _MURMURHASH3_H_
</span><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceThirdPartyANGLEsrcthird_partytrace_eventtrace_eventh"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/third_party/trace_event/trace_event.h (0 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/third_party/trace_event/trace_event.h                                (rev 0)
+++ releases/WebKitGTK/webkit-2.2/Source/ThirdParty/ANGLE/src/third_party/trace_event/trace_event.h        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -0,0 +1,826 @@
</span><ins>+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Trace events are for tracking application performance and resource usage.
+// Macros are provided to track:
+//    Begin and end of function calls
+//    Counters
+//
+// Events are issued against categories. Whereas LOG's
+// categories are statically defined, TRACE categories are created
+// implicitly with a string. For example:
+//   TRACE_EVENT_INSTANT0(&quot;MY_SUBSYSTEM&quot;, &quot;SomeImportantEvent&quot;)
+//
+// Events can be INSTANT, or can be pairs of BEGIN and END in the same scope:
+//   TRACE_EVENT_BEGIN0(&quot;MY_SUBSYSTEM&quot;, &quot;SomethingCostly&quot;)
+//   doSomethingCostly()
+//   TRACE_EVENT_END0(&quot;MY_SUBSYSTEM&quot;, &quot;SomethingCostly&quot;)
+// Note: our tools can't always determine the correct BEGIN/END pairs unless
+// these are used in the same scope. Use ASYNC_BEGIN/ASYNC_END macros if you need them
+// to be in separate scopes.
+//
+// A common use case is to trace entire function scopes. This
+// issues a trace BEGIN and END automatically:
+//   void doSomethingCostly() {
+//     TRACE_EVENT0(&quot;MY_SUBSYSTEM&quot;, &quot;doSomethingCostly&quot;);
+//     ...
+//   }
+//
+// Additional parameters can be associated with an event:
+//   void doSomethingCostly2(int howMuch) {
+//     TRACE_EVENT1(&quot;MY_SUBSYSTEM&quot;, &quot;doSomethingCostly&quot;,
+//         &quot;howMuch&quot;, howMuch);
+//     ...
+//   }
+//
+// The trace system will automatically add to this information the
+// current process id, thread id, and a timestamp in microseconds.
+//
+// To trace an asynchronous procedure such as an IPC send/receive, use ASYNC_BEGIN and
+// ASYNC_END:
+//   [single threaded sender code]
+//     static int send_count = 0;
+//     ++send_count;
+//     TRACE_EVENT_ASYNC_BEGIN0(&quot;ipc&quot;, &quot;message&quot;, send_count);
+//     Send(new MyMessage(send_count));
+//   [receive code]
+//     void OnMyMessage(send_count) {
+//       TRACE_EVENT_ASYNC_END0(&quot;ipc&quot;, &quot;message&quot;, send_count);
+//     }
+// The third parameter is a unique ID to match ASYNC_BEGIN/ASYNC_END pairs.
+// ASYNC_BEGIN and ASYNC_END can occur on any thread of any traced process. Pointers can
+// be used for the ID parameter, and they will be mangled internally so that
+// the same pointer on two different processes will not match. For example:
+//   class MyTracedClass {
+//    public:
+//     MyTracedClass() {
+//       TRACE_EVENT_ASYNC_BEGIN0(&quot;category&quot;, &quot;MyTracedClass&quot;, this);
+//     }
+//     ~MyTracedClass() {
+//       TRACE_EVENT_ASYNC_END0(&quot;category&quot;, &quot;MyTracedClass&quot;, this);
+//     }
+//   }
+//
+// Trace event also supports counters, which is a way to track a quantity
+// as it varies over time. Counters are created with the following macro:
+//   TRACE_COUNTER1(&quot;MY_SUBSYSTEM&quot;, &quot;myCounter&quot;, g_myCounterValue);
+//
+// Counters are process-specific. The macro itself can be issued from any
+// thread, however.
+//
+// Sometimes, you want to track two counters at once. You can do this with two
+// counter macros:
+//   TRACE_COUNTER1(&quot;MY_SUBSYSTEM&quot;, &quot;myCounter0&quot;, g_myCounterValue[0]);
+//   TRACE_COUNTER1(&quot;MY_SUBSYSTEM&quot;, &quot;myCounter1&quot;, g_myCounterValue[1]);
+// Or you can do it with a combined macro:
+//   TRACE_COUNTER2(&quot;MY_SUBSYSTEM&quot;, &quot;myCounter&quot;,
+//       &quot;bytesPinned&quot;, g_myCounterValue[0],
+//       &quot;bytesAllocated&quot;, g_myCounterValue[1]);
+// This indicates to the tracing UI that these counters should be displayed
+// in a single graph, as a summed area chart.
+//
+// Since counters are in a global namespace, you may want to disembiguate with a
+// unique ID, by using the TRACE_COUNTER_ID* variations.
+//
+// By default, trace collection is compiled in, but turned off at runtime.
+// Collecting trace data is the responsibility of the embedding
+// application. In Chrome's case, navigating to about:tracing will turn on
+// tracing and display data collected across all active processes.
+//
+//
+// Memory scoping note:
+// Tracing copies the pointers, not the string content, of the strings passed
+// in for category, name, and arg_names. Thus, the following code will
+// cause problems:
+//     char* str = strdup(&quot;impprtantName&quot;);
+//     TRACE_EVENT_INSTANT0(&quot;SUBSYSTEM&quot;, str);  // BAD!
+//     free(str);                   // Trace system now has dangling pointer
+//
+// To avoid this issue with the |name| and |arg_name| parameters, use the
+// TRACE_EVENT_COPY_XXX overloads of the macros at additional runtime overhead.
+// Notes: The category must always be in a long-lived char* (i.e. static const).
+//        The |arg_values|, when used, are always deep copied with the _COPY
+//        macros.
+//
+// When are string argument values copied:
+// const char* arg_values are only referenced by default:
+//     TRACE_EVENT1(&quot;category&quot;, &quot;name&quot;,
+//                  &quot;arg1&quot;, &quot;literal string is only referenced&quot;);
+// Use TRACE_STR_COPY to force copying of a const char*:
+//     TRACE_EVENT1(&quot;category&quot;, &quot;name&quot;,
+//                  &quot;arg1&quot;, TRACE_STR_COPY(&quot;string will be copied&quot;));
+// std::string arg_values are always copied:
+//     TRACE_EVENT1(&quot;category&quot;, &quot;name&quot;,
+//                  &quot;arg1&quot;, std::string(&quot;string will be copied&quot;));
+//
+//
+// Thread Safety:
+// A thread safe singleton and mutex are used for thread safety. Category
+// enabled flags are used to limit the performance impact when the system
+// is not enabled.
+//
+// TRACE_EVENT macros first cache a pointer to a category. The categories are
+// statically allocated and safe at all times, even after exit. Fetching a
+// category is protected by the TraceLog::lock_. Multiple threads initializing
+// the static variable is safe, as they will be serialized by the lock and
+// multiple calls will return the same pointer to the category.
+//
+// Then the category_enabled flag is checked. This is a unsigned char, and
+// not intended to be multithread safe. It optimizes access to addTraceEvent
+// which is threadsafe internally via TraceLog::lock_. The enabled flag may
+// cause some threads to incorrectly call or skip calling addTraceEvent near
+// the time of the system being enabled or disabled. This is acceptable as
+// we tolerate some data loss while the system is being enabled/disabled and
+// because addTraceEvent is threadsafe internally and checks the enabled state
+// again under lock.
+//
+// Without the use of these static category pointers and enabled flags all
+// trace points would carry a significant performance cost of aquiring a lock
+// and resolving the category.
+
+#ifndef COMMON_TRACE_EVENT_H_
+#define COMMON_TRACE_EVENT_H_
+
+#include &lt;string&gt;
+
+#include &quot;common/event_tracer.h&quot;
+
+// By default, const char* argument values are assumed to have long-lived scope
+// and will not be copied. Use this macro to force a const char* to be copied.
+#define TRACE_STR_COPY(str) \
+    WebCore::TraceEvent::TraceStringWithCopy(str)
+
+// Records a pair of begin and end events called &quot;name&quot; for the current
+// scope, with 0, 1 or 2 associated arguments. If the category is not
+// enabled, then this does nothing.
+// - category and name strings must have application lifetime (statics or
+//   literals). They may not include &quot; chars.
+#define TRACE_EVENT0(category, name) \
+    INTERNAL_TRACE_EVENT_ADD_SCOPED(category, name)
+#define TRACE_EVENT1(category, name, arg1_name, arg1_val) \
+    INTERNAL_TRACE_EVENT_ADD_SCOPED(category, name, arg1_name, arg1_val)
+#define TRACE_EVENT2(category, name, arg1_name, arg1_val, arg2_name, arg2_val) \
+    INTERNAL_TRACE_EVENT_ADD_SCOPED(category, name, arg1_name, arg1_val, \
+        arg2_name, arg2_val)
+
+// Records a single event called &quot;name&quot; immediately, with 0, 1 or 2
+// associated arguments. If the category is not enabled, then this
+// does nothing.
+// - category and name strings must have application lifetime (statics or
+//   literals). They may not include &quot; chars.
+#define TRACE_EVENT_INSTANT0(category, name) \
+    INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, \
+        category, name, TRACE_EVENT_FLAG_NONE)
+#define TRACE_EVENT_INSTANT1(category, name, arg1_name, arg1_val) \
+    INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, \
+        category, name, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val)
+#define TRACE_EVENT_INSTANT2(category, name, arg1_name, arg1_val, \
+        arg2_name, arg2_val) \
+    INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, \
+        category, name, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val, \
+        arg2_name, arg2_val)
+#define TRACE_EVENT_COPY_INSTANT0(category, name) \
+    INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, \
+        category, name, TRACE_EVENT_FLAG_COPY)
+#define TRACE_EVENT_COPY_INSTANT1(category, name, arg1_name, arg1_val) \
+    INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, \
+        category, name, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val)
+#define TRACE_EVENT_COPY_INSTANT2(category, name, arg1_name, arg1_val, \
+        arg2_name, arg2_val) \
+    INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, \
+        category, name, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, \
+        arg2_name, arg2_val)
+
+// Records a single BEGIN event called &quot;name&quot; immediately, with 0, 1 or 2
+// associated arguments. If the category is not enabled, then this
+// does nothing.
+// - category and name strings must have application lifetime (statics or
+//   literals). They may not include &quot; chars.
+#define TRACE_EVENT_BEGIN0(category, name) \
+    INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, \
+        category, name, TRACE_EVENT_FLAG_NONE)
+#define TRACE_EVENT_BEGIN1(category, name, arg1_name, arg1_val) \
+    INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, \
+        category, name, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val)
+#define TRACE_EVENT_BEGIN2(category, name, arg1_name, arg1_val, \
+        arg2_name, arg2_val) \
+    INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, \
+        category, name, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val, \
+        arg2_name, arg2_val)
+#define TRACE_EVENT_COPY_BEGIN0(category, name) \
+    INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, \
+        category, name, TRACE_EVENT_FLAG_COPY)
+#define TRACE_EVENT_COPY_BEGIN1(category, name, arg1_name, arg1_val) \
+    INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, \
+        category, name, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val)
+#define TRACE_EVENT_COPY_BEGIN2(category, name, arg1_name, arg1_val, \
+        arg2_name, arg2_val) \
+    INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, \
+        category, name, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, \
+        arg2_name, arg2_val)
+
+// Records a single END event for &quot;name&quot; immediately. If the category
+// is not enabled, then this does nothing.
+// - category and name strings must have application lifetime (statics or
+//   literals). They may not include &quot; chars.
+#define TRACE_EVENT_END0(category, name) \
+    INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, \
+        category, name, TRACE_EVENT_FLAG_NONE)
+#define TRACE_EVENT_END1(category, name, arg1_name, arg1_val) \
+    INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, \
+        category, name, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val)
+#define TRACE_EVENT_END2(category, name, arg1_name, arg1_val, \
+        arg2_name, arg2_val) \
+    INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, \
+        category, name, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val, \
+        arg2_name, arg2_val)
+#define TRACE_EVENT_COPY_END0(category, name) \
+    INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, \
+        category, name, TRACE_EVENT_FLAG_COPY)
+#define TRACE_EVENT_COPY_END1(category, name, arg1_name, arg1_val) \
+    INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, \
+        category, name, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val)
+#define TRACE_EVENT_COPY_END2(category, name, arg1_name, arg1_val, \
+        arg2_name, arg2_val) \
+    INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, \
+        category, name, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, \
+        arg2_name, arg2_val)
+
+// Records the value of a counter called &quot;name&quot; immediately. Value
+// must be representable as a 32 bit integer.
+// - category and name strings must have application lifetime (statics or
+//   literals). They may not include &quot; chars.
+#define TRACE_COUNTER1(category, name, value) \
+    INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_COUNTER, \
+        category, name, TRACE_EVENT_FLAG_NONE, \
+        &quot;value&quot;, static_cast&lt;int&gt;(value))
+#define TRACE_COPY_COUNTER1(category, name, value) \
+    INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_COUNTER, \
+        category, name, TRACE_EVENT_FLAG_COPY, \
+        &quot;value&quot;, static_cast&lt;int&gt;(value))
+
+// Records the values of a multi-parted counter called &quot;name&quot; immediately.
+// The UI will treat value1 and value2 as parts of a whole, displaying their
+// values as a stacked-bar chart.
+// - category and name strings must have application lifetime (statics or
+//   literals). They may not include &quot; chars.
+#define TRACE_COUNTER2(category, name, value1_name, value1_val, \
+        value2_name, value2_val) \
+    INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_COUNTER, \
+        category, name, TRACE_EVENT_FLAG_NONE, \
+        value1_name, static_cast&lt;int&gt;(value1_val), \
+        value2_name, static_cast&lt;int&gt;(value2_val))
+#define TRACE_COPY_COUNTER2(category, name, value1_name, value1_val, \
+        value2_name, value2_val) \
+    INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_COUNTER, \
+        category, name, TRACE_EVENT_FLAG_COPY, \
+        value1_name, static_cast&lt;int&gt;(value1_val), \
+        value2_name, static_cast&lt;int&gt;(value2_val))
+
+// Records the value of a counter called &quot;name&quot; immediately. Value
+// must be representable as a 32 bit integer.
+// - category and name strings must have application lifetime (statics or
+//   literals). They may not include &quot; chars.
+// - |id| is used to disambiguate counters with the same name. It must either
+//   be a pointer or an integer value up to 64 bits. If it's a pointer, the bits
+//   will be xored with a hash of the process ID so that the same pointer on
+//   two different processes will not collide.
+#define TRACE_COUNTER_ID1(category, name, id, value) \
+    INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_COUNTER, \
+        category, name, id, TRACE_EVENT_FLAG_NONE, \
+        &quot;value&quot;, static_cast&lt;int&gt;(value))
+#define TRACE_COPY_COUNTER_ID1(category, name, id, value) \
+    INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_COUNTER, \
+        category, name, id, TRACE_EVENT_FLAG_COPY, \
+        &quot;value&quot;, static_cast&lt;int&gt;(value))
+
+// Records the values of a multi-parted counter called &quot;name&quot; immediately.
+// The UI will treat value1 and value2 as parts of a whole, displaying their
+// values as a stacked-bar chart.
+// - category and name strings must have application lifetime (statics or
+//   literals). They may not include &quot; chars.
+// - |id| is used to disambiguate counters with the same name. It must either
+//   be a pointer or an integer value up to 64 bits. If it's a pointer, the bits
+//   will be xored with a hash of the process ID so that the same pointer on
+//   two different processes will not collide.
+#define TRACE_COUNTER_ID2(category, name, id, value1_name, value1_val, \
+        value2_name, value2_val) \
+    INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_COUNTER, \
+        category, name, id, TRACE_EVENT_FLAG_NONE, \
+        value1_name, static_cast&lt;int&gt;(value1_val), \
+        value2_name, static_cast&lt;int&gt;(value2_val))
+#define TRACE_COPY_COUNTER_ID2(category, name, id, value1_name, value1_val, \
+        value2_name, value2_val) \
+    INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_COUNTER, \
+        category, name, id, TRACE_EVENT_FLAG_COPY, \
+        value1_name, static_cast&lt;int&gt;(value1_val), \
+        value2_name, static_cast&lt;int&gt;(value2_val))
+
+// Records a single ASYNC_BEGIN event called &quot;name&quot; immediately, with 0, 1 or 2
+// associated arguments. If the category is not enabled, then this
+// does nothing.
+// - category and name strings must have application lifetime (statics or
+//   literals). They may not include &quot; chars.
+// - |id| is used to match the ASYNC_BEGIN event with the ASYNC_END event. ASYNC
+//   events are considered to match if their category, name and id values all
+//   match. |id| must either be a pointer or an integer value up to 64 bits. If
+//   it's a pointer, the bits will be xored with a hash of the process ID so
+//   that the same pointer on two different processes will not collide.
+// An asynchronous operation can consist of multiple phases. The first phase is
+// defined by the ASYNC_BEGIN calls. Additional phases can be defined using the
+// ASYNC_STEP_BEGIN macros. When the operation completes, call ASYNC_END.
+// An async operation can span threads and processes, but all events in that
+// operation must use the same |name| and |id|. Each event can have its own
+// args.
+#define TRACE_EVENT_ASYNC_BEGIN0(category, name, id) \
+    INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, \
+        category, name, id, TRACE_EVENT_FLAG_NONE)
+#define TRACE_EVENT_ASYNC_BEGIN1(category, name, id, arg1_name, arg1_val) \
+    INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, \
+        category, name, id, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val)
+#define TRACE_EVENT_ASYNC_BEGIN2(category, name, id, arg1_name, arg1_val, \
+        arg2_name, arg2_val) \
+    INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, \
+        category, name, id, TRACE_EVENT_FLAG_NONE, \
+        arg1_name, arg1_val, arg2_name, arg2_val)
+#define TRACE_EVENT_COPY_ASYNC_BEGIN0(category, name, id) \
+    INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, \
+        category, name, id, TRACE_EVENT_FLAG_COPY)
+#define TRACE_EVENT_COPY_ASYNC_BEGIN1(category, name, id, arg1_name, arg1_val) \
+    INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, \
+        category, name, id, TRACE_EVENT_FLAG_COPY, \
+        arg1_name, arg1_val)
+#define TRACE_EVENT_COPY_ASYNC_BEGIN2(category, name, id, arg1_name, arg1_val, \
+        arg2_name, arg2_val) \
+    INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, \
+        category, name, id, TRACE_EVENT_FLAG_COPY, \
+        arg1_name, arg1_val, arg2_name, arg2_val)
+
+// Records a single ASYNC_STEP event for |step| immediately. If the category
+// is not enabled, then this does nothing. The |name| and |id| must match the
+// ASYNC_BEGIN event above. The |step| param identifies this step within the
+// async event. This should be called at the beginning of the next phase of an
+// asynchronous operation.
+#define TRACE_EVENT_ASYNC_STEP0(category, name, id, step) \
+    INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_STEP, \
+        category, name, id, TRACE_EVENT_FLAG_NONE, &quot;step&quot;, step)
+#define TRACE_EVENT_ASYNC_STEP1(category, name, id, step, \
+                                      arg1_name, arg1_val) \
+    INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_STEP, \
+        category, name, id, TRACE_EVENT_FLAG_NONE, &quot;step&quot;, step, \
+        arg1_name, arg1_val)
+#define TRACE_EVENT_COPY_ASYNC_STEP0(category, name, id, step) \
+    INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_STEP, \
+        category, name, id, TRACE_EVENT_FLAG_COPY, &quot;step&quot;, step)
+#define TRACE_EVENT_COPY_ASYNC_STEP1(category, name, id, step, \
+        arg1_name, arg1_val) \
+    INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_STEP, \
+        category, name, id, TRACE_EVENT_FLAG_COPY, &quot;step&quot;, step, \
+        arg1_name, arg1_val)
+
+// Records a single ASYNC_END event for &quot;name&quot; immediately. If the category
+// is not enabled, then this does nothing.
+#define TRACE_EVENT_ASYNC_END0(category, name, id) \
+    INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, \
+        category, name, id, TRACE_EVENT_FLAG_NONE)
+#define TRACE_EVENT_ASYNC_END1(category, name, id, arg1_name, arg1_val) \
+    INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, \
+        category, name, id, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val)
+#define TRACE_EVENT_ASYNC_END2(category, name, id, arg1_name, arg1_val, \
+        arg2_name, arg2_val) \
+    INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, \
+        category, name, id, TRACE_EVENT_FLAG_NONE, \
+        arg1_name, arg1_val, arg2_name, arg2_val)
+#define TRACE_EVENT_COPY_ASYNC_END0(category, name, id) \
+    INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, \
+        category, name, id, TRACE_EVENT_FLAG_COPY)
+#define TRACE_EVENT_COPY_ASYNC_END1(category, name, id, arg1_name, arg1_val) \
+    INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, \
+        category, name, id, TRACE_EVENT_FLAG_COPY, \
+        arg1_name, arg1_val)
+#define TRACE_EVENT_COPY_ASYNC_END2(category, name, id, arg1_name, arg1_val, \
+        arg2_name, arg2_val) \
+    INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, \
+        category, name, id, TRACE_EVENT_FLAG_COPY, \
+        arg1_name, arg1_val, arg2_name, arg2_val)
+
+// Creates a scope of a sampling state with the given category and name (both must
+// be constant strings). These states are intended for a sampling profiler.
+// Implementation note: we store category and name together because we don't
+// want the inconsistency/expense of storing two pointers.
+// |thread_bucket| is [0..2] and is used to statically isolate samples in one
+// thread from others.
+//
+// {  // The sampling state is set within this scope.
+//    TRACE_EVENT_SAMPLING_STATE_SCOPE_FOR_BUCKET(0, &quot;category&quot;, &quot;name&quot;);
+//    ...;
+// }
+#define TRACE_EVENT_SCOPED_SAMPLING_STATE_FOR_BUCKET(bucket_number, category, name) \
+    TraceEvent::SamplingStateScope&lt;bucket_number&gt; traceEventSamplingScope(category &quot;\0&quot; name);
+
+// Returns a current sampling state of the given bucket.
+// The format of the returned string is &quot;category\0name&quot;.
+#define TRACE_EVENT_GET_SAMPLING_STATE_FOR_BUCKET(bucket_number) \
+    TraceEvent::SamplingStateScope&lt;bucket_number&gt;::current()
+
+// Sets a current sampling state of the given bucket.
+// |category| and |name| have to be constant strings.
+#define TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(bucket_number, category, name) \
+    TraceEvent::SamplingStateScope&lt;bucket_number&gt;::set(category &quot;\0&quot; name)
+
+// Sets a current sampling state of the given bucket.
+// |categoryAndName| doesn't need to be a constant string.
+// The format of the string is &quot;category\0name&quot;.
+#define TRACE_EVENT_SET_NONCONST_SAMPLING_STATE_FOR_BUCKET(bucket_number, categoryAndName) \
+    TraceEvent::SamplingStateScope&lt;bucket_number&gt;::set(categoryAndName)
+
+// Syntactic sugars for the sampling tracing in the main thread.
+#define TRACE_EVENT_SCOPED_SAMPLING_STATE(category, name) \
+    TRACE_EVENT_SCOPED_SAMPLING_STATE_FOR_BUCKET(0, category, name)
+#define TRACE_EVENT_GET_SAMPLING_STATE() \
+    TRACE_EVENT_GET_SAMPLING_STATE_FOR_BUCKET(0)
+#define TRACE_EVENT_SET_SAMPLING_STATE(category, name) \
+    TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(0, category, name)
+#define TRACE_EVENT_SET_NONCONST_SAMPLING_STATE(categoryAndName) \
+    TRACE_EVENT_SET_NONCONST_SAMPLING_STATE_FOR_BUCKET(0, categoryAndName)
+
+////////////////////////////////////////////////////////////////////////////////
+// Implementation specific tracing API definitions.
+
+// Get a pointer to the enabled state of the given trace category. Only
+// long-lived literal strings should be given as the category name. The returned
+// pointer can be held permanently in a local static for example. If the
+// unsigned char is non-zero, tracing is enabled. If tracing is enabled,
+// TRACE_EVENT_API_ADD_TRACE_EVENT can be called. It's OK if tracing is disabled
+// between the load of the tracing state and the call to
+// TRACE_EVENT_API_ADD_TRACE_EVENT, because this flag only provides an early out
+// for best performance when tracing is disabled.
+// const unsigned char*
+//     TRACE_EVENT_API_GET_CATEGORY_ENABLED(const char* category_name)
+#define TRACE_EVENT_API_GET_CATEGORY_ENABLED \
+    gl::TraceGetTraceCategoryEnabledFlag
+
+// Add a trace event to the platform tracing system.
+// void TRACE_EVENT_API_ADD_TRACE_EVENT(
+//                    char phase,
+//                    const unsigned char* category_enabled,
+//                    const char* name,
+//                    unsigned long long id,
+//                    int num_args,
+//                    const char** arg_names,
+//                    const unsigned char* arg_types,
+//                    const unsigned long long* arg_values,
+//                    unsigned char flags)
+#define TRACE_EVENT_API_ADD_TRACE_EVENT \
+    gl::TraceAddTraceEvent
+
+////////////////////////////////////////////////////////////////////////////////
+
+// Implementation detail: trace event macros create temporary variables
+// to keep instrumentation overhead low. These macros give each temporary
+// variable a unique name based on the line number to prevent name collissions.
+#define INTERNAL_TRACE_EVENT_UID3(a, b) \
+    trace_event_unique_##a##b
+#define INTERNAL_TRACE_EVENT_UID2(a, b) \
+    INTERNAL_TRACE_EVENT_UID3(a, b)
+#define INTERNALTRACEEVENTUID(name_prefix) \
+    INTERNAL_TRACE_EVENT_UID2(name_prefix, __LINE__)
+
+// Implementation detail: internal macro to create static category.
+#define INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category) \
+    static const unsigned char* INTERNALTRACEEVENTUID(catstatic) = 0; \
+    if (!INTERNALTRACEEVENTUID(catstatic)) \
+      INTERNALTRACEEVENTUID(catstatic) = \
+          TRACE_EVENT_API_GET_CATEGORY_ENABLED(category);
+
+// Implementation detail: internal macro to create static category and add
+// event if the category is enabled.
+#define INTERNAL_TRACE_EVENT_ADD(phase, category, name, flags, ...) \
+    do { \
+        INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category); \
+        if (*INTERNALTRACEEVENTUID(catstatic)) { \
+            gl::TraceEvent::addTraceEvent( \
+                phase, INTERNALTRACEEVENTUID(catstatic), name, \
+                gl::TraceEvent::noEventId, flags, ##__VA_ARGS__); \
+        } \
+    } while (0)
+
+// Implementation detail: internal macro to create static category and add begin
+// event if the category is enabled. Also adds the end event when the scope
+// ends.
+#define INTERNAL_TRACE_EVENT_ADD_SCOPED(category, name, ...) \
+    INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category); \
+    gl::TraceEvent::TraceEndOnScopeClose \
+        INTERNALTRACEEVENTUID(profileScope); \
+    if (*INTERNALTRACEEVENTUID(catstatic)) { \
+      gl::TraceEvent::addTraceEvent( \
+          TRACE_EVENT_PHASE_BEGIN, \
+          INTERNALTRACEEVENTUID(catstatic), \
+          name, gl::TraceEvent::noEventId, \
+          TRACE_EVENT_FLAG_NONE, ##__VA_ARGS__); \
+      INTERNALTRACEEVENTUID(profileScope).initialize( \
+          INTERNALTRACEEVENTUID(catstatic), name); \
+    }
+
+// Implementation detail: internal macro to create static category and add
+// event if the category is enabled.
+#define INTERNAL_TRACE_EVENT_ADD_WITH_ID(phase, category, name, id, flags, \
+                                         ...) \
+    do { \
+        INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category); \
+        if (*INTERNALTRACEEVENTUID(catstatic)) { \
+            unsigned char traceEventFlags = flags | TRACE_EVENT_FLAG_HAS_ID; \
+            gl::TraceEvent::TraceID traceEventTraceID( \
+                id, &amp;traceEventFlags); \
+            gl::TraceEvent::addTraceEvent( \
+                phase, INTERNALTRACEEVENTUID(catstatic), \
+                name, traceEventTraceID.data(), traceEventFlags, \
+                ##__VA_ARGS__); \
+        } \
+    } while (0)
+
+// Notes regarding the following definitions:
+// New values can be added and propagated to third party libraries, but existing
+// definitions must never be changed, because third party libraries may use old
+// definitions.
+
+// Phase indicates the nature of an event entry. E.g. part of a begin/end pair.
+#define TRACE_EVENT_PHASE_BEGIN    ('B')
+#define TRACE_EVENT_PHASE_END      ('E')
+#define TRACE_EVENT_PHASE_INSTANT  ('I')
+#define TRACE_EVENT_PHASE_ASYNC_BEGIN ('S')
+#define TRACE_EVENT_PHASE_ASYNC_STEP  ('T')
+#define TRACE_EVENT_PHASE_ASYNC_END   ('F')
+#define TRACE_EVENT_PHASE_METADATA ('M')
+#define TRACE_EVENT_PHASE_COUNTER  ('C')
+#define TRACE_EVENT_PHASE_SAMPLE  ('P')
+
+// Flags for changing the behavior of TRACE_EVENT_API_ADD_TRACE_EVENT.
+#define TRACE_EVENT_FLAG_NONE        (static_cast&lt;unsigned char&gt;(0))
+#define TRACE_EVENT_FLAG_COPY        (static_cast&lt;unsigned char&gt;(1 &lt;&lt; 0))
+#define TRACE_EVENT_FLAG_HAS_ID      (static_cast&lt;unsigned char&gt;(1 &lt;&lt; 1))
+#define TRACE_EVENT_FLAG_MANGLE_ID   (static_cast&lt;unsigned char&gt;(1 &lt;&lt; 2))
+
+// Type values for identifying types in the TraceValue union.
+#define TRACE_VALUE_TYPE_BOOL         (static_cast&lt;unsigned char&gt;(1))
+#define TRACE_VALUE_TYPE_UINT         (static_cast&lt;unsigned char&gt;(2))
+#define TRACE_VALUE_TYPE_INT          (static_cast&lt;unsigned char&gt;(3))
+#define TRACE_VALUE_TYPE_DOUBLE       (static_cast&lt;unsigned char&gt;(4))
+#define TRACE_VALUE_TYPE_POINTER      (static_cast&lt;unsigned char&gt;(5))
+#define TRACE_VALUE_TYPE_STRING       (static_cast&lt;unsigned char&gt;(6))
+#define TRACE_VALUE_TYPE_COPY_STRING  (static_cast&lt;unsigned char&gt;(7))
+
+
+namespace gl {
+
+namespace TraceEvent {
+
+// Specify these values when the corresponding argument of addTraceEvent is not
+// used.
+const int zeroNumArgs = 0;
+const unsigned long long noEventId = 0;
+
+// TraceID encapsulates an ID that can either be an integer or pointer. Pointers
+// are mangled with the Process ID so that they are unlikely to collide when the
+// same pointer is used on different processes.
+class TraceID {
+public:
+    explicit TraceID(const void* id, unsigned char* flags) :
+        m_data(static_cast&lt;unsigned long long&gt;(reinterpret_cast&lt;unsigned long&gt;(id)))
+    {
+        *flags |= TRACE_EVENT_FLAG_MANGLE_ID;
+    }
+    explicit TraceID(unsigned long long id, unsigned char* flags) : m_data(id) { (void)flags; }
+    explicit TraceID(unsigned long id, unsigned char* flags) : m_data(id) { (void)flags; }
+    explicit TraceID(unsigned int id, unsigned char* flags) : m_data(id) { (void)flags; }
+    explicit TraceID(unsigned short id, unsigned char* flags) : m_data(id) { (void)flags; }
+    explicit TraceID(unsigned char id, unsigned char* flags) : m_data(id) { (void)flags; }
+    explicit TraceID(long long id, unsigned char* flags) :
+        m_data(static_cast&lt;unsigned long long&gt;(id)) { (void)flags; }
+    explicit TraceID(long id, unsigned char* flags) :
+        m_data(static_cast&lt;unsigned long long&gt;(id)) { (void)flags; }
+    explicit TraceID(int id, unsigned char* flags) :
+        m_data(static_cast&lt;unsigned long long&gt;(id)) { (void)flags; }
+    explicit TraceID(short id, unsigned char* flags) :
+        m_data(static_cast&lt;unsigned long long&gt;(id)) { (void)flags; }
+    explicit TraceID(signed char id, unsigned char* flags) :
+        m_data(static_cast&lt;unsigned long long&gt;(id)) { (void)flags; }
+
+    unsigned long long data() const { return m_data; }
+
+private:
+    unsigned long long m_data;
+};
+
+// Simple union to store various types as unsigned long long.
+union TraceValueUnion {
+    bool m_bool;
+    unsigned long long m_uint;
+    long long m_int;
+    double m_double;
+    const void* m_pointer;
+    const char* m_string;
+};
+
+// Simple container for const char* that should be copied instead of retained.
+class TraceStringWithCopy {
+public:
+    explicit TraceStringWithCopy(const char* str) : m_str(str) { }
+    operator const char* () const { return m_str; }
+private:
+    const char* m_str;
+};
+
+// Define setTraceValue for each allowed type. It stores the type and
+// value in the return arguments. This allows this API to avoid declaring any
+// structures so that it is portable to third_party libraries.
+#define INTERNAL_DECLARE_SET_TRACE_VALUE(actual_type, \
+                                         union_member, \
+                                         value_type_id) \
+    static inline void setTraceValue(actual_type arg, \
+                                     unsigned char* type, \
+                                     unsigned long long* value) { \
+        TraceValueUnion typeValue; \
+        typeValue.union_member = arg; \
+        *type = value_type_id; \
+        *value = typeValue.m_uint; \
+    }
+// Simpler form for int types that can be safely casted.
+#define INTERNAL_DECLARE_SET_TRACE_VALUE_INT(actual_type, \
+                                             value_type_id) \
+    static inline void setTraceValue(actual_type arg, \
+                                     unsigned char* type, \
+                                     unsigned long long* value) { \
+        *type = value_type_id; \
+        *value = static_cast&lt;unsigned long long&gt;(arg); \
+    }
+
+INTERNAL_DECLARE_SET_TRACE_VALUE_INT(unsigned long long, TRACE_VALUE_TYPE_UINT)
+INTERNAL_DECLARE_SET_TRACE_VALUE_INT(unsigned int, TRACE_VALUE_TYPE_UINT)
+INTERNAL_DECLARE_SET_TRACE_VALUE_INT(unsigned short, TRACE_VALUE_TYPE_UINT)
+INTERNAL_DECLARE_SET_TRACE_VALUE_INT(unsigned char, TRACE_VALUE_TYPE_UINT)
+INTERNAL_DECLARE_SET_TRACE_VALUE_INT(long long, TRACE_VALUE_TYPE_INT)
+INTERNAL_DECLARE_SET_TRACE_VALUE_INT(int, TRACE_VALUE_TYPE_INT)
+INTERNAL_DECLARE_SET_TRACE_VALUE_INT(short, TRACE_VALUE_TYPE_INT)
+INTERNAL_DECLARE_SET_TRACE_VALUE_INT(signed char, TRACE_VALUE_TYPE_INT)
+INTERNAL_DECLARE_SET_TRACE_VALUE(bool, m_bool, TRACE_VALUE_TYPE_BOOL)
+INTERNAL_DECLARE_SET_TRACE_VALUE(double, m_double, TRACE_VALUE_TYPE_DOUBLE)
+INTERNAL_DECLARE_SET_TRACE_VALUE(const void*, m_pointer,
+                                 TRACE_VALUE_TYPE_POINTER)
+INTERNAL_DECLARE_SET_TRACE_VALUE(const char*, m_string,
+                                 TRACE_VALUE_TYPE_STRING)
+INTERNAL_DECLARE_SET_TRACE_VALUE(const TraceStringWithCopy&amp;, m_string,
+                                 TRACE_VALUE_TYPE_COPY_STRING)
+
+#undef INTERNAL_DECLARE_SET_TRACE_VALUE
+#undef INTERNAL_DECLARE_SET_TRACE_VALUE_INT
+
+static inline void setTraceValue(const std::string&amp; arg,
+                                 unsigned char* type,
+                                 unsigned long long* value) {
+    TraceValueUnion typeValue;
+    typeValue.m_string = arg.data();
+    *type = TRACE_VALUE_TYPE_COPY_STRING;
+    *value = typeValue.m_uint;
+}
+
+// These addTraceEvent template functions are defined here instead of in the
+// macro, because the arg values could be temporary string objects. In order to
+// store pointers to the internal c_str and pass through to the tracing API, the
+// arg values must live throughout these procedures.
+
+static inline void addTraceEvent(char phase,
+                                const unsigned char* categoryEnabled,
+                                const char* name,
+                                unsigned long long id,
+                                unsigned char flags) {
+    TRACE_EVENT_API_ADD_TRACE_EVENT(
+        phase, categoryEnabled, name, id,
+        zeroNumArgs, 0, 0, 0,
+        flags);
+}
+
+template&lt;class ARG1_TYPE&gt;
+static inline void addTraceEvent(char phase,
+                                const unsigned char* categoryEnabled,
+                                const char* name,
+                                unsigned long long id,
+                                unsigned char flags,
+                                const char* arg1Name,
+                                const ARG1_TYPE&amp; arg1Val) {
+    const int numArgs = 1;
+    unsigned char argTypes[1];
+    unsigned long long argValues[1];
+    setTraceValue(arg1Val, &amp;argTypes[0], &amp;argValues[0]);
+    TRACE_EVENT_API_ADD_TRACE_EVENT(
+        phase, categoryEnabled, name, id,
+        numArgs, &amp;arg1Name, argTypes, argValues,
+        flags);
+}
+
+template&lt;class ARG1_TYPE, class ARG2_TYPE&gt;
+static inline void addTraceEvent(char phase,
+                                const unsigned char* categoryEnabled,
+                                const char* name,
+                                unsigned long long id,
+                                unsigned char flags,
+                                const char* arg1Name,
+                                const ARG1_TYPE&amp; arg1Val,
+                                const char* arg2Name,
+                                const ARG2_TYPE&amp; arg2Val) {
+    const int numArgs = 2;
+    const char* argNames[2] = { arg1Name, arg2Name };
+    unsigned char argTypes[2];
+    unsigned long long argValues[2];
+    setTraceValue(arg1Val, &amp;argTypes[0], &amp;argValues[0]);
+    setTraceValue(arg2Val, &amp;argTypes[1], &amp;argValues[1]);
+    return TRACE_EVENT_API_ADD_TRACE_EVENT(
+        phase, categoryEnabled, name, id,
+        numArgs, argNames, argTypes, argValues,
+        flags);
+}
+
+// Used by TRACE_EVENTx macro. Do not use directly.
+class TraceEndOnScopeClose {
+public:
+    // Note: members of m_data intentionally left uninitialized. See initialize.
+    TraceEndOnScopeClose() : m_pdata(0) { }
+    ~TraceEndOnScopeClose()
+    {
+        if (m_pdata)
+            addEventIfEnabled();
+    }
+
+    void initialize(const unsigned char* categoryEnabled,
+                    const char* name)
+    {
+        m_data.categoryEnabled = categoryEnabled;
+        m_data.name = name;
+        m_pdata = &amp;m_data;
+    }
+
+private:
+    // Add the end event if the category is still enabled.
+    void addEventIfEnabled()
+    {
+        // Only called when m_pdata is non-null.
+        if (*m_pdata-&gt;categoryEnabled) {
+            TRACE_EVENT_API_ADD_TRACE_EVENT(
+                TRACE_EVENT_PHASE_END,
+                m_pdata-&gt;categoryEnabled,
+                m_pdata-&gt;name, noEventId,
+                zeroNumArgs, 0, 0, 0,
+                TRACE_EVENT_FLAG_NONE);
+        }
+    }
+
+    // This Data struct workaround is to avoid initializing all the members
+    // in Data during construction of this object, since this object is always
+    // constructed, even when tracing is disabled. If the members of Data were
+    // members of this class instead, compiler warnings occur about potential
+    // uninitialized accesses.
+    struct Data {
+        const unsigned char* categoryEnabled;
+        const char* name;
+    };
+    Data* m_pdata;
+    Data m_data;
+};
+
+// TraceEventSamplingStateScope records the current sampling state
+// and sets a new sampling state. When the scope exists, it restores
+// the sampling state having recorded.
+template&lt;size_t BucketNumber&gt;
+class SamplingStateScope {
+public:
+    SamplingStateScope(const char* categoryAndName)
+    {
+        m_previousState = SamplingStateScope&lt;BucketNumber&gt;::current();
+        SamplingStateScope&lt;BucketNumber&gt;::set(categoryAndName);
+    }
+
+    ~SamplingStateScope()
+    {
+        SamplingStateScope&lt;BucketNumber&gt;::set(m_previousState);
+    }
+
+    // FIXME: Make load/store to traceSamplingState[] thread-safe and atomic.
+    static inline const char* current()
+    {
+        return reinterpret_cast&lt;const char*&gt;(*gl::traceSamplingState[BucketNumber]);
+    }
+    static inline void set(const char* categoryAndName)
+    {
+        *gl::traceSamplingState[BucketNumber] = reinterpret_cast&lt;long&gt;(const_cast&lt;char*&gt;(categoryAndName));
+    }
+
+private:
+    const char* m_previousState;
+};
+
+} // namespace TraceEvent
+
+} // namespace gl
+
+#endif
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/WebCore/ChangeLog (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/WebCore/ChangeLog        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/WebCore/ChangeLog        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2013-11-19  Roger Fong  &lt;roger_fong@apple.com&gt;
+
+        Update ANGLE sources.
+        https://bugs.webkit.org/show_bug.cgi?id=124615.
+
+        Reviewed by Dean Jackson.
+
+        Tests covered by Khronos WebGL conformance tests.
+
+        * platform/graphics/ANGLEWebKitBridge.cpp: Resolve a build error that resulted from updating ANGLE.
+        (WebCore::getSymbolInfo):
+        (WebCore::ANGLEWebKitBridge::compileShaderSource):
+
</ins><span class="cx"> 2013-12-07  Gustavo Noronha Silva  &lt;gns@gnome.org&gt;
</span><span class="cx"> 
</span><span class="cx">         ubuntu software center hits _XReadEvents() error
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit22SourceWebCoreplatformgraphicsANGLEWebKitBridgecpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.2/Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp (162314 => 162315)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.2/Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp        2014-01-20 09:12:47 UTC (rev 162314)
+++ releases/WebKitGTK/webkit-2.2/Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp        2014-01-20 09:44:37 UTC (rev 162315)
</span><span class="lines">@@ -79,14 +79,16 @@
</span><span class="cx">     for (ANGLEGetInfoType i = 0; i &lt; numSymbols; ++i) {
</span><span class="cx">         ANGLEShaderSymbol symbol;
</span><span class="cx">         ANGLEGetInfoType nameLength = 0;
</span><ins>+        ShPrecisionType precision;
+        int staticUse;
</ins><span class="cx">         switch (symbolType) {
</span><span class="cx">         case SH_ACTIVE_ATTRIBUTES:
</span><span class="cx">             symbol.symbolType = SHADER_SYMBOL_TYPE_ATTRIBUTE;
</span><del>-            ShGetActiveAttrib(compiler, i, &amp;nameLength, &amp;symbol.size, &amp;symbol.dataType, nameBuffer.data(), mappedNameBuffer.data());
</del><ins>+            ShGetVariableInfo(compiler, symbolType, i, &amp;nameLength, &amp;symbol.size, &amp;symbol.dataType, &amp;precision, &amp;staticUse, nameBuffer.data(), mappedNameBuffer.data());
</ins><span class="cx">             break;
</span><span class="cx">         case SH_ACTIVE_UNIFORMS:
</span><span class="cx">             symbol.symbolType = SHADER_SYMBOL_TYPE_UNIFORM;
</span><del>-            ShGetActiveUniform(compiler, i, &amp;nameLength, &amp;symbol.size, &amp;symbol.dataType, nameBuffer.data(), mappedNameBuffer.data());
</del><ins>+            ShGetVariableInfo(compiler, symbolType, i, &amp;nameLength, &amp;symbol.size, &amp;symbol.dataType, &amp;precision, &amp;staticUse, nameBuffer.data(), mappedNameBuffer.data());
</ins><span class="cx">             break;
</span><span class="cx">         default:
</span><span class="cx">             ASSERT_NOT_REACHED();
</span><span class="lines">@@ -189,7 +191,7 @@
</span><span class="cx"> 
</span><span class="cx">     const char* const shaderSourceStrings[] = { shaderSource };
</span><span class="cx"> 
</span><del>-    bool validateSuccess = ShCompile(compiler, shaderSourceStrings, 1, SH_OBJECT_CODE | SH_ATTRIBUTES_UNIFORMS | extraCompileOptions);
</del><ins>+    bool validateSuccess = ShCompile(compiler, shaderSourceStrings, 1, SH_OBJECT_CODE | SH_VARIABLES | extraCompileOptions);
</ins><span class="cx">     if (!validateSuccess) {
</span><span class="cx">         int logSize = getValidationResultValue(compiler, SH_INFO_LOG_LENGTH);
</span><span class="cx">         if (logSize &gt; 1) {
</span></span></pre>
</div>
</div>

</body>
</html>