2011-03-17  Jeff Miller  <jeffm@apple.com>

        Use a consistent set of file patterns in the svn:ignore property for all .xcodeproj directories, specifically:
        
        *.mode*
        *.pbxuser
        *.perspective*
        project.xcworkspace
        xcuserdata

        * ANGLE.xcodeproj: Modified property svn:ignore.
        * src/build_angle.xcodeproj: Modified property svn:ignore.

2011-01-18  Kenneth Russell  <kbr@google.com>

        Unreviewed, Leopard build fix. Remove flex/bison targets for GLSL
        grammar because the generated sources are already checked in.

        * ANGLE.xcodeproj/project.pbxproj:
        * src/build_angle.xcodeproj/project.pbxproj:

2011-01-18  Kenneth Russell  <kbr@google.com>

        Unreviewed, release build fix. Explicitly cast away const.

        * src/compiler/preprocessor/scanner.c:
        (ScanFromString):

2011-01-18  Ben Vanik  <ben.vanik@gmail.com>

        Reviewed by Kenneth Russell.

        Updating ANGLE in WebKit to r533.
        https://bugs.webkit.org/show_bug.cgi?id=47194

        * ANGLE.xcodeproj/project.pbxproj:
        * include/GLSLANG/ShaderLang.h:
        * src/common/debug.cpp:
        (gl::trace):
        * src/common/debug.h:
        * src/compiler/CodeGenGLSL.cpp:
        (ConstructCompiler):
        * src/compiler/CodeGenHLSL.cpp:
        (ConstructCompiler):
        * src/compiler/Common.h:
        (EncodeSourceLoc):
        (DecodeSourceLoc):
        * src/compiler/Compiler.cpp: Added.
        (TShHandleBase::TShHandleBase):
        (TShHandleBase::~TShHandleBase):
        (TCompiler::TCompiler):
        (TCompiler::~TCompiler):
        (TCompiler::Init):
        (TCompiler::compile):
        (TCompiler::InitBuiltInSymbolTable):
        (TCompiler::clearResults):
        (TCompiler::validateLimitations):
        (TCompiler::collectAttribsUniforms):
        * src/compiler/ExtensionBehavior.h: Added.
        * src/compiler/InfoSink.cpp:
        (TInfoSinkBase::location):
        * src/compiler/InfoSink.h:
        (TInfoSinkBase::size):
        * src/compiler/Initialize.cpp:
        (BuiltInFunctionsCommon):
        (BuiltInFunctionsVertex):
        (BuiltInFunctionsFragment):
        (StandardUniforms):
        (DefaultPrecisionVertex):
        (DefaultPrecisionFragment):
        (BuiltInConstants):
        (TBuiltIns::initialize):
        (IdentifyBuiltIns):
        (InitExtensionBehavior):
        * src/compiler/Initialize.h:
        * src/compiler/IntermTraverse.cpp:
        (TIntermLoop::traverse):
        * src/compiler/Intermediate.cpp:
        (getOperatorString):
        (TIntermediate::addBinaryMath):
        (TIntermediate::addLoop):
        (TIntermediate::postProcess):
        (TIntermBinary::promote):
        * src/compiler/OutputGLSL.cpp:
        (TOutputGLSL::visitUnary):
        (TOutputGLSL::visitLoop):
        * src/compiler/OutputHLSL.cpp:
        (sh::OutputHLSL::OutputHLSL):
        (sh::OutputHLSL::header):
        (sh::OutputHLSL::visitBinary):
        (sh::OutputHLSL::visitUnary):
        (sh::OutputHLSL::visitAggregate):
        (sh::OutputHLSL::visitLoop):
        (sh::OutputHLSL::handleExcessiveLoop):
        (sh::OutputHLSL::argumentString):
        * src/compiler/OutputHLSL.h:
        * src/compiler/ParseHelper.cpp:
        (ReportInfo):
        (DefineExtensionMacros):
        (TParseContext::error):
        (TParseContext::warning):
        (TParseContext::reservedErrorCheck):
        (TParseContext::constructorErrorCheck):
        (TParseContext::arrayQualifierErrorCheck):
        (TParseContext::extensionErrorCheck):
        (TParseContext::areAllChildConst):
        (PaParseStrings):
        * src/compiler/ParseHelper.h:
        (TParseContext::TParseContext):
        * src/compiler/PoolAlloc.cpp:
        (InitializeGlobalPools):
        (FreeGlobalPools):
        (SetGlobalPoolAllocator):
        (TPoolAllocator::TPoolAllocator):
        (TPoolAllocator::~TPoolAllocator):
        (TAllocation::checkAllocList):
        * src/compiler/PoolAlloc.h:
        * src/compiler/SearchSymbol.cpp: Added.
        (sh::SearchSymbol::SearchSymbol):
        (sh::SearchSymbol::traverse):
        (sh::SearchSymbol::visitSymbol):
        (sh::SearchSymbol::foundMatch):
        * src/compiler/SearchSymbol.h: Added.
        * src/compiler/ShHandle.h:
        (TCompiler::getAsCompiler):
        (TCompiler::getInfoSink):
        (TCompiler::getAttribs):
        (TCompiler::getUniforms):
        (TCompiler::getShaderType):
        (TCompiler::getShaderSpec):
        * src/compiler/ShaderLang.cpp:
        (getVariableMaxLength):
        (getVariableInfo):
        (ShInitBuiltInResources):
        (ShConstructCompiler):
        (ShCompile):
        (ShGetInfo):
        (ShGetInfoLog):
        (ShGetObjectCode):
        (ShGetActiveAttrib):
        (ShGetActiveUniform):
        * src/compiler/SymbolTable.cpp:
        (TSymbolTableLevel::relateToExtension):
        * src/compiler/SymbolTable.h:
        (TVariable::shareConstPointer):
        (TFunction::relateToExtension):
        (TFunction::getExtension):
        (TFunction::getParamCount):
        (TFunction::getParam):
        (TSymbolTable::getGlobalLevel):
        (TSymbolTable::relateToOperator):
        (TSymbolTable::relateToExtension):
        * src/compiler/TranslatorGLSL.cpp:
        (writeVersion):
        (TranslatorGLSL::TranslatorGLSL):
        (TranslatorGLSL::translate):
        * src/compiler/TranslatorGLSL.h:
        * src/compiler/TranslatorHLSL.cpp:
        (TranslatorHLSL::TranslatorHLSL):
        (TranslatorHLSL::translate):
        * src/compiler/TranslatorHLSL.h:
        * src/compiler/Types.h:
        (TType::TType):
        * src/compiler/UnfoldSelect.cpp:
        (sh::UnfoldSelect::visitSelection):
        * src/compiler/UnfoldSelect.h:
        * src/compiler/ValidateLimitations.cpp: Added.
        (ValidateLimitations::ValidateLimitations):
        (ValidateLimitations::visitSymbol):
        (ValidateLimitations::visitConstantUnion):
        (ValidateLimitations::visitBinary):
        (ValidateLimitations::visitUnary):
        (ValidateLimitations::visitSelection):
        (ValidateLimitations::visitAggregate):
        (ValidateLimitations::visitLoop):
        (ValidateLimitations::visitBranch):
        (ValidateLimitations::error):
        (ValidateLimitations::withinLoopBody):
        (ValidateLimitations::isLoopIndex):
        (ValidateLimitations::validateLoopType):
        (ValidateLimitations::validateForLoopHeader):
        (ValidateLimitations::validateForLoopInit):
        (ValidateLimitations::validateForLoopCond):
        (ValidateLimitations::validateForLoopExpr):
        (ValidateLimitations::validateFunctionCall):
        (ValidateLimitations::validateOperation):
        (ValidateLimitations::isConstExpr):
        (ValidateLimitations::isConstIndexExpr):
        (ValidateLimitations::validateIndexing):
        * src/compiler/ValidateLimitations.h: Added.
        (ValidateLimitations::numErrors):
        * src/compiler/VariableInfo.cpp: Added.
        (arrayBrackets):
        (getVariableDataType):
        (getVariableInfo):
        (getBuiltInVariableInfo):
        (getUserDefinedVariableInfo):
        (CollectAttribsUniforms::CollectAttribsUniforms):
        (CollectAttribsUniforms::visitSymbol):
        (CollectAttribsUniforms::visitConstantUnion):
        (CollectAttribsUniforms::visitBinary):
        (CollectAttribsUniforms::visitUnary):
        (CollectAttribsUniforms::visitSelection):
        (CollectAttribsUniforms::visitAggregate):
        (CollectAttribsUniforms::visitLoop):
        (CollectAttribsUniforms::visitBranch):
        * src/compiler/VariableInfo.h: Added.
        * src/compiler/VersionGLSL.cpp: Added.
        (TVersionGLSL::TVersionGLSL):
        (TVersionGLSL::visitSymbol):
        (TVersionGLSL::visitConstantUnion):
        (TVersionGLSL::visitBinary):
        (TVersionGLSL::visitUnary):
        (TVersionGLSL::visitSelection):
        (TVersionGLSL::visitAggregate):
        (TVersionGLSL::visitLoop):
        (TVersionGLSL::visitBranch):
        (TVersionGLSL::updateVersion):
        * src/compiler/VersionGLSL.h: Added.
        (TVersionGLSL::getVersion):
        * src/compiler/generate_glslang_lexer.sh: Added.
        * src/compiler/generate_glslang_parser.sh: Added.
        * src/compiler/glslang.h: Added.
        * src/compiler/glslang.l:
        * src/compiler/glslang.y:
        * src/compiler/glslang_lex.cpp: Added.
        (yy_get_next_buffer):
        (yy_get_previous_state):
        (yy_try_NUL_trans):
        (input):
        (yyrestart):
        (yy_switch_to_buffer):
        (yy_load_buffer_state):
        (yy_create_buffer):
        (yy_delete_buffer):
        (yy_init_buffer):
        (yy_flush_buffer):
        (yypush_buffer_state):
        (yypop_buffer_state):
        (yyensure_buffer_stack):
        (yy_scan_buffer):
        (yy_scan_string):
        (yy_scan_bytes):
        (yy_push_state):
        (yy_pop_state):
        (yy_top_state):
        (yy_fatal_error):
        (yyget_extra):
        (yyget_lineno):
        (yyget_column):
        (yyget_in):
        (yyget_out):
        (yyget_leng):
        (yyget_text):
        (yyset_extra):
        (yyset_lineno):
        (yyset_column):
        (yyset_in):
        (yyset_out):
        (yyget_debug):
        (yyset_debug):
        (yyget_lval):
        (yyset_lval):
        (yylex_init):
        (yylex_init_extra):
        (yy_init_globals):
        (yylex_destroy):
        (yy_flex_strncpy):
        (yy_flex_strlen):
        (yyalloc):
        (yyrealloc):
        (yyfree):
        (string_input):
        (check_type):
        (reserved_word):
        (yyerror):
        (glslang_initialize):
        (glslang_finalize):
        (glslang_scan):
        * src/compiler/glslang_tab.cpp: Added.
        (yytnamerr):
        (yysyntax_error):
        (glslang_parse):
        * src/compiler/glslang_tab.h: Added.
        * src/compiler/intermOut.cpp:
        (TOutputTraverser::TOutputTraverser):
        (OutputTreeText):
        (TOutputTraverser::visitSymbol):
        (TOutputTraverser::visitBinary):
        (TOutputTraverser::visitUnary):
        (TOutputTraverser::visitAggregate):
        (TOutputTraverser::visitSelection):
        (TOutputTraverser::visitConstantUnion):
        (TOutputTraverser::visitLoop):
        (TOutputTraverser::visitBranch):
        (TIntermediate::outputTree):
        * src/compiler/intermediate.h:
        (TIntermLoop::TIntermLoop):
        (TIntermLoop::getType):
        (TIntermLoop::getInit):
        (TIntermLoop::getCondition):
        (TIntermLoop::getExpression):
        (TIntermLoop::getBody):
        * src/compiler/localintermediate.h:
        * src/compiler/osinclude.h:
        (OS_GetTLSValue):
        * src/compiler/ossource_nspr.cpp: Added.
        (OS_AllocTLSIndex):
        (OS_SetTLSValue):
        (OS_FreeTLSIndex):
        * src/compiler/preprocessor/compile.h:
        * src/compiler/preprocessor/cpp.c:
        (CPPdefine):
        (CPPelse):
        (CPPif):
        (CPPifdef):
        (CPPerror):
        (CPPextension):
        (readCPPline):
        * src/compiler/preprocessor/preprocess.h:
        * src/compiler/preprocessor/scanner.c:
        (str_getch):
        (str_ungetch):
        (ScanFromString):
        (lFloatConst):
        (byte_scan):
        (yylex_CPP):
        (check_EOF):
        * src/compiler/preprocessor/scanner.h:
        * src/compiler/preprocessor/tokens.c:
        (RecordToken):
        (ReadToken):
        * src/compiler/tools: Removed.
        * src/compiler/unistd.h: Removed.
        * src/compiler/util.cpp: Added.
        (atof_dot):
        * src/compiler/util.h: Added.
        * src/libEGL/Config.cpp:
        (egl::Config::set):
        * src/libEGL/Display.cpp:
        (egl::Display::Display):
        (egl::Display::initialize):
        (egl::Display::terminate):
        (egl::Display::createDevice):
        (egl::Display::resetDevice):
        (egl::Display::createContext):
        (egl::Display::destroyContext):
        (egl::Display::getMinSwapInterval):
        (egl::Display::getMaxSwapInterval):
        (egl::Display::getDevice):
        (egl::Display::getFloatTextureSupport):
        (egl::Display::getHalfFloatTextureSupport):
        (egl::Display::getLuminanceTextureSupport):
        (egl::Display::getLuminanceAlphaTextureSupport):
        (egl::Display::getBufferPool):
        (egl::Display::getEventQuerySupport):
        (egl::Display::getDefaultPresentParameters):
        * src/libEGL/Display.h:
        * src/libEGL/Surface.cpp:
        (egl::Surface::Surface):
        (egl::Surface::~Surface):
        (egl::Surface::release):
        (egl::Surface::resetSwapChain):
        (egl::Surface::writeRecordableFlipState):
        (egl::Surface::restoreState):
        (egl::SurfaceWindowProc):
        (egl::Surface::subclassWindow):
        (egl::Surface::unsubclassWindow):
        (egl::Surface::checkForOutOfDateSwapChain):
        (egl::Surface::convertInterval):
        (egl::Surface::swap):
        (egl::Surface::getRenderTarget):
        (egl::Surface::setSwapInterval):
        * src/libEGL/Surface.h:
        * src/libEGL/libEGL.cpp:
        * src/libGLESv2/Blit.cpp:
        (gl::Blit::copySurfaceToTexture):
        (gl::Blit::setCommonBlitState):
        * src/libGLESv2/Buffer.cpp:
        (gl::Buffer::Buffer):
        (gl::Buffer::~Buffer):
        (gl::Buffer::bufferData):
        (gl::Buffer::bufferSubData):
        (gl::Buffer::getVertexBuffer):
        (gl::Buffer::getIndexBuffer):
        (gl::Buffer::invalidateStaticData):
        * src/libGLESv2/Buffer.h:
        * src/libGLESv2/Context.cpp:
        (gl::Context::Context):
        (gl::Context::~Context):
        (gl::Context::makeCurrent):
        (gl::Context::markAllStateDirty):
        (gl::Context::setFragmentShaderDerivativeHint):
        (gl::Context::setEnableVertexAttribArray):
        (gl::Context::getVertexAttribState):
        (gl::Context::getVertexAttributes):
        (gl::Context::createFence):
        (gl::Context::deleteFence):
        (gl::Context::bindTexture2D):
        (gl::Context::bindTextureCubeMap):
        (gl::Context::getFence):
        (gl::Context::getTexture2D):
        (gl::Context::getTextureCubeMap):
        (gl::Context::getSamplerTexture):
        (gl::Context::getBooleanv):
        (gl::Context::getIntegerv):
        (gl::Context::getQueryParameterInfo):
        (gl::Context::applyRenderTarget):
        (gl::Context::applyState):
        (gl::Context::lookupAttributeMapping):
        (gl::Context::applyVertexBuffer):
        (gl::Context::applyIndexBuffer):
        (gl::Context::readPixels):
        (gl::Context::clear):
        (gl::Context::drawArrays):
        (gl::Context::drawElements):
        (gl::Context::finish):
        (gl::Context::drawClosingLine):
        (gl::Context::getMaximumVaryingVectors):
        (gl::Context::getMaximumFragmentUniformVectors):
        (gl::Context::supportsEventQueries):
        (gl::Context::supportsFloatTextures):
        (gl::Context::supportsFloatLinearFilter):
        (gl::Context::supportsFloatRenderableTextures):
        (gl::Context::supportsHalfFloatTextures):
        (gl::Context::supportsHalfFloatLinearFilter):
        (gl::Context::supportsHalfFloatRenderableTextures):
        (gl::Context::getMaximumRenderbufferDimension):
        (gl::Context::getMaximumTextureDimension):
        (gl::Context::getMaximumCubeTextureDimension):
        (gl::Context::getMaximumTextureLevel):
        (gl::Context::supportsLuminanceTextures):
        (gl::Context::supportsLuminanceAlphaTextures):
        (gl::Context::supports32bitIndices):
        (gl::Context::getIncompleteTexture):
        (gl::Context::setVertexAttrib):
        (gl::Context::initExtensionString):
        (gl::Context::blitFramebuffer):
        * src/libGLESv2/Context.h:
        (gl::VertexAttribute::VertexAttribute):
        (gl::VertexAttribute::typeSize):
        (gl::VertexAttribute::stride):
        * src/libGLESv2/Fence.cpp: Added.
        (gl::Fence::Fence):
        (gl::Fence::~Fence):
        (gl::Fence::isFence):
        (gl::Fence::setFence):
        (gl::Fence::testFence):
        (gl::Fence::finishFence):
        (gl::Fence::getFenceiv):
        * src/libGLESv2/Fence.h: Added.
        * src/libGLESv2/Framebuffer.cpp:
        (gl::Framebuffer::completeness):
        (gl::DefaultFramebuffer::DefaultFramebuffer):
        (gl::DefaultFramebuffer::completeness):
        * src/libGLESv2/Program.cpp:
        (gl::Program::Program):
        (gl::Program::getSamplerMapping):
        (gl::Program::getUniformLocation):
        (gl::Program::setUniform1iv):
        (gl::Program::applyUniforms):
        (gl::Program::packVaryings):
        (gl::Program::linkVaryings):
        (gl::Program::link):
        (gl::Program::defineUniform):
        (gl::Program::createUniform):
        (gl::Program::applyUniform1iv):
        (gl::Program::resetInfoLog):
        (gl::Program::unlink):
        (gl::Program::getActiveAttribute):
        (gl::Program::getActiveUniform):
        (gl::Program::getDxDepthRangeLocation):
        * src/libGLESv2/Program.h:
        * src/libGLESv2/RefCountObject.cpp:
        (gl::RefCountObject::~RefCountObject):
        * src/libGLESv2/Renderbuffer.cpp:
        (gl::RenderbufferStorage::RenderbufferStorage):
        (gl::RenderbufferStorage::isFloatingPoint):
        (gl::Colorbuffer::Colorbuffer):
        (gl::DepthStencilbuffer::DepthStencilbuffer):
        * src/libGLESv2/Renderbuffer.h:
        * src/libGLESv2/Shader.cpp:
        (gl::Shader::Shader):
        (gl::Shader::parseVaryings):
        (gl::Shader::compileToHLSL):
        (gl::VertexShader::parseAttributes):
        * src/libGLESv2/Texture.cpp:
        (gl::Texture::Texture):
        (gl::Texture::isFloatingPoint):
        (gl::Texture::isRenderableFormat):
        (gl::Texture::selectFormat):
        (gl::Texture::loadImageData):
        (gl::Texture::loadAlphaFloatImageData):
        (gl::Texture::loadAlphaHalfFloatImageData):
        (gl::Texture::loadLuminanceImageData):
        (gl::Texture::loadLuminanceFloatImageData):
        (gl::Texture::loadLuminanceHalfFloatImageData):
        (gl::Texture::loadLuminanceAlphaImageData):
        (gl::Texture::loadLuminanceAlphaFloatImageData):
        (gl::Texture::loadLuminanceAlphaHalfFloatImageData):
        (gl::Texture::loadRGBFloatImageData):
        (gl::Texture::loadRGBHalfFloatImageData):
        (gl::Texture::loadRGBAFloatImageData):
        (gl::Texture::loadRGBAHalfFloatImageData):
        (gl::Texture::createSurface):
        (gl::Texture::setImage):
        (gl::Texture::setCompressedImage):
        (gl::Texture::subImage):
        (gl::Texture::subImageCompressed):
        (gl::Texture::copyNonRenderable):
        (gl::Texture::getD3DFormat):
        (gl::Texture::isRenderable):
        (gl::Texture2D::Texture2D):
        (gl::Texture2D::~Texture2D):
        (gl::Texture2D::redefineTexture):
        (gl::Texture2D::setImage):
        (gl::Texture2D::setCompressedImage):
        (gl::Texture2D::copyImage):
        (gl::Texture2D::copySubImage):
        (gl::Texture2D::isComplete):
        (gl::Texture2D::createTexture):
        (gl::Texture2D::convertToRenderTarget):
        (gl::Texture2D::generateMipmaps):
        (gl::Texture2D::getColorbuffer):
        (gl::Texture2D::getRenderTarget):
        (gl::TextureCubeMap::TextureCubeMap):
        (gl::TextureCubeMap::~TextureCubeMap):
        (gl::TextureCubeMap::subImage):
        (gl::TextureCubeMap::subImageCompressed):
        (gl::TextureCubeMap::isComplete):
        (gl::TextureCubeMap::createTexture):
        (gl::TextureCubeMap::convertToRenderTarget):
        (gl::TextureCubeMap::redefineTexture):
        (gl::TextureCubeMap::copyImage):
        (gl::TextureCubeMap::copySubImage):
        (gl::TextureCubeMap::generateMipmaps):
        (gl::TextureCubeMap::getColorbuffer):
        (gl::TextureCubeMap::getRenderTarget):
        (gl::Texture::TextureColorbufferProxy::TextureColorbufferProxy):
        (gl::Texture::TextureColorbufferProxy::isFloatingPoint):
        * src/libGLESv2/Texture.h:
        * src/libGLESv2/geometry/IndexDataManager.cpp:
        (gl::IndexDataManager::IndexDataManager):
        (gl::IndexDataManager::~IndexDataManager):
        (gl::convertIndices):
        (gl::computeRange):
        (gl::IndexDataManager::prepareIndexData):
        (gl::IndexDataManager::indexSize):
        (gl::IndexDataManager::typeSize):
        (gl::IndexBuffer::IndexBuffer):
        (gl::IndexBuffer::~IndexBuffer):
        (gl::IndexBuffer::getBuffer):
        (gl::IndexBuffer::unmap):
        (gl::StreamingIndexBuffer::StreamingIndexBuffer):
        (gl::StreamingIndexBuffer::~StreamingIndexBuffer):
        (gl::StreamingIndexBuffer::map):
        (gl::StreamingIndexBuffer::reserveSpace):
        (gl::StaticIndexBuffer::StaticIndexBuffer):
        (gl::StaticIndexBuffer::~StaticIndexBuffer):
        (gl::StaticIndexBuffer::map):
        (gl::StaticIndexBuffer::reserveSpace):
        (gl::StaticIndexBuffer::lookupType):
        (gl::StaticIndexBuffer::lookupRange):
        (gl::StaticIndexBuffer::addRange):
        * src/libGLESv2/geometry/IndexDataManager.h:
        (gl::IndexBuffer::size):
        * src/libGLESv2/geometry/VertexDataManager.cpp:
        (gl::VertexDataManager::VertexDataManager):
        (gl::VertexDataManager::~VertexDataManager):
        (gl::VertexDataManager::writeAttributeData):
        (gl::VertexDataManager::prepareVertexData):
        (gl::VertexDataManager::spaceRequired):
        (gl::VertexDataManager::checkVertexCaps):
        (gl::VertexDataManager::typeIndex):
        (gl::VertexDataManager::setupAttributes):
        (gl::VertexBuffer::VertexBuffer):
        (gl::VertexBuffer::~VertexBuffer):
        (gl::VertexBuffer::unmap):
        (gl::VertexBuffer::getBuffer):
        (gl::ConstantVertexBuffer::ConstantVertexBuffer):
        (gl::ConstantVertexBuffer::~ConstantVertexBuffer):
        (gl::ArrayVertexBuffer::ArrayVertexBuffer):
        (gl::ArrayVertexBuffer::~ArrayVertexBuffer):
        (gl::ArrayVertexBuffer::addRequiredSpace):
        (gl::ArrayVertexBuffer::addRequiredSpaceFor):
        (gl::StreamingVertexBuffer::StreamingVertexBuffer):
        (gl::StreamingVertexBuffer::~StreamingVertexBuffer):
        (gl::StreamingVertexBuffer::map):
        (gl::StreamingVertexBuffer::reserveRequiredSpace):
        (gl::StaticVertexBuffer::StaticVertexBuffer):
        (gl::StaticVertexBuffer::~StaticVertexBuffer):
        (gl::StaticVertexBuffer::map):
        (gl::StaticVertexBuffer::reserveRequiredSpace):
        (gl::StaticVertexBuffer::lookupAttribute):
        (gl::VertexDataManager::formatConverter):
        * src/libGLESv2/geometry/VertexDataManager.h:
        (gl::ArrayVertexBuffer::size):
        (gl::VertexDataManager::dirtyCurrentValue):
        * src/libGLESv2/geometry/backend.cpp: Removed.
        * src/libGLESv2/geometry/backend.h: Removed.
        * src/libGLESv2/geometry/dx9.cpp: Removed.
        * src/libGLESv2/geometry/dx9.h: Removed.
        * src/libGLESv2/libGLESv2.cpp:
        * src/libGLESv2/libGLESv2.def:
        * src/libGLESv2/libGLESv2.vcproj:
        * src/libGLESv2/utilities.cpp:
        (gl::UniformComponentCount):
        (gl::UniformComponentType):
        (gl::ComputePixelSize):
        (gl::CheckTextureFormatType):
        (gl::IsColorRenderable):
        (gl::IsDepthRenderable):
        (gl::IsStencilRenderable):
        (es2dx::GetAlphaSize):
        (es2dx::GetRedSize):
        (es2dx::GetGreenSize):
        (es2dx::GetBlueSize):
        (es2dx::GetDepthSize):
        (es2dx::ConvertPrimitiveType):
        (dx2es::ConvertBackBufferFormat):
        (dx2es::ConvertDepthStencilFormat):
        * src/libGLESv2/utilities.h:

2011-01-17  Dan Bernstein  <mitz@apple.com>

        Rubber-stamped by Mark Rowe.

        Update xcodeproj svn:ignore to include xcuserdata.

        * ANGLE.xcodeproj: Modified property svn:ignore.
        * src/build_angle.xcodeproj: Modified property svn:ignore.

2010-12-01  Steve Falkenburg  <sfalken@apple.com>

        Reviewed by Adam Roben.

        vcproj changes can't be applied cleanly by the Windows EWS bot
        https://bugs.webkit.org/show_bug.cgi?id=50328

        * src/libEGL/libEGL.vcproj: Added property svn:eol-style.
        * src/libGLESv2/libGLESv2.vcproj: Added property svn:eol-style.

2010-11-03  Darin Adler  <darin@apple.com>

        Updated Xcode projects by opening them with Xcode 3.2.4.
        Updated svn:ignore for Xcode projects.

        * ANGLE.xcodeproj: Added property svn:ignore.
        * ANGLE.xcodeproj/project.pbxproj: Updated with Xcode 3.2.4.
        * src/build_angle.xcodeproj: Added property svn:ignore.
        * src/build_angle.xcodeproj/project.pbxproj: Updated with Xcode 3.2.4.

2010-09-01  Zhenyao Mo  <zmo@google.com>

        Reviewed by Kenneth Russell.

        Roll ANGLE under webkit to r402
        https://bugs.webkit.org/show_bug.cgi?id=45004

        * ANGLE.xcodeproj/project.pbxproj:
        * include/GLES2/gl2ext.h:
        * include/GLSLANG/ResourceLimits.h: Removed.
        * include/GLSLANG/ShaderLang.h:
        * src/compiler/BaseTypes.h:
        (getPrecisionString):
        (getBasicString):
        (IsSampler):
        (getQualifierString):
        * src/compiler/Initialize.cpp:
        (BuiltInConstants):
        (IdentifyBuiltIns):
        * src/compiler/Initialize.h:
        * src/compiler/InitializeDll.cpp:
        (InitProcess):
        (DetachProcess):
        (InitThread):
        (DetachThread):
        * src/compiler/InitializeDll.h:
        * src/compiler/InitializeParseContext.h:
        * src/compiler/Intermediate.cpp:
        (GetHigherPrecision):
        (TIntermediate::addBinaryMath):
        (TIntermediate::setAggregateOperator):
        (TIntermediate::addComma):
        (TIntermediate::postProcess):
        (TIntermBinary::promote):
        (CompareStruct):
        * src/compiler/OutputGLSL.cpp:
        (TOutputGLSL::writeFunctionParameters):
        (TOutputGLSL::visitUnary):
        (TOutputGLSL::visitBranch):
        * src/compiler/OutputHLSL.cpp:
        (sh::OutputHLSL::header):
        (sh::OutputHLSL::visitBinary):
        (sh::OutputHLSL::visitAggregate):
        (sh::OutputHLSL::handleExcessiveLoop):
        (sh::OutputHLSL::addConstructor):
        * src/compiler/ParseHelper.cpp:
        (TParseContext::constructorErrorCheck):
        (TParseContext::samplerErrorCheck):
        (TParseContext::paramErrorCheck):
        (TParseContext::findFunction):
        (TParseContext::executeInitializer):
        (TParseContext::addConstructor):
        (TParseContext::addConstStruct):
        (FreeParseContextIndex):
        (GetGlobalParseContext):
        * src/compiler/PoolAlloc.h:
        (TPoolAllocator::tHeader::tHeader):
        (pool_allocator::allocate):
        (pool_allocator::deallocate):
        * src/compiler/ShaderLang.cpp:
        (ShInitialize):
        (ShFinalize):
        (ShInitBuiltInResource):
        * src/compiler/SymbolTable.cpp:
        (TType::getStructSize):
        * src/compiler/SymbolTable.h:
        (TVariable::setQualifier):
        * src/compiler/Types.h:
        (TType::TType):
        (TType::getBasicType):
        (TType::setBasicType):
        (TType::getPrecision):
        (TType::setPrecision):
        (TType::getQualifier):
        (TType::setQualifier):
        (TType::getNominalSize):
        (TType::setNominalSize):
        (TType::isMatrix):
        (TType::setMatrix):
        (TType::isArray):
        (TType::getArraySize):
        (TType::setArraySize):
        (TType::getMaxArraySize):
        (TType::setMaxArraySize):
        (TType::clearArrayness):
        (TType::setArrayInformationType):
        (TType::getArrayInformationType):
        (TType::isVector):
        (TType::isScalar):
        (TType::setStruct):
        (TType::getTypeName):
        (TType::setTypeName):
        (TType::isField):
        (TType::getFieldName):
        (TType::setFieldName):
        (TType::getBasicString):
        (TType::getPrecisionString):
        (TType::getQualifierString):
        * src/compiler/glslang.l:
        * src/compiler/glslang.y:
        * src/compiler/intermediate.h:
        (TIntermNode::getLine):
        (TIntermNode::setLine):
        (TIntermTyped::getAsTyped):
        (TIntermTyped::setType):
        (TIntermTyped::getType):
        (TIntermTyped::getTypePointer):
        (TIntermTyped::getBasicType):
        (TIntermTyped::getQualifier):
        (TIntermTyped::getPrecision):
        (TIntermTyped::getNominalSize):
        (TIntermTyped::isMatrix):
        (TIntermTyped::isArray):
        (TIntermTyped::isVector):
        (TIntermTyped::isScalar):
        (TIntermTyped::getBasicString):
        (TIntermTyped::getQualifierString):
        (TIntermSymbol::getId):
        (TIntermSymbol::getSymbol):
        (TIntermOperator::setOp):
        (TIntermBinary::setLeft):
        (TIntermBinary::setRight):
        (TIntermBinary::getLeft):
        (TIntermBinary::getRight):
        (TIntermUnary::setOperand):
        (TIntermUnary::getOperand):
        (TIntermAggregate::getAsAggregate):
        (TIntermAggregate::getSequence):
        (TIntermAggregate::setName):
        (TIntermAggregate::getName):
        (TIntermAggregate::setUserDefined):
        (TIntermAggregate::isUserDefined):
        (TIntermAggregate::getQualifier):
        (TIntermAggregate::setOptimize):
        (TIntermAggregate::setDebug):
        (TIntermSelection::getCondition):
        (TIntermSelection::getTrueBlock):
        (TIntermSelection::getFalseBlock):
        (TIntermSelection::getAsSelectionNode):
        * src/compiler/parseConst.cpp:
        (TConstTraverser::TConstTraverser):
        * src/compiler/preprocessor/atom.c:
        (InitAtomTable):
        * src/compiler/preprocessor/atom.h:
        * src/compiler/preprocessor/compile.h:
        * src/compiler/preprocessor/cpp.c:
        * src/compiler/preprocessor/cpp.h:
        * src/compiler/preprocessor/cppstruct.c:
        * src/compiler/preprocessor/memory.c:
        * src/compiler/preprocessor/memory.h:
        * src/compiler/preprocessor/parser.h:
        * src/compiler/preprocessor/preprocess.h:
        * src/compiler/preprocessor/scanner.c:
        * src/compiler/preprocessor/scanner.h:
        * src/compiler/preprocessor/slglobals.h:
        * src/compiler/preprocessor/symbols.c:
        (NewSymbol):
        * src/compiler/preprocessor/symbols.h:
        * src/compiler/preprocessor/tokens.c:
        (RecordToken):
        * src/compiler/preprocessor/tokens.h:
        * src/libEGL/Display.cpp:
        (egl::Display::Display):
        (egl::Display::initialize):
        (egl::Display::terminate):
        (egl::Display::createDevice):
        (egl::Display::createWindowSurface):
        (egl::Display::createContext):
        (egl::Display::getMultiSampleSupport):
        (egl::Display::getCompressedTextureSupport):
        * src/libEGL/Display.h:
        * src/libEGL/Surface.cpp:
        (egl::Surface::Surface):
        (egl::Surface::resetSwapChain):
        (egl::Surface::getWindowHandle):
        (egl::Surface::writeRecordableFlipState):
        (egl::Surface::applyFlipState):
        (egl::Surface::releaseRecordedState):
        (egl::Surface::checkForWindowResize):
        (egl::Surface::swap):
        * src/libEGL/Surface.h:
        * src/libEGL/libEGL.cpp:
        * src/libEGL/libEGL.vcproj:
        * src/libGLESv2/Blit.cpp:
        (gl::Blit::setVertexShader):
        (gl::Blit::setPixelShader):
        (gl::Blit::setFormatConvertShaders):
        * src/libGLESv2/Buffer.cpp:
        (gl::Buffer::Buffer):
        * src/libGLESv2/Buffer.h:
        * src/libGLESv2/Context.cpp:
        (gl::Context::Context):
        (gl::Context::~Context):
        (gl::Context::makeCurrent):
        (gl::Context::markAllStateDirty):
        (gl::Context::getReadFramebufferHandle):
        (gl::Context::getDrawFramebufferHandle):
        (gl::Context::getRenderbufferHandle):
        (gl::Context::getArrayBufferHandle):
        (gl::Context::setVertexAttribState):
        (gl::Context::createBuffer):
        (gl::Context::createProgram):
        (gl::Context::createShader):
        (gl::Context::createTexture):
        (gl::Context::createRenderbuffer):
        (gl::Context::deleteBuffer):
        (gl::Context::deleteShader):
        (gl::Context::deleteProgram):
        (gl::Context::deleteTexture):
        (gl::Context::deleteRenderbuffer):
        (gl::Context::getBuffer):
        (gl::Context::getShader):
        (gl::Context::getProgram):
        (gl::Context::getTexture):
        (gl::Context::getRenderbuffer):
        (gl::Context::getReadFramebuffer):
        (gl::Context::getDrawFramebuffer):
        (gl::Context::bindArrayBuffer):
        (gl::Context::bindElementArrayBuffer):
        (gl::Context::bindTexture2D):
        (gl::Context::bindTextureCubeMap):
        (gl::Context::bindReadFramebuffer):
        (gl::Context::bindDrawFramebuffer):
        (gl::Context::bindRenderbuffer):
        (gl::Context::useProgram):
        (gl::Context::setFramebufferZero):
        (gl::Context::setRenderbufferStorage):
        (gl::Context::getFramebuffer):
        (gl::Context::getArrayBuffer):
        (gl::Context::getElementArrayBuffer):
        (gl::Context::getCurrentProgram):
        (gl::Context::getTexture2D):
        (gl::Context::getTextureCubeMap):
        (gl::Context::getSamplerTexture):
        (gl::Context::getFloatv):
        (gl::Context::getIntegerv):
        (gl::Context::getQueryParameterInfo):
        (gl::Context::applyRenderTarget):
        (gl::Context::applyState):
        (gl::Context::applyIndexBuffer):
        (gl::Context::readPixels):
        (gl::Context::clear):
        (gl::Context::finish):
        (gl::Context::flush):
        (gl::Context::supportsShaderModel3):
        (gl::Context::getMaxSupportedSamples):
        (gl::Context::getNearestSupportedSamples):
        (gl::Context::supportsCompressedTextures):
        (gl::Context::detachBuffer):
        (gl::Context::detachTexture):
        (gl::Context::detachFramebuffer):
        (gl::Context::detachRenderbuffer):
        (gl::Context::getIncompleteTexture):
        (gl::Context::initExtensionString):
        (gl::Context::blitFramebuffer):
        * src/libGLESv2/Context.h:
        (gl::AttributeState::AttributeState):
        * src/libGLESv2/Framebuffer.cpp:
        (gl::Framebuffer::Framebuffer):
        (gl::Framebuffer::~Framebuffer):
        (gl::Framebuffer::lookupRenderbuffer):
        (gl::Framebuffer::setColorbuffer):
        (gl::Framebuffer::setDepthbuffer):
        (gl::Framebuffer::setStencilbuffer):
        (gl::Framebuffer::detachTexture):
        (gl::Framebuffer::detachRenderbuffer):
        (gl::Framebuffer::getRenderTargetSerial):
        (gl::Framebuffer::getRenderTarget):
        (gl::Framebuffer::getDepthStencil):
        (gl::Framebuffer::getDepthbufferSerial):
        (gl::Framebuffer::getStencilbufferSerial):
        (gl::Framebuffer::getColorbuffer):
        (gl::Framebuffer::getDepthbuffer):
        (gl::Framebuffer::getStencilbuffer):
        (gl::Framebuffer::getColorbufferHandle):
        (gl::Framebuffer::getDepthbufferHandle):
        (gl::Framebuffer::getStencilbufferHandle):
        (gl::Framebuffer::hasStencil):
        (gl::Framebuffer::isMultisample):
        (gl::Framebuffer::completeness):
        (gl::DefaultFramebuffer::DefaultFramebuffer):
        (gl::Framebuffer::getSamples):
        (gl::DefaultFramebuffer::completeness):
        * src/libGLESv2/Framebuffer.h:
        * src/libGLESv2/Program.cpp:
        (gl::Program::Program):
        (gl::Program::~Program):
        (gl::Program::attachShader):
        (gl::Program::detachShader):
        (gl::Program::linkVaryings):
        (gl::Program::link):
        (gl::Program::unlink):
        (gl::Program::release):
        (gl::Program::addRef):
        (gl::Program::getRefCount):
        (gl::Program::getDxViewportLocation):
        * src/libGLESv2/Program.h:
        * src/libGLESv2/RefCountObject.cpp: Added.
        (gl::RefCountObject::RefCountObject):
        (gl::RefCountObject::~RefCountObject):
        (gl::RefCountObject::addRef):
        (gl::RefCountObject::release):
        (gl::RefCountObjectBindingPointer::set):
        * src/libGLESv2/RefCountObject.h: Added.
        (gl::RefCountObject::id):
        (gl::RefCountObjectBindingPointer::RefCountObjectBindingPointer):
        (gl::RefCountObjectBindingPointer::~RefCountObjectBindingPointer):
        (gl::RefCountObjectBindingPointer::get):
        (gl::RefCountObjectBindingPointer::id):
        (gl::RefCountObjectBindingPointer::operator ! ):
        (gl::BindingPointer::set):
        (gl::BindingPointer::get):
        (gl::BindingPointer::operator -> ):
        * src/libGLESv2/Renderbuffer.cpp:
        (gl::Renderbuffer::Renderbuffer):
        (gl::Renderbuffer::~Renderbuffer):
        (gl::Renderbuffer::isColorbuffer):
        (gl::Renderbuffer::isDepthbuffer):
        (gl::Renderbuffer::isStencilbuffer):
        (gl::Renderbuffer::getRenderTarget):
        (gl::Renderbuffer::getDepthStencil):
        (gl::Renderbuffer::getWidth):
        (gl::Renderbuffer::getHeight):
        (gl::Renderbuffer::getFormat):
        (gl::Renderbuffer::getD3DFormat):
        (gl::Renderbuffer::getSerial):
        (gl::Renderbuffer::setStorage):
        (gl::RenderbufferStorage::RenderbufferStorage):
        (gl::RenderbufferStorage::~RenderbufferStorage):
        (gl::RenderbufferStorage::isColorbuffer):
        (gl::RenderbufferStorage::isDepthbuffer):
        (gl::RenderbufferStorage::isStencilbuffer):
        (gl::RenderbufferStorage::getRenderTarget):
        (gl::RenderbufferStorage::getDepthStencil):
        (gl::RenderbufferStorage::getWidth):
        (gl::RenderbufferStorage::getHeight):
        (gl::RenderbufferStorage::setSize):
        (gl::RenderbufferStorage::getFormat):
        (gl::RenderbufferStorage::getD3DFormat):
        (gl::RenderbufferStorage::getSamples):
        (gl::RenderbufferStorage::getSerial):
        (gl::RenderbufferStorage::issueSerial):
        (gl::Colorbuffer::Colorbuffer):
        (gl::Colorbuffer::isColorbuffer):
        (gl::Colorbuffer::getRedSize):
        (gl::Colorbuffer::getGreenSize):
        (gl::Colorbuffer::getBlueSize):
        (gl::Colorbuffer::getAlphaSize):
        (gl::DepthStencilbuffer::DepthStencilbuffer):
        (gl::DepthStencilbuffer::~DepthStencilbuffer):
        (gl::DepthStencilbuffer::isDepthbuffer):
        (gl::DepthStencilbuffer::isStencilbuffer):
        (gl::DepthStencilbuffer::getDepthSize):
        (gl::DepthStencilbuffer::getStencilSize):
        (gl::DepthStencilbuffer::getDepthStencil):
        (gl::Depthbuffer::Depthbuffer):
        (gl::Depthbuffer::~Depthbuffer):
        (gl::Depthbuffer::isDepthbuffer):
        (gl::Depthbuffer::isStencilbuffer):
        (gl::Stencilbuffer::Stencilbuffer):
        (gl::Stencilbuffer::~Stencilbuffer):
        (gl::Stencilbuffer::isDepthbuffer):
        (gl::Stencilbuffer::isStencilbuffer):
        * src/libGLESv2/Renderbuffer.h:
        (gl::Renderbuffer::getStorage):
        * src/libGLESv2/ResourceManager.cpp: Added.
        (gl::ResourceManager::ResourceManager):
        (gl::ResourceManager::~ResourceManager):
        (gl::ResourceManager::addRef):
        (gl::ResourceManager::release):
        (gl::ResourceManager::createBuffer):
        (gl::ResourceManager::createShader):
        (gl::ResourceManager::createProgram):
        (gl::ResourceManager::createTexture):
        (gl::ResourceManager::createRenderbuffer):
        (gl::ResourceManager::deleteBuffer):
        (gl::ResourceManager::deleteShader):
        (gl::ResourceManager::deleteProgram):
        (gl::ResourceManager::deleteTexture):
        (gl::ResourceManager::deleteRenderbuffer):
        (gl::ResourceManager::getBuffer):
        (gl::ResourceManager::getShader):
        (gl::ResourceManager::getTexture):
        (gl::ResourceManager::getProgram):
        (gl::ResourceManager::getRenderbuffer):
        (gl::ResourceManager::setRenderbuffer):
        (gl::ResourceManager::checkBufferAllocation):
        (gl::ResourceManager::checkTextureAllocation):
        (gl::ResourceManager::checkRenderbufferAllocation):
        * src/libGLESv2/ResourceManager.h: Added.
        * src/libGLESv2/Shader.cpp:
        (gl::Shader::Shader):
        (gl::Shader::addRef):
        (gl::Shader::release):
        (gl::Shader::getRefCount):
        (gl::Shader::parseVaryings):
        (gl::VertexShader::VertexShader):
        (gl::FragmentShader::FragmentShader):
        * src/libGLESv2/Shader.h:
        * src/libGLESv2/Texture.cpp:
        (gl::Texture::Image::Image):
        (gl::Texture::Texture):
        (gl::Texture::getBlitter):
        (gl::Texture::selectFormat):
        (gl::Texture::loadImageData):
        (gl::Texture::loadAlphaImageData):
        (gl::Texture::loadLuminanceImageData):
        (gl::Texture::loadLuminanceAlphaImageData):
        (gl::Texture::loadRGBUByteImageData):
        (gl::Texture::loadRGB565ImageData):
        (gl::Texture::loadRGBAUByteImageData):
        (gl::Texture::loadRGBA4444ImageData):
        (gl::Texture::loadRGBA5551ImageData):
        (gl::Texture::loadBGRAImageData):
        (gl::Texture::createSurface):
        (gl::Texture::setImage):
        (gl::Texture::setCompressedImage):
        (gl::Texture::subImage):
        (gl::Texture::subImageCompressed):
        (gl::Texture2D::Texture2D):
        (gl::Texture2D::getFormat):
        (gl::Texture2D::setCompressedImage):
        (gl::Texture2D::subImage):
        (gl::Texture2D::subImageCompressed):
        (gl::Texture2D::copyImage):
        (gl::Texture2D::copySubImage):
        (gl::Texture2D::isCompressed):
        (gl::Texture2D::getColorbuffer):
        (gl::TextureCubeMap::TextureCubeMap):
        (gl::TextureCubeMap::getFormat):
        (gl::TextureCubeMap::setCompressedImage):
        (gl::TextureCubeMap::subImage):
        (gl::TextureCubeMap::subImageCompressed):
        (gl::TextureCubeMap::isCompressed):
        (gl::TextureCubeMap::copyImage):
        (gl::TextureCubeMap::copySubImage):
        (gl::TextureCubeMap::getColorbuffer):
        (gl::Texture::TextureColorbufferProxy::addRef):
        (gl::Texture::TextureColorbufferProxy::release):
        (gl::Texture::TextureColorbufferProxy::getWidth):
        (gl::Texture::TextureColorbufferProxy::getHeight):
        (gl::Texture::TextureColorbufferProxy::getFormat):
        * src/libGLESv2/Texture.h:
        * src/libGLESv2/libGLESv2.cpp:
        * src/libGLESv2/libGLESv2.def:
        * src/libGLESv2/libGLESv2.vcproj:
        * src/libGLESv2/main.h:
        * src/libGLESv2/utilities.cpp:
        (gl::ComputeCompressedPitch):
        (gl::ComputeCompressedSize):
        (gl::IsCompressed):
        (gl::ComputePixelSize):
        (gl::CheckTextureFormatType):
        (es2dx::ConvertRenderbufferFormat):
        (es2dx::GetSamplesFromMultisampleType):
        (es2dx::GetMultisampleTypeFromSamples):
        * src/libGLESv2/utilities.h:

2010-08-17  Chris Marrin  <cmarrin@apple.com>

        Unreviewed.

        Moved previous link error fix to Base.xcconfig.

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

2010-08-17  Chris Marrin  <cmarrin@apple.com>

        Unreviewed.

        Got rid of link errors in WebCore.

        Changed GCC_INLINES_ARE_PRIVATE_EXTERN to YES and
        GCC_SYMBOLS_PRIVATE_EXTERN to NO to match WebCore
        flags.

        * ANGLE.xcodeproj/project.pbxproj:

2010-08-04  Kenneth Russell  <kbr@google.com>

        Reviewed by Dimitri Glazkov.

        Update ANGLE to r352
        https://bugs.webkit.org/show_bug.cgi?id=43500

        Updated ANGLE to r352 (July 26, 2010). Built WebKit to test.

        * include/GLSLANG/ShaderLang.h:
        * src/compiler/Initialize.cpp:
        (BuiltInFunctionsCommon):
        (BuiltInFunctionsVertex):
        (BuiltInFunctionsFragment):
        (StandardUniforms):
        (DefaultPrecisionVertex):
        (DefaultPrecisionFragment):
        (BuiltInConstants):
        (TBuiltIns::initialize):
        (IdentifyBuiltIns):
        * src/compiler/Initialize.h:
        (TBuiltIns::getBuiltInStrings):
        * src/compiler/OutputGLSL.cpp:
        (TOutputGLSL::visitSelection):
        * src/compiler/ShHandle.h:
        (TCompiler::getLanguage):
        (TCompiler::getSpec):
        (TCompiler::getSymbolTable):
        (TCompiler::getInfoSink):
        * src/compiler/ShaderLang.cpp:
        (InitializeSymbolTable):
        (GenerateBuiltInSymbolTable):
        (ShInitialize):
        (ShConstructCompiler):
        (ShFinalize):
        (ShCompile):
        * src/compiler/SymbolTable.h:
        (TSymbolTable::atBuiltInLevel):
        (TSymbolTable::atGlobalLevel):
        (TSymbolTable::push):
        (TSymbolTable::getGlobalLevel):
        (TSymbolTable::currentLevel):
        * src/libGLESv2/Shader.cpp:
        (gl::Shader::Shader):
        (gl::Shader::compileToHLSL):

2010-08-03  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Adele Peterson.

        Remove some unnecessary files from the ANGLE tree.

        * src/compiler/tools/COPYING.bison: Removed.
        * src/compiler/tools/COPYING.flex: Removed.
        * src/compiler/tools/README: Removed.
        * src/compiler/tools/bison.hairy: Removed.
        * src/compiler/tools/bison.simple: Removed.

2010-08-03  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Adele Peterson.

        Clean up the ANGLE Xcode project.

        Main changes include:
        • Adding a Production configuration.
        • Modifying the library name from libangle.a to libANGLE.a.
        • Installing the headers in a subdirectory of /usr/local/include to avoid polluting the top-level directory.
        • Generating derived sources in to the built products directory so they're saved along with the symroot.
        • Switching to using .xcconfig files for maximum cleanliness.

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

2010-08-02  Paul Sawaya  <psawaya@apple.com>

        Reviewed by Adele Peterson.

        Add ANGLE library to WebKit. From the repository (http://angleproject.googlecode.com) as of July 22.
        https://bugs.webkit.org/show_bug.cgi?id=42789

